{"version":3,"sources":["layouts/dashboard/Searchbar.js","components/MenuPopover.js","_mocks_/account.js","layouts/dashboard/AccountPopover.js","layouts/dashboard/LanguagePopover.js","layouts/dashboard/DashboardNavbar.js","components/Logo.js","components/Scrollbar.js","components/NavSection.js","layouts/dashboard/SidebarConfig.js","layouts/dashboard/DashboardSidebar.js","layouts/dashboard/index.js","layouts/LogoOnlyLayout.js","components/Page.js","components/authentication/login/LoginForm.js","pages/Login.js","utils/formatNumber.js","components/_dashboard/app/AppBugReports.js","components/charts/BaseOptionChart.js","components/_dashboard/app/AppConversionRates.js","components/_dashboard/app/AppCurrentSubject.js","components/_dashboard/app/AppCurrentVisits.js","components/_dashboard/app/AppItemOrders.js","utils/mockImages.js","components/_dashboard/app/AppNewsUpdate.js","components/_dashboard/app/AppNewUsers.js","components/_dashboard/app/AppOrderTimeline.js","utils/formatTime.js","components/_dashboard/app/AppTasks.js","components/_dashboard/app/AppTrafficBySite.js","components/_dashboard/app/AppWebsiteVisits.js","components/_dashboard/app/AppWellsNumber.js","components/_dashboard/app/AppWellsTreeMap.js","components/_dashboard/app/AppWellTrackerInfo.js","components/_dashboard/app/AppWellDetails.js","components/_dashboard/app/AppWellboreDataSelection.js","components/_dashboard/app/AppFormatConverterSettings.js","pages/DashboardApp.js","components/animate/variants/Wrap.js","components/animate/variants/bounce/BounceIn.js","components/animate/variants/bounce/BounceOut.js","components/animate/MotionContainer.js","pages/Page404.js","components/DropFileInput.js","pages/FormatConverter.js","pages/Wells.js","components/widgets/LogWidget.js","components/widgets/Wellog.js","components/widgets/ScalerWidget.js","components/widgets/DataGridWidget.js","components/widgets/Widget.js","components/monitoringCards/AddWidget.js","components/monitoringCards/ConfigBoard.js","layouts/dashboard/NotificationsPopover.js","pages/HealthBar.js","pages/Monitor.js","routes.js","theme/shape.js","theme/palette.js","theme/typography.js","theme/overrides/index.js","theme/overrides/Card.js","theme/overrides/Lists.js","theme/overrides/Paper.js","theme/overrides/Input.js","theme/overrides/Button.js","theme/overrides/Tooltip.js","theme/overrides/Backdrop.js","theme/overrides/Typography.js","theme/overrides/IconButton.js","theme/overrides/Autocomplete.js","theme/shadows.js","theme/index.js","theme/globalStyles.js","components/ScrollToTop.js","App.js","serviceWorker.js","index.js","utils/etp_tools.js","utils/storage.js"],"names":["SearchbarStyle","styled","theme","top","left","zIndex","width","display","position","alignItems","height","backdropFilter","WebkitBackdropFilter","padding","spacing","boxShadow","customShadows","z8","backgroundColor","alpha","palette","background","default","breakpoints","up","Searchbar","useState","isOpen","setOpen","handleClose","ClickAwayListener","onClickAway","IconButton","onClick","prev","icon","searchFill","Slide","direction","in","mountOnEnter","unmountOnExit","Input","autoFocus","fullWidth","disableUnderline","placeholder","startAdornment","InputAdornment","Box","component","Icon","sx","color","mr","fontWeight","Button","variant","right","content","borderRadius","transform","paper","borderRight","grey","borderBottom","MenuPopover","children","other","Popover","anchorOrigin","vertical","horizontal","transformOrigin","PaperProps","mt","ml","overflow","z0","border","account","displayName","email","photoURL","MENU_OPTIONS","label","homeFill","linkTo","personFill","settings2Fill","AccountPopover","closeSnackbar","useSnackbar","anchorRef","useRef","open","navigate","useNavigate","ref","bgcolor","Avatar","src","alt","onClose","anchorEl","current","my","px","Typography","noWrap","Divider","map","option","MenuItem","to","RouterLink","typography","py","p","pt","replace","LANGS","value","LanguagePopover","primary","main","action","focusOpacity","selected","ListItemIcon","ListItemText","primaryTypographyProps","RootStyle","AppBar","ToolbarStyle","Toolbar","minHeight","DashboardNavbar","onOpenSidebar","onCloseSidebar","isOpenSidebar","setIsOpenSidebar","menu2Fill","flexGrow","Stack","xs","sm","Logo","SimpleBarStyle","SimpleBarReact","maxHeight","opacity","Scrollbar","test","navigator","userAgent","overflowX","timeout","clickOnTrack","ListItemStyle","props","ListItemButton","disableGutters","body2","textTransform","paddingLeft","paddingRight","text","secondary","bottom","borderTopLeftRadius","borderBottomLeftRadius","ListItemIconStyle","justifyContent","NavItem","item","active","useTheme","isActiveRoot","path","title","info","activeRootStyle","selectedOpacity","activeSubStyle","disableTypography","arrowIosDownwardFill","arrowIosForwardFill","Collapse","List","disablePadding","isActiveSub","transition","transitions","create","NavSection","navConfig","pathname","useLocation","match","matchPath","end","getIcon","name","sidebarConfig","homeOutline","swapFill","trendingUp","radioButtonOffOutline","radioButtonOnFill","dropletOutline","sheildOutline","flexShrink","AccountStyle","shape","borderRadiusSm","DashboardSidebar","useEffect","renderContent","flexDirection","mb","mx","Link","underline","role","Drawer","MainStyle","paddingTop","APP_BAR_MOBILE","paddingBottom","APP_BAR_DESKTOP","DashboardLayout","HeaderStyle","lineHeight","LogoOnlyLayout","Page","forwardRef","propTypes","PropTypes","node","isRequired","string","LoginForm","enqueueSnackbar","ip","createRef","port","password","refs","showPassword","setShowPassword","server","setServer","LoginSchema","Yup","required","formik","useFormik","initialValues","remember","validationSchema","onSubmit","persist","values","url","console","log","socket","WebSocket","Authorization","Buffer","alloc","toString","onopen","evt","storage","autoHideDuration","close","setTimeout","onerror","errors","touched","isSubmitting","handleSubmit","getFieldProps","autoComplete","noValidate","FormControl","InputLabel","id","Select","labelId","onChange","event","target","setFieldValue","TextField","type","error","Boolean","helperText","InputProps","endAdornment","show","edge","eyeFill","eyeOffFill","FormControlLabel","control","Checkbox","checked","LoadingButton","size","loading","backgroundSize","SectionStyle","Card","maxWidth","ContentStyle","margin","Login","Container","gutterBottom","fNumber","number","numeral","format","fShortenNumber","textAlign","darker","lighter","IconWrapperStyle","marginBottom","dark","backgroundImage","AppBugReports","warningFilled","BaseOptionChartStyle","GlobalStyles","styles","z24","borderBottomColor","fontWeightBold","mode","marginRight","BaseOptionChart","LABEL_TOTAL","subtitle2","LABEL_VALUE","offsetY","h3","colors","chart","yellow","blue","violet","green","red","toolbar","zoom","enabled","foreColor","disabled","fontFamily","states","hover","filter","fill","gradient","shadeIntensity","opacityFrom","opacityTo","stops","dataLabels","stroke","curve","lineCap","grid","strokeDashArray","borderColor","divider","xaxis","axisBorder","axisTicks","markers","strokeColors","tooltip","x","legend","fontSize","horizontalAlign","radius","itemMargin","labels","plotOptions","bar","columnWidth","pie","donut","total","radialBar","track","strokeWidth","radar","polygons","connectorColors","polarArea","rings","strokeColor","spokes","responsive","breakpoint","options","md","CHART_DATA","data","AppConversionRates","chartOptions","merge","marker","y","formatter","seriesName","barHeight","categories","CardHeader","dir","series","ChartWrapperStyle","marginTop","alignContent","borderTop","CHART_HEIGHT","AppCurrentSubject","floating","style","AppCurrentVisits","warning","dropShadow","fillSeriesColor","AppItemOrders","pieChartFilled","mockImgCover","index","NEWS","Array","_","setIndex","faker","description","lorem","paragraphs","image","postedAt","date","soon","NewsItem","news","minWidth","pr","formatDistance","Date","AppNewsUpdate","endIcon","AppNewUsers","dashboardFilled","TIMELINES","time","past","OrderItem","isLast","TimelineItem","TimelineSeparator","TimelineDot","TimelineConnector","TimelineContent","AppOrderTimeline","CardContent","Timeline","length","TASKS","TaskItem","task","textDecoration","AppTasks","includes","SOCIALS","datatype","facebookFill","googleFill","linkedinFill","twitterFill","SiteItem","site","Grid","Paper","AppTrafficBySite","container","AppWebsiteVisits","shared","intersect","toFixed","subheader","pb","AppWellsNumber","fireFilled","StyledTreeItemRoot","TreeItem","treeItemClasses","fontWeightMedium","fontWeightRegular","group","marginLeft","StyledTreeItem","bgColor","LabelIcon","labelIcon","labelInfo","labelText","AppWellsTreeMap","counter","stickyStyle","TreeView","defaultCollapseIcon","defaultExpandIcon","defaultEndIcon","overflowY","Object","entries","well_key","well","plate","colorAndBackgroundColorGenerator","number_of_wellbores","wellbores","wellbore_number_label","nodeId","InfoIcon","selectData","uri","wellbore","wellbore_key","uuid","substring","WhatshotIcon","AppWellTrackerInfo","AppWellDetails","keys","key","processChannels","allowStream","minVal","maxVal","AppWellboreDataSelection","React","rows","setRows","showTraj","showTrajectory","setShowTrajectory","streaming","history","trajectory","setTrajectory","undefined","TableContainer","Table","TableHead","TableRow","TableCell","align","TableBody","scope","Switch","prevState","e","channels","AppFormatConverterSettings","DashboardApp","wellNumber","setWellNumber","resources","setResources","preventDuplicate","etpHandler","msg_header","msg_message","protocol","messageType","recource_name","resource","messageFlags","Well","hasChildren","msg","onclose","etp_tools","onmessage","lg","varWrapEnter","animate","staggerChildren","TRANSITION_ENTER","duration","ease","TRANSITION_EXIT","varBounceIn","scale","exit","scaleY","scaleX","MotionContainer","motion","div","initial","variants","Page404","paragraph","ImageConfig","pdf","png","css","DropFileInput","wrapperRef","fileList","setFileList","className","onDragEnter","classList","add","onDragLeave","remove","onDrop","newFile","files","updatedList","onFileChange","split","file","splice","indexOf","fileRemove","FormatConverter","WellTracker","selectedObjects","setSelectedObject","channelInfos","setChannelInfos","wells","setWells","wellInfoTitle","setWellInfoTitle","loadingComplete","setLoadingComplete","showContent","setShowContent","wellInfo","setWellInfo","resourceType","contentType","well_uri","waitingWells","totalChannels","trajectories","channelCount","dataObject","TextDecoder","decode","json","i","getShowableData","convertXML","prevselected","object","cachesWell","LogWrapper","LogLine","whiteSpace","LogWidget","logs","setLogs","meta","setMeta","tmpLogs","push","channelId","channelName","get","convertDataIntoLogs","template","Wellog","holderId","setHolderId","logRef","activatedChannels","ch","channelsState","h","w","curves","start","reformated","instance","template_components","templates","curves_view","channel","parseInt","curve2","curve_name","fill_direction","cutoffs","fill_colors","plot_template_noFill","wellioviz","minimumDataIntoTemplateFunc","well_log_curves_reformatted_for_d3","uwi","holder_id","multipleLogPlot","dataPlot","inst","setDownloadableContent","chan","header_height","Math","floor","dimensions","m","ScalerWidget","setChannelName","channelValue","setChannelValue","flash","setFlash","latestObjectProperty","obj","element","num","DataWrapper","columns","setColumns","createData","calories","fat","carbs","protein","tmpColumns","field","headerName","generateColumns","tmpRows","rowKey","row","tmpRow","column","generateRows","ModelStyle","ContentWrapper","Widget","setTitle","showTitle","setShowTitle","setData","dataLog","setDataLog","rowsData","setRowsData","metadata","defaultChannel","setDefaultChannel","downloadableContent","alertRanges","setAlertRanges","self","useScreenshot","quality","takeScreenshot","download","extension","a","document","createElement","href","createFileName","click","calcGridItemPx","gridUnits","colOrRowSize","marginPx","round","max","setWidth","setHeight","widthVal","offsetWidth","heightVal","offsetHeight","resize","JSON","stringify","URL","createObjectURL","Blob","then","localIdName","Modal","window","confirm","removeItem","ModalContainerStyle","ModalStyle","generateRandomString","result","characters","charactersLength","charAt","random","AddWidget","setType","setChannels","setChannelsState","countSelected","setCountSelected","isStreaming","setIsStreaming","range","setRange","reset","tmpChannelsState","forEach","tmpChannels","newChannels","justify","LocalizationProvider","dateAdapter","AdapterDateFns","DateTimePicker","renderInput","newValue","FormGroup","flexWrap","indexes","indexType","assign","addItem","alert","ConfigBoard","numberOfColumns","setNumberOfColumns","rowHeight","setRowHeight","showHealth","setShowHealth","mute","setMute","Slider","valueLabelDisplay","step","marks","min","NotificationItem","notification","noCase","avatar","isUnRead","ListItemAvatar","clockFill","formatDistanceToNow","createdAt","NotificationsPopover","notifRef","setAnchorRef","notifications","setNotifications","totalUnRead","Badge","badgeContent","bellFill","Tooltip","handleMarkAllAsRead","doneAllFill","ListSubheader","disableSticky","slice","handleMarkAsRead","HealthBarStyle","HealthBar","showAlertNbr","setShowAlertNbr","colorBck","setColorBck","outChannels","setOutChannels","setChecked","alerts","nbrAlerts","n","widgets","flex","lastPackage","timestamp","nbrOfChannels","nbrOfPackages","join","pl","etp","require","ReactGridLayout","WidthProvider","RGL","WidgetStyle","MonitoringView","conf","waitingChannelSets","setWaitingChannelSets","openAdd","setOpenAdd","openConfig","setOpenConfig","setValue","streamingData","setStreamingData","rangeRequestData","streamingRowsData","setStreamingRowsData","rangeRequestRowsData","setRangeRequestRowsData","streamingLog","setStreamingLog","rangeRequestLog","setRangeRequestLog","rangeRequestStatus","setRangeRequestStatus","localUuid","setLocalUuid","setLlocalIdName","openDialog","setOpenDialog","layout","setLayout","setWidgets","widgetsCount","setWidgetsCount","Audio","audio","isMute","setIsMute","playing","setPlaying","lastPlayed","setLastPlayed","playedOnce","play","pause","addEventListener","removeEventListener","now","variable","useAudio","toggleAudio","toggleMute","resizeCount","setResizeCount","totalNumberOfDataPackages","setTotalNumberOfDataPackages","setLastPackage","notificationIcon","defaultProps","cols","items","handleOpenAdd","generateItem","static","splitWidgetLayout","tmpLayout","tmpWidget","channelSetsUUIDS","channelUUID","channelUri","channelSetUUID","dataType","status","uom","cid","countWaitingChannelSets","msg_data","tmpStreamingData","tmpRangeRequestData","tmpStreamingRowsData","tmpRangeRequestRowsData","tmpStreamingLog","tmpRangeRequestLog","indexZero","correlationId","toISOString","tmpVal","double","parseFloat","channelUuid","confUuid","tmpNotifications","year","getFullYear","month","getMonth","day","getDate","hour","getHours","minute","getMinutes","second","getSeconds","millisecond","getMilliseconds","stringDate","tmpRangeRequestStatus","channelSets","channelsFromConfig","channelSetUri","wellUri","wellboreUri","uris","fwdMap","onLayoutChange","newLayout","maxH","maxW","minH","minW","isDraggable","isResizable","resizeHandles","isBounded","onResizeStop","oldItem","newItem","widget","layoutItem","newWidgets","omit","elevation","tmp","checkedChannels","Energistics","Datatypes","ChannelData","ChannelStreamingInfo","startIndex","endIndex","Dialog","DialogTitle","DialogContent","DialogContentText","DialogActions","channelsToStream","startStreaming","BottomNavigation","BottomNavigationAction","Router","useRoutes","borderRadiusMd","createGradient","color1","color2","GREY","PRIMARY","light","contrastText","INFO","SUCCESS","WARNING","ERROR","GRADIENTS","success","common","black","white","gradients","neutral","disabledBackground","focus","hoverOpacity","disabledOpacity","pxToRem","responsiveFontSizes","h1","h2","h4","h5","h6","subtitle1","body1","caption","overline","letterSpacing","button","ComponentsOverrides","MuiCard","styleOverrides","root","z16","MuiCardHeader","titleTypographyProps","subheaderTypographyProps","MuiCardContent","MuiListItemIcon","MuiListItemAvatar","MuiListItemText","multiline","Lists","MuiPaper","MuiInputBase","input","MuiInput","MuiFilledInput","MuiOutlinedInput","MuiButton","sizeLarge","containedInherit","containedPrimary","containedSecondary","outlinedInherit","textInherit","MuiTooltip","arrow","MuiBackdrop","Backdrop","MuiTypography","MuiIconButton","MuiAutocomplete","z20","Autocomplete","LIGHT_MODE","transparent","z1","z12","createCustomShadow","shadows","transparent1","transparent2","transparent3","createShadow","ThemeConfig","themeOptions","useMemo","createTheme","components","componentsOverride","StyledEngineProvider","injectFirst","ThemeProvider","CssBaseline","boxSizing","html","WebkitOverflowScrolling","body","MozAppearance","WebkitAppearance","textarea","img","WebkitFilter","ScrollToTop","scrollTo","App","location","hostname","ReactDOM","render","TransitionComponent","Zoom","maxSnack","getElementById","serviceWorker","ready","registration","unregister","catch","message","avro","Core","Protocol","Streaming","ChannelStreaming","Discovery","Store","PROTOCOL","Protocols","sendRequestSession","connection","supportedProtocol","SupportedProtocol","supportedProtocols","version","Version","major","minor","protocolVersion","header","generateHeader","MsgRequestSession","RequestSession","requestedProtocols","applicationName","applicationVersion","dataToSend","generateMsg","send","sendGetRessource","MsgGetResources","getRessource","GetResources","sendDescribe","MsgChannelDescribe","describe","ChannelDescribe","sendStart","msgRate","dataItems","MsgStart","Start","maxMessageRate","maxDataItems","sendStartStreaming","MsgChannelStreamingStart","streamingStart","ChannelStreamingStart","sendRangeRequest","channelsInfos","MsgChannelRangeRequest","rangeRequest","ChannelRangeRequest","channelRanges","sendGetObject","MsgGetObject","getObj","GetObject","msgType","msgId","corrId","msgFlags","messageId","schemaCache","SchemaCache","schemaName","find","fullName","encoder","BinaryWriter","writeDatum","getArrayBuffer","parseMsg","cb","parse","buffer","fileReader","FileReader","onloadend","from","readUInt8","reader","BinaryReader","readDatum","readAsArrayBuffer","BidirectionalMap","revMap","this","reduce","acc","cur","pair","getFromLS","ls","global","localStorage","getItem","saveToLS","setItem"],"mappings":"ydAoBMA,EAAiBC,YAAO,MAAPA,EAAc,gBAAGC,EAAH,EAAGA,MAAH,oBACnCC,IAAK,EACLC,KAAM,EACNC,OAAQ,GACRC,MAAO,OACPC,QAAS,OACTC,SAAU,WACVC,WAAY,SACZC,OAXoB,GAYpBC,eAAgB,YAChBC,qBAAsB,YACtBC,QAASX,EAAMY,QAAQ,EAAG,GAC1BC,UAAWb,EAAMc,cAAcC,GAC/BC,gBAAgB,GAAD,OAAKC,YAAMjB,EAAMkB,QAAQC,WAAWC,QAAS,OAC3DpB,EAAMqB,YAAYC,GAAG,MAAQ,CAC5Bd,OAjBmB,GAkBnBG,QAASX,EAAMY,QAAQ,EAAG,QAMf,SAASW,IACtB,MAA0BC,oBAAS,GAAnC,mBAAOC,EAAP,KAAeC,EAAf,KAMMC,EAAc,WAClBD,GAAQ,IAGV,OACE,cAACE,EAAA,EAAD,CAAmBC,YAAaF,EAAhC,SACE,iCACIF,GACA,cAACK,EAAA,EAAD,CAAYC,QAZD,WACjBL,GAAQ,SAACM,GAAD,OAAWA,MAWb,SACE,cAAC,IAAD,CAAMC,KAAMC,IAAY9B,MAAO,GAAII,OAAQ,OAI/C,cAAC2B,EAAA,EAAD,CAAOC,UAAU,OAAOC,GAAIZ,EAAQa,cAAY,EAACC,eAAa,EAA9D,SACE,eAACzC,EAAD,WACE,cAAC0C,EAAA,EAAD,CACEC,WAAS,EACTC,WAAS,EACTC,kBAAgB,EAChBC,YAAY,eACZC,eACE,cAACC,EAAA,EAAD,CAAgBxC,SAAS,QAAzB,SACE,cAACyC,EAAA,EAAD,CACEC,UAAWC,IACXhB,KAAMC,IACNgB,GAAI,CAAEC,MAAO,gBAAiB/C,MAAO,GAAII,OAAQ,QAIvD0C,GAAI,CAAEE,GAAI,EAAGC,WAAY,oBAE3B,cAACC,EAAA,EAAD,CAAQC,QAAQ,YAAYxB,QAASJ,EAArC,8B,+ICzEO5B,YAAO,OAAPA,EAAe,gBAAGC,EAAH,EAAGA,MAAH,sBAC/BA,EAAMqB,YAAYC,GAAG,MAAQ,CAC5BrB,KAAM,EACNE,OAAQ,EACRC,MAAO,GACPoD,MAAO,GACPhD,OAAQ,GACRiD,QAAS,KACTnD,SAAU,WACVoD,aAAc,YACdC,UAAW,kBACXxC,WAAYnB,EAAMkB,QAAQC,WAAWyC,MACrCC,YAAY,aAAD,OAAe5C,YAAMjB,EAAMkB,QAAQ4C,KAAK,KAAM,MACzDC,aAAa,aAAD,OAAe9C,YAAMjB,EAAMkB,QAAQ4C,KAAK,KAAM,WAW/C,SAASE,EAAT,GAAkD,IAA3BC,EAA0B,EAA1BA,SAAUf,EAAgB,EAAhBA,GAAOgB,EAAS,iBAC9D,OACE,cAACC,EAAA,EAAD,yBACEC,aAAc,CAAEC,SAAU,SAAUC,WAAY,SAChDC,gBAAiB,CAAEF,SAAU,SAAUC,WAAY,SACnDE,WAAY,CACVtB,GAAG,aACDuB,GAAI,IACJC,GAAI,GACJC,SAAU,UACV9D,UAAW,SAACb,GAAD,OAAWA,EAAMc,cAAc8D,IAC1CC,OAAQ,SAAC7E,GAAD,0BAAwBA,EAAMkB,QAAQ4C,KAAK,QACnD1D,MAAO,KACJ8C,KAGHgB,GAdN,aAkBGD,KCjDP,IAMea,EANC,CACdC,YAAa,gBACbC,MAAO,4BACPC,SAAU,kD,QCcNC,EAAe,CACnB,CACEC,MAAO,OACPlD,KAAMmD,IACNC,OAAQ,aAEV,CACEF,MAAO,UACPlD,KAAMqD,IACND,OAAQ,KAEV,CACEF,MAAO,WACPlD,KAAMsD,IACNF,OAAQ,MAMG,SAASG,IACtB,IAAQC,EAAkBC,cAAlBD,cACFE,EAAYC,iBAAO,MACzB,EAAwBpE,oBAAS,GAAjC,mBAAOqE,EAAP,KAAanE,EAAb,KAKMC,EAAc,WAClBD,GAAQ,IAGJoE,EAAWC,cACjB,OACE,qCACE,cAACjE,EAAA,EAAD,CACEkE,IAAKL,EACL5D,QAZa,WACjBL,GAAQ,IAYJwB,GAAE,aACAvC,QAAS,EACTP,MAAO,GACPI,OAAQ,IACJqF,GAAQ,CACV,WAAY,CACV1F,OAAQ,EACRsD,QAAS,KACTrD,MAAO,OACPI,OAAQ,OACRkD,aAAc,MACdpD,SAAU,WACV2F,QAAS,SAACjG,GAAD,OAAWiB,YAAMjB,EAAMkB,QAAQ4C,KAAK,KAAM,SAf3D,SAoBE,cAACoC,EAAA,EAAD,CAAQC,IAAKrB,EAAQG,SAAUmB,IAAI,eAGrC,eAACpC,EAAD,CACE6B,KAAMA,EACNQ,QAAS1E,EACT2E,SAAUX,EAAUY,QACpBrD,GAAI,CAAE9C,MAAO,KAJf,UAME,eAAC2C,EAAA,EAAD,CAAKG,GAAI,CAAEsD,GAAI,IAAKC,GAAI,KAAxB,UACE,cAACC,EAAA,EAAD,CAAYnD,QAAQ,YAAYoD,QAAM,EAAtC,SACG7B,EAAQC,cAEX,cAAC2B,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,kBAAoBwD,QAAM,EAAnE,SACG7B,EAAQE,WAIb,cAAC4B,EAAA,EAAD,CAAS1D,GAAI,CAAEsD,GAAI,KAElBtB,EAAa2B,KAAI,SAACC,GAAD,OAChB,eAACC,EAAA,EAAD,CAEEC,GAAIF,EAAOzB,OACXrC,UAAWiE,IACXlF,QAASJ,EACTuB,GAAI,CAAEgE,WAAY,QAASC,GAAI,EAAGV,GAAI,KALxC,UAOE,cAAC1D,EAAA,EAAD,CACEC,UAAWC,IACXhB,KAAM6E,EAAO7E,KACbiB,GAAI,CACFE,GAAI,EACJhD,MAAO,GACPI,OAAQ,MAIXsG,EAAO3B,QAhBH2B,EAAO3B,UAoBhB,cAACpC,EAAA,EAAD,CAAKG,GAAI,CAAEkE,EAAG,EAAGC,GAAI,KAArB,SACE,cAAC/D,EAAA,EAAD,CAAQZ,WAAS,EAACS,MAAM,UAAUI,QAAQ,WAAWxB,QAAS,WAC5D0D,IACAK,EAAS,SAAU,CAAEwB,SAAS,KAFhC,4B,wBC5GJC,EAAQ,CACZ,CACEC,MAAO,KACPrC,MAAO,UACPlD,KAAM,gCAER,CACEuF,MAAO,KACPrC,MAAO,SACPlD,KAAM,gCAER,CACEuF,MAAO,KACPrC,MAAO,SACPlD,KAAM,iCAMK,SAASwF,KACtB,IAAM9B,EAAYC,iBAAO,MACzB,EAAwBpE,oBAAS,GAAjC,mBAAOqE,EAAP,KAAanE,EAAb,KAMMC,EAAc,WAClBD,GAAQ,IAGV,OACE,qCACE,cAACI,EAAA,EAAD,CACEkE,IAAKL,EACL5D,QAZa,WACjBL,GAAQ,IAYJwB,GAAE,aACAvC,QAAS,EACTP,MAAO,GACPI,OAAQ,IACJqF,GAAQ,CACVI,QAAS,SAACjG,GAAD,OAAWiB,YAAMjB,EAAMkB,QAAQwG,QAAQC,KAAM3H,EAAMkB,QAAQ0G,OAAOC,iBARjF,SAYE,qBAAK1B,IAAKoB,EAAM,GAAGtF,KAAMmE,IAAKmB,EAAM,GAAGpC,UAGzC,cAACnB,EAAD,CAAa6B,KAAMA,EAAMQ,QAAS1E,EAAa2E,SAAUX,EAAUY,QAAnE,SACE,cAACxD,EAAA,EAAD,CAAKG,GAAI,CAAEiE,GAAI,GAAf,SACGI,EAAMV,KAAI,SAACC,GAAD,OACT,eAACC,EAAA,EAAD,CAEEe,SAAUhB,EAAOU,QAAUD,EAAM,GAAGC,MACpCzF,QAASJ,EACTuB,GAAI,CAAEiE,GAAI,EAAGV,GAAI,KAJnB,UAME,cAACsB,EAAA,EAAD,UACE,cAAChF,EAAA,EAAD,CAAKC,UAAU,MAAMoD,IAAKU,EAAO3B,MAAOgB,IAAKW,EAAO7E,SAEtD,cAAC+F,EAAA,EAAD,CAAcC,uBAAwB,CAAE1E,QAAS,SAAjD,SACGuD,EAAO3B,UATL2B,EAAOU,iBC5C1B,IAGMU,GAAYnI,YAAOoI,IAAPpI,EAAe,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CAC/Ca,UAAW,OACXJ,eAAgB,YAChBC,qBAAsB,YACtBM,gBAAiBC,YAAMjB,EAAMkB,QAAQC,WAAWC,QAAS,KACzDjB,OAAQ,SAGJiI,GAAerI,YAAOsI,IAAPtI,EAAgB,gBAAGC,EAAH,EAAGA,MAAH,oBACnCsI,UAZoB,IAanBtI,EAAMqB,YAAYC,GAAG,MAAQ,CAC5BgH,UAbmB,GAcnB3H,QAASX,EAAMY,QAAQ,EAAG,QAWf,SAAS2H,GAAT,GAA6D,IAAlCC,EAAiC,EAAjCA,cAAeC,EAAkB,EAAlBA,eACvD,EAA0CjH,oBAAS,GAAnD,mBAAOkH,EAAP,KAAsBC,EAAtB,KAUA,OACE,cAACT,GAAD,UACE,eAACE,GAAD,WACI,cAACtG,EAAA,EAAD,CAAYC,QAZK,WACnB2G,GACFD,IACAE,GAAiB,KAEjBH,IACAG,GAAiB,KAM0BzF,GAAI,CAAEE,GAAI,EAAGD,MAAO,gBAA3D,SACE,cAAC,IAAD,CAAMlB,KAAM2G,QAGhB,cAACrH,EAAD,IACA,cAACwB,EAAA,EAAD,CAAKG,GAAI,CAAE2F,SAAU,KAErB,eAACC,EAAA,EAAD,CAAO1G,UAAU,MAAM7B,WAAW,SAASK,QAAS,CAAEmI,GAAI,GAAKC,GAAI,KAAnE,UACE,cAACvB,GAAD,IACA,cAACjC,EAAD,Y,0BCzDK,SAASyD,GAAT,GAAuB,IAAP/F,EAAM,EAANA,GAC7B,OAAO,cAACH,EAAA,EAAD,CAAKC,UAAU,MAAMmD,IAAI,mBAAmBjD,GAAE,aAAI9C,MAAO,GAAII,OAAQ,IAAO0C,K,mCCH/EgF,GAAYnI,YAAO,MAAPA,CAAc,CAC9B8I,SAAU,EACVrI,OAAQ,OACRmE,SAAU,WAGNuE,GAAiBnJ,YAAOoJ,KAAPpJ,EAAuB,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CAC5DoJ,UAAW,OACX,yBAA0B,CACxB,WAAY,CACVpI,gBAAiBC,YAAMjB,EAAMkB,QAAQ4C,KAAK,KAAM,MAElD,6BAA8B,CAC5BuF,QAAS,IAGb,wCAAyC,CACvCjJ,MAAO,IAET,+DAAgE,CAC9DI,OAAQ,GAEV,oBAAqB,CACnBL,OAAQ,eAWG,SAASmJ,GAAT,GAAgD,IAA3BrF,EAA0B,EAA1BA,SAAUf,EAAgB,EAAhBA,GAAOgB,EAAS,kBAK5D,MAJiB,iEAAiEqF,KAChFC,UAAUC,WAKR,cAAC1G,EAAA,EAAD,yBAAKG,GAAE,aAAIwG,UAAW,QAAWxG,IAAUgB,GAA3C,aACGD,KAML,cAAC,GAAD,UACE,cAACiF,GAAD,yBAAgBS,QAAS,IAAKC,cAAc,EAAO1G,GAAIA,GAAQgB,GAA/D,aACGD,O,yGC9CH4F,GAAgB9J,aAAO,SAAC+J,GAAD,OAAW,cAACC,GAAA,EAAD,aAAgBC,gBAAc,GAAKF,MAArD/J,EACpB,gBAAGC,EAAH,EAAGA,MAAH,mBAAC,eACIA,EAAMkH,WAAW+C,OADtB,IAEEzJ,OAAQ,GACRF,SAAU,WACV4J,cAAe,aACfC,YAAanK,EAAMY,QAAQ,GAC3BwJ,aAAcpK,EAAMY,QAAQ,KAC5BuC,MAAOnD,EAAMkB,QAAQmJ,KAAKC,UAC1B,WAAY,CACVrK,IAAK,EACLuD,MAAO,EACPpD,MAAO,EACPmK,OAAQ,EACR9G,QAAS,KACTpD,QAAS,OACTC,SAAU,WACVkK,oBAAqB,EACrBC,uBAAwB,EACxBzJ,gBAAiBhB,EAAMkB,QAAQwG,QAAQC,WAKvC+C,GAAoB3K,YAAOgI,IAAPhI,CAAqB,CAC7CK,MAAO,GACPI,OAAQ,GACRH,QAAS,OACTE,WAAY,SACZoK,eAAgB,WAUlB,SAASC,GAAT,GAAoC,IAAjBC,EAAgB,EAAhBA,KAAMC,EAAU,EAAVA,OACjB9K,EAAQ+K,eACRC,EAAeF,EAAOD,EAAKI,MACzBC,EAAsCL,EAAtCK,MAAOD,EAA+BJ,EAA/BI,KAAMhJ,EAAyB4I,EAAzB5I,KAAMkJ,EAAmBN,EAAnBM,KAAMlH,EAAa4G,EAAb5G,SACjC,EAAwBzC,mBAASwJ,GAAjC,mBAAOnF,EAAP,KAAanE,EAAb,KAMM0J,EAAkB,CACtBjI,MAAO,eACPE,WAAY,mBACZ4C,QAAShF,YAAMjB,EAAMkB,QAAQwG,QAAQC,KAAM3H,EAAMkB,QAAQ0G,OAAOyD,iBAChE,WAAY,CAAEhL,QAAS,UAGnBiL,EAAiB,CACrBnI,MAAO,eACPE,WAAY,oBAGd,OAAIY,EAEA,qCACE,eAAC4F,GAAD,CACE9H,QApBW,WACjBL,GAAQ,SAACM,GAAD,OAAWA,MAoBbkB,GAAE,eACI8H,GAAgBI,GAHxB,UAME,cAACV,GAAD,UAAoBzI,GAAQA,IAC5B,cAAC+F,EAAA,EAAD,CAAcuD,mBAAiB,EAAC7D,QAASwD,IACxCC,GAAQA,EACT,cAACpI,EAAA,EAAD,CACEC,UAAWC,IACXhB,KAAM4D,EAAO2F,KAAuBC,KACpCvI,GAAI,CAAE9C,MAAO,GAAII,OAAQ,GAAIkE,GAAI,QAIrC,cAACgH,GAAA,EAAD,CAAUrJ,GAAIwD,EAAM8D,QAAQ,OAAOpH,eAAa,EAAhD,SACE,cAACoJ,GAAA,EAAD,CAAM3I,UAAU,MAAM4I,gBAAc,EAApC,SACG3H,EAAS4C,KAAI,SAACgE,GACb,IAAQK,EAAgBL,EAAhBK,MAAOD,EAASJ,EAATI,KACTY,EAAcf,EAAOG,GAE3B,OACE,eAACpB,GAAD,CAEE7G,UAAWiE,IACXD,GAAIiE,EACJ/H,GAAE,eACI2I,GAAeP,GALvB,UAQE,cAACZ,GAAD,UACE,cAAC3H,EAAA,EAAD,CACEC,UAAU,OACVE,GAAE,aACA9C,MAAO,EACPI,OAAQ,EACRH,QAAS,OACTqD,aAAc,MACdnD,WAAY,SACZoK,eAAgB,SAChB1E,QAAS,gBACT6F,WAAY,SAAC9L,GAAD,OAAWA,EAAM+L,YAAYC,OAAO,eAC5CH,GAAe,CACjBlI,UAAW,WACXsC,QAAS,qBAKjB,cAAC+B,EAAA,EAAD,CAAcuD,mBAAiB,EAAC7D,QAASwD,MA1BpCA,aAqCnB,eAACrB,GAAD,CACE7G,UAAWiE,IACXD,GAAIiE,EACJ/H,GAAE,eACI8H,GAAgBI,GAJxB,UAOE,cAACV,GAAD,UAAoBzI,GAAQA,IAC5B,cAAC+F,EAAA,EAAD,CAAcuD,mBAAiB,EAAC7D,QAASwD,IACxCC,GAAQA,KASA,SAASc,GAAT,GAA8C,IAAxBC,EAAuB,EAAvBA,UAAchI,EAAS,kBAClDiI,EAAaC,cAAbD,SACFE,EAAQ,SAACpB,GAAD,QAAWA,KAASqB,YAAU,CAAErB,OAAMsB,KAAK,GAASJ,IAElE,OACE,cAACpJ,EAAA,EAAD,2BAASmB,GAAT,aACE,cAACyH,GAAA,EAAD,CAAMC,gBAAc,EAApB,SACGM,EAAUrF,KAAI,SAACgE,GAAD,OACb,cAACD,GAAD,CAA0BC,KAAMA,EAAMC,OAAQuB,GAAhCxB,EAAKK,e,uJCzJvBsB,GAAU,SAACC,GAAD,OAAU,cAAC,IAAD,CAAMxK,KAAMwK,EAAMrM,MAAO,GAAII,OAAQ,MAsEhDkM,GApEO,CACpB,CACExB,MAAO,YACPD,KAAM,YACNhJ,KAAMuK,GAAQG,OAEhB,CACEzB,MAAO,oBACPD,KAAM,kBACNhJ,KAAMuK,GAAQI,OAEhB,CACE1B,MAAO,gBACPD,KAAM,aACNhJ,KAAMuK,GAAQK,OAEhB,CACE3B,MAAO,gBACPD,KAAM,qBACNhJ,KAAMuK,GAAQM,OAEhB,CACE5B,MAAO,iBACPD,KAAM,sBACNhJ,KAAMuK,GAAQO,OAEhB,CACE7B,MAAO,sBACPD,KAAM,2BACNhJ,KAAMuK,GAAQQ,OAEhB,CACE9B,MAAO,kBACPD,KAAM,uBACNhJ,KAAMuK,GAAQS,QC3BZ/E,GAAYnI,YAAO,MAAPA,EAAc,gBAAGC,EAAH,EAAGA,MAAH,sBAC7BA,EAAMqB,YAAYC,GAAG,MAAQ,CAC5B4L,WAAY,EACZ9M,MAAO,OAIL+M,GAAepN,YAAO,MAAPA,EAAc,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CACjDK,QAAS,OACTE,WAAY,SACZI,QAASX,EAAMY,QAAQ,EAAG,KAC1B8C,aAAc1D,EAAMoN,MAAMC,eAC1BrM,gBAAiBhB,EAAMkB,QAAQ4C,KAAK,SAUvB,SAASwJ,GAAT,GAA8D,IAAlC5E,EAAiC,EAAjCA,cAAeD,EAAkB,EAAlBA,eAChD0D,EAAaC,cAAbD,SAERoB,qBAAU,WACJ7E,GACFD,MAGD,CAAC0D,IAEJ,IAAMqB,EACJ,eAAClE,GAAD,CACEpG,GAAI,CACF1C,OAAQ,OACR,uBAAwB,CAAEA,OAAQ,OAAQH,QAAS,OAAQoN,cAAe,WAH9E,UAME,cAAC1K,EAAA,EAAD,CAAKG,GAAI,CAAEuD,GAAI,IAAKU,GAAI,GAAxB,SACE,cAACpE,EAAA,EAAD,CAAKC,UAAWiE,IAAYD,GAAG,IAAI9D,GAAI,CAAE7C,QAAS,eAAlD,SACE,cAAC4I,GAAD,QAIJ,cAAClG,EAAA,EAAD,CAAKG,GAAI,CAAEwK,GAAI,EAAGC,GAAI,KAAtB,SACE,cAACC,GAAA,EAAD,CAAMC,UAAU,OAAO7K,UAAWiE,IAAYD,GAAG,IAAjD,SACE,eAACmG,GAAD,WACE,cAACjH,EAAA,EAAD,CAAQC,IAAKrB,EAAQG,SAAUmB,IAAI,aACnC,eAACrD,EAAA,EAAD,CAAKG,GAAI,CAAEwB,GAAI,GAAf,UACE,cAACgC,EAAA,EAAD,CAAYnD,QAAQ,YAAYL,GAAI,CAAEC,MAAO,gBAA7C,SACG2B,EAAQC,cAEX,cAAC2B,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,kBAAzC,SACG2B,EAAQgJ,iBAOnB,cAAC7B,GAAD,CAAYC,UAAWQ,KAEvB,cAAC3J,EAAA,EAAD,CAAKG,GAAI,CAAE2F,SAAU,QAKzB,OACE,cAAC,GAAD,UACA,cAACkF,GAAA,EAAD,CACElI,KAAM6C,EACNrC,QAASoC,EACTlF,QAAQ,aACRiB,WAAY,CACVtB,GAAI,CAAE9C,MA7EO,MAwEjB,SAQGoN,MCvFP,IAGMtF,GAAYnI,YAAO,MAAPA,CAAc,CAC9BM,QAAS,OACTiI,UAAW,OACX3D,SAAU,WAGNqJ,GAAYjO,YAAO,MAAPA,EAAc,gBAAGC,EAAH,EAAGA,MAAH,oBAC9B6I,SAAU,EACVlE,SAAU,OACV2D,UAAW,OACX2F,WAAYC,GACZC,cAAenO,EAAMY,QAAQ,IAC5BZ,EAAMqB,YAAYC,GAAG,MAAQ,CAC5B2M,WAAYG,IACZjE,YAAanK,EAAMY,QAAQ,GAC3BwJ,aAAcpK,EAAMY,QAAQ,QAMjB,SAASyN,KACtB,MAAwB7M,oBAAS,GAAjC,mBAAOqE,EAAP,KAAanE,EAAb,KAEA,OACE,eAAC,GAAD,WACE,cAAC6G,GAAD,CAAiBC,cAAe,kBAAM9G,GAAQ,IAAO+G,eAAgB,kBAAM/G,GAAQ,MACnF,cAAC4L,GAAD,CAAkB5E,cAAe7C,EAAM4C,eAAgB,kBAAM/G,GAAQ,MACrE,cAACsM,GAAD,UACE,cAAC,IAAD,SClCR,IAAMM,GAAcvO,YAAO,SAAPA,EAAiB,gBAAGC,EAAH,EAAGA,MAAH,oBACnCC,IAAK,EACLC,KAAM,EACNqO,WAAY,EACZnO,MAAO,OACPE,SAAU,WACVK,QAASX,EAAMY,QAAQ,EAAG,EAAG,IAC5BZ,EAAMqB,YAAYC,GAAG,MAAQ,CAC5BX,QAASX,EAAMY,QAAQ,EAAG,EAAG,QAMlB,SAAS4N,KACtB,OACE,qCACE,cAACF,GAAD,UACE,cAAC,IAAD,CAAYtH,GAAG,IAAf,SACE,cAACiC,GAAD,QAGJ,cAAC,IAAD,O,qECtBAwF,GAAOC,sBAAW,WAAqC1I,GAArC,IAAG/B,EAAH,EAAGA,SAAH,IAAaiH,aAAb,MAAqB,GAArB,EAA4BhH,EAA5B,yBACtB,eAACnB,EAAA,EAAD,yBAAKiD,IAAKA,GAAS9B,GAAnB,cACE,cAAC,IAAD,UACE,gCAAQgH,MAETjH,SAILwK,GAAKE,UAAY,CACf1K,SAAU2K,KAAUC,KAAKC,WACzB5D,MAAO0D,KAAUG,QAGJN,U,6JCUA,SAASO,KACtB,MAA2CtJ,cAAnCuJ,EAAR,EAAQA,gBAAiBxJ,EAAzB,EAAyBA,cACzB,EAAejE,mBAAS,CACtB0N,GAAIC,sBACJC,KAAMD,sBACNnK,MAAOmK,sBACPE,SAAUF,wBAJLG,EAAP,oBAMMxJ,EAAWC,cACjB,EAAwCvE,oBAAS,GAAjD,mBAAO+N,EAAP,KAAqBC,EAArB,KACA,EAA4BhO,mBAAS,IAArC,mBAAOiO,EAAP,KAAeC,EAAf,KACA,EAAalO,mBAAS,IAAf0N,EAAP,oBACA,EAAe1N,mBAAS,IAAjB4N,EAAP,oBACA,EAAgB5N,mBAAS,IAAlBwD,EAAP,oBACA,EAAmBxD,mBAAS,IAArB6N,EAAP,oBAeMM,EAAcC,OAAaxC,MAAM,CACrCpI,MAAO4K,OACJ5K,MAAM,uCACN6K,SAAS,qBACZR,SAAUO,OAAaC,SAAS,wBAChCX,GAAIU,OAAaC,SAAS,uBAC1BT,KAAMQ,OAAaC,SAAS,2BAGxBC,EAASC,aAAU,CACvBC,cAAe,CACbhL,MAAOA,EACPqK,SAAUA,EACVH,GAAIA,EACJE,KAAMA,EACNa,UAAU,GAEZC,iBAAkBP,EAClBQ,SAAU,WACR1K,IACAwJ,EAAgB,gBAAiB,CAC/B1L,QAAS,OACT6M,SAAS,IAGX,IAAIX,EAASK,EAAOO,OAAOnB,GACvBE,EAAOU,EAAOO,OAAOjB,KAErBkB,EAAM,QAAUb,EAAS,IAAML,EAAO,OAC1CmB,QAAQC,IAAIF,GACZ,IAAMG,EAAS,IAAIC,UAAUJ,EAAK,iBAAkBb,EAAQ,CAC1D,eAAgB,SAChBkB,cACE,SAAW,IAAIC,UAAOC,MAAM,GAAI,aAAaC,SAAS,YA6B1D,OA1BAL,EAAOM,OAAS,SAAUC,GACxBvL,IAEAwL,KAAiB,SAAU,CACzB/B,GAAIO,EACJL,KAAMA,EACNkB,IAAKA,IAEPrB,EAAgB,uCAAwC,CACtD1L,QAAS,UACT2N,iBAAkB,MAEpBT,EAAOU,QAEPC,YAAW,WACTtL,EAAS,aAAc,CAAEwB,SAAS,MACjC,MAGLmJ,EAAOY,QAAU,SAAUL,GACzBvL,IACAwJ,EAAgB,iCAAkC,CAChD1L,QAAS,QACT6M,SAAS,MAGN,KAIHkB,EACNxB,EADMwB,OAAQC,EACdzB,EADcyB,QAASlB,EACvBP,EADuBO,OAAQmB,EAC/B1B,EAD+B0B,aAAcC,EAC7C3B,EAD6C2B,aAAcC,EAC3D5B,EAD2D4B,cAO7D,OACE,cAAC,KAAD,CAAgBlK,MAAOsI,EAAvB,SACE,eAAC,KAAD,CAAM6B,aAAa,MAAMC,YAAU,EAACzB,SAAUsB,EAA9C,UACE,eAAC3I,EAAA,EAAD,CAAOlI,QAAS,EAAhB,UACE,eAACiR,GAAA,EAAD,CAAanP,WAAS,EAAtB,UACE,cAACoP,GAAA,EAAD,CAAYC,GAAG,2BAAf,oBACA,eAACC,GAAA,EAAD,CACEC,QAAQ,2BACRF,GAAG,qBACHvK,MAAOiI,EACPtK,MAAM,SACN+M,SAlGS,SAACC,GACpBzC,EAAUyC,EAAMC,OAAO5K,OACI,UAAvB2K,EAAMC,OAAO5K,OACfsI,EAAOuC,cAAc,KAAM,aAC3BvC,EAAOuC,cAAc,OAAQ,MAC7BvC,EAAOuC,cAAc,QAAS,uBAC9BvC,EAAOuC,cAAc,WAAY,SACD,UAAvBF,EAAMC,OAAO5K,QACtBsI,EAAOuC,cAAc,KAAM,iBAC3BvC,EAAOuC,cAAc,OAAQ,MAC7BvC,EAAOuC,cAAc,QAAS,uBAC9BvC,EAAOuC,cAAc,WAAY,UAkF3B,UAOE,cAACtL,EAAA,EAAD,CAAUS,MAAO,QAAjB,mBACA,cAACT,EAAA,EAAD,CAAUS,MAAO,QAAjB,oCACA,cAACT,EAAA,EAAD,CAAUS,MAAO,QAAjB,mBACA,cAACT,EAAA,EAAD,CAAUS,MAAO,iBAAjB,4BACA,cAACT,EAAA,EAAD,CAAUS,MAAO,cAAjB,yBACA,cAACT,EAAA,EAAD,CAAUS,MAAO,SAAjB,0BAIJ,cAAC8K,GAAA,EAAD,yBACE5P,WAAS,EACTiP,aAAa,KACbY,KAAM,OACNpN,MAAM,UACNqC,MAAO0H,EACPlJ,IAAKsJ,EAAKJ,IACNwC,EAAc,OAPpB,IAQEc,MAAOC,QAAQlB,EAAQrC,IAAMoC,EAAOpC,IACpCwD,WAAYnB,EAAQrC,IAAMoC,EAAOpC,MAEnC,cAACoD,GAAA,EAAD,yBACE5P,WAAS,EACTiP,aAAa,OACbY,KAAM,SACNpN,MAAM,YACNqC,MAAO4H,EACPpJ,IAAKsJ,EAAKF,MACNsC,EAAc,SAPpB,IAQEc,MAAOC,QAAQlB,EAAQnC,MAAQkC,EAAOlC,MACtCsD,WAAYnB,EAAQnC,MAAQkC,EAAOlC,WAIvC,cAACxI,EAAA,EAAD,CAAS1D,GAAI,CAAEsD,GAAI,GAAnB,SACE,cAACE,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,kBAAzC,mBAKF,eAAC2F,EAAA,EAAD,CAAOlI,QAAS,EAAhB,UACE,cAAC0R,GAAA,EAAD,yBACE5P,WAAS,EACTiP,aAAa,WACbY,KAAK,QACLpN,MAAM,gBACNqC,MAAOxC,EACPgB,IAAKsJ,EAAKtK,OACN0M,EAAc,UAPpB,IAQEc,MAAOC,QAAQlB,EAAQvM,OAASsM,EAAOtM,OACvC0N,WAAYnB,EAAQvM,OAASsM,EAAOtM,SAGtC,cAACsN,GAAA,EAAD,yBACE5P,WAAS,EACTiP,aAAa,mBACbY,KAAMhD,EAAe,OAAS,WAC9BpK,MAAM,WACNqC,MAAO6H,EACPrJ,IAAKsJ,EAAKD,UACNqC,EAAc,aAPpB,IAQEiB,WAAY,CACVC,aACE,cAAC9P,EAAA,EAAD,CAAgBxC,SAAS,MAAzB,SACE,cAACwB,EAAA,EAAD,CAAYC,QAhFD,WACzByN,GAAgB,SAACqD,GAAD,OAAWA,MA+E4BC,KAAK,MAA9C,SACE,cAAC,IAAD,CAAM7Q,KAAMsN,EAAewD,KAAUC,YAK7CR,MAAOC,QAAQlB,EAAQlC,UAAYiC,EAAOjC,UAC1CqD,WAAYnB,EAAQlC,UAAYiC,EAAOjC,eAI3C,eAACvG,EAAA,EAAD,CACE1G,UAAU,MACV7B,WAAW,SACXoK,eAAe,gBACfzH,GAAI,CAAEsD,GAAI,GAJZ,UAME,cAACyM,GAAA,EAAD,CACEC,QACE,cAACC,GAAA,EAAD,2BACMzB,EAAc,aADpB,IAEE0B,QAAS/C,EAAOJ,YAGpB9K,MAAM,gBAGR,cAACyI,GAAA,EAAD,CAAM5K,UAAWiE,IAAY1D,QAAQ,YAAYyD,GAAG,IAApD,iCAKF,cAACqM,GAAA,EAAD,CACE3Q,WAAS,EACT4Q,KAAK,QACLf,KAAK,SACLhP,QAAQ,YACRgQ,QAAS/B,EALX,wBCxOR,IAAMtJ,GAAYnI,YAAO0O,GAAP1O,EAAa,gBAAGC,EAAH,EAAGA,MAAH,oBAC7BmB,WAAY,kEACZX,OAAQ,OACRgT,eAAgB,SACfxT,EAAMqB,YAAYC,GAAG,MAAQ,CAC5BjB,QAAS,YAIPoT,GAAe1T,YAAO2T,KAAP3T,EAAa,cAAGC,MAAH,MAAgB,CAChDW,QAAS,OACTP,MAAO,OACPuT,SAAU,IACVtT,QAAS,OACToN,cAAe,SACf9C,eAAgB,SAChBxJ,WAAY,0BACZV,eAAgB,iBAGZmT,GAAe7T,YAAO,MAAPA,EAAc,kBAAgB,CACjD4T,SAAU,IACVE,OAAQ,OACRxT,QAAS,OACToN,cAAe,SACf9C,eAAgB,SAChBhK,QANiC,EAAGX,MAMrBY,QAAQ,GAAK,OAKf,SAASkT,KACtB,OACE,cAAC,GAAD,CAAW5I,MAAM,oBAAjB,SACE,cAAC6I,GAAA,EAAD,CAAWJ,SAAS,KAApB,SACE,cAACC,GAAD,UACE,eAACH,GAAD,WACE,eAAC3K,EAAA,EAAD,CAAO5F,GAAI,CAAEwK,GAAI,GAAjB,UACE,cAAChH,EAAA,EAAD,CAAYnD,QAAQ,KAAKyQ,cAAY,EAArC,kCAGA,cAACtN,EAAA,EAAD,CAAYxD,GAAI,CAAEC,MAAO,kBAAzB,0CAIF,cAAC6L,GAAD,a,6EC1CL,SAASiF,GAAQC,GACtB,OAAOC,KAAQD,GAAQE,SAGlB,SAASC,GAAeH,GAC7B,OAAO5M,mBAAQ6M,KAAQD,GAAQE,OAAO,SAAU,MAAO,ICRzD,IAAMlM,GAAYnI,YAAO2T,KAAP3T,EAAa,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CAC7Ca,UAAW,OACXyT,UAAW,SACX3T,QAASX,EAAMY,QAAQ,EAAG,GAC1BuC,MAAOnD,EAAMkB,QAAQsR,MAAM+B,OAC3BvT,gBAAiBhB,EAAMkB,QAAQsR,MAAMgC,YAGjCC,GAAmB1U,YAAO,MAAPA,EAAc,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CACrD6T,OAAQ,OACRxT,QAAS,OACTqD,aAAc,MACdnD,WAAY,SACZH,MAAOJ,EAAMY,QAAQ,GACrBJ,OAAQR,EAAMY,QAAQ,GACtB+J,eAAgB,SAChB+J,aAAc1U,EAAMY,QAAQ,GAC5BuC,MAAOnD,EAAMkB,QAAQsR,MAAMmC,KAC3BC,gBAAgB,2BAAD,OAA6B3T,YAAMjB,EAAMkB,QAAQsR,MAAMmC,KAAM,GAA7D,gBAAuE1T,YACpFjB,EAAMkB,QAAQsR,MAAMmC,KACpB,KAFa,cASF,SAASE,GAAc/K,GACpC,OACE,eAAC,GAAD,WACE,cAAC2K,GAAD,UACE,cAAC,IAAD,CAAMxS,KAAM6S,KAAe1U,MAAO,GAAII,OAAQ,OAEhD,cAACkG,EAAA,EAAD,CAAYnD,QAAQ,KAApB,SAA0B8Q,GAAevK,EAAMtC,SAC/C,cAACd,EAAA,EAAD,CAAYnD,QAAQ,YAAYL,GAAI,CAAEmG,QAAS,KAA/C,oC,+CCtCC,SAAS0L,KACd,IAAM/U,EAAQ+K,eAER5J,EAAa,CACjBV,eAAgB,YAChBC,qBAAsB,YACtBM,gBAAiBC,YAAMjB,EAAMkB,QAAQC,WAAWC,QAAS,MAG3D,OACE,cAAC4T,GAAA,EAAD,CACEC,OAAQ,CACN,sBAAuB,CAErB,2BAA2B,2BACtB9T,GADL,IAEE0D,OAAQ,EACRhE,UAAWb,EAAMc,cAAcoU,IAC/B/R,MAAOnD,EAAMkB,QAAQmJ,KAAK3C,QAC1BhE,aAAc1D,EAAMoN,MAAMC,eAC1B,WAAY,CAAE8H,kBAAmB,eACjC,UAAW,CAAEA,kBAAmBlU,YAAMjB,EAAMkB,QAAQC,WAAWC,QAAS,QAE1E,6CAA6C,2BACxCD,GADL,IAEE0D,OAAQ,EACRhE,UAAWb,EAAMc,cAAcoU,IAC/BxR,aAAc1D,EAAMoN,MAAMC,eAC1B,8BAA+B,CAC7BxI,OAAQ,EACRyP,UAAW,SACXjR,WAAYrD,EAAMkH,WAAWkO,eAC7BpU,gBAAiBhB,EAAMkB,QAAQ4C,KAAK,OACpCX,MAAOnD,EAAMkB,QAAQmJ,KAA4B,UAAvBrK,EAAMkB,QAAQmU,KAAmB,YAAc,cAI7E,qBAAsB,CACpB1U,QAAS,GAEX,4BAA6B,CAC3BN,QAAS,kBACTE,WAAY,UAEd,4BAA6B,CAC3B+U,YAAa,GAEf,0BAA2B,CACzB/G,WAAY,OACZrE,cAAe,kBAQZ,SAASqL,KACtB,IAAMvV,EAAQ+K,eAERyK,EAAW,aACf3C,MAAM,EACN1N,MAAO,QACPhC,MAAOnD,EAAMkB,QAAQmJ,KAAKC,WACvBtK,EAAMkH,WAAWuO,WAGhBC,EAAW,aACfC,QAAS,EACTxS,MAAOnD,EAAMkB,QAAQmJ,KAAK3C,SACvB1H,EAAMkH,WAAW0O,IAGtB,MAAO,CAELC,OAAQ,CACN7V,EAAMkB,QAAQwG,QAAQC,KACtB3H,EAAMkB,QAAQ4U,MAAMC,OAAO,GAC3B/V,EAAMkB,QAAQ4U,MAAME,KAAK,GACzBhW,EAAMkB,QAAQ4U,MAAMG,OAAO,GAC3BjW,EAAMkB,QAAQ4U,MAAMI,MAAM,GAC1BlW,EAAMkB,QAAQ4U,MAAMK,IAAI,IAI1BL,MAAO,CACLM,QAAS,CAAEvD,MAAM,GACjBwD,KAAM,CAAEC,SAAS,GAEjBC,UAAWvW,EAAMkB,QAAQmJ,KAAKmM,SAC9BC,WAAYzW,EAAMkH,WAAWuP,YAI/BC,OAAQ,CACNC,MAAO,CACLC,OAAQ,CACNrE,KAAM,UACN/K,MAAO,MAGXsD,OAAQ,CACN8L,OAAQ,CACNrE,KAAM,SACN/K,MAAO,OAMbqP,KAAM,CACJxN,QAAS,EACTyN,SAAU,CACRvE,KAAM,WACNwE,eAAgB,EAChBC,YAAa,GACbC,UAAW,EACXC,MAAO,CAAC,EAAG,OAKfC,WAAY,CAAEb,SAAS,GAGvBc,OAAQ,CACNhX,MAAO,EACPiX,MAAO,SACPC,QAAS,SAIXC,KAAM,CACJC,gBAAiB,EACjBC,YAAazX,EAAMkB,QAAQwW,SAI7BC,MAAO,CACLC,WAAY,CAAE/E,MAAM,GACpBgF,UAAW,CAAEhF,MAAM,IAIrBiF,QAAS,CACPxE,KAAM,EACNyE,aAAc/X,EAAMkB,QAAQC,WAAWyC,OAIzCoU,QAAS,CACPC,EAAG,CACDpF,MAAM,IAKVqF,OAAQ,CACNrF,MAAM,EACNsF,SAAU,GACV7X,SAAU,MACV8X,gBAAiB,QACjBN,QAAS,CACPO,OAAQ,IAEVhV,WAAY,IACZiV,WAAY,CAAEhU,WAAY,IAC1BiU,OAAQ,CACN1C,OAAQ7V,EAAMkB,QAAQmJ,KAAK3C,UAK/B8Q,YAAa,CAEXC,IAAK,CACHC,YAAa,MACbhV,aAAc,GAGhBiV,IAAK,CACHC,MAAO,CACLL,OAAQ,CACN1F,MAAM,EACNrL,MAAOkO,EACPmD,MAAOrD,KAKbsD,UAAW,CACTC,MAAO,CACLC,YAAa,OACb7X,WAAYnB,EAAMkB,QAAQ4C,KAAK,QAEjCqT,WAAY,CACV3P,MAAOkO,EACPmD,MAAOrD,IAIXyD,MAAO,CACLC,SAAU,CACRrC,KAAM,CAAEhB,OAAQ,CAAC,gBACjBkC,aAAc/X,EAAMkB,QAAQwW,QAC5ByB,gBAAiBnZ,EAAMkB,QAAQwW,UAInC0B,UAAW,CACTC,MAAO,CACLC,YAAatZ,EAAMkB,QAAQwW,SAE7B6B,OAAQ,CACNJ,gBAAiBnZ,EAAMkB,QAAQwW,WAMrC8B,WAAY,CACV,CAEEC,WAAYzZ,EAAMqB,YAAYgP,OAAOrH,GACrC0Q,QAAS,CACPlB,YAAa,CAAEC,IAAK,CAAEC,YAAa,UAGvC,CAEEe,WAAYzZ,EAAMqB,YAAYgP,OAAOsJ,GACrCD,QAAS,CACPlB,YAAa,CAAEC,IAAK,CAAEC,YAAa,YCnO7C,IAAMkB,GAAa,CAAC,CAAEC,KAAM,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,QAE7D,SAASC,KACtB,IAAMC,EAAeC,iBAAMzE,KAAmB,CAC5CyC,QAAS,CACPiC,OAAQ,CAAEpH,MAAM,GAChBqH,EAAG,CACDC,UAAW,SAACC,GAAD,OAAgBnG,GAAQmG,IACnClP,MAAO,CACLiP,UAAW,SAACC,GAAD,iBAAoBA,OAIrC5B,YAAa,CACXC,IAAK,CAAEnU,YAAY,EAAM+V,UAAW,MAAO3W,aAAc,IAE3DiU,MAAO,CACL2C,WAAY,CACV,QACA,QACA,QACA,SACA,SACA,UACA,cACA,cACA,gBACA,qBAKN,OACE,eAAC5G,GAAA,EAAD,WACE,cAAC6G,GAAA,EAAD,CAAYrP,MAAM,qBAClB,cAACnI,EAAA,EAAD,CAAKG,GAAI,CAAEyK,GAAI,GAAK6M,IAAI,MAAxB,SACE,cAAC,KAAD,CAAgBjI,KAAK,MAAMkI,OAAQb,GAAYF,QAASK,EAAcvZ,OAAQ,WCrCtF,IAGMka,GAAoB3a,YAAO,MAAPA,EAAc,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CACtDQ,OAJmB,IAKnBma,UAAW3a,EAAMY,QAAQ,GACzB,2BAA4B,CAC1BJ,OAPiB,KASnB,4DAA6D,CAC3DmE,SAAU,WAEZ,uBAAwB,CACtBnE,OAZkB,GAalBoa,aAAc,SACdta,SAAU,sBACVua,UAAU,aAAD,OAAe7a,EAAMkB,QAAQwW,SACtCzX,IAAI,QAAD,OAAU6a,IAAV,uBAMDlB,GAAa,CACjB,CAAEnN,KAAM,WAAYoN,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,KAChD,CAAEpN,KAAM,WAAYoN,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,KAC/C,CAAEpN,KAAM,WAAYoN,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,MAGlC,SAASkB,KACtB,IAAM/a,EAAQ+K,eAERgP,EAAeC,iBAAMzE,KAAmB,CAC5C6B,OAAQ,CAAEhX,MAAO,GACjByW,KAAM,CAAExN,QAAS,KACjB6O,OAAQ,CAAE8C,UAAU,EAAM5C,gBAAiB,UAC3CT,MAAO,CACL2C,WAAY,CAAC,UAAW,UAAW,UAAW,YAAa,UAAW,QACtE/B,OAAQ,CACN0C,MAAO,CACLpF,OAAQ,CACN7V,EAAMkB,QAAQmJ,KAAKC,UACnBtK,EAAMkB,QAAQmJ,KAAKC,UACnBtK,EAAMkB,QAAQmJ,KAAKC,UACnBtK,EAAMkB,QAAQmJ,KAAKC,UACnBtK,EAAMkB,QAAQmJ,KAAKC,UACnBtK,EAAMkB,QAAQmJ,KAAKC,gBAO7B,OACE,eAACoJ,GAAA,EAAD,WACE,cAAC6G,GAAA,EAAD,CAAYrP,MAAM,oBAClB,cAACwP,GAAD,CAAmBF,IAAI,MAAvB,SACE,cAAC,KAAD,CAAgBjI,KAAK,QAAQkI,OAAQb,GAAYF,QAASK,EAAcvZ,OAAQ,WCvDxF,IAGMka,GAAoB3a,YAAO,MAAPA,EAAc,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CACtDQ,OAJmB,IAKnBma,UAAW3a,EAAMY,QAAQ,GACzB,2BAA4B,CAAEJ,OANX,KAOnB,4DAA6D,CAC3DmE,SAAU,WAEZ,uBAAwB,CACtBnE,OAVkB,GAWlBoa,aAAc,SACdta,SAAU,sBACVua,UAAU,aAAD,OAAe7a,EAAMkB,QAAQwW,SACtCzX,IAAI,QAAD,OAAU6a,IAAV,uBAMDlB,GAAa,CAAC,KAAM,KAAM,KAAM,MAEvB,SAASsB,KACtB,IAAMlb,EAAQ+K,eAERgP,EAAeC,iBAAMzE,KAAmB,CAC5CM,OAAQ,CACN7V,EAAMkB,QAAQwG,QAAQC,KACtB3H,EAAMkB,QAAQiK,KAAKxD,KACnB3H,EAAMkB,QAAQia,QAAQxT,KACtB3H,EAAMkB,QAAQsR,MAAM7K,MAEtB4Q,OAAQ,CAAC,UAAW,OAAQ,SAAU,UACtCnB,OAAQ,CAAEvB,OAAQ,CAAC7V,EAAMkB,QAAQC,WAAWyC,QAC5CsU,OAAQ,CAAE8C,UAAU,EAAM5C,gBAAiB,UAC3CjB,WAAY,CAAEb,SAAS,EAAM8E,WAAY,CAAE9E,SAAS,IACpD0B,QAAS,CACPqD,iBAAiB,EACjBnB,EAAG,CACDC,UAAW,SAACC,GAAD,OAAgBnG,GAAQmG,IACnClP,MAAO,CACLiP,UAAW,SAACC,GAAD,iBAAoBA,OAIrC5B,YAAa,CACXG,IAAK,CAAEC,MAAO,CAAEL,OAAQ,CAAE1F,MAAM,QAIpC,OACE,eAACa,GAAA,EAAD,WACE,cAAC6G,GAAA,EAAD,CAAYrP,MAAM,uBAClB,cAAC,GAAD,CAAmBsP,IAAI,MAAvB,SACE,cAAC,KAAD,CAAgBjI,KAAK,MAAMkI,OAAQb,GAAYF,QAASK,EAAcvZ,OAAQ,W,yBCzDhF0H,GAAYnI,YAAO2T,KAAP3T,EAAa,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CAC7Ca,UAAW,OACXyT,UAAW,SACX3T,QAASX,EAAMY,QAAQ,EAAG,GAC1BuC,MAAOnD,EAAMkB,QAAQia,QAAQ5G,OAC7BvT,gBAAiBhB,EAAMkB,QAAQia,QAAQ3G,YAGnCC,GAAmB1U,YAAO,MAAPA,EAAc,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CACrD6T,OAAQ,OACRxT,QAAS,OACTqD,aAAc,MACdnD,WAAY,SACZH,MAAOJ,EAAMY,QAAQ,GACrBJ,OAAQR,EAAMY,QAAQ,GACtB+J,eAAgB,SAChB+J,aAAc1U,EAAMY,QAAQ,GAC5BuC,MAAOnD,EAAMkB,QAAQia,QAAQxG,KAC7BC,gBAAgB,2BAAD,OAA6B3T,YAAMjB,EAAMkB,QAAQia,QAAQxG,KAAM,GAA/D,gBAAyE1T,YACtFjB,EAAMkB,QAAQia,QAAQxG,KACtB,KAFa,cAUF,SAAS2G,KACtB,OACE,eAAC,GAAD,WACE,cAAC,GAAD,UACE,cAAC,IAAD,CAAMrZ,KAAMsZ,KAAgBnb,MAAO,GAAII,OAAQ,OAEjD,cAACkG,EAAA,EAAD,CAAYnD,QAAQ,KAApB,SAA0B8Q,GARlB,YASR,cAAC3N,EAAA,EAAD,CAAYnD,QAAQ,YAAYL,GAAI,CAAEmG,QAAS,KAA/C,wC,2CC3COmS,GAAe,SAACC,GAAD,iDAA+CA,EAA/C,SCatBC,GAAO,aAAIC,MAAM,IAAI9U,KAAI,SAAC+U,EAAGH,GACjC,IAAMI,EAAWJ,EAAQ,EACzB,MAAO,CACLvQ,MAAO4Q,KAAMrP,KAAKvB,QAClB6Q,YAAaD,KAAME,MAAMC,aACzBC,MAAOV,GAAaK,GACpBM,SAAUL,KAAMM,KAAKC,WAUzB,SAASC,GAAT,GAA6B,IAATC,EAAQ,EAARA,KACVL,EAAwCK,EAAxCL,MAAOhR,EAAiCqR,EAAjCrR,MAAO6Q,EAA0BQ,EAA1BR,YAAaI,EAAaI,EAAbJ,SAEnC,OACE,eAACrT,EAAA,EAAD,CAAO1G,UAAU,MAAM7B,WAAW,SAASK,QAAS,EAApD,UACE,cAACmC,EAAA,EAAD,CACEC,UAAU,MACVoD,IAAK8E,EACL/E,IAAK+V,EACLhZ,GAAI,CAAE9C,MAAO,GAAII,OAAQ,GAAIkD,aAAc,OAE7C,eAACX,EAAA,EAAD,CAAKG,GAAI,CAAEsZ,SAAU,KAArB,UACE,cAAC5O,GAAA,EAAD,CAAM5G,GAAG,IAAI7D,MAAM,UAAU0K,UAAU,QAAQ7K,UAAWiE,IAA1D,SACE,cAACP,EAAA,EAAD,CAAYnD,QAAQ,YAAYoD,QAAM,EAAtC,SACGuE,MAGL,cAACxE,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,kBAAoBwD,QAAM,EAAnE,SACGoV,OAGL,cAACrV,EAAA,EAAD,CAAYnD,QAAQ,UAAUL,GAAI,CAAEuZ,GAAI,EAAGvP,WAAY,EAAG/J,MAAO,kBAAjE,SACGuZ,aAAeP,EAAU,IAAIQ,WAMvB,SAASC,KACtB,OACE,eAAClJ,GAAA,EAAD,WACE,cAAC6G,GAAA,EAAD,CAAYrP,MAAM,gBAElB,cAAC5B,GAAD,UACE,cAACR,EAAA,EAAD,CAAOlI,QAAS,EAAGsC,GAAI,CAAEkE,EAAG,EAAGqV,GAAI,GAAnC,SACGf,GAAK7U,KAAI,SAAC0V,GAAD,OACR,cAACD,GAAD,CAA2BC,KAAMA,GAAlBA,EAAKrR,cAK1B,cAACtE,EAAA,EAAD,IAEA,cAAC7D,EAAA,EAAD,CAAKG,GAAI,CAAEkE,EAAG,EAAGkN,UAAW,SAA5B,SACE,cAAChR,EAAA,EAAD,CACE0D,GAAG,IACHsM,KAAK,QACLnQ,MAAM,UACNH,UAAWiE,IACX4V,QAAS,cAAC,IAAD,CAAM5a,KAAMwJ,OALvB,2B,yBClEFvD,GAAYnI,YAAO2T,KAAP3T,EAAa,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CAC7Ca,UAAW,OACXyT,UAAW,SACX3T,QAASX,EAAMY,QAAQ,EAAG,GAC1BuC,MAAOnD,EAAMkB,QAAQiK,KAAKoJ,OAC1BvT,gBAAiBhB,EAAMkB,QAAQiK,KAAKqJ,YAGhCC,GAAmB1U,YAAO,MAAPA,EAAc,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CACrD6T,OAAQ,OACRxT,QAAS,OACTqD,aAAc,MACdnD,WAAY,SACZH,MAAOJ,EAAMY,QAAQ,GACrBJ,OAAQR,EAAMY,QAAQ,GACtB+J,eAAgB,SAChB+J,aAAc1U,EAAMY,QAAQ,GAC5BuC,MAAOnD,EAAMkB,QAAQiK,KAAKwJ,KAC1BC,gBAAgB,2BAAD,OAA6B3T,YAAMjB,EAAMkB,QAAQiK,KAAKwJ,KAAM,GAA5D,gBAAsE1T,YACnFjB,EAAMkB,QAAQiK,KAAKwJ,KACnB,KAFa,cAUF,SAASmI,KACtB,OACE,eAAC,GAAD,WACE,cAAC,GAAD,UACE,cAAC,IAAD,CAAM7a,KAAM8a,KAAiB3c,MAAO,GAAII,OAAQ,OAElD,cAACkG,EAAA,EAAD,CAAYnD,QAAQ,KAApB,SARQ,SASR,cAACmD,EAAA,EAAD,CAAYnD,QAAQ,YAAYL,GAAI,CAAEmG,QAAS,KAA/C,8B,sGC3BN,IAAM2T,GAAY,CAChB,CACE9R,MAAO,sBACP+R,KAAMnB,KAAMM,KAAKc,OACjB3K,KAAM,UAER,CACErH,MAAO,6BACP+R,KAAMnB,KAAMM,KAAKc,OACjB3K,KAAM,UAER,CACErH,MAAO,8BACP+R,KAAMnB,KAAMM,KAAKc,OACjB3K,KAAM,UAER,CACErH,MAAO,4BACP+R,KAAMnB,KAAMM,KAAKc,OACjB3K,KAAM,UAER,CACErH,MAAO,4BACP+R,KAAMnB,KAAMM,KAAKc,OACjB3K,KAAM,WAWV,SAAS4K,GAAT,GAAsC,IC5CZf,ED4CLvR,EAAgB,EAAhBA,KAAMuS,EAAU,EAAVA,OACjB7K,EAAsB1H,EAAtB0H,KAAMrH,EAAgBL,EAAhBK,MAAO+R,EAASpS,EAAToS,KACrB,OACE,eAACI,GAAA,EAAD,WACE,eAACC,GAAA,EAAD,WACE,cAACC,GAAA,EAAD,CACEra,GAAI,CACF+C,SACY,WAATsM,EAAqB,eACZ,WAATA,GAAqB,iBACZ,WAATA,GAAqB,aACZ,WAATA,GAAqB,gBACtB,gBAGL6K,EAAS,KAAO,cAACI,GAAA,EAAD,OAEnB,eAACC,GAAA,EAAD,WACE,cAAC/W,EAAA,EAAD,CAAYnD,QAAQ,YAApB,SAAiC2H,IACjC,cAACxE,EAAA,EAAD,CAAYnD,QAAQ,UAAUL,GAAI,CAAEC,MAAO,kBAA3C,UC/DkBiZ,EDgELa,EC/DZ7I,aAAO,IAAIuI,KAAKP,GAAO,8BDsEjB,SAASsB,KACtB,OACE,eAAChK,GAAA,EAAD,CACExQ,GAAI,CACF,mDAAoD,CAClD7C,QAAS,SAHf,UAOE,cAACka,GAAA,EAAD,CAAYrP,MAAM,mBAClB,cAACyS,GAAA,EAAD,UACE,cAACC,GAAA,EAAD,UACGZ,GAAUnW,KAAI,SAACgE,EAAM4Q,GAAP,OACb,cAAC0B,GAAD,CAA4BtS,KAAMA,EAAMuS,OAAQ3B,IAAUuB,GAAUa,OAAS,GAA7DhT,EAAKK,iB,mCE7E3B4S,GAAQ,CACZ,wBACA,oCACA,sBACA,wBACA,mBAWF,SAASC,GAAT,GAAwD,IAApCC,EAAmC,EAAnCA,KAAM5K,EAA6B,EAA7BA,QAAStD,EAAoB,EAApBA,OAAW5L,EAAS,kBAC7CwN,EAAkB5B,EAAlB4B,cAER,OACE,cAAC5I,EAAA,EAAD,CAAO1G,UAAU,MAAMuI,eAAe,gBAAgBzH,GAAI,CAAEiE,GAAI,KAAhE,SACE,cAAC8L,GAAA,EAAD,CACEC,QACE,cAACC,GAAA,EAAD,2BAAczB,EAAc,YAA5B,IAAwClK,MAAOwW,EAAM5K,QAASA,GAAalP,IAE7EiB,MACE,cAACuB,EAAA,EAAD,CACEnD,QAAQ,QACRL,GAAE,eACIkQ,GAAW,CACbjQ,MAAO,gBACP8a,eAAgB,iBALtB,SASGD,QAQE,SAASE,KACtB,IAAMpO,EAASC,aAAU,CACvBC,cAAe,CACboD,QAAS,CAAC0K,GAAM,KAElB3N,SAAU,SAACE,GACTE,QAAQC,IAAIH,MAIRA,EAAyBP,EAAzBO,OAAQoB,EAAiB3B,EAAjB2B,aAEhB,OACE,eAACiC,GAAA,EAAD,WACE,cAAC6G,GAAA,EAAD,CAAYrP,MAAM,UAClB,cAACnI,EAAA,EAAD,CAAKG,GAAI,CAAEuD,GAAI,EAAGU,GAAI,GAAtB,SACE,cAAC,KAAD,CAAgBK,MAAOsI,EAAvB,SACE,cAAC,KAAD,CAAM6B,aAAa,MAAMC,YAAU,EAACzB,SAAUsB,EAA9C,SACGqM,GAAMjX,KAAI,SAACmX,GAAD,OACT,cAACD,GAAD,CAEEC,KAAMA,EACNlO,OAAQA,EACRsD,QAAS/C,EAAO+C,QAAQ+K,SAASH,IAH5BA,e,kGChEfI,GAAU,CACd,CACE3R,KAAM,WACNjF,MAAOsU,KAAMuC,SAASnK,SACtBjS,KAAM,cAAC,IAAD,CAAMA,KAAMqc,KAAcnb,MAAM,UAAU/C,MAAO,GAAII,OAAQ,MAErE,CACEiM,KAAM,SACNjF,MAAOsU,KAAMuC,SAASnK,SACtBjS,KAAM,cAAC,IAAD,CAAMA,KAAMsc,KAAYpb,MAAM,UAAU/C,MAAO,GAAII,OAAQ,MAEnE,CACEiM,KAAM,WACNjF,MAAOsU,KAAMuC,SAASnK,SACtBjS,KAAM,cAAC,IAAD,CAAMA,KAAMuc,KAAcrb,MAAM,UAAU/C,MAAO,GAAII,OAAQ,MAErE,CACEiM,KAAM,UACNjF,MAAOsU,KAAMuC,SAASnK,SACtBjS,KAAM,cAAC,IAAD,CAAMA,KAAMwc,KAAatb,MAAM,UAAU/C,MAAO,GAAII,OAAQ,OAUtE,SAASke,GAAT,GAA6B,IAATC,EAAQ,EAARA,KACV1c,EAAsB0c,EAAtB1c,KAAMuF,EAAgBmX,EAAhBnX,MAAOiF,EAASkS,EAATlS,KAErB,OACE,cAACmS,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,EAAf,SACE,eAAC8V,GAAA,EAAD,CAAOtb,QAAQ,WAAWL,GAAI,CAAEiE,GAAI,IAAKmN,UAAW,UAApD,UACE,cAACvR,EAAA,EAAD,CAAKG,GAAI,CAAEwK,GAAI,IAAf,SAAuBzL,IACvB,cAACyE,EAAA,EAAD,CAAYnD,QAAQ,KAApB,SAA0B8Q,GAAe7M,KACzC,cAACd,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,kBAAzC,SACGsJ,SAOI,SAASqS,KACtB,OACE,eAACpL,GAAA,EAAD,WACE,cAAC6G,GAAA,EAAD,CAAYrP,MAAM,oBAClB,cAACyS,GAAA,EAAD,UACE,cAACiB,GAAA,EAAD,CAAMG,WAAS,EAACne,QAAS,EAAzB,SACGwd,GAAQvX,KAAI,SAAC8X,GAAD,OACX,cAACD,GAAD,CAA0BC,KAAMA,GAAjBA,EAAKlS,gBCzDhC,IAAMmN,GAAa,CACjB,CACEnN,KAAM,SACN8F,KAAM,SACNsH,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAEjD,CACEpN,KAAM,SACN8F,KAAM,OACNsH,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAEjD,CACEpN,KAAM,SACN8F,KAAM,OACNsH,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,MAIpC,SAASmF,KACtB,IAAMjF,EAAeC,iBAAMzE,KAAmB,CAC5C6B,OAAQ,CAAEhX,MAAO,CAAC,EAAG,EAAG,IACxBoY,YAAa,CAAEC,IAAK,CAAEC,YAAa,MAAOhV,aAAc,IACxDmT,KAAM,CAAEtE,KAAM,CAAC,QAAS,WAAY,UACpCgG,OAAQ,CACN,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAEFZ,MAAO,CAAEpF,KAAM,YACfyF,QAAS,CACPiH,QAAQ,EACRC,WAAW,EACXhF,EAAG,CACDC,UAAW,SAACD,GACV,MAAiB,qBAANA,EACH,GAAN,OAAUA,EAAEiF,QAAQ,GAApB,WAEKjF,OAMf,OACE,eAACxG,GAAA,EAAD,WACE,cAAC6G,GAAA,EAAD,CAAYrP,MAAM,oBAAoBkU,UAAU,0BAChD,cAACrc,EAAA,EAAD,CAAKG,GAAI,CAAEkE,EAAG,EAAGiY,GAAI,GAAK7E,IAAI,MAA9B,SACE,cAAC,KAAD,CAAgBjI,KAAK,OAAOkI,OAAQb,GAAYF,QAASK,EAAcvZ,OAAQ,W,yBCtDjF0H,GAAYnI,YAAO2T,KAAP3T,EAAa,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CAC7Ca,UAAW,OACXyT,UAAW,SACX3T,QAASX,EAAMY,QAAQ,EAAG,GAC1BuC,MAAOnD,EAAMkB,QAAQwG,QAAQ6M,OAC7BvT,gBAAiBhB,EAAMkB,QAAQwG,QAAQ8M,YAGnCC,GAAmB1U,YAAO,MAAPA,EAAc,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CACrD6T,OAAQ,OACRxT,QAAS,OACTqD,aAAc,MACdnD,WAAY,SACZH,MAAOJ,EAAMY,QAAQ,GACrBJ,OAAQR,EAAMY,QAAQ,GACtB+J,eAAgB,SAChB+J,aAAc1U,EAAMY,QAAQ,GAC5BuC,MAAOnD,EAAMkB,QAAQwG,QAAQiN,KAC7BC,gBAAgB,2BAAD,OAA6B3T,YAAMjB,EAAMkB,QAAQwG,QAAQiN,KAAM,GAA/D,gBAAyE1T,YACtFjB,EAAMkB,QAAQwG,QAAQiN,KACtB,KAFa,cAQF,SAAS2K,GAAexV,GACrC,OACE,eAAC,GAAD,WACE,cAAC,GAAD,UACE,cAAC,IAAD,CAAM7H,KAAMsd,KAAYnf,MAAO,GAAII,OAAQ,OAE7C,cAACkG,EAAA,EAAD,CAAYnD,QAAQ,KAApB,SAA0B8Q,GAAevK,EAAMtC,SAC/C,cAACd,EAAA,EAAD,CAAYnD,QAAQ,YAAYL,GAAI,CAAEmG,QAAS,KAA/C,gC,uMC1BAmW,GAAqBzf,YAAO0f,KAAP1f,EAAiB,kBAAGC,EAAH,EAAGA,MAAH,UAC1CmD,MAAOnD,EAAMkB,QAAQmJ,KAAKC,WADgB,2BAEnCoV,KAAgBjc,SAFmB,aAGxCN,MAAOnD,EAAMkB,QAAQmJ,KAAKC,UAC1B5G,aAAc1D,EAAMY,QAAQ,GAG5BwJ,aAAcpK,EAAMY,QAAQ,GAC5ByC,WAAYrD,EAAMkH,WAAWyY,iBAC7B,iBAAkB,CAChBtc,WAAYrD,EAAMkH,WAAW0Y,mBAE/B,UAAW,CACT5e,gBAAiBhB,EAAMkB,QAAQ0G,OAAO+O,OAExC,4DAA6D,CAC3D3V,gBAAgB,6BAAD,OAA+BhB,EAAMkB,QAAQ0G,OAAOE,SAApD,KACf3E,MAAO,2BAjB+B,aAmBjCuc,KAAgBva,OAAU,CAC/B9B,WAAY,UACZF,MAAO,aArB+B,2BAwBnCuc,KAAgBG,OAxBmB,aAyBxCC,WAAY,GAzB4B,aA0BjCJ,KAAgBjc,SAAY,CACjC0G,YAAanK,EAAMY,QAAQ,MA3BW,KAgC5C,SAASmf,GAAejW,GACtB,IACEkW,EAMElW,EANFkW,QACA7c,EAKE2G,EALF3G,MACW8c,EAITnW,EAJFoW,UACAC,EAGErW,EAHFqW,UACAC,EAEEtW,EAFFsW,UACGlc,EANL,YAOI4F,EAPJ,IASA,OACE,cAAC0V,GAAD,aACEra,MACE,eAACpC,EAAA,EAAD,CAAKG,GAAI,CAAE7C,QAAS,OAAQE,WAAY,SAAU6G,EAAG,GAAKqV,GAAI,GAA9D,UACE,cAAC1Z,EAAA,EAAD,CAAKC,UAAWid,EAAW9c,MAAM,UAAUD,GAAI,CAAEE,GAAI,KACrD,cAACsD,EAAA,EAAD,CACEnD,QAAQ,QACRL,GAAI,CAAEG,WAAY,UAAWwF,SAAU,GAFzC,SAIGuX,IAEH,cAAC1Z,EAAA,EAAD,CAAYnD,QAAQ,UAAUJ,MAAM,UAApC,SACGgd,OAIPlF,MAAO,CACL,oBAAqB9X,EACrB,uBAAwB6c,IAEtB9b,IA0BK,SAASmc,GAAgBvW,GAEtC,IAAIwW,EAAU,EACd,OACE,cAAC,KAAD,CAAQC,YAAa,CAAEtgB,IAAK,QAA5B,SACE,cAACugB,GAAA,EAAD,CAEE,aAAW,QACXC,oBAAqB,cAAC,KAAD,IACrBC,kBAAmB,cAAC,KAAD,IACnBC,eAAgB,qBAAK1F,MAAO,CAAE7a,MAAO,MACrC8C,GAAI,CAAE2F,SAAU,EAAG8K,SAAU,IAAKiN,UAAW,QAN/C,SAQGC,OAAOC,QAAQhX,EAAM+P,MAAMhT,KAAI,WAAmB4U,GAAW,IAAD,mBAA3BsF,EAA2B,KAAjBC,EAAiB,KAC3D,EA3B+B,SAACvF,GAExC,IAAMwF,EAAQ,CACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,YAId,MAAO,CAAE9d,MAFK8d,EAAMxF,EAAQwF,EAAMpD,QAAQ,GAE1BmC,QADAiB,EAAMxF,EAAQwF,EAAMpD,QAAQ,IAkBTqD,CAAiCzF,GAApDtY,EAAR,EAAQA,MAAO6c,EAAf,EAAeA,QACTmB,EAAsBN,OAAOC,QAAQE,EAAKI,WAAWvD,OACrDwD,EACJF,EAAsB,EAAI,YAAc,WAC1C,OACE,cAACpB,GAAD,CAEEuB,QAAShB,KAAWxP,WACpBsP,UAAW,SAAgBY,EAAKvU,KAChCyT,UAAWqB,KACXpB,UAAS,UAAKgB,EAAL,YAA4BE,GACrCle,MAAOA,EACP6c,QAASA,EACTje,QAAS,WACP+H,EAAM0X,WAAW,CACfR,KAAMA,EAAKS,IACXC,SAAU,QAXhB,SAeGb,OAAOC,QAAQE,EAAKI,WAAWva,KAC9B,WAA2B4U,GAAW,IAAD,mBAAnCkG,EAAmC,KAArBD,EAAqB,KACnC,OACE,cAAC3B,GAAD,CAEEuB,QAAShB,KAAWxP,WACpBsP,UACEsB,EAASjV,KAAO,IAAMiV,EAASE,KAAKC,UAAU,EAAG,GAEnD3B,UAAW4B,KACX/f,QAAS,WACP+H,EAAM0X,WAAW,CACfR,KAAMA,EAAKS,IACXC,SAAUA,EAASD,QATlBE,OAlBRZ,OAdNjX,EAAM+P,QC1GJ,SAASkI,KACtB,OACE,eAACrO,GAAA,EAAD,CACEnQ,QAAQ,WAER0X,MAAO,CACLpa,UAAW,QAJf,UAOE,cAAC0Z,GAAA,EAAD,CAAYrP,MAAM,UAClB,eAACyS,GAAA,EAAD,WACE,cAACjX,EAAA,EAAD,CAAYnD,QAAQ,gCACpB,cAACmD,EAAA,EAAD,CAAYnD,QAAQ,QAAQyQ,cAAY,EAAxC,mQAMA,eAACtN,EAAA,EAAD,CAAYnD,QAAQ,QAAQyQ,cAAY,EAAxC,UACE,qDACA,qDACA,gECrBK,SAASgO,GAAelY,GACrC,IAAMkX,EAAOlX,EAAMkX,KAEnB,OACE,eAACtN,GAAA,EAAD,CAAMnQ,QAAQ,WAAd,UACE,cAACgX,GAAA,EAAD,CAAYrP,MAAOpB,EAAMoB,QACzB,cAACyS,GAAA,EAAD,UACGkD,OAAOoB,KAAKjB,GAAMna,KAAI,SAACqb,EAAKzG,GAC3B,MAAY,cAARyG,EACK,GAGP,eAACxb,EAAA,EAAD,CAEEnD,QAAQ,QACRyQ,cAAY,EACZiH,MAAO,CACLvG,aAAc,QALlB,UAQE,mCAASwN,EAAT,OARF,IAQ2BlB,EAAKkB,GAAOlB,EAAKkB,GAAO,QAP5CzG,W,iFCOnB,SAAS0G,GAAgBtI,GACvB,OAAIA,IAAS,GACJ,GAGMgH,OAAOoB,KAAKpI,GAAMhT,KAAI,SAACqb,GACpC,MAAO,CACLnQ,GAAImQ,EACJzV,KAAMoN,EAAKqI,GAAKzV,KAChB2V,aAAa,EACbC,QAAS,EACTC,QAAS,MAMA,SAASC,GAAyBzY,GAC/C,MAAwB0Y,IAAMhhB,SAAS2gB,GAAgBrY,EAAM+P,OAA7D,mBAAO4I,EAAP,KAAaC,EAAb,KACA,EAA4CF,IAAMhhB,SAChDsI,EAAM6Y,SAASnb,OADjB,mBAAOob,EAAP,KAAuBC,EAAvB,KAGA,EAAoCL,IAAMhhB,SAAS,CACjDshB,WAAW,EACXC,SAAS,IAFX,mBAAOC,EAAP,KAAmBC,EAAnB,KAIAT,IAAMjV,WAAU,WACdmV,EAAQP,GAAgBrY,EAAM+P,OAC9BgJ,EAAkB/Y,EAAM6Y,SAASnb,SAChC,CAACsC,IAEJ,IAAMhE,EAAWC,cACjB,OACE,eAAC2N,GAAA,EAAD,CAAMnQ,QAAQ,WAAd,UACE,cAACgX,GAAA,EAAD,CAAYrP,MAAM,qBAClB,eAACyS,GAAA,EAAD,WACE,cAACjX,EAAA,EAAD,CAAYnD,QAAQ,KAApB,sBACCkf,IAAS,SACDS,IAATT,GACS,OAATA,GACgB,IAAhBA,EAAK5E,OACH,cAACnX,EAAA,EAAD,CAAYnD,QAAQ,QAApB,yDAIA,cAAC4f,GAAA,EAAD,CAAgBngB,UAAW6b,KAA3B,SACE,eAACuE,GAAA,EAAD,CAAOlgB,GAAI,CAAEsZ,SAAU,KAAO,aAAW,eAAzC,UACE,cAAC6G,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,WACE,cAACC,GAAA,EAAD,sBACA,cAACA,GAAA,EAAD,CAAWC,MAAM,OAAjB,uBACA,cAACD,GAAA,EAAD,CAAWC,MAAM,OAAjB,uBACA,cAACD,GAAA,EAAD,CAAWC,MAAM,OAAjB,4BAGJ,cAACC,GAAA,EAAD,UACG5C,OAAOoB,KAAKQ,GAAM5b,KAAI,SAACqb,GAAD,OACrB,eAACoB,GAAA,EAAD,WACE,cAACC,GAAA,EAAD,CAAWvgB,UAAU,KAAK0gB,MAAM,MAAhC,SACGjB,EAAKP,GAAKzV,OAEb,cAAC8W,GAAA,EAAD,CAAWC,MAAM,OAAjB,SACE,cAACG,GAAA,EAAD,CACEvQ,QAASqP,EAAKP,GAAKE,YACnBrgB,QAAS,WACP2gB,GAAQ,SAACkB,GACP,OAAO,2BACFA,GADL,kBAEG1B,EAFH,2BAGO0B,EAAU1B,IAHjB,IAIIE,aAAcwB,EAAU1B,GAAKE,wBAOzC,cAACmB,GAAA,EAAD,CAAWC,MAAM,OAAjB,SACE,cAAClR,GAAA,EAAD,CACEC,KAAK,SACLR,GAAG,iBACH5M,MAAM,YACNqC,MAAOib,EAAKP,GAAKG,OACjBnQ,SAAU,SAAC2R,GACTnB,GAAQ,SAACkB,GACP,OAAO,2BACFA,GADL,kBAEG1B,EAFH,2BAGO0B,EAAU1B,IAHjB,IAIIG,OAAQwB,EAAEzR,OAAO5K,kBAO7B,cAAC+b,GAAA,EAAD,CAAWC,MAAM,OAAjB,SACE,cAAClR,GAAA,EAAD,CACEC,KAAK,SACLR,GAAG,iBACH5M,MAAM,YACNqC,MAAOib,EAAKP,GAAKI,OACjBpQ,SAAU,SAAC2R,GACTnB,GAAQ,SAACkB,GACP,OAAO,2BACFA,GADL,kBAEG1B,EAFH,2BAGO0B,EAAU1B,IAHjB,IAIII,OAAQuB,EAAEzR,OAAO5K,oBAnDhB0a,aAgEzB,uBACA,cAACxb,EAAA,EAAD,CAAYnD,QAAQ,KAApB,6BACCqf,EACC,cAACO,GAAA,EAAD,CAAgBngB,UAAW6b,KAA3B,SACE,eAACuE,GAAA,EAAD,CAAOlgB,GAAI,CAAEsZ,SAAU,KAAO,aAAW,eAAzC,UACE,cAAC6G,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,WACE,cAACC,GAAA,EAAD,sBACA,cAACA,GAAA,EAAD,CAAWC,MAAM,OAAjB,4BAGJ,cAACC,GAAA,EAAD,UACE,eAACH,GAAA,EAAD,CAEEpgB,GAAI,CAAE,mCAAoC,CAAE2B,OAAQ,IAFtD,UAIE,cAAC0e,GAAA,EAAD,CAAWvgB,UAAU,KAAK0gB,MAAM,MAAhC,wBAGA,cAACH,GAAA,EAAD,CAAWC,MAAM,OAAjB,SACE,cAACG,GAAA,EAAD,CACEvQ,QAAS4P,EAAWF,UACpB5Q,SAAU,SAAC2R,GACTZ,EAAc,2BACTD,GADQ,IAEXF,UAAWe,EAAEzR,OAAOgB,kBAZxB,qBAsBZ,cAAC1M,EAAA,EAAD,CAAYnD,QAAQ,QAApB,iEAIF,uBACA,cAAC8P,GAAA,EAAD,CACEmD,SAC+B,IAA7BqK,OAAOoB,KAAKQ,GAAM5E,aACWqF,IAA7BrC,OAAOoB,KAAKQ,GAAM5E,QACW,OAA7BgD,OAAOoB,KAAKQ,GAAM5E,OAGpBnb,WAAS,EACT4Q,KAAK,QACLf,KAAK,SACLhP,QAAQ,YACRxB,QAAS,WAEPkP,KAAiB,mBAAoB,CACnC6S,SAAUrB,EACVO,WAAYA,IAGdld,EAAS,iBAlBb,0CC9KO,SAASie,KACtB,OACE,eAACrQ,GAAA,EAAD,CAAMnQ,QAAQ,WAAd,UACE,cAACgX,GAAA,EAAD,CAAYrP,MAAM,aAClB,eAACyS,GAAA,EAAD,WACE,eAAC7U,EAAA,EAAD,CAAOlI,QAAS,EAAhB,UACE,cAAC0R,GAAA,EAAD,CACE5P,WAAS,EACTiP,aAAa,YACbY,KAAK,OACLpN,MAAM,cAER,cAACmN,GAAA,EAAD,CACE5P,WAAS,EACTiP,aAAa,YACbY,KAAK,SACLpN,MAAM,iBAGV,uBACA,cAACkO,GAAA,EAAD,CAAe3Q,WAAS,EAAC4Q,KAAK,QAAQf,KAAK,SAAShP,QAAQ,YAA5D,qC,aCDO,SAASygB,KACtB,IAAMle,EAAWC,cACjB,EAA2CL,cAAnCuJ,EAAR,EAAQA,gBAAiBxJ,EAAzB,EAAyBA,cACzB,EAAoCjE,mBAAS,GAA7C,mBAAOyiB,EAAP,KAAmBC,EAAnB,KACA,EAAoC1iB,mBAAS,IAA7C,mBAAQ2iB,EAAR,KAAmBC,EAAnB,KAkEA,OAjEA7W,qBAAU,WACR0B,EAAgB,aAAc,CAC5B1L,QAAS,OACT6M,SAAS,EACTiU,kBAAkB,IAEpB,IAAM5U,EAASwB,KAAkB,UAE3BqT,EAAa,SAAC7T,EAAQ8T,EAAYC,GAGtC,GAA4B,IAAxBD,EAAWE,UACkB,IAA3BF,EAAWG,YAAmB,CAChC,IAAIC,EAAgBH,EAAYI,SAASnY,KACzC0X,EAAUQ,GAAiBH,EAAYI,SAEvCR,EAAa,CACXD,cAE8B,IAA5BI,EAAWM,eAEbX,EAAcC,EAAUW,KAAKC,aAC7B9T,KAAiB,YAAakT,GAC9B1e,OAKR,GAAIgK,EAAOa,IAAK,CACd,IAAMG,EAAS,IAAIC,UAAUjB,EAAOa,IAAK,iBAAkBb,EAAOP,GAAI,CACpE,eAAgB,SAChByB,cACE,SAAW,IAAIC,UAAOC,MAAM,GAAI,aAAaC,SAAS,YAE1DL,EAAOY,QAAU,SAAU2T,GACzB/V,EAAgB,iCAAkC,CAChD1L,QAAS,UAEXuC,EAAS,SAAU,CAAEwB,SAAS,KAEhCmJ,EAAOwU,QAAU,SAAUD,GACzB/V,EAAgB,oBAAqB,CACnC1L,QAAS,UAEXuC,EAAS,SAAU,CAAEwB,SAAS,KAEhCmJ,EAAOM,OAAS,SAAUiU,GACxB/V,EAAgB,2CAA6CQ,EAAOP,GAAI,CACtEgC,iBAAkB,KAClBmT,kBAAkB,IAEpBa,KAA6BzU,GAC7ByU,KAA2BzU,EAAQ,mBAErCA,EAAO0U,UAAY,SAAUH,GAC3BE,KAAmBzU,EAAQuU,EAAKV,SAGlCrV,EAAgB,mBAAoB,CAClC1L,QAAS,UAEXuC,EAAS,SAAU,CAAEwB,SAAS,MAE/B,IAGD,cAAC,GAAD,CAAM4D,MAAM,wBAAZ,SACE,eAAC6I,GAAA,EAAD,CAAWJ,SAAS,KAApB,UACE,cAAC5Q,EAAA,EAAD,CAAKG,GAAI,CAAEmc,GAAI,GAAf,SACE,cAAC3Y,EAAA,EAAD,CAAYnD,QAAQ,KAApB,gCAEF,eAACqb,GAAA,EAAD,CAAMG,WAAS,EAACne,QAAS,EAAzB,UACE,cAACge,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAIC,GAAI,EAAG2Q,GAAI,EAA9B,SACE,cAAC2F,GAAD,CAAgB9X,MAAOyc,MAEzB,cAACrF,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAIC,GAAI,EAAG2Q,GAAI,EAA9B,SACE,cAACmD,GAAD,MAEF,cAAC8B,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAIC,GAAI,EAAG2Q,GAAI,EAA9B,SACE,cAAC2B,GAAD,MAEF,cAACsD,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAIC,GAAI,EAAG2Q,GAAI,EAA9B,SACE,cAAC9E,GAAD,CAAerN,MAAO,MAGxB,cAACoX,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACE,cAACpG,GAAD,MAGF,cAACJ,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACE,cAAClK,GAAD,MAGF,cAAC0D,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACE,cAACtL,GAAD,MAGF,cAAC8E,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACE,cAACrK,GAAD,MAGF,cAAC6D,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACE,cAACxI,GAAD,MAGF,cAACgC,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACE,cAAC1H,GAAD,MAGF,cAACkB,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACE,cAACtG,GAAD,MAGF,cAACF,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACE,cAAClH,GAAD,c,eCpJCmH,GAAe,CAC1BC,QAAS,CACPxZ,WAAY,CAAEyZ,gBAAiB,MCM7BC,GAAmB,CACvBC,SAAU,IACVC,KAAM,CAAC,IAAM,IAAM,IAAM,MAGrBC,GAAkB,CACtBF,SAAU,IACVC,KAAM,CAAC,IAAM,IAAM,IAAM,MAGdE,GAAc,CACzBN,QAAS,CACPO,MAAO,CAAC,GAAK,IAAK,GAAK,KAAM,IAAM,GACnCxc,QAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACzByC,WAAY0Z,IAEdM,KCvBS,CACPD,MAAO,CAAC,GAAK,IAAK,IAClBxc,QAAS,CAAC,EAAG,EAAG,K,ID6BL,eAAMmc,IAEd,2BClBI,CACPtL,EAAG,CAAC,IAAK,GAAI,KACb6L,OAAQ,CAAC,KAAO,GAAK,GACrB1c,QAAS,CAAC,EAAG,EAAG,KDed,IAAiCyC,WAAY6Z,KAU5C,2BCpCI,CACPzL,EAAG,EAAE,GAAI,IAAK,KACd6L,OAAQ,CAAC,KAAO,GAAK,GACrB1c,QAAS,CAAC,EAAG,EAAG,KDiCd,IAA+ByC,WAAY6Z,KAU1C,2BC9BI,CACP1N,EAAG,CAAC,EAAG,IAAK,KACZ+N,OAAQ,CAAC,EAAG,GAAK,GACjB3c,QAAS,CAAC,EAAG,EAAG,KD2Bd,IAAiCyC,WAAY6Z,KAU5C,2BChCI,CACP1N,EAAG,CAAC,GAAI,GAAI,KACZ+N,OAAQ,CAAC,EAAG,GAAK,GACjB3c,QAAS,CAAC,EAAG,EAAG,KD6Bd,IAAkCyC,WAAY6Z,K,qBEpDrC,SAASM,GAAT,GAAwD,IAA7BpgB,EAA4B,EAA5BA,KAAM5B,EAAsB,EAAtBA,SAAaC,EAAS,kBACpE,OACE,cAACnB,EAAA,EAAD,yBACEC,UAAWkjB,KAAOC,IAClBC,SAAS,EACTd,QAASzf,EAAO,UAAY,OAC5BwgB,SAAUhB,IACNnhB,GALN,aAOGD,KCZP,IAAMiE,GAAYnI,YAAO0O,GAAP1O,EAAa,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CAC7CK,QAAS,OACTiI,UAAW,OACX/H,WAAY,SACZ0N,WAAYjO,EAAMY,QAAQ,IAC1BuN,cAAenO,EAAMY,QAAQ,QAKhB,SAAS0lB,KACtB,OACE,cAAC,GAAD,CAAWpb,MAAM,iCAAjB,SACE,cAAC6I,GAAA,EAAD,UACE,cAACkS,GAAD,CAAiBG,QAAQ,UAAUvgB,MAAI,EAAvC,SACE,eAAC9C,EAAA,EAAD,CAAKG,GAAI,CAAEyQ,SAAU,IAAKE,OAAQ,OAAQS,UAAW,UAArD,UACE,cAAC4R,GAAA,EAAOC,IAAR,CAAYE,SAAUT,GAAtB,SACE,cAAClf,EAAA,EAAD,CAAYnD,QAAQ,KAAKgjB,WAAS,EAAlC,sCAIF,cAAC7f,EAAA,EAAD,CAAYxD,GAAI,CAAEC,MAAO,kBAAzB,kJAKA,cAAC+iB,GAAA,EAAOC,IAAR,CAAYE,SAAUT,GAAtB,SACE,cAAC7iB,EAAA,EAAD,CACEC,UAAU,MACVmD,IAAI,6CACJjD,GAAI,CAAE1C,OAAQ,IAAKmN,GAAI,OAAQnH,GAAI,CAAEuC,GAAI,EAAGC,GAAI,SAIpD,cAAC1F,EAAA,EAAD,CAAQ0D,GAAG,IAAIsM,KAAK,QAAQ/P,QAAQ,YAAYP,UAAWiE,IAA3D,iC,YCvCNuf,GAAc,CAClBplB,QAAS,+BACTqlB,IAAK,6BACLC,IAAK,6BACLC,IAAK,8BA6EQC,GA1EO,SAAC9c,GACrB,IAAM+c,EAAajhB,iBAAO,MAE1B,EAAgCpE,mBAAS,IAAzC,mBAAOslB,EAAP,KAAiBC,EAAjB,KAwBA,OACE,eAACrT,GAAA,EAAD,CAAMnQ,QAAQ,WAAd,UACE,cAACgX,GAAA,EAAD,CAAYrP,MAAM,2CAClB,eAACyS,GAAA,EAAD,WACA,sBACU3X,IAAK6gB,EACLG,UAAU,kBACVC,YA7BM,kBAAMJ,EAAWtgB,QAAQ2gB,UAAUC,IAAI,aA8B7CC,YA5BM,kBAAMP,EAAWtgB,QAAQ2gB,UAAUG,OAAO,aA6BhDC,OA3BC,kBAAMT,EAAWtgB,QAAQ2gB,UAAUG,OAAO,aAsBrD,UAOU,sBAAKL,UAAU,yBAAf,UACI,qBAAK7gB,IAAI,2BAA2BC,IAAI,KACxC,+DAEJ,uBAAOmM,KAAK,OAAO/K,MAAM,GAAG0K,SA/BvB,SAAC2R,GAClB,IAAM0D,EAAU1D,EAAEzR,OAAOoV,MAAM,GAC/B,GAAID,EAAS,CACX,IAAME,EAAW,uBAAOX,GAAP,CAAiBS,IAClCR,EAAYU,GACZ3d,EAAM4d,aAAaD,UA6BTX,EAASjJ,OAAS,EACd,sBAAKmJ,UAAU,oBAAf,UACI,mBAAGA,UAAU,2BAAb,6BAIIF,EAASjgB,KAAI,SAACgE,EAAM4Q,GAAP,OACT,sBAAiBuL,UAAU,0BAA3B,UACI,qBAAK7gB,IAAKqgB,GAAY3b,EAAK0H,KAAKoV,MAAM,KAAK,KAAOnB,GAAW,QAAapgB,IAAI,KAC9E,sBAAK4gB,UAAU,gCAAf,UACI,4BAAInc,EAAK4B,OACT,8BAAI5B,EAAKyI,KAAT,UAEJ,sBAAM0T,UAAU,+BAA+BjlB,QAAS,kBAtCvE,SAAC6lB,GAClB,IAAMH,EAAW,aAAOX,GACxBW,EAAYI,OAAOf,EAASgB,QAAQF,GAAO,GAC3Cb,EAAYU,GACZ3d,EAAM4d,aAAaD,GAkC2EM,CAAWld,IAAzE,iBANM4Q,SAWtB,YC/DL,SAASuM,KACtB,OACE,cAAC,GAAD,CAAM9c,MAAM,+BAAZ,SACE,eAAC6I,GAAA,EAAD,CAAWJ,SAAS,KAApB,UACE,cAAC5Q,EAAA,EAAD,CAAKG,GAAI,CAAEmc,GAAI,GAAf,SACE,cAAC3Y,EAAA,EAAD,CAAYnD,QAAQ,KAApB,gCAEF,eAACqb,GAAA,EAAD,CAAMG,WAAS,EAACne,QAAS,EAAzB,UACE,cAACge,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,GAAIyL,GAAI,GAA/B,SACE,cAACrD,GAAD,MAEF,cAACnD,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACE,cAAC,GAAD,CAAesC,aAAc,SAACF,SAEhC,cAAC5I,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACE,cAACrR,GAAA,EAAD,UACE,cAAC6K,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,GAAIyL,GAAI,GAA/B,SACE,cAACrB,GAAD,kB,cCND,SAASkE,KACtB,IAAMniB,EAAWC,cACjB,EAA2CL,cAAnCuJ,EAAR,EAAQA,gBAAiBxJ,EAAzB,EAAyBA,cACzB,EAA6CjE,mBAAS,IAAtD,mBAAO0mB,EAAP,KAAwBC,EAAxB,KACA,EAAwC3mB,mBAAS,IAAjD,mBAAO4mB,EAAP,KAAqBC,EAArB,KACA,EAA0B7mB,mBAAS,IAAnC,mBAAO8mB,EAAP,KAAcC,EAAd,KACA,EAA0C/mB,mBACxC,qCADF,mBAAOgnB,EAAP,KAAsBC,EAAtB,KAGA,EAA8CjnB,mBAAS,IAAvD,mBAAOknB,EAAP,KAAwBC,EAAxB,KACA,EAAsCnnB,oBAAS,GAA/C,mBAAOonB,EAAP,KAAoBC,EAApB,KACA,EAA4CrnB,mBAAS,CAAEgG,OAAO,IAA9D,mBAAOob,EAAP,KAAuBC,EAAvB,KACA,EAAgCrhB,mBAAS,IAAzC,mBAAOsnB,EAAP,KAAiBC,EAAjB,KAeMzE,EAAa,SAAC7T,EAAQ8T,EAAYC,GACtC,GAA4B,IAAxBD,EAAWE,SAAgB,CAC7B,GAA+B,IAA3BF,EAAWG,YAAmB,CAEhC,GAA0C,WAAtCF,EAAYI,SAASoE,aAA2B,CAClD,GAEE,uDADAxE,EAAYI,SAASqE,YAErB,CAEA,IAAMC,EAAW1E,EAAYI,SAASnD,IAAII,UAAU,EAAG,IAElDyG,EAAMY,GAIJZ,EAAMY,GAAU9H,YACnBkH,EAAMY,GAAU9H,UAAY,KAJ9BkH,EAAMY,GAAY,GAClBZ,EAAMY,GAAU9H,UAAY,IAM1BoD,EAAYI,SAASG,YAAc,EACrCG,KAA2BzU,EAAQ+T,EAAYI,SAASnD,MAExDiH,EAAgBS,aAAeT,EAAgBS,aAAe,EAC9DR,EAAmBD,IAMrB,kDADAlE,EAAYI,SAASqE,cAGjBzE,EAAYI,SAASG,YAAc,GACrCG,KAA2BzU,EAAQ+T,EAAYI,SAASnD,KACxDxS,EAAgB,aAAc,CAC5B1L,QAAS,OACT6M,SAAS,EACTiU,kBAAkB,MAGpBgE,EAAgB,IAChBK,EAAgBU,eAAiB,EACjCT,EAAmBD,GACnBjjB,IACAwJ,EAAgB,2BAA4B,CAC1CwW,SAAU,KACVpB,kBAAkB,MAOtB,yDADAG,EAAYI,SAASqE,cAGjBzE,EAAYI,SAASG,YAAc,EACrCG,KAA2BzU,EAAQ+T,EAAYI,SAASnD,MAExD4G,EAAgB,IAChBK,EAAgBU,eAAiB,EACjCT,EAAmBD,GACnBjjB,IACAwJ,EAAgB,2BAA4B,CAC1CwW,SAAU,KACVpB,kBAAkB,MAOtB,yDADAG,EAAYI,SAASqE,cAIlBX,EAAMJ,EAAgBlH,MAAMI,UAAU8G,EAAgBxG,UACpD2H,eAEHf,EAAMJ,EAAgBlH,MAAMI,UAC1B8G,EAAgBxG,UAChB2H,aAAe,IAEf7E,EAAYI,SAASG,YAAc,IACrCG,KAA2BzU,EAAQ+T,EAAYI,SAASnD,KACxDoB,EAAkB,CAAErb,OAAO,MAO/B,sDADAgd,EAAYI,SAASqE,cAIlBX,EAAMJ,EAAgBlH,MAAMI,UAAU8G,EAAgBxG,UACpDoC,WAEHwE,EAAMJ,EAAgBlH,MAAMI,UAC1B8G,EAAgBxG,UAChBoC,SAAW,IAEXU,EAAYI,SAASG,YAAc,IACjC2D,EAAgBU,cAClBV,EAAgBU,cACdV,EAAgBU,cAChB5E,EAAYI,SAASG,YAEvB2D,EAAgBU,cAAgB5E,EAAYI,SAASG,YAEvD4D,EAAmBD,GACnBxD,KAA2BzU,EAAQ+T,EAAYI,SAASnD,OAK9D,GAA0C,eAAtC+C,EAAYI,SAASoE,aAA+B,CAqBtD,GAlBE,mDADAxE,EAAYI,SAASqE,cAIrBX,EAAM9D,EAAYI,SAASnD,KAAO+C,EAAYI,SAC9C2D,EAASD,GAELI,EAAgBS,aAClBT,EAAgBS,aAAeT,EAAgBS,aAAe,EAE9DT,EAAgBS,aAAe,EAED,IAA5B5E,EAAWM,eACb6D,EAAgBJ,OAAQ,GAE1BK,EAAmBD,GACnBxD,KAA2BzU,EAAQ+T,EAAYI,SAASnD,MAKxD,uDADA+C,EAAYI,SAASqE,YAErB,CAEA,IAAMC,EAAW1E,EAAYI,SAASnD,IAAII,UAAU,EAAG,IAEvDyG,EAAMY,GAAU9H,UAAUoD,EAAYI,SAASnD,KAC7C+C,EAAYI,SACd2D,EAASD,GACTrX,KAAiB,QAASqX,GACM,IAA5B/D,EAAWM,eACb6D,EAAgBS,aAAeT,EAAgBS,aAAe,EAC9DR,EAAmBD,IAGS,IAA1BA,EAAgBJ,OAChBI,EAAgBS,aAAe,IAE/BN,GAAe,GACfpjB,IACAwJ,EACE,kBAAoB4R,OAAOoB,KAAKqG,GAAOzK,OAAS,SAChD,CACE4H,SAAU,KACVpB,kBAAkB,MA2B5B,GAlBE,kDADAG,EAAYI,SAASqE,aAGrB/D,KAA2BzU,EAAQ+T,EAAYI,SAASnD,KAKxD,yDADA+C,EAAYI,SAASqE,aAGrB/D,KAA2BzU,EAAQ+T,EAAYI,SAASnD,KAIxD+C,EAAYI,SAASqE,YAOrB,sDADAzE,EAAYI,SAASqE,YAErB,CAUA,GATAX,EAAMJ,EAAgBlH,MAAMI,UAC1B8G,EAAgBxG,UAChBoC,SAASU,EAAYI,SAASnD,KAAO+C,EAAYI,SAE/C8D,EAAgBY,aAClBZ,EAAgBY,aAAeZ,EAAgBY,aAAe,EAE9DZ,EAAgBY,aAAe,EAE7BZ,EAAgBY,eAAiBZ,EAAgBU,cAAe,CAClEb,EAASD,GACTrX,KAAiB,QAASqX,GAExBA,EAAMJ,EAAgBlH,MAAMI,UAAU8G,EAAgBxG,UACnDoC,SAELuE,EACEC,EAAMJ,EAAgBlH,MAAMI,UAAU8G,EAAgBxG,UACnDoC,UAEL4E,EAAgB5E,UAAW,SACpB4E,EAAgBU,cAEvB3jB,IACAwJ,EACE,kBAAoByZ,EAAgBY,aAAe,YACnD,CACE7D,SAAU,KACVpB,kBAAkB,IAGtBqE,EAAgBY,aAAe,EAGjCX,EAAmBD,KAIzB,GAA4B,IAAxBnE,EAAWE,UACkB,IAA3BF,EAAWG,aAGX,mDADAF,EAAY+E,WAAW3E,SAASqE,YAEhC,CACA,IAAIla,GAAS,IAAIya,aAAcC,OAAOjF,EAAY+E,WAAW1P,MAEzDA,EA3PY,SAAC6P,GAIvB,IAHA,IAAM1I,EAAO0I,EAAK5E,KAAK7gB,SACnB4V,EAAO,GAEF8P,EAAI,EAAGA,EAAI3I,EAAKnD,OAAQ8L,IAE/B,IAAK,IAAIzH,KAAOlB,EAAK2I,GACf3I,EAAK2I,GAAGzH,GAAKze,UACfoW,EAAKqI,GAAOlB,EAAK2I,GAAGzH,GAAKze,SAI/B,OAAOoW,EA+OU+P,CADAC,sBAAW9a,IAEtBuZ,EAAM9D,EAAY+E,WAAW3E,SAASnD,KAAK5H,KAAOA,EAClD0O,EAASD,GACTrX,KAAiB,QAASqX,GAC1BS,EAAYlP,GACZ4O,EACE,SAAWH,EAAM9D,EAAY+E,WAAW3E,SAASnD,KAAKhV,QAM1DgE,EAAS7K,iBAAO,MACtB2H,qBAAU,WACR0B,EAAgB,aAAc,CAC5B1L,QAAS,OACT6M,SAAS,EACTiU,kBAAkB,IAEpB,IAAM5U,EAASwB,KAAkB,UAC7BxB,EAAOa,KACTG,EAAOlK,QAAU,IAAImK,UAAUjB,EAAOa,IAAK,iBAAkBb,EAAOP,GAAI,CACtE,eAAgB,SAChByB,cACE,SAAW,IAAIC,UAAOC,MAAM,GAAI,aAAaC,SAAS,YAG1DL,EAAOlK,QAAQ8K,QAAU,SAAU2T,GACjC/V,EAAgB,iCAAkC,CAChD1L,QAAS,UAEXuC,EAAS,SAAU,CAAEwB,SAAS,KAEhCmJ,EAAOlK,QAAQ0e,QAAU,SAAUD,GACjC/V,EAAgB,oBAAqB,CACnC1L,QAAS,UAEXuC,EAAS,SAAU,CAAEwB,SAAS,KAEhCmJ,EAAOlK,QAAQwK,OAAS,SAAUiU,GAChC/V,EACE,2CAA6CQ,EAAOP,GACpD,CACEgC,iBAAkB,KAClBmT,kBAAkB,IAGtBa,KAA6BzU,EAAOlK,SACpC2e,KAA2BzU,EAAOlK,QAAS,wBAE7CkK,EAAOlK,QAAQ4e,UAAY,SAAUH,GACnCE,KAAmBzU,EAAOlK,QAASye,EAAKV,MAG1CrV,EAAgB,mBAAoB,CAClC1L,QAAS,UAEXuC,EAAS,SAAU,CAAEwB,SAAS,OAE/B,IAEH,IAAMwiB,EAAelkB,mBACrB2H,qBAAU,YAENuc,EAAavjB,SACZujB,EAAavjB,QAAQya,OAASkH,EAAgBlH,MAC7C8I,EAAavjB,QAAQmb,WAAawG,EAAgBxG,UAEvB,OAAzBwG,EAAgBlH,MAA8C,OAA7BkH,EAAgBxG,WAEjD4G,EAAMJ,EAAgBlH,MAAMI,UAAU8G,EAAgBxG,UACnDoC,SAEHuE,EACEC,EAAMJ,EAAgBlH,MAAMI,UAAU8G,EAAgBxG,UACnDoC,kBAGE4E,EAAgBU,cACvBV,EAAgBY,aAAe,EAC/BX,EAAmBD,GACnBxD,KAA2BzU,EAAOlK,QAAS2hB,EAAgBxG,WAG1D4G,EAAMJ,EAAgBlH,MAAMI,UAAU8G,EAAgBxG,UACpD2H,aAIHxG,EAAkB,CAAErb,OAAO,IAF3Bqb,EAAkB,CAAErb,OAAO,KAMjCsiB,EAAavjB,QAAU2hB,EACvBzX,EAAOlK,QAAQ4e,UAAY,SAAUH,GACnCE,KAAmBzU,EAAOlK,QAASye,EAAKV,MAEzC,CAAC4D,IAyBJ,OACE,cAAC,GAAD,CAAMhd,MAAM,2BAAZ,SACE,eAAC6I,GAAA,EAAD,CAAWJ,SAAS,KAApB,UACE,cAAC5Q,EAAA,EAAD,CAAKG,GAAI,CAAEmc,GAAI,GAAf,SACE,cAAC3Y,EAAA,EAAD,CAAYnD,QAAQ,KAApB,gCAEF,eAACqb,GAAA,EAAD,CAAMG,WAAS,EAACne,QAAS,EAAzB,UACE,cAACge,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,GAAIyL,GAAI,GAA/B,SACE,cAACrD,GAAD,MAEF,cAACnD,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACGwD,EACC,cAACvI,GAAD,CAAiBxG,KAAMyO,EAAO9G,WAhCf,SAACuI,GAC1B,IAAM/I,EAAO+I,EAAO/I,KACdU,EAAWqI,EAAOrI,SAKxB,GAJAyG,EAAkB,CAChBnH,KAAMA,EACNU,SAAUA,IAEC,KAATV,EAAa,CACf,IAAMgJ,EAAa1B,EAAMtH,GACrBgJ,EAAWnQ,MACbkP,EAAYiB,EAAWnQ,MACvB4O,EAAiB,SAAWuB,EAAWvd,OAEvCyY,KAAwBzU,EAAOlK,QAASya,OAqBlC,6CAGJ,cAACpC,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,SACE,eAACrR,GAAA,EAAD,WACE,cAAC6K,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,GAAIyL,GAAI,GAAIliB,GAAI,CAAEwK,GAAI,GAA7C,SACE,cAACsU,GAAD,CAAgBhB,KAAM8H,EAAU5d,MAAOsd,MAEzC,cAAC5J,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,GAAIyL,GAAI,GAA/B,SACE,cAAC7C,GAAD,CACE1I,KAAMuO,EACNzF,SAAUC,mB,0LC5atBqH,GAAalqB,YAAOgD,IAAPhD,EAAY,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CAC7CI,MAAO,OACPI,OAAQ,OACRmE,SAAU,OACV3D,gBAAiBhB,EAAMkB,QAAQ4C,KAAK,KACpCnD,QAASX,EAAMY,QAAQ,IACvB8C,aAAc1D,EAAMY,QAAQ,IAC5B+Z,UAAW3a,EAAMY,QAAQ,QAErBspB,GAAUnqB,YAAO2G,IAAP3G,EAAmB,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CACjDmY,SAAU,OACV1B,WAAY,YACZ/B,aAAc1U,EAAMY,QAAQ,IAC5BR,MAAO,OACPiD,WAAY,UACZiR,UAAW,OACX6V,WAAY,SACZhnB,MAAOnD,EAAMkB,QAAQ4C,KAAK,SAEb,SAASsmB,GAAUtgB,GAEhC,IAaA,EAAwB0Y,IAAMhhB,SAAS,IAAvC,mBAAO6oB,EAAP,KAAaC,EAAb,KACA,EAAgC9H,IAAMhhB,SAAS,IAA/C,mBACA,GADA,UACwBghB,IAAMhhB,SAAS,KAAvC,mBAAO+oB,EAAP,KAAaC,EAAb,KAqBA,OAnBAhI,IAAMjV,WAAU,WAEdid,EAAQ1gB,EAAMygB,MACd,IAAIE,EAAU,GAGV3gB,EAAMugB,MACRxJ,OAAOoB,KAAKnY,EAAMugB,MAAMxjB,KAAI,SAACqb,GAC3BuI,EAAQC,KAzBc,SAACxI,EAAKrI,EAAM0Q,GACtC,IAAI/Z,EAAG,UAAM0R,EAAN,OASP,OARArB,OAAOoB,KAAKpI,GAAMhT,KAAI,SAAC4U,GACrBjL,GAAG,iBAAciL,EAAd,QACHoF,OAAOoB,KAAKpI,EAAK4B,IAAQ5U,KAAI,SAAC8jB,GAC5B,IAAIC,EAAcL,EAAKM,IAAIF,GAE3Bna,GAAG,UAAOoa,EAAP,aAAuB/Q,EAAK4B,GAAOkP,GAAnC,WAGAna,EAeUsa,CAAoB5I,EAAKpY,EAAMugB,KAAKnI,GAAMqI,OAI3DD,EAAQG,KAKP,CAACF,EAAMzgB,IAGR,cAACmgB,GAAD,UACGI,EAAKxjB,KAAI,SAAC2J,EAAKiL,GACd,OAAO,cAACyO,GAAD,UAAsB1Z,GAARiL,Q,yBC3DzBsP,GAAY,CAAC,CACf,UAAa,CACT,eAAkB,MAClB,gBAAmB,KACnB,iBAAoB,MACpB,qBAAwB,IACxB,qBAAwB,IACxB,2BAA8B,KAC9B,WAAc,KACd,MAAS,IACT,OAAU,IACV,6BAAgC,EAChC,OAAU,CAAC,IAAO,GAAI,MAAS,GAAI,OAAU,GAAI,KAAQ,IACzD,MAAS,CAAC,KAAQ,GAAI,gBAAmB,QACzC,OAAU,gBACV,mBAAsB,CAAC,SAAU,YAAa,SAC9C,kCAAqC,KACrC,sBAAyB,MACzB,kBAAqB,MACrB,UAAa,MACb,gBAAmB,UACnB,uBAA0B,GAC1B,gCAAmC,cAEnC,oBAAuB,KACvB,mCAAsC,kBACtC,oBAAuB,UACvB,gDAAmD,WAEvD,WAAc,CAAC,CACX,OAAU,CACN,CACI,UAAa,QACb,YAAe,CAAC,QAChB,aAAgB,CAAC,SACjB,uBAA0B,CAAC,SAC3B,eAAkB,CAAC,QACnB,aAAgB,CAAC,GACjB,KAAQ,CACJ,IAEJ,YAAe,CAAC,SAChB,aAAgB,CAAC,CAAC,IAAO,gBAAiB,IAAO,kBACjD,aAAgB,CAAC,CAAC,WAAc,GAAI,KAAQ,IAAU,IAAO,IAC7D,KAAQ,GACR,iBAAoB,OACpB,QAAW,CAAC,uBACZ,WAAc,CAAC,IACf,0BAA6B,CAAC,UAC9B,WAAc,GACd,UAAa,gBACb,UAAa,gBACb,kBAAqB,CAAC,IACtB,mBAAsB,CAAC,IACvB,WAAc,CAAC,MAGvB,MAAS,CACL,CACI,UAAa,OACb,MAAS,UACT,OAAU,IACV,MAAS,MACT,aAAgB,MAChB,aAAgB,QAChB,aAAgB,EAChB,eAAkB,SAG1B,WAAc,CACV,CACI,UAAa,YACb,UAAa,EACb,6BAAgC,EAChC,MAAS,EACT,OAAU,EACV,aAAgB,MAChB,eAAkB,OAClB,KAAQ,MACR,QAAW,GACX,MAAS,GACT,kBAAqB,aACrB,eAAkB,cAejB,SAASC,GAAOlhB,GAEdlE,mBADf,IAEI2jB,EAAa3jB,mBACjB,EAAgC4c,IAAMhhB,WAAtC,mBAAOypB,EAAP,KAAiBC,EAAjB,KACIC,EAAS3I,IAAMrT,YAEfic,EAAoB,GAExB,IAAK,IAAIC,KAAMvhB,EAAMwhB,cACfxhB,EAAMwhB,cAAcD,GAAIjY,SAC1BgY,EAAkBV,KAAK5gB,EAAMwhB,cAAcD,GAAI5e,MAInD,GAAI3C,EAAMtJ,QAAUsJ,EAAM1J,MACxB,IAAImrB,EAAIzhB,EAAMtJ,OAAS,GACnBgrB,EAAI1hB,EAAM1J,MAAQ,QAElBmrB,EAAI,IACJC,EAAI,IAmLP,OA9KHje,qBAAU,WACR,IAAIke,EAAM,UAAOL,GACjBK,EAAOf,KAAK,QAIZ,IAFA,IAAIgB,EAAQ,EACRC,EAAa,GACRhC,EAAE,EAAGA,GAAI,EAAGA,IAAI,CACvB,IAAIiC,EAAW,GACf,IAAK,IAAIP,KAAMD,EACbQ,EAASR,EAAkBC,IAAO,EAEpCO,EAAQ,KAAWF,EAAQ,EAC3BA,GAAgB,EAChBE,EAAQ,IAAU,sBAClBD,EAAWjB,KAAKkB,GAGlBrC,EAAWhjB,QAAU,CACnB,mCAAsColB,EACtC,YAAeF,EACf,IAAO,uBAGTV,GAAS,GAAT,gBAAoCS,EACpCT,GAAS,GAAT,iBAAqCQ,EACrCR,GAAS,GAAT,uCAA2D,EAC3D,IAAIc,EAAsBd,GAAS,GAAT,WAC1BA,GAAS,GAAT,WAA0B,GAA1B,OAAuC,GAAvC,YAA2DU,EACrCI,EAAoB,GAApB,OAAiC,GACtB,YADjC,IAEIC,EAAY,GAEZC,GADApC,EAAI,EACU,IAClB,IAAK,IAAIqC,KAAYZ,EAAmB,CACtC,GAAIa,SAASD,GAAS,IAAOZ,EAAkBvN,OAC7C,IAAIqO,EAAS,QAETA,EAAUd,EAAkBa,SAASD,GAAS,GAEpDD,EAAYrB,KAAK,CACfyB,WAAaf,EAAkBY,GAC/BnV,KAAM,KACNuV,eAAgB,OAChBC,QAAS,GACTC,YAAa,GACbJ,OAAQA,IAIZ,IAAIK,EAAuBC,KAAUC,4BACnC1B,GACAxB,EAAWhjB,QAAQmmB,mCACnB,CAACnD,EAAWhjB,QAAQomB,KACpBvB,EACA,CAAC,QAAS,OAAQ,QAAS,UAC3B,CAAC,IACDW,EACA,iBAAmBpC,EACnB6B,EACAD,EACA,QAEFO,EAAUpB,KAAK6B,GACf5C,IAEA,IAAIiD,EAAY9Q,KAAMuC,SAASuD,OAC/BsJ,EAAY0B,GACGJ,KAAUK,gBAAgB,cAAc5B,EAAUa,KAChE,IAEHve,qBAAU,WACR,IACI6d,EAAoB,GACxB,IAAK,IAAIC,KAAMvhB,EAAMwhB,cACfxhB,EAAMwhB,cAAcD,GAAIjY,SAC1BgY,EAAkBV,KAAK5gB,EAAMwhB,cAAcD,GAAI5e,MAMnD,QAAuByW,IAAnBpZ,EAAMgjB,UAAiE,IAAvCjM,OAAOoB,KAAKnY,EAAMgjB,UAAUjP,OAAc,CAqB5E,IAAK,IAAIkP,KApBTjjB,EAAMkjB,uBAAuB,CAC3Bza,KAAM,mBACNsH,KAAM/P,EAAMgjB,WAkBGhjB,EAAMgjB,SACrB,IAAK,IAAIG,KAAQ7B,EACVthB,EAAMgjB,SAASC,GAAM3B,EAAkB6B,MAC1CnjB,EAAMgjB,SAASC,GAAM3B,EAAkB6B,IAAS,GAS9C,IAAD,EAHP,GAAIpM,OAAOoB,KAAKnY,EAAMgjB,UAAUjP,QAAU,EAExC0L,EAAWhjB,QAAQmmB,mCAAnB,aAA4D7L,OAAOxQ,OAAOvG,EAAMgjB,gBAGhF,EAAAvD,EAAWhjB,QAAQmmB,oCAAmChC,KAAtD,qBAA8D7J,OAAOxQ,OAAOvG,EAAMgjB,YAKpF,IAAII,EAAuB9B,EAAkBvN,OAAS,EAAlC,IAAuCsP,KAAKC,MAAqC,IAA9BhC,EAAkBvN,OAAS,IAElGkN,GAAS,GAAT,4BAAgDmC,EAAcpc,WAAW,KAEzEia,GAAS,GAAT,uCAA2D,EAC3D,IAAIe,EAAY,GACZnC,EAAI,EACJoC,EAAc,GAClB,IAAK,IAAIC,KAAYZ,EAAmB,CACtC,GAAIa,SAASD,GAAS,IAAOZ,EAAkBvN,OAC7C,IAAIqO,EAAS,QAETA,EAAUd,EAAkBa,SAASD,GAAS,GAGpDD,EAAYrB,KAAK,CACfyB,WAAaf,EAAkBY,GAC/BnV,KAAM,KACNuV,eAAgB,OAChBC,QAAS,GACTC,YAAa,GACbJ,OAAQA,IAIZ,IAAIK,EAAuBC,KAAUC,4BACnC1B,GACAxB,EAAWhjB,QAAQmmB,mCACnB,CAACnD,EAAWhjB,QAAQomB,KACpBvB,EACA,CAAC,QAAS,OAAQ,QAAS,UAC3B,CAAC,IACDW,EACA,iBAAmBpC,EACnB6B,EACAD,EACA,QAIFgB,EAAqB,GAArB,gBAAgDA,EAAqB,GAArB,gBAAgD,GAChGA,EAAqB,GAArB,iBAAiDA,EAAqB,GAArB,iBAAiD,IAClGA,EAAqB,GAArB,iBAAiD,CAAC,IAAO,GAAI,MAAS,GAAI,OAAU,GAAmB,GAAdW,EAAkB,KAAQ,IAEnHpB,EAAUpB,KAAK6B,GACf5C,IAEe6C,KAAUK,gBAAgB,cAAc5B,EAAUa,MAGlE,CAAChiB,EAAMgjB,SAAUhjB,EAAMujB,aAIhB,cAACtqB,EAAA,EAAD,CAAKuqB,EAAG,EAAR,SACA,qBAAKtnB,IAAKmlB,EAAQnE,UAAW,cAAciE,EAAUlZ,GAAI,cAAckZ,MC7SpE,SAASsC,GAAazjB,GAEnC,MAAsC0Y,IAAMhhB,SAASsI,EAAM8gB,aAA3D,mBAAOA,EAAP,KAAoB4C,EAApB,KACA,EAAwChL,IAAMhhB,SAAS,GAAvD,mBAAOisB,EAAP,KAAqBC,EAArB,KACA,EAA0BlL,IAAMhhB,UAAS,GAAzC,mBAAOmsB,EAAP,KAAcC,EAAd,KAEMC,EAAuB,SAACC,GAC5B,GAAIA,EAAK,CACP,IAAI7L,EAAOpB,OAAOoB,KAAK6L,GACvB,OAAO7L,EAAKA,EAAKpE,OAAS,KAsC9B,OAnBA2E,IAAMjV,WAAU,WAGd,GADAigB,EAAe1jB,EAAM8gB,aACjB9gB,EAAM+P,KACR,GAAIgU,EAAqB/jB,EAAM+P,MAAO,CACpC,IAAIkU,EAAUjkB,EAAM+P,KAAKgU,EAAqB/jB,EAAM+P,OAElD6T,EADqB,kBAAZK,GArBMC,EAsBeD,GArB1B,MACAC,EAAM,MAAe7O,QAAQ,GAAK,KACjC6O,EAAM,KACPA,EAAM,KAAY7O,QAAQ,GAAK,KAC9B6O,EAAM,IACT,GAAN,QAAWA,EAAM,KAAS7O,QAAQ,GAAlC,MACS6O,EAAM,IACT,GAAN,QAAWA,EAAM,KAAM7O,QAAQ,GAA/B,MAEO6O,EAcaD,QAGlBL,EAAgB,GA3BA,IAACM,EA8BrBJ,EAAS9jB,EAAM6jB,SACd,CAAC7jB,IAIF,sBAAKkd,UAAU,SAAf,UACE,qBAAKA,UAAW2G,EAAQ,oBAAsB,kBAC9C,sBAAK3G,UAAU,iBAAf,UACE,qBAAKA,UAAU,eAAf,SAA+B4D,IAC/B,qBAAK5D,UAAU,eAAf,SAA+ByG,UClDvC,IAAMQ,GAAcluB,YAAOgD,IAAPhD,EAAY,gBAAGC,EAAH,EAAGA,MAAH,MAAgB,CAC9CI,MAAO,OACPI,OAAQ,OACRmE,SAAU,OACV3D,gBAAiBhB,EAAMkB,QAAQ4C,KAAK,KACpCnD,QAASX,EAAMY,QAAQ,IACvB8C,aAAc1D,EAAMY,QAAQ,IAC5B+Z,UAAW3a,EAAMY,QAAQ,QAGZ,SAAS2sB,GAAazjB,GAEnC,MAAwB0Y,IAAMhhB,SAAS,IAAvC,mBAAOihB,EAAP,KAAaC,EAAb,KACA,EAA8BF,IAAMhhB,SAAS,IAA7C,mBAAO0sB,EAAP,KAAgBC,EAAhB,KACA,SAASC,EAAW3hB,EAAM4hB,EAAUC,EAAKC,EAAOC,GAC9C,MAAO,CAAE/hB,OAAM4hB,WAAUC,MAAKC,QAAOC,WAIrCJ,EAAW,iBAAkB,IAAK,EAAK,GAAI,GAC3CA,EAAW,qBAAsB,IAAK,EAAK,GAAI,KAC/CA,EAAW,SAAU,IAAK,GAAM,GAAI,GACpCA,EAAW,UAAW,IAAK,IAAK,GAAI,KACpCA,EAAW,cAAe,IAAK,GAAM,GAAI,KA2D3C,OAVA5L,IAAMjV,WAAU,WAEd4gB,EAhDsB,SAACtU,GACvB,IAAI4U,EAAa,GAcjB,OAbA5N,OAAOoB,KAAKpI,GAAMhT,KAAI,SAACqb,GACrB,IAAI8J,EAAUnS,EAAKqI,GASnB,OARI8J,EAAQ5Y,SACVqb,EAAW/D,KAAK,CACdgE,MAAO1C,EAAQvf,KACfkiB,WAAY3C,EAAQvf,KACpBrM,MAAO,IACPuqB,UAAWqB,EAAQrB,YAGhB,QAGF8D,EAiCIG,CAAgB9kB,EAAMwhB,gBACjC5I,EAhCmB,SAAC7I,GACpB,IAAIgV,EAAU,GACd,OAAKhV,GAILgH,OAAOoB,KAAKpI,GAAMhT,KAAI,SAACioB,GACrB,IAAIC,EAAMlV,EAAKiV,GAEXE,EAAS,CACXjd,GAAI+c,GAaN,OAVAjO,OAAOoB,KAAKiM,GAASrnB,KAAI,SAACqb,GACxB,IAAI+M,EAASf,EAAQhM,GAMrB,OALI6M,EAAIE,EAAOtE,WACbqE,EAAOC,EAAOP,OAASK,EAAIE,EAAOtE,WAElCqE,EAAOC,EAAOP,OAAS,GAElB,QAETG,EAAQnE,KAAKsE,GACN,QAGFH,GAtBEA,EA4BDK,CAAaplB,EAAM+P,SAG1B,CAAC/P,IAKF,cAACmkB,GAAD,CAAahT,MAAO,CAAE7a,MAAO,OAAQuE,SAAS,QAA9C,SACE,kCACE,gCACE,6BACGupB,EAAQrnB,KAAI,SAACooB,GACZ,OAAO,6BAAwBA,EAAON,YAAtBM,EAAOP,cAI7B,gCACGjM,EAAK5b,KAAI,SAACkoB,GACT,OACE,6BACGb,EAAQrnB,KAAI,SAACooB,GACZ,OAAO,6BAAwBF,EAAIE,EAAOtE,YAA1BsE,EAAOP,WAFlBK,EAAIhd,cCjE3B,IAAM7J,GAAYnI,YAAO,MAAPA,EAAc,kBAAgB,CAC9Cc,UAAW,OACXF,QAF8B,EAAGX,MAElBY,QAAQ,GACvBJ,OAAQ,WAEJ2uB,GAAapvB,YAAO2T,KAAP3T,EAAa,kBAAgB,CAC9CiB,gBAAiB,2BACjBP,eAAgB,aAChBE,QAH8B,EAAGX,MAGlBY,QAAQ,KACvBC,UAAW,OACXP,SAAU,WACVL,IAAK,MACLC,KAAM,MACNyD,UAAW,wBACXvD,MAAO,IACPyE,OAAQ,wBAEJuqB,GAAiBrvB,YAAOgD,IAAPhD,EAAY,kBAAgB,CACjDO,SAAU,WACVK,QAFiC,EAAGX,MAErBY,QAAQ,EAAG,EAAG,EAAG,GAChCR,MAAO,OACPI,OAAQ,WAIK,SAAS6uB,GAAOvlB,GAI7B,MAA0B0Y,IAAMhhB,SAASsI,EAAMoB,OAA/C,mBAAOA,EAAP,KAAcokB,EAAd,KACA,EAAkC9M,IAAMhhB,UAAS,GAAjD,mBAAO+tB,EAAP,KAAkBC,EAAlB,KACA,EAAwBhN,IAAMhhB,SAASsI,EAAMyI,MAA7C,mBAAOA,EAAP,KACA,GADA,KACwBiQ,IAAMhhB,UAAS,IAAvC,mBAAOqE,EAAP,KAAanE,EAAb,KACA,EAAgC8gB,IAAMhhB,SAASsI,EAAMga,UAArD,mBAAOA,EAAP,KACA,GADA,KACwBtB,IAAMhhB,SAAS,KAAvC,mBAAOqY,EAAP,KAAa4V,EAAb,KACA,EAA8BjN,IAAMhhB,SAAS,IAA7C,mBAAOkuB,EAAP,KAAgBC,EAAhB,KAEA,EAAgCnN,IAAMhhB,SAAS,IAA/C,mBAAOouB,EAAP,KAAiBC,EAAjB,KACA,EAAgCrN,IAAMhhB,SAASsI,EAAMygB,MAArD,mBAAOuF,EAAP,KACA,GADA,KAC4CtN,IAAMhhB,SAChDsI,EAAMimB,iBADR,mBAAOA,EAAP,KAAuBC,EAAvB,KAGA,EAA0CxN,IAAMhhB,SAASsI,EAAMwhB,eAA/D,mBAAOA,EAAP,KACA,GADA,KACsD9I,IAAMhhB,SAAS,CACnE+Q,KAAM,aACNsH,KAAM,MAFR,mBAAOoW,EAAP,KAA4BjD,GAA5B,KAIA,GAAsCxK,IAAMhhB,SAASsI,EAAMomB,aAA3D,qBAAOA,GAAP,MAAoBC,GAApB,MAEMC,GAAO5N,IAAMrT,UAAU,MAE7B,GAAgCkhB,aAAc,CAC5C9d,KAAM,aACN+d,QAAS,IAFX,qBAAcC,IAAd,aAOM5uB,GAAc,kBAAMD,GAAQ,IAC5B8uB,GAAW,SACftU,GAEI,IAAD,yDADkD,GAClD,IADDzP,YACC,MADM,aAAevB,EACrB,MAD4BulB,iBAC5B,MADwC,MACxC,EACGC,EAAIC,SAASC,cAAc,KACjCF,EAAEG,KAAO3U,EACTwU,EAAEF,SAAWM,aAAeL,EAAWhkB,GACvCikB,EAAEK,SAiBJ,SAASC,GAAeC,EAAWC,EAAcC,GAC/C,OAAOhE,KAAKiE,MACVF,EAAeD,EAAY9D,KAAKkE,IAAI,EAAGJ,EAAY,GAAKE,GAqB5D3O,IAAMjV,WAAU,WACdkiB,EAAQ3lB,EAAM+P,MACd8V,EAAW7lB,EAAM4lB,SAEjBG,EAAY/lB,EAAM8lB,UAClBO,GAAermB,EAAMomB,eACpB,CAACpmB,IAGJ,OAA0B0Y,IAAMhhB,SAAS,GAAzC,qBAAOpB,GAAP,MAAckxB,GAAd,MACA,GAA4B9O,IAAMhhB,SAAS,GAA3C,qBAAOhB,GAAP,MAAe+wB,GAAf,MA0BA,OAzBA/O,IAAMjV,WAAU,WACd,GAAI6iB,GAAK7pB,QAAS,CAChB,IAAIirB,EAAWpB,GAAK7pB,QAAQkrB,YACxBC,EAAYtB,GAAK7pB,QAAQorB,aAEzBH,EAAW,MACbA,EAAWR,GACTlnB,EAAMujB,WAAW,GAAG7B,EACpB1hB,EAAMujB,WAAW,GACjB,IAGAqE,EAAY,MACdA,EAAYV,GACVlnB,EAAMujB,WAAW,GAAG9B,EACpBzhB,EAAMujB,WAAW,GACjB,IAIJiE,GAASE,GACTD,GAAUG,MAEX,CAAC5nB,EAAM8nB,SAGR,qCACE,eAAC,GAAD,CAAW5rB,IAAKoqB,GAAhB,UACE,eAACxR,GAAA,EAAD,CACEG,WAAS,EACTne,QAAS,GACTwB,UAAU,MACVuI,eAAe,gBACfpK,WAAW,cALb,UAOGgvB,GAAuB,KAAVrkB,GACZ,cAAC0T,GAAA,EAAD,CAAM/T,MAAI,EAAV,SACE,cAACnE,EAAA,EAAD,CAAYnD,QAAQ,KAApB,SAA0B2H,MAG9B,cAAC0T,GAAA,EAAD,CAAM/T,MAAI,EAACmc,UAAU,eAArB,SACE,eAACjkB,EAAA,EAAD,WACa,QAATwP,GACA,cAACzQ,EAAA,EAAD,CACEqB,MAAM,UACN,aAAW,oBACXH,UAAU,OACVjB,QA9FK,WACnB,IAAM2uB,EAAIC,SAASC,cAAc,KACA,eAA7BX,EAAoB1d,KACtBme,EAAEF,SAAWM,aAAe,MAAO,aAAe5lB,EAAQ,SACxC,qBAATqH,IACTme,EAAEF,SAAWM,aAAe,OAAQ,aAAe5lB,EAAQ,SAC3D+kB,EAAoBpW,KAAOgY,KAAKC,UAAU7B,EAAoBpW,OAEhE6W,EAAEG,KAAOkB,IAAIC,gBACX,IAAIC,KAAK,CAAChC,EAAoBpW,MAAO,CAAEtH,KAAMA,KAE/Cme,EAAEK,SA+EU,SAME,cAAC,KAAD,CAAyB7tB,GAAI,CAAEiV,SAAU,QAI7C,cAACrW,EAAA,EAAD,CACEqB,MAAM,UACN,aAAW,oBACXH,UAAU,OACVjB,QA1Ga,kBAAMwuB,GAAeH,GAAK7pB,SAAS2rB,KAAK1B,KAsGvD,SAME,cAAC,KAAD,CAAsBttB,GAAI,CAAEiV,SAAU,QAExC,cAACrW,EAAA,EAAD,CACEqB,MAAM,UACN,aAAW,WACXH,UAAU,OACVjB,QA7HK,kBAAML,GAAQ,IAyHrB,SAME,cAAC,KAAD,CAAcwB,GAAI,CAAEiV,SAAU,gBAKtC,eAACiX,GAAD,WACY,WAAT7c,GACC,cAACgb,GAAD,CACE3C,YACe,OAAbkF,QAAkC5M,IAAb4M,EACjBA,EAASjF,IAAIkF,GACb,GAENpF,UAAWoF,EACXlW,KAAMA,EAAKkW,GACXpC,QACEuC,GAAYH,IACRG,GAAYH,KAKZ,UAATxd,GACC,cAAC,GAAD,CAAgB+Y,cAAeA,EAAezR,KAAM+V,EAAU5C,uBAAwBA,KAE9E,QAATza,GAAkB,cAAC6X,GAAD,CAAWC,KAAMqF,EAASnF,KAAMuF,EAAU9C,uBAAwBA,KAC3E,UAATza,GACC,cAACyY,GAAD,CACE8B,SAAU8C,EACVvC,WAAYvjB,EAAMujB,WAClBjtB,MAAOA,GACPI,OAAQA,GACR8qB,cAAeA,EACfxH,SAAUha,EAAMga,SAChBqO,YAAaroB,EAAMqoB,YACnBnF,uBAAwBA,WAKhC,cAACoF,GAAA,EAAD,CACEvsB,KAAMA,EACNQ,QAAS1E,GACT,kBAAgB,oBAChB,mBAAiB,0BAJnB,SAME,cAACwtB,GAAD,UACE,eAACpsB,EAAA,EAAD,WACE,eAAC6b,GAAA,EAAD,CACEG,WAAS,EACTne,QAAS,GACTwB,UAAU,MACVuI,eAAe,gBACfpK,WAAW,cACX2C,GAAI,CAAEwK,GAAI,GANZ,UAQE,eAAChH,EAAA,EAAD,CAAYnD,QAAQ,KAApB,UAA0B2H,EAA1B,oBACA,cAACpJ,EAAA,EAAD,CACEqB,MAAM,UACNH,UAAU,OACVjB,QAASJ,GAHX,SAKE,cAAC,KAAD,SAGJ,eAAC+E,EAAA,EAAD,wBACawE,EADb,2DAIA,cAACtE,EAAA,EAAD,CAAS1D,GAAI,CAAEsD,GAAI,GAAnB,SACE,cAACE,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,kBAAzC,iCAIF,eAAC2F,EAAA,EAAD,CAAOlI,QAAS,EAAhB,UACE,cAACiR,GAAA,EAAD,CAAanP,WAAS,EAAtB,SACE,cAAC4P,GAAA,EAAD,CACE5P,WAAS,EACTiP,aAAa,QACbY,KAAK,OACLpN,MAAM,eACNqC,MAAO0D,EACPgH,SAAU,SAAC2R,GAAD,OAAOyL,EAASzL,EAAEzR,OAAO5K,YAIvC,cAACyL,GAAA,EAAD,CAEEC,QAAS,cAACyQ,GAAA,EAAD,CAAQvQ,QAASmc,IAC1BpqB,MAAO,iBACP+M,SAAU,SAACC,GACTqd,EAAard,EAAMC,OAAOgB,WAJvB,iBAyBC,WAATb,GACC,cAAC3L,EAAA,EAAD,CAAS1D,GAAI,CAAEsD,GAAI,GAAnB,SACE,cAACE,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,kBAAzC,+BAKM,WAAToP,GACC,cAACzJ,EAAA,EAAD,CAAOlI,QAAS,EAAhB,SACE,eAACiR,GAAA,EAAD,CAAanP,WAAS,EAAtB,UACE,cAACoP,GAAA,EAAD,CAAYC,GAAG,uBAAf,uBACA,cAACC,GAAA,EAAD,CACEC,QAAQ,uBACRF,GAAG,wBACHvK,MAAOuoB,EACP5qB,MAAM,oBACN+M,SAAU,SAACC,GACT6d,EAAkB7d,EAAMC,OAAO5K,QANnC,SASGqZ,OAAOoB,KAAK6B,GAAUjd,KAAI,SAACqb,GAC1B,OAAIoJ,EAAcpJ,GAAKE,YAEnB,cAACrb,EAAA,EAAD,CAAUS,MAAOsc,EAAS5B,GAAKyI,UAA/B,SACG7G,EAAS5B,GAAKzV,MAD8ByV,GAIrC,eA2BxB,cAAC5e,EAAA,EAAD,CACEZ,WAAS,EACT4Q,KAAK,QACLf,KAAK,SACLhP,QAAQ,YACRL,GAAI,CAAEuB,GAAI,GACV1C,QAAS,WACPJ,MAPJ,kBAaA,cAAC2B,EAAA,EAAD,CACEZ,WAAS,EACT4Q,KAAK,QACLnQ,MAAM,QACND,GAAI,CAAEuB,GAAI,GACV1C,QAAS,WAEWswB,OAAOC,QACvB,8CAAgDpnB,EAAQ,SAGxDpB,EAAMyoB,aACN5wB,OAZN,qC,gDCnXN6wB,GAAsBzyB,YAAOqyB,KAAPryB,CAAc,CACxCO,SAAU,WACVqE,SAAU,SACVnE,OAAQ,OACRH,QAAS,UAGLoyB,GAAa1yB,YAAO2T,KAAP3T,EAAa,kBAAgB,CAC9CiB,gBAAiB,2BACjBP,eAAgB,aAChBE,QAH8B,EAAGX,MAGlBY,QAAQ,KACvBC,UAAW,OACXP,SAAU,WACVL,IAAK,MACLC,KAAM,MACNyD,UAAW,wBACXvD,MAAO,IACPyE,OAAQ,wBAIJ6tB,GAAuB,SAAC7U,GAK5B,IAJA,IAAI8U,EAAS,GACPC,EACJ,iEACIC,EAAmBD,EAAW/U,OAC3B8L,EAAI,EAAGA,EAAI9L,EAAQ8L,IAC1BgJ,GAAUC,EAAWE,OAAO3F,KAAKC,MAAMD,KAAK4F,SAAWF,IAEzD,OAAOF,GAEM,SAASK,GAAUlpB,GAEhC,MAA0B0Y,IAAMhhB,SAAS,UAAYkxB,GAAqB,IAA1E,mBAAOxnB,EAAP,KAAcokB,EAAd,KACA,EAAwB9M,IAAMhhB,SAAS,UAAvC,mBAAO+Q,EAAP,KAAa0gB,EAAb,KACA,EAAgCzQ,IAAMhhB,SAAS,IAA/C,mBAAOsiB,EAAP,KAAiBoP,EAAjB,KACA,EAA4C1Q,IAAMhhB,UAAU,GAA5D,mBAAOuuB,EAAP,KAAuBC,EAAvB,KACA,EAA0CxN,IAAMhhB,SAAS,IAAzD,mBAAO8pB,EAAP,KAAsB6H,EAAtB,KACA,EAA0C3Q,IAAMhhB,SAAS,GAAzD,mBAAO4xB,EAAP,KAAsBC,EAAtB,KACA,EAAsC7Q,IAAMhhB,UAAS,GAArD,mBAAO8xB,EAAP,KAAoBC,EAApB,KACA,EAA0B/Q,IAAMhhB,SAAS,CAAEkqB,MAAO,EAAGnf,IAAK,IAA1D,mBAAOinB,EAAP,KAAcC,EAAd,KACA,EAA0BjR,IAAMhhB,SAAS,SAAzC,mBAAOia,EAAP,KAAcI,EAAd,KAEM6X,EAAQ,WACZpE,EAAS,UAAYoD,GAAqB,IAC1CO,EAAQ,UACRjD,GAAmB,GACnB,IAAI2D,EAAgB,eAAQrI,GAC5BzK,OAAOoB,KAAK0R,GAAkBC,SAAQ,SAAU1R,GAC9CyR,EAAiBzR,GAAO,CACtBzV,KAAMyV,EACN9O,SAAS,EACTgP,YAAauR,EAAiBzR,GAAjB,YACbyI,UAAWgJ,EAAiBzR,GAAKyI,cAGrCwI,EAAiBQ,GACjBN,EAAiB,GACjBE,GAAe,GACfE,EAAS,CAAE/H,MAAO,EAAGnf,IAAK,IAC1BsP,EAAS,UAqBX,OAlBA2G,IAAMjV,WAAU,WAEd,IAAIsmB,EAAW,eAAQ/pB,EAAMga,UAC7BoP,EAAYW,GACZ7D,EAAkB,IAClB,IAAI8D,EAAc,GACdzI,EAAKwI,EACThT,OAAOoB,KAAKoJ,GAAIuI,SAAQ,SAAU1R,GAChC4R,EAAY5R,GAAO,CACjBzV,KAAM4e,EAAGnJ,GAAH,KACN9O,SAAS,EACTgP,YAAaiJ,EAAGnJ,GAAKE,YACrBuI,UAAWU,EAAGnJ,GAAKyI,cAGvBwI,EAAiBW,KAChB,CAAChqB,EAAMga,WAGR,cAAC0O,GAAD,CACE3sB,KAAMiE,EAAMjE,KACZQ,QAAS,WACPyD,EAAMzD,UACNqtB,KAEF,kBAAgB,oBAChB,mBAAiB,0BAPnB,SASE,eAACjB,GAAD,WACE,eAAC7T,GAAA,EAAD,CACEG,WAAS,EACTne,QAAS,GACTwB,UAAU,MACVuI,eAAe,gBACfpK,WAAW,cACX2C,GAAI,CAAEwK,GAAI,GANZ,UAQE,cAAChH,EAAA,EAAD,CAAYnD,QAAQ,KAApB,iCACA,cAACzB,EAAA,EAAD,CACEqB,MAAM,UACNH,UAAU,OACVjB,QAAS,WACP2xB,IACA5pB,EAAMnI,eALV,SAQE,cAAC,KAAD,SAGJ,cAACid,GAAA,EAAD,CAAMG,WAAS,EAACne,QAAS,EAAGwB,UAAU,MAAM2xB,QAAQ,SAApD,SACE,cAACnV,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAf,SACE,cAAC8I,GAAA,EAAD,CAAanP,WAAS,EAAtB,SACE,cAAC4P,GAAA,EAAD,CACE5P,WAAS,EACTiP,aAAa,QACbY,KAAK,OACLpN,MAAM,cACNqC,MAAO0D,EACPgH,SAAU,SAAC2R,GAAD,OAAOyL,EAASzL,EAAEzR,OAAO5K,gBAK3C,cAACZ,EAAA,EAAD,CAAS1D,GAAI,CAAEsD,GAAI,GAAnB,SACE,cAACE,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,kBAAzC,2BAIF,eAACyb,GAAA,EAAD,CACEG,WAAS,EACTne,QAAS,GACTwB,UAAU,MACVuI,eAAe,gBACfpK,WAAW,cACX2C,GAAI,CAAEwK,GAAI,GANZ,UAQE,cAACkR,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,EAAG4Q,GAAI,EAAGyL,GAAI,EAA7B,SACE,qBACE4B,UACW,WAATzU,EACI,2BACA,oBAENxQ,QAAS,WACP8Z,EAAS,SACToX,EAAQ,WARZ,SAWE,qBAAKjM,UAAU,uCAGnB,cAACpI,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,EAAG4Q,GAAI,EAAGyL,GAAI,EAA7B,SACE,qBACE4B,UACW,UAATzU,EACI,2BACA,oBAENxQ,QAAS,WACP8Z,EAAS,SACToX,EAAQ,UARZ,SAWE,qBAAKjM,UAAU,sCAGnB,cAACpI,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,EAAG4Q,GAAI,EAAGyL,GAAI,EAA7B,SACE,qBACE4B,UACW,UAATzU,EACI,oCACA,6BAENxQ,QAAS,aANX,SAWE,qBAAKilB,UAAU,sCAGnB,cAACpI,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,EAAG4Q,GAAI,EAAGyL,GAAI,EAA7B,SACE,qBACE4B,UACW,QAATzU,EACI,2BACA,oBAENxQ,QAAS,WACP8Z,EAAS,SACToX,EAAQ,QARZ,SAWE,qBAAKjM,UAAU,uCAIX,WAATzU,GACC,qCACE,cAAC7L,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,iBAAkBqD,GAAI,GAA/D,gEAGA,cAACI,EAAA,EAAD,CAAS1D,GAAI,CAAEsD,GAAI,GAAnB,SACE,cAACE,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,kBAAzC,iCAIF,cAAC2F,EAAA,EAAD,CAAOlI,QAAS,EAAhB,SACE,eAACiR,GAAA,EAAD,CAAanP,WAAS,EAAtB,UACE,cAACoP,GAAA,EAAD,CAAYC,GAAG,uBAAf,uBACA,cAACC,GAAA,EAAD,CACEC,QAAQ,uBACRF,GAAG,wBACHvK,MAAOuoB,EACP5qB,MAAM,oBACN+M,SAAU,SAACC,GACT6d,EAAkB7d,EAAMC,OAAO5K,QANnC,SASGqZ,OAAOoB,KAAK6B,GAAUjd,KAAI,SAACqb,GAC1B,OAAI4B,EAAS5B,GAAT,YAEA,cAACnb,EAAA,EAAD,CAAUS,MAAOsc,EAAS5B,GAAT,UAAjB,SACG4B,EAAS5B,GAAT,MAD+CA,GAK7C,mBAQV,UAAT3P,GAA6B,UAATA,GAA6B,QAATA,IACxC,qCACE,cAAC3L,EAAA,EAAD,CAAS1D,GAAI,CAAEsD,GAAI,GAAnB,SACE,cAACE,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,kBAAzC,iCAIF,cAAC2F,EAAA,EAAD,CAAOlI,QAAS,EAAhB,SACE,eAACiR,GAAA,EAAD,CAAanP,WAAS,EAAtB,UACE,cAACoP,GAAA,EAAD,CAAYC,GAAG,sBAAf,qCAGA,eAACC,GAAA,EAAD,CACEC,QAAQ,sBACRF,GAAG,uBACHvK,MAAO8rB,EACPnuB,MAAM,0BACN+M,SAAU,SAACC,GACTohB,EAAephB,EAAMC,OAAO5K,OACxB2K,EAAMC,OAAO5K,OACfqU,EAAS,UARf,UAYE,cAAC9U,EAAA,EAAD,CAAUS,OAAO,EAAjB,uBACA,cAACT,EAAA,EAAD,CAAUS,OAAO,EAAjB,4BAIJ8rB,GACA,qCACE,cAACxqB,EAAA,EAAD,CAAOlI,QAAS,EAAGsC,GAAI,CAAEuB,GAAI,GAA7B,SACE,eAACoN,GAAA,EAAD,CAAanP,WAAS,EAAtB,UACE,cAACoP,GAAA,EAAD,CAAYC,GAAG,sBAAf,iCAGA,eAACC,GAAA,EAAD,CACEC,QAAQ,sBACRF,GAAG,uBACHvK,MAAOiU,EACPtW,MAAM,0BACN+M,SAAU,SAACC,GACT0J,EAAS1J,EAAMC,OAAO5K,QAN1B,UASE,cAACT,EAAA,EAAD,CAAUS,MAAO,QAAjB,mBACA,cAACT,EAAA,EAAD,CAAUS,MAAO,OAAjB,0BAIN,cAACsB,EAAA,EAAD,CAAOlI,QAAS,EAAGsC,GAAI,CAAEuB,GAAI,GAA7B,SACE,eAACma,GAAA,EAAD,CAAMG,WAAS,EAACne,QAAS,EAAGwB,UAAU,MAAM2xB,QAAQ,SAApD,UACa,SAAVtY,GACC,cAACmD,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAf,SACE,cAACrC,EAAA,EAAD,CAAYnD,QAAQ,QAAQJ,MAAM,MAAlC,sDAKJ,cAACyb,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,EAAf,SACa,UAAV0S,EACC,cAAC5J,GAAA,EAAD,CAAanP,WAAS,EAAtB,SACE,cAAC4P,GAAA,EAAD,CACE5P,WAAS,EACTiP,aAAa,QACbY,KAAK,SACLpN,MAAM,cACNqC,MAAOgsB,EAAM9H,MACbxZ,SAAU,SAACC,GACTshB,EAAS,CACP/H,MAAOvZ,EAAMC,OAAO5K,MACpB+E,IAAKinB,EAAMjnB,WAMnB,cAACynB,GAAA,EAAD,CACEC,YAAaC,KACb1d,UAAQ,EAFV,SAIE,cAAC2d,GAAA,EAAD,CACE3d,UAAQ,EACR4d,YAAa,SAACtqB,GAAD,OAAW,cAACwI,GAAA,EAAD,eAAexI,KACvC3E,MAAM,aACNqC,MAAOgsB,EAAM9H,MACbxZ,SAAU,SAACmiB,GACTZ,EAAS,CACP/H,MAAO2I,EACP9nB,IAAKinB,EAAMjnB,aAOvB,cAACqS,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,EAAf,SACa,UAAV0S,EACC,cAAC5J,GAAA,EAAD,CAAanP,WAAS,EAAtB,SACE,cAAC4P,GAAA,EAAD,CACE5P,WAAS,EACTiP,aAAa,MACbY,KAAK,SACLpN,MAAM,YACNqC,MAAOgsB,EAAMjnB,IACb2F,SAAU,SAACC,GACTshB,EAAS,CACP/H,MAAO8H,EAAM9H,MACbnf,IAAK4F,EAAMC,OAAO5K,aAM1B,cAACwsB,GAAA,EAAD,CACEC,YAAaC,KACb1d,UAAQ,EAFV,SAIE,cAAC2d,GAAA,EAAD,CACE3d,UAAQ,EACR4d,YAAa,SAACtqB,GAAD,OAAW,cAACwI,GAAA,EAAD,eAAexI,KACvC3E,MAAM,WACNqC,MAAOgsB,EAAMjnB,IACb2F,SAAU,SAACmiB,GACTZ,EAAS,CACP/H,MAAO8H,EAAM9H,MACbnf,IAAK8nB,oBAWd,QAAT9hB,IAAmB+gB,IACnB,qCACE,cAACxqB,EAAA,EAAD,CAAOlI,QAAS,EAAhB,SACE,cAAC8F,EAAA,EAAD,CACEnD,QAAQ,QACRL,GAAI,CAAEC,MAAO,iBAAkBqD,GAAI,GAFrC,gDAOF,cAACsC,EAAA,EAAD,CAAOlI,QAAS,EAAhB,SACE,cAACmC,EAAA,EAAD,UACE,cAACuxB,GAAA,EAAD,CACEpxB,GAAI,CACF7C,QAAS,OACToN,cAAe,SACf8mB,SAAU,SACV5pB,eAAgB,gBAChBvK,MAAO,OACPgJ,UAAW,QACXwX,UAAW,QARf,SAWGC,OAAOoB,KAAK6B,GAAUjd,KAAI,SAACqb,GAC1B,IAAI8J,EAAUlI,EAAS5B,GACvB,OACGoR,GAAetH,EAAQ5J,cACtBkR,GACAtH,EAAQwI,UACoB,IAA3BxI,EAAQwI,QAAQ3W,QACfmO,EAAQwI,QAAQ,GAAGC,YAAchZ,GAInC,cAACxI,GAAA,EAAD,CAEEC,QACE,cAACC,GAAA,EAAD,CACEC,QAAS4Y,EAAQ5Y,QACjBoD,SAAoB,SAAViF,EACVvJ,SAAU,SAACC,GACTghB,EACEtS,OAAO6T,OAAO,GAAIpJ,EAAlBzK,OAAA,IAAAA,CAAA,GACGqB,EAAM,CACLzV,KAAMuf,EAAQvf,KACd2V,YAAa4J,EAAQ5J,YACrBhP,QAASjB,EAAMC,OAAOgB,QACtBuX,UAAWqB,EAAQrB,cAKrBxY,EAAMC,OAAOgB,QACfigB,EAAiBD,EAAgB,GAEjCC,EAAiBD,EAAgB,IAGrC5rB,MAAOwkB,EAAQrB,YAGnBxlB,MAAO6mB,EAAQvf,MA1BVyV,GA8BF,oBAUzB,cAAC5e,EAAA,EAAD,CACEZ,WAAS,EACT4Q,KAAK,QACLf,KAAK,SACLhP,QAAQ,YACRiT,SAAoB,SAAViF,EACVvY,GAAI,CAAEuB,GAAI,GACV1C,QAAS,WAEI,WAATwQ,IACqB,IAApBwd,GAA4C,KAAnBA,EAMhB,UAATxd,GACU,UAATA,IACU,QAATA,GAAmB+gB,IACH,IAAlBF,QAAyClQ,IAAlBkQ,EAMd,UAAT7gB,GAA6B,UAATA,GAA6B,QAATA,GACxC+gB,KACDE,EAAM9H,OAAS8H,EAAMjnB,MAMvBzC,EAAM6qB,QAAQ,CACZ5iB,GAAI2gB,GAAqB,GACzBxnB,MAAOA,EACPqH,KAAMA,EACNwd,eAAgBA,EAChBzE,cAAeA,EACfgI,YAAaA,EACbE,MAAOA,EACP/X,MAAOA,IAGTiY,IACA5pB,EAAMnI,eAhBJizB,MAAM,sCARNA,MAAM,wCATNA,MAAM,+BAZZ,6B,mGCxbFpC,GAAsBzyB,YAAOqyB,KAAPryB,CAAc,CACxCO,SAAU,WACVqE,SAAU,SACVnE,OAAQ,OACRH,QAAS,UAGLoyB,GAAa1yB,YAAO2T,KAAP3T,EAAa,kBAAgB,CAC9CiB,gBAAiB,2BACjBP,eAAgB,aAChBE,QAH8B,EAAGX,MAGlBY,QAAQ,KACvBC,UAAW,OACXP,SAAU,WACVL,IAAK,MACLC,KAAM,MACNyD,UAAW,wBACXvD,MAAO,IACPyE,OAAQ,wBAcK,SAASgwB,GAAY/qB,GAElC,MAA8C0Y,IAAMhhB,SAAS,IAA7D,mBAAOszB,EAAP,KAAwBC,EAAxB,KACA,EAAkCvS,IAAMhhB,SAAS,IAAjD,mBAAOwzB,EAAP,KAAkBC,EAAlB,KACA,EAAoCzS,IAAMhhB,UAAS,GAAnD,mBAAO0zB,EAAP,KAAmBC,EAAnB,KACA,EAAwB3S,IAAMhhB,UAAS,GAAvC,mBAAO4zB,EAAP,KAAaC,EAAb,KAeA,OAXA7S,IAAMjV,WAAU,gBAEgB2V,IAA1BpZ,EAAMgrB,iBACRC,EAAmBjrB,EAAMgrB,sBAGH5R,IAApBpZ,EAAMkrB,WACRC,EAAanrB,EAAMkrB,aAEpB,CAAClrB,EAAMgrB,gBAAiBhrB,EAAMkrB,YAG/B,cAAC,GAAD,CACEnvB,KAAMiE,EAAMjE,KACZQ,QAASyD,EAAMnI,YACf,kBAAgB,oBAChB,mBAAiB,0BAJnB,SAME,eAAC,GAAD,WACE,eAACid,GAAA,EAAD,CACEG,WAAS,EACTne,QAAS,GACTwB,UAAU,MACVuI,eAAe,gBACfpK,WAAW,cACX2C,GAAI,CAAEwK,GAAI,GANZ,UAQE,cAAChH,EAAA,EAAD,CAAYnD,QAAQ,KAApB,qCACA,cAACzB,EAAA,EAAD,CACEqB,MAAM,UACNH,UAAU,OACVjB,QAAS,WAEP+H,EAAMnI,eALV,SAQE,cAAC,KAAD,SAGJ,eAACid,GAAA,EAAD,CAAMG,WAAS,EAACne,QAAS,EAAGwB,UAAU,MAAM2xB,QAAQ,SAApD,UACE,eAACnV,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAf,UACE,cAAC+I,GAAA,EAAD,CAAYC,GAAG,2BAAf,+BAGA,eAACjJ,EAAA,EAAD,CACElI,QAAS,EACTwB,UAAU,MACVc,GAAI,CAAEsD,GAAI,GACVjG,WAAW,SAJb,UAME,cAAC,KAAD,IACA,cAAC+0B,GAAA,EAAD,CAEE,aAAW,UACX9tB,MAAOstB,EACPS,kBAAkB,OAClBC,KAAM,EACNC,OAAK,EACLC,IAAK,EACLrE,IAAK,GACLnf,SAAU,SAAC2R,GAAD,OAAOkR,EAAmBlR,EAAEzR,OAAO5K,SARzC,4BAUN,cAAC,KAAD,UAGJ,eAACoX,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAf,UACE,cAAC+I,GAAA,EAAD,CAAYC,GAAG,2BAAf,wBACA,eAACjJ,EAAA,EAAD,CACElI,QAAS,EACTwB,UAAU,MACVc,GAAI,CAAEsD,GAAI,GACVjG,WAAW,SAJb,UAME,cAAC,KAAD,IACA,cAAC+0B,GAAA,EAAD,CAEE,aAAW,QACX9tB,MAAOwtB,EACPO,kBAAkB,OAClBC,KAAM,GACNC,OAAK,EACLC,IAAK,GACLrE,IAAK,IACLnf,SAAU,SAAC2R,GAAD,OAAOoR,EAAapR,EAAEzR,OAAO5K,SARnC,qBAUN,cAAC,KAAD,UAGJ,cAACoX,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAf,SACE,cAACurB,GAAA,EAAD,CAAW,aAAW,WAAWvF,KAAG,EAApC,SACE,cAAC9b,GAAA,EAAD,CACEC,QACE,cAACC,GAAA,EAAD,CACEC,QAAS8hB,EACThjB,SAAU,SAAC2R,GAAD,OAAOsR,EAActR,EAAEzR,OAAOgB,UACxC5L,MAAO0tB,IAGX/vB,MAAO,wBAIb,cAACyZ,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAf,SACE,cAACurB,GAAA,EAAD,CAAW,aAAW,WAAWvF,KAAG,EAApC,SACE,cAAC9b,GAAA,EAAD,CACEC,QACE,cAACC,GAAA,EAAD,CACEC,QAASgiB,EACTljB,SAAU,SAAC2R,GACTwR,EAAQxR,EAAEzR,OAAOgB,SACjBtJ,EAAMurB,QAAQxR,EAAEzR,OAAOgB,UAEzB5L,MAAO4tB,IAGXjwB,MAAO,sBAKf,cAAC7B,EAAA,EAAD,CACEZ,WAAS,EACT4Q,KAAK,QACLf,KAAK,SACLhP,QAAQ,YACRL,GAAI,CAAEuB,GAAI,GACV1C,QAAS,WACP+H,EAAMirB,mBAAmBD,GACzBhrB,EAAMmrB,aAAaD,GACnBlrB,EAAMqrB,cAAcD,GACpBprB,EAAMurB,QAAQD,GAGdtrB,EAAMnI,eAbV,kC,yLChGR,SAASg0B,GAAT,GAA6C,IAAjBC,EAAgB,EAAhBA,aAC1B,EArEF,SAAuBA,GACrB,IAAM1qB,EACJ,eAACxE,EAAA,EAAD,CAAYnD,QAAQ,YAApB,UACGqyB,EAAa1qB,MACd,eAACxE,EAAA,EAAD,CACE1D,UAAU,OACVO,QAAQ,QACRL,GAAI,CAAEC,MAAO,kBAHf,kBAKU0yB,aAAOD,EAAa7Z,mBAKlC,MAA0B,iBAAtB6Z,EAAarjB,KACR,CACLujB,OACE,qBACE1vB,IAAKwvB,EAAa1qB,MAClB/E,IAAI,8CAGR+E,SAGsB,kBAAtB0qB,EAAarjB,KACR,CACLujB,OACE,qBACE1vB,IAAKwvB,EAAa1qB,MAClB/E,IAAI,+CAGR+E,SAGsB,SAAtB0qB,EAAarjB,KACR,CACLujB,OACE,qBACE1vB,IAAKwvB,EAAa1qB,MAClB/E,IAAI,2CAGR+E,SAGsB,iBAAtB0qB,EAAarjB,KACR,CACLujB,OACE,qBACE1vB,IAAKwvB,EAAa1qB,MAClB/E,IAAI,2CAGR+E,SAGG,CACL4qB,OAAQ,qBAAK1vB,IAAKwvB,EAAa1qB,MAAO/E,IAAKyvB,EAAaE,SACxD5qB,SASwBsC,CAAcooB,GAAhCE,EAAR,EAAQA,OAAQ5qB,EAAhB,EAAgBA,MAEhB,OACE,eAACnB,GAAA,EAAD,CACE/C,GAAG,IACHgD,gBAAc,EACdhH,UAAWiE,IACX/D,GAAE,aACAiE,GAAI,IACJV,GAAI,IACJhC,GAAI,OACAmxB,EAAaG,UAAY,CAC3B9vB,QAAS,oBATf,UAaE,cAAC+vB,GAAA,EAAD,UACE,cAAC9vB,EAAA,EAAD,CAAQhD,GAAI,CAAE+C,QAAS,sBAAvB,SAAgD6vB,MAElD,cAAC9tB,EAAA,EAAD,CACEN,QAASwD,EACTZ,UACE,eAAC5D,EAAA,EAAD,CACEnD,QAAQ,UACRL,GAAI,CACFuB,GAAI,GACJpE,QAAS,OACTE,WAAY,SACZ4C,MAAO,iBANX,UASE,cAACJ,EAAA,EAAD,CACEC,UAAWC,IACXhB,KAAMg0B,KACN/yB,GAAI,CAAEE,GAAI,GAAKhD,MAAO,GAAII,OAAQ,MAEnC01B,aAAoB,IAAIvZ,KAAKiZ,EAAaO,oBAQxC,SAASC,GAAqBtsB,GAC3C,MAAkCtI,mBAASsI,EAAMusB,UAAjD,mBAAO1wB,EAAP,KAAkB2wB,EAAlB,KACA,EAAwB90B,oBAAS,GAAjC,mBAAOqE,EAAP,KAAanE,EAAb,KACA,EAA0CF,mBAASsI,EAAMysB,eAAzD,mBAAOA,EAAP,KAAsBC,EAAtB,KACMC,EAAcF,EAAc3f,QAChC,SAAC/L,GAAD,OAA4B,IAAlBA,EAAKkrB,YACflY,OACFtQ,qBAAU,WACR+oB,EAAaxsB,EAAMusB,UACnBG,EAAiB1sB,EAAMysB,iBACtB,CAACzsB,IAUJ,OACE,qCACE,cAAC/G,EAAA,EAAD,CACEuQ,KAAK,QACLnQ,MAAO0C,EAAO,UAAY,UAC1B9D,QAba,WACjBL,GAAQ,IAaJwB,GAAE,eACI2C,GAAQ,CACVI,QAAS,SAACjG,GAAD,OACPiB,YACEjB,EAAMkB,QAAQwG,QAAQC,KACtB3H,EAAMkB,QAAQ0G,OAAOC,iBAT/B,SAcE,cAAC6uB,GAAA,EAAD,CAAOC,aAAcF,EAAatzB,MAAM,QAAxC,SACE,cAAC,IAAD,CAAMlB,KAAM20B,KAAUx2B,MAAO,GAAII,OAAQ,SAI7C,eAACwD,EAAD,CACE6B,KAAMA,EACNQ,QA3Bc,WAClB3E,GAAQ,IA2BJ4E,SAAUX,EAAUY,QACpBnC,aAAc,CACZC,SAAU,MACVC,WAAY,UAEdC,gBAAiB,CACfF,SAAU,SACVC,WAAY,UAEdpB,GAAI,CACF9C,MAAO,IACPY,gBAAiB,4BACjBP,eAAgB,aAChBoE,OAAQ,qBAhBZ,UAmBE,eAAC9B,EAAA,EAAD,CAAKG,GAAI,CAAE7C,QAAS,OAAQE,WAAY,SAAU4G,GAAI,EAAGV,GAAI,KAA7D,UACE,eAAC1D,EAAA,EAAD,CAAKG,GAAI,CAAE2F,SAAU,GAArB,UACE,cAACnC,EAAA,EAAD,CAAYnD,QAAQ,YAApB,2BACA,eAACmD,EAAA,EAAD,CAAYnD,QAAQ,QAAQL,GAAI,CAAEC,MAAO,kBAAzC,sBACYszB,EADZ,8BAKDA,EAAc,GACb,cAACI,GAAA,EAAD,CAAS3rB,MAAM,oBAAf,SACE,cAACpJ,EAAA,EAAD,CAAYqB,MAAM,UAAUpB,QAAS+H,EAAMgtB,oBAA3C,SACE,cAAC,IAAD,CAAM70B,KAAM80B,KAAa32B,MAAO,GAAII,OAAQ,YAMpD,cAACoG,EAAA,EAAD,IAEA,eAAC0C,GAAD,CAAWpG,GAAI,CAAE1C,OAAQ,CAAEuI,GAAI,IAAKC,GAAI,SAAxC,UACE,cAAC2C,GAAA,EAAD,CACEC,gBAAc,EACdwT,UACE,cAAC4X,GAAA,EAAD,CACEC,eAAa,EACb/zB,GAAI,CAAEiE,GAAI,EAAGV,GAAI,IAAKS,WAAY,YAFpC,iBAHJ,SAWGqvB,EAAcW,MAAM,EAAG,GAAGrwB,KAAI,SAAC+uB,GAAD,OAC7B,cAACD,GAAD,CAEEC,aAAcA,EACd7zB,QAAS,kBAAM+H,EAAMqtB,iBAAiBvB,KAFjCA,EAAa7jB,SAOxB,cAACpG,GAAA,EAAD,CACEC,gBAAc,EACdwT,UACE,cAAC4X,GAAA,EAAD,CACEC,eAAa,EACb/zB,GAAI,CAAEiE,GAAI,EAAGV,GAAI,IAAKS,WAAY,YAFpC,yBAHJ,SAWGqvB,EAAcW,MAAM,EAAG,GAAGrwB,KAAI,SAAC+uB,GAAD,OAC7B,cAACD,GAAD,CAEEC,aAAcA,EACd7zB,QAAS,kBAAM+H,EAAMqtB,iBAAiBvB,KAFjCA,EAAa7jB,kB,qFCnP5BqlB,GAAiBr3B,YAAO2T,KAAP3T,EAAa,cAAGC,MAAH,MAAgB,CAClDa,UAAW,OACXL,OAAQ,OACRkD,aAAc,UAGD,SAAS2zB,GAAUvtB,GAEhC,MAAwCtI,oBAAS,GAAjD,mBAAO81B,EAAP,KAAqBC,EAArB,KACA,EAAgC/1B,mBAAS,IAAzC,mBAAOg2B,EAAP,KAAiBC,EAAjB,KACA,EAAsCj2B,mBAAS,IAA/C,mBAAOk2B,EAAP,KAAoBC,EAApB,KACA,EAA8BnV,IAAMhhB,UAAS,GAA7C,mBAAO4R,EAAP,KAAgBwkB,EAAhB,KAyDA,OArDApV,IAAMjV,WAAU,WACd,GAAIsT,OAAOxQ,OAAOvG,EAAM+tB,QAAS,CAC/B,IAAIC,EAAY,EAGhB,GAFAjX,OAAOxQ,OAAOvG,EAAM+tB,QAAQjE,SAAQ,SAACmE,GAAD,OAAQD,GAAaC,KAErDD,EAAY,EAAG,CACjBP,GAAgB,GAChBE,EACE,2GAEF,IAAI3T,EAAW,GACf,IAAK,IAAImJ,KAAQnjB,EAAM+tB,OAEM,IAAvB/tB,EAAM+tB,OAAO5K,IACfnJ,EAAS4G,KAAK5gB,EAAMygB,KAAK0C,IAG7B0K,EAAe7T,QAEfyT,GAAgB,GAChBE,EACE,iGAIL,IAEHjV,IAAMjV,WAAU,WACd,GAAIsT,OAAOxQ,OAAOvG,EAAM+tB,QAAS,CAC/B,IAAIC,EAAY,EAGhB,GAFAjX,OAAOxQ,OAAOvG,EAAM+tB,QAAQjE,SAAQ,SAACmE,GAAD,OAAQD,GAAaC,KAErDD,EAAY,EAAG,CACjBP,GAAgB,GAChBE,EACE,wEAEF,IAAI3T,EAAW,GACf,IAAK,IAAImJ,KAAQnjB,EAAM+tB,OACM,IAAvB/tB,EAAM+tB,OAAO5K,IACfnJ,EAAS4G,KAAK5gB,EAAMygB,KAAK0C,IAG7B0K,EAAe7T,QAEfyT,GAAgB,GAChBE,EACE,4EAIL,CAAC3tB,IAGF,mCACGA,EAAMorB,YAAgC,IAAlBprB,EAAMkuB,SACzB,cAACpZ,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,GAAIyL,GAAI,GAA/B,SACE,eAACgS,GAAD,CAAgBl0B,GAAI,CAAE7C,QAAS,QAAUkD,QAAQ,WAAjD,UACE,cAACR,EAAA,EAAD,CACEG,GAAI,CACF+0B,KAAM,GACN53B,QAAS,OACToN,cAAe,SACf9C,eAAgB,SAChBpK,WAAY,SACZ+T,UAAW,SACX6D,SAAU,SACV9U,WAAY,OACZ1C,QAAS,SACTQ,WAAYq2B,GAXhB,SAcGF,EACC,qCACE,cAAC,KAAD,CACEp0B,GAAI,CACFC,MAAO,YACPnC,gBAAiB,YACjBmX,SAAU,MAGd,cAACzR,EAAA,EAAD,CAAYnD,QAAQ,KAApB,mCAGF,qCACE,cAAC,KAAD,CACEL,GAAI,CACFC,MAAO,YACPnC,gBAAiB,YACjBmX,SAAU,MAGd,cAACzR,EAAA,EAAD,CAAYnD,QAAQ,KAApB,gCAIN,eAACR,EAAA,EAAD,CAAKG,GAAI,CAAE7C,QAAS,OAAQoN,cAAe,SAAUwqB,KAAM,IAA3D,UACE,eAACta,GAAA,EAAD,CAAaza,GAAI,CAAE+0B,KAAM,YAAzB,UACGX,EACC,eAAC5wB,EAAA,EAAD,CAAYnD,QAAQ,KAApB,UACG,IADH,qCAKA,eAACmD,EAAA,EAAD,CAAY1D,UAAU,MAAMO,QAAQ,KAApC,UACG,IADH,kDAEkD,OAGpD,cAAC0P,GAAA,EAAD,CACEC,QAAS,cAACyQ,GAAA,EAAD,CAAQvQ,QAASA,EAASlB,SAjH9B,WACnB0lB,GAAW,SAAC51B,GAAD,OAAWA,QAiHRmD,MAAM,0BAER,cAACuG,GAAA,EAAD,CAAUrJ,GAAI+Q,EAAd,SACE,eAACwL,GAAA,EAAD,CAAMG,WAAS,EAACne,QAAS,EAAzB,UACE,eAACge,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,UACE,eAAC1e,EAAA,EAAD,CACEnD,QAAQ,YACRJ,MAAM,iBACNH,UAAU,MACVE,GAAI,CACFsD,GAAI,GALR,wCAQ8B,IAC3BsD,EAAMouB,YAAYC,aAErB,eAACzxB,EAAA,EAAD,CACEnD,QAAQ,YACRJ,MAAM,iBACNH,UAAU,MACVE,GAAI,CACFsD,GAAI,GALR,2BAQiBsD,EAAMouB,YAAYzc,YAGrC,eAACmD,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,EAAGyL,GAAI,EAA9B,UACE,eAAC1e,EAAA,EAAD,CACEnD,QAAQ,YACRJ,MAAM,iBACNH,UAAU,MACVE,GAAI,CACFsD,GAAI,GALR,uDAQ6C,IAC1CsD,EAAMsuB,iBAET,eAAC1xB,EAAA,EAAD,CACEnD,QAAQ,YACRJ,MAAM,iBACNH,UAAU,MACVE,GAAI,CACFsD,GAAI,GALR,oDAQ0C,IACvCsD,EAAMuuB,yBAMdf,GACC,cAAC1Y,GAAA,EAAD,CAAMG,WAAS,EAACne,QAAS,EAAzB,SACE,cAACge,GAAA,EAAD,CAAM/T,MAAI,EAAV,SACE,eAACnE,EAAA,EAAD,CACEnD,QAAQ,YACRJ,MAAM,iBACNH,UAAU,MACVE,GAAI,CACFsD,GAAI,GALR,gDAQsC,IACnCkxB,EAAYY,KAAK,OATpB,cAeR,cAACv1B,EAAA,EAAD,CACEG,GAAI,CAAE7C,QAAS,OAAQE,WAAY,SAAUg4B,GAAI,EAAGlZ,GAAI,eCrKxE,IAAMmZ,GAAMC,EAAQ,KACdC,GAAkBC,yBAAcC,MAGhCC,GAAc94B,YAAO2T,KAAP3T,EAAa,cAAGC,MAAH,MAAgB,CAC/Ca,UAAW,OACXL,OAAQ,WAoCK,SAASs4B,KAEtB,IAAIC,EAAO9nB,KAAkB,oBAE7B,EAAoCzP,oBAAS,GAA7C,mBAAO0zB,EAAP,KAAmBC,EAAnB,KACA,EAAwB3zB,oBAAS,GAAjC,mBAAO4zB,EAAP,KAAaC,EAAb,KACA,EAA8C7S,IAAMhhB,SAAS,IAA7D,mBAAOszB,EAAP,KAAwBC,EAAxB,KACA,EAAkCvS,IAAMhhB,SAAS,IAAjD,mBAAOwzB,EAAP,KAAkBC,EAAlB,KACA,EAAoDzzB,mBAAS,IAA7D,mBAAOw3B,EAAP,KAA2BC,EAA3B,KACA,EAAgCzW,IAAMhhB,SAAS,IAA/C,mBAAOsiB,EAAP,KAAiBoP,EAAjB,KACA,EAAoC1Q,IAAMhhB,SAAS,IAAnD,mBAAmByhB,GAAnB,WACA,EAA8BT,IAAMhhB,UAAS,GAA7C,mBAAO03B,EAAP,KAAgBC,EAAhB,KACA,EAAoC3W,IAAMhhB,UAAS,GAAnD,mBAAO43B,EAAP,KAAmBC,EAAnB,KACA,EAA0B7W,IAAMhhB,SAAS,GAAzC,mBAAOgG,EAAP,KAAc8xB,EAAd,KACA,EAA0C9W,IAAMhhB,SAAS,IAAzD,mBAAO+3B,EAAP,KAAsBC,EAAtB,KACA,GAAgDhX,IAAMhhB,SAAS,IAA/D,qBAAOi4B,GAAP,MACA,IADA,MACkDjX,IAAMhhB,SAAS,KAAjE,qBAAOk4B,GAAP,MAA0BC,GAA1B,MACA,GAAwDnX,IAAMhhB,SAAS,IAAvE,qBAAOo4B,GAAP,MAA6BC,GAA7B,MACA,GAAwCrX,IAAMhhB,SAAS,IAAvD,qBAAOs4B,GAAP,MAAqBC,GAArB,MACA,GAA8CvX,IAAMhhB,SAAS,IAA7D,qBAAOw4B,GAAP,MAAwBC,GAAxB,MACA,GAAsCzX,IAAMhhB,SAAS,IAArD,qBAAO0uB,GAAP,MAAoBC,GAApB,MACA,GAAoD3N,IAAMhhB,SAAS,IAAnE,qBAAO04B,GAAP,MAA2BC,GAA3B,MACA,GAAkC3X,IAAMhhB,SACtC,IAAI0jB,KAA2B,KADjC,qBAAOkV,GAAP,MAAkBC,GAAlB,MAGA,GAAuC7X,IAAMhhB,SAC3C,IAAI0jB,KAA2B,KADjC,qBAAOiN,GAAP,MAAoBmI,GAApB,MAGA,GAAoC9X,IAAMhhB,UAAS,GAAnD,qBAAO+4B,GAAP,MAAmBC,GAAnB,MACA,GAA4Bh5B,mBAAS,IAArC,qBAAOi5B,GAAP,MAAeC,GAAf,MACA,GAA8Bl5B,mBAAS,IAAvC,qBAAOw2B,GAAP,MAAgB2C,GAAhB,MACA,GAAwCn5B,mBAAS,GAAjD,qBAAOo5B,GAAP,MAAqBC,GAArB,MACA,GAA0Cr5B,mBAAS,IAAnD,qBAAO+0B,GAAP,MAAsBC,GAAtB,MACA,GAnEe,SAAClmB,EAAK8kB,GACrB,MAAgB5zB,mBAAS,IAAIs5B,MAAMxqB,IAA5ByqB,EAAP,oBACA,EAA4Bv5B,mBAAS4zB,GAArC,mBAAO4F,EAAP,KAAeC,EAAf,KACA,EAA8Bz5B,oBAAS,GAAvC,mBAAO05B,EAAP,KAAgBC,EAAhB,KAEA,EAAoC35B,mBAAS,GAA7C,mBAAO45B,EAAP,KAAmBC,EAAnB,KACA,EAAoC75B,oBAAS,GAA7C,mBAAO85B,EAAP,KA0BA,OA1BA,KAcA/tB,qBAAU,WACR2tB,EAAUH,EAAMQ,OAASR,EAAMS,QAC/BH,EAAc,IAAI1e,QACjB,CAACue,IAEJ3tB,qBAAU,WAER,OADAwtB,EAAMU,iBAAiB,SAAS,kBAAMN,GAAW,MAC1C,WACLJ,EAAMW,oBAAoB,SAAS,kBAAMP,GAAW,SAErD,IAEI,CAACD,EAxBY,WAGbF,KAAYre,KAAKgf,MAAQP,EAAa,MAAUE,GACnDH,GAAW,IAGI,SAACS,GAElBX,EAAUW,KAkD6BC,CACvC,iCACAzG,GAFF,qBAAc0G,IAAd,aAA2BC,GAA3B,MAIA,GAAsCv6B,mBAAS,GAA/C,qBAAOw6B,GAAP,MAAoBC,GAApB,MACA,GAAkEz6B,mBAAS,GAA3E,qBAAO06B,GAAP,MAAkCC,GAAlC,MACA,GAAsC36B,mBAAS,CAC7C22B,UAAW,aACX1c,MAAO,IAFT,qBAAOyc,GAAP,MAAoBkE,GAApB,MAKMt2B,GAAWC,cAEX0K,GAAS7K,iBAAO,MAChBwqB,GAAO5N,IAAMrT,UAAU,MACvBktB,GAAmB7Z,IAAMrT,UAAU,MAGzC,GAA2CzJ,cAAnCuJ,GAAR,GAAQA,gBAAiBxJ,GAAzB,GAAyBA,cAEnB62B,GAAe,CACnBtV,UAAW,SACXuV,KAAMzH,EACNE,UAAWA,EACXwH,MAAO,EACPp8B,MAAO,MAGHq8B,GAAgB,kBAAMtD,GAAW,IAuEjCuD,GAAe,SAAC5yB,GA0BpB,OAzBAA,EAAM6f,EAAIiR,GAAa9pB,WACvBhH,EAAMmO,EAAI,EACVnO,EAAMoQ,EAAI,EACVpQ,EAAM6yB,QAAS,EACI,WAAf7yB,EAAMyI,MAERzI,EAAM0hB,EAAI,EACV1hB,EAAMyhB,EAAI,GAGc,QAAfzhB,EAAMyI,MACfzI,EAAM0hB,EAAI,EACV1hB,EAAMyhB,EAAI,GAGc,UAAfzhB,EAAMyI,MACfzI,EAAM0hB,EAAI,EACV1hB,EAAMyhB,EAAI,KAEVzhB,EAAM0hB,EAAI,EACV1hB,EAAMyhB,EAAI,GAIZsP,GAAgBD,GAAe,GACxB9wB,GAEH8yB,GAAoB,SAAC/xB,GACzB,IAAIgyB,EAAY,CACdlT,EAAG9e,EAAK8e,GAENmT,EAAY,CACdnT,EAAG9e,EAAK8e,GAGV,IAAK,IAAIzH,KAAOrX,EAEJ,MAARqX,GACQ,MAARA,GACQ,MAARA,GACQ,MAARA,GACQ,SAARA,GACQ,SAARA,GACQ,SAARA,GACQ,SAARA,GACQ,UAARA,GACQ,WAARA,GACQ,gBAARA,GACQ,gBAARA,GACQ,cAARA,EAEA2a,EAAU3a,GAAOrX,EAAKqX,GAEtB4a,EAAU5a,GAAOrX,EAAKqX,GAG1B,MAAO,CAAC2a,EAAWC,IAuBfxY,GAAa,SAAC7T,EAAQ8T,EAAYC,GAEtC,GAA4B,IAAxBD,EAAWE,SAAgB,CAC7B,IAAIsY,EAAmB,GACvB,GAA+B,IAA3BxY,EAAWG,YAAmB,CAChC,IAAK,IAAIiF,EAAI,EAAGA,EAAInF,EAAYV,SAASjG,OAAQ8L,IAAK,CACpD,IAAIqT,EACFxY,EAAYV,SAAS6F,GAAGsT,WAAWtV,MAAM,aAAa,GACxDqV,EAAcA,EAAYrV,MAAM,KAAK,GACrC,IAAIuV,EACF1Y,EAAYV,SAAS6F,GAAGsT,WAAWtV,MAAM,gBAAgB,GAC3DuV,EAAiBA,EAAevV,MAAM,KAAK,GACtCoV,EAAiB5e,SAAS+e,IAC7BH,EAAiBrS,KAAKwS,GAExBpZ,EAASkZ,GAAT,UACExY,EAAYV,SAAS6F,GAAGgB,UAC1B7G,EAASkZ,GAAT,SAAoCxY,EAAYV,SAAS6F,GAAGwT,SAC5DrZ,EAASkZ,GAAT,QAAmCxY,EAAYV,SAAS6F,GAAG6K,QAC3D1Q,EAASkZ,GAAT,OAAkCxY,EAAYV,SAAS6F,GAAGyT,OAC1DtZ,EAASkZ,GAAT,IAA+BxY,EAAYV,SAAS6F,GAAG0T,IACvDjD,GAAUjT,IAAI,CACZ3C,EAAYV,SAAS6F,GAAGgB,UACxBnG,EAAYV,SAAS6F,GAAGsT,aAE1B5C,GAAaD,IAEbjI,GAAYhL,IAAI,CACd3C,EAAYV,SAAS6F,GAAGgB,UACxBnG,EAAYV,SAAS6F,GAAGiB,cAE1B0P,GAAgBnI,IAEhB,IAAImL,EAAM9Y,EAAYV,SAAS6F,GAAGgB,UAC7BuF,GAAYoN,KACfpN,GAAYoN,GAAO,GAErBnN,GAAeD,IAEjBgD,EAAYpP,GAEZ,IAAS6F,EAAI,EAAGA,EAAIoT,EAAiBlf,OAAQ8L,IAAK,CAChD,IAAIuT,EAAiBH,EAAiBpT,GAClCqP,EAAmBkE,KACrBlE,EAAmBkE,IAAkB,EACrCjE,EAAsBD,IAG1B,IAAIuE,EAA0B,EAC9B,IAAK,IAAIrb,KAAO8W,EACVA,EAAmB9W,IACrBqb,IAG4B,IAA5BA,IACF93B,KACA+0B,IAAc,IAqBlB,GAA+B,IAA3BjW,EAAWG,YAAmB,CAEhCyX,GADkBD,GAA4B,GAU9C,IAPA,IAAIsB,EAAWhZ,EAAY3K,KACvB4jB,EAAgB,eAAQlE,GACxBmE,EAAmB,eAAQjE,IAC3BkE,EAAoB,eAAQjE,IAC5BkE,EAAuB,eAAQhE,IAC/BiE,EAAe,eAAQ/D,IACvBgE,EAAkB,eAAQ9D,IACrBrQ,EAAI,EAAGA,EAAI6T,EAAS3f,OAAQ8L,IAAK,CACxC,IAAIgB,EAAY6S,EAAS7T,GAAGgB,UACxB6J,EAAUgJ,EAAS7T,GAAG6K,QAEtBuJ,EAAYvJ,EAAQ,GACS,IAA7BjQ,EAAWyZ,eAA0C,IAAnBxJ,EAAQ3W,SAC5CkgB,EAAYvJ,EAAQ,IAGtB,IAAI/Y,EAAQsiB,EACRtiB,EAAQyc,GAAYzc,QACtBA,EAAQyc,GAAYzc,OAEtB2gB,GAAe,CACbjE,WAAW,IAAIxb,MAAOshB,cACtBxiB,MAAOA,IAET,IAAIjU,EAAQg2B,EAAS7T,GAAGniB,MAAMqD,KAC1BqzB,EAAS,EACb,GAA8B,WAA1Brd,OAAOoB,KAAKza,GAAO,GAEnB02B,EADE12B,EAAM22B,OAAS,GACRC,WAAW52B,EAAM22B,OAAOhf,QAAQ,IAEhC3X,EAAM22B,OAAOhf,QAAQ,GAEhC+e,EAASE,WAAWF,QACf,GACqB,wCAA1Brd,OAAOoB,KAAKza,GAAO,GACnB,CACA02B,EAAS,IACT,IACE,IAAIvU,EAAI,EACRA,EAAIniB,EAAM,uCAAuC6I,OAAOwN,OACxD8L,IAEIniB,EAAM,uCAAuC6I,OAAOsZ,GAAK,GAC3DuU,GACE12B,EAAM,uCAAuC6I,OAC3CsZ,GACAxK,QAAQ,GAEZ+e,GACE12B,EAAM,uCAAuC6I,OAC3CsZ,GACAxK,QAAQ,GAGZwK,IACAniB,EAAM,uCAAuC6I,OAAOwN,OAAS,IAE7DqgB,GAAU,OAGdA,GAAU,IAGZ,GAAiC,IAA7B3Z,EAAWyZ,cAAqB,CAClC,IACIK,EADajE,GAAUvP,IAAIF,GACFhD,MAAM,aAAa,GAEhD,IAAK,IAAIsF,KADToR,EAAcA,EAAY1W,MAAM,KAAK,GACpBoR,EAAKjV,SAAU,CAC9B,IAAIwa,EAAWvF,EAAKjV,SAASmJ,GAAMlb,GAAG4V,MAAM,aAAa,GAEzD,IADA2W,EAAWA,EAAS3W,MAAM,KAAK,MACd0W,EAAa,CAI5B,IAFkC,IAAhCtF,EAAKjV,SAASmJ,GAAM3K,SACY,IAAhCyW,EAAKjV,SAASmJ,GAAM5K,OACH,MAInB,GAFE+b,WAAWF,GAAUE,WAAWrF,EAAKjV,SAASmJ,GAAM3K,SACpD8b,WAAWF,GAAUE,WAAWrF,EAAKjV,SAASmJ,GAAM5K,QACtC,CAEdyZ,KAC+B,IAA3B5L,GAAYvF,KACduF,GAAYvF,GAAa,GAG3B,IAaI4T,EAAgB,CAbD,CACjBxsB,GAAI+J,KAAMuC,SAASuD,OACnB1W,MAAO,eACP6Q,YACE,gBACAgd,EAAKjV,SAASmJ,GAAMxgB,KACpB,oBACFqpB,OAAQ,KACRvjB,KAAM,OACN4jB,UAAW,IAAIxZ,KACfoZ,UAAU,IAGQ,oBAAqBQ,KACzCC,GAAiB+H,QACmB,IAA3BrO,GAAYvF,KACrBuF,GAAYvF,GAAa,GAE3BwF,GAAeD,IACf,QAKN,IAAIjT,EAAO,IAAIN,KAEX6hB,EAAOvhB,EAAKwhB,cACZC,EAAQzhB,EAAK0hB,WAAa,EAC1BC,EAAM3hB,EAAK4hB,UACXC,EAAO7hB,EAAK8hB,WACZC,EAAS/hB,EAAKgiB,aACdC,EAASjiB,EAAKkiB,aACdC,EAAcniB,EAAKoiB,kBACnBC,EAAU,UAAMd,EAAN,YAAcE,EAAd,YAAuBE,EAAvB,YAA8BE,EAA9B,YAAsCE,EAAtC,YAAgDE,EAAhD,YAA0DE,GACvC,IAA7B7a,EAAWyZ,eAERH,EAAgByB,KACnBzB,EAAgByB,GAAc,IAE3BzB,EAAgByB,GAAYvB,KAC/BF,EAAgByB,GAAYvB,GAAa,IAE3CF,EAAgByB,GAAYvB,GAAWpT,GAAauT,EACpDnE,GAAgB8D,GAGXJ,EAAiB9S,KACpB8S,EAAiB9S,GAAa,IAEhC8S,EAAiB9S,GAAWoT,GAAaG,EAEpCP,EAAqBI,KACxBJ,EAAqBI,GAAa,GAClCJ,EAAqBI,GAArB,KAA0CA,EAC1CJ,EAAqBI,GAArB,IAAyC,uBAE3CJ,EAAqBI,GAAW5L,GAAYtH,IAAIF,IAAcuT,EAC9DvE,GAAqBgE,KAKhBG,EAAmBvZ,EAAWyZ,iBACjCF,EAAmBvZ,EAAWyZ,eAAiB,IAE5CF,EAAmBvZ,EAAWyZ,eAAesB,KAChDxB,EAAmBvZ,EAAWyZ,eAAesB,GAAc,IAG1DxB,EAAmBvZ,EAAWyZ,eAAesB,GAC5CvB,KAGFD,EAAmBvZ,EAAWyZ,eAAesB,GAC3CvB,GACE,IAGHD,EAAmBvZ,EAAWyZ,eAAesB,GAC5CvB,KAGFD,EAAmBvZ,EAAWyZ,eAAesB,GAC3CvB,GACE,IAEND,EAAmBvZ,EAAWyZ,eAAesB,GAAYvB,GACvDpT,GACEuT,EACJjE,GAAmB6D,GAEdJ,EAAoBnZ,EAAWyZ,iBAClCN,EAAoBnZ,EAAWyZ,eAAiB,IAE7CN,EAAoBnZ,EAAWyZ,eAAerT,KACjD+S,EAAoBnZ,EAAWyZ,eAAerT,GAAa,IAE7D+S,EAAoBnZ,EAAWyZ,eAAerT,GAC5CoT,GACEG,EACJR,EAAoBnZ,EAAWyZ,eAAerT,GAC5CoT,GACEG,EAECN,EAAwBrZ,EAAWyZ,iBACtCJ,EAAwBrZ,EAAWyZ,eAAiB,IAEjDJ,EAAwBrZ,EAAWyZ,eAAeD,KACrDH,EAAwBrZ,EAAWyZ,eAAeD,GAAa,IAEjEH,EAAwBrZ,EAAWyZ,eAAeD,GAChD5L,GAAYtH,IAAIF,IACduT,EACJN,EAAwBrZ,EAAWyZ,eAAeD,GAAlD,KAAuEA,EACvEH,EAAwBrZ,EAAWyZ,eAAeD,GAAlD,IAAsE,sBACtElE,GAAwB+D,IAG5B,GAAiC,IAA7BrZ,EAAWyZ,cACbxE,EAAiBiE,QAEjB,GAAgC,IAA5BlZ,EAAWM,aAAoB,CACjC,IAAI0a,EAAqB,eAAQrF,IACjCqF,EAAsBhb,EAAWyZ,gBAAiB,EAClD7D,GAAsBoF,OAqKhC,OA/IAhyB,qBAAU,WACR0B,GAAgB,aAAc,CAC5B1L,QAAS,OACT6M,SAAS,EACTiU,kBAAkB,IAGpB,IAAM5U,EAASwB,KAAkB,UAGjC,QAAsBiS,IAAlB6V,EAAKjV,UAAmD,IAAzBiV,EAAKjV,SAASjG,OAAc,CAC7DpY,KACA,IAAMmC,EACJ,cAAC,WAAD,UACE,cAACtE,EAAA,EAAD,CAAQvB,QAAS,kBAAM+D,GAAS,eAAe3C,MAAM,UAArD,SACE,iDAIN8L,GAAgB,wBAAyB,CACvC1L,QAAS,QACT6M,SAAS,EACTiU,kBAAkB,EAClBzc,WAGJqb,EAAc8V,EAAK/V,YACfvT,EAAOa,KACTG,GAAOlK,QAAU,IAAImK,UAAUjB,EAAOa,IAAK,iBAAkBb,EAAOP,GAAI,CACtE,eAAgB,SAChByB,cACE,SAAW,IAAIC,UAAOC,MAAM,GAAI,aAAaC,SAAS,YAE1DL,GAAOlK,QAAQ8K,QAAU,SAAU2T,GAEjC/V,GAAgB,iCAAkC,CAChD1L,QAAS,UAEXuC,GAAS,SAAU,CAAEwB,SAAS,KAEhCmJ,GAAOlK,QAAQ0e,QAAU,SAAUD,GACjC/V,GAAgB,oBAAqB,CACnC1L,QAAS,UAEXuC,GAAS,SAAU,CAAEwB,SAAS,KAEhCmJ,GAAOlK,QAAQwK,OAAS,SAAUiU,GAChCE,KAA6BzU,GAAOlK,SAEpC,IAAIi5B,EAAc,GACdC,EAAqB,GACzB,QAAsBvc,IAAlB6V,EAAKjV,UAAmD,IAAzBiV,EAAKjV,SAASjG,OAAc,CAC7DgD,OAAOoB,KAAK8W,EAAKjV,UAAU8P,SAAQ,SAAC1R,GAClC,IAAI+a,EAAalE,EAAKjV,SAAS5B,GAAd,GAEbwd,EAAgBzC,EAAWtV,MAAM,gBAAgB,GACrD+X,EAAgBA,EAAc/X,MAAM,MAAM,GACrC6X,EAAYrhB,SAASuhB,KACxBF,EAAY9U,KAAKgV,GACjB1G,EAAmB0G,IAAiB,GAGtC,IAAI/U,EAAYsS,EAAWtV,MAAM,aAAa,GAC9CgD,EAAYA,EAAUhD,MAAM,KAAK,GACjC8X,EAAmB9U,GAAaoO,EAAKjV,SAAS5B,MAEhDgR,EAAYuM,GACZxG,EAAsBD,GAEtB,IAAI2G,EAAU5G,EAAKjV,SAAS,GAAd,GAAuB6D,MAAM,UAAU,GACrDgY,EAAUA,EAAQhY,MAAM,MAAM,GAE9B,IAAIiY,EAAc7G,EAAKjV,SAAS,GAAd,GAAuB6D,MAAM,cAAc,GAC7DiY,EAAcA,EAAYjY,MAAM,MAAM,GAEtCzC,KAAoBzU,GAAOlK,QAAS,EAAG,GAEvC,IADA,IAAIs5B,EAAO,GACFlW,EAAI,EAAGA,EAAI6V,EAAY3hB,OAAQ8L,IAAK,CAC3C,IAAIlI,EACF,uBACAke,EADA,cAIAC,EAJA,gBAOAJ,EAAY7V,GACZ,IACFkW,EAAKnV,KAAKjJ,GAEZyD,KAAuBzU,GAAOlK,QAASs5B,OAI3C5wB,GAAgB,mBAAoB,CAClC1L,QAAS,UAEXuC,GAAS,SAAU,CAAEwB,SAAS,OAG/B,IACHiG,qBAAU,WACRkD,GAAOlK,QAAQ4e,UAAY,SAAUH,GACnCE,KAAmBzU,GAAOlK,QAASye,EAAKV,OAGzC,CACDiV,EACAE,GACAK,GACAE,GACAE,GACAR,GACAE,GACAzH,GACArO,EACAkV,EACAzC,GACArG,KAEF3iB,qBAAU,WACRwuB,GAAW3G,KACV,CAACA,IACJ7nB,qBAAU,WAIR,IAFA,IAAIsvB,EAAY,GAEPlT,EAAI,EAAGA,EAAI8Q,GAAO5c,OAAQ8L,IAAK,CAEtC,IAAI9e,EAAO4vB,GAAO9Q,GAClB9e,EAAK2gB,EAAI2B,KAAKuI,IAAI7qB,EAAK2gB,EAAGsJ,GAEtBjqB,EAAK2gB,EAAI3gB,EAAKoN,EAAI6c,IAEpBjqB,EAAKoN,EAAI,EACTpN,EAAKqP,GAAK,GAEZ2iB,EAAUnS,KAAK7f,GAEjB6vB,GAAUmC,GACVZ,GAAeD,GAAc,KAC5B,CAAChH,EAAWF,IAGb,eAAC,GAAD,CAAM5pB,MAAM,iCAAZ,UACE,cAAC6I,GAAA,EAAD,CAAWJ,SAAS,SAAS3N,IAAKoqB,GAAlC,SACE,eAACxR,GAAA,EAAD,CAAMG,WAAS,EAACne,QAAS,EAAzB,UACE,cAACy2B,GAAD,CACEQ,OAAQ3H,GACRgF,WAAYA,EACZ8C,QAASnX,OAAOoB,KAAK+V,IAASna,OAC9Bua,cAAevX,OAAOoB,KAAKsX,GAAe1b,OAC1Cwa,cAAe6D,GACfhE,YAAaA,GACb3N,KAAM4H,GAAY2N,SAEpB,cAAClhB,GAAA,EAAD,CAAM/T,MAAI,EAAC9B,GAAI,GAAI4Q,GAAI,GAAIyL,GAAI,GAA/B,SACmC,IAAhCvE,OAAOoB,KAAK+V,IAASna,OACpB,cAAC9a,EAAA,EAAD,CAAK1C,QAAQ,OAAOsK,eAAe,SAAS2iB,EAAG,EAA/C,SACE,eAAC5mB,EAAA,EAAD,CACEnD,QAAQ,KACRyQ,cAAY,EACZwP,MAAM,SACNrgB,MAAO,OACPD,GAAI,CAAEG,WAAY,OAAQmD,GAAI,QALhC,UAOE,cAAClD,EAAA,EAAD,CAAQH,MAAM,YAAYpB,QAAS,kBAAM06B,MAAzC,SACE,cAAC/1B,EAAA,EAAD,CACEnD,QAAQ,KACRL,GAAI,CACF+a,eAAgB,aAHpB,2BARJ,yDAqBF,cAACya,GAAD,yBACEqH,eAhoBS,SAACC,GACtB,IAAK,IAAIrW,EAAI,EAAGA,EAAIqW,EAAUniB,OAAQ8L,IACpCqW,EAAUrW,GAAG4B,EAAIkP,GAAO9Q,GAAG4B,EAC3ByU,EAAUrW,GAAG6B,EAAIiP,GAAO9Q,GAAG6B,EAC3BwU,EAAUrW,GAAGsW,KAAOxF,GAAO9Q,GAAGsW,KAC9BD,EAAUrW,GAAGuW,KAAOzF,GAAO9Q,GAAGuW,KAC9BF,EAAUrW,GAAGwW,KAAO1F,GAAO9Q,GAAGwW,KAC9BH,EAAUrW,GAAGyW,KAAO3F,GAAO9Q,GAAGyW,KAC9BJ,EAAUrW,GAAGgT,OAASlC,GAAO9Q,GAAGgT,OAChCqD,EAAUrW,GAAG0W,YAAc5F,GAAO9Q,GAAG0W,YACrCL,EAAUrW,GAAG2W,YAAc7F,GAAO9Q,GAAG2W,YACrCN,EAAUrW,GAAG4W,cAAgB9F,GAAO9Q,GAAG4W,cACvCP,EAAUrW,GAAG6W,UAAY/F,GAAO9Q,GAAG6W,UAErC9F,GAAUsF,IAmnBES,aAjnBG,SAACT,EAAWU,EAASC,EAAS/9B,EAAaihB,EAAGkK,GAC7D2M,GAAUsF,GACV/D,GAAeD,GAAc,KAgnBbM,IAHN,aAKGzb,OAAOC,QAAQkX,IAASnxB,KAAI,SAAC+5B,GAG5B,IADA,IAAIC,EAAa,KACRlX,EAAI,EAAGA,EAAI8Q,GAAO5c,OAAQ8L,IACjC,GAAI8Q,GAAO9Q,GAAGA,IAAMiX,EAAO,GAAI,CAC7BC,EAAapG,GAAO9Q,GACpB,MAGJ,OAAmB,OAAfkX,EAEK,KAIP,cAAChI,GAAD,CAEE,YAAWgI,EAFb,SAIE,cAACxR,GAAD,CACEtd,GAAI6uB,EAAO,GAAGjX,EACd4I,WAAY,kBAroBf,SAACxgB,GAElB,GAAsB,IAAlB0oB,GAAO5c,OAGT,OAFA6c,GAAU,SACVC,GAAW,IAGb,IAAMmG,EAAallB,KAAEmlB,KAAK/I,GAASjmB,GACnC4oB,GAAWmG,GAEXpG,GAAUD,GAAO7jB,QAAO,SAAC/L,GAAD,OAAUA,EAAK8e,IAAM5X,MAC7CuqB,GAAaE,MAAQF,GAAaE,MAAQ,EA0nBJjK,CAAWqO,EAAO,GAAGjX,IACvCze,MAAO01B,EAAO,GAAG11B,MACjBqH,KAAMquB,EAAO,GAAGruB,KAChBuR,SAAUA,EACViM,eAAgB6Q,EAAO,GAAG7Q,eAC1BzE,cAAesV,EAAO,GAAGtV,cACzBf,KAAM4H,GACNmB,YAAasN,EAAO,GAAGtN,YACvB7X,MAAOmlB,EAAO,GAAGnlB,MACjBmW,OAAQoK,GACR9L,YAAaA,GAEbrW,KACE+mB,EAAO,GAAGtN,YACNiG,EACAE,GAAiBmH,EAAO,GAAGjX,GAEjCiG,SACEgR,EAAO,GAAGtN,YACNoG,GACAE,GAAqBgH,EAAO,GAAGjX,GAErC+F,QACEkR,EAAO,GAAGtN,YACNwG,GACAE,GAAgB4G,EAAO,GAAGjX,GAEhC6J,MAAOoN,EAAO,GAAGpN,MACjBnG,WAAY,CACVwT,EACA7L,EACAF,GAEF3C,YAAaA,MAtCVyO,EAAO,iBAgD5B,eAAC/hB,GAAA,EAAD,CACE3b,GAAI,CAAE5C,SAAU,QAASiK,OAAQ,EAAGrK,KAAM,EAAGsD,MAAO,GACpDw9B,UAAW,EAFb,UAIE,cAAChO,GAAD,CACEntB,KAAMqzB,EACNpV,SAAUA,EACVniB,YA9sBe,kBAAMw3B,GAAW,IA+sBhC5O,KAAM4H,GACNwC,QA5qBQ,SAAC9pB,GAEf,IAAIo2B,EAAMrE,GAAkBF,GAAa7xB,IACrCiyB,EAAYmE,EAAI,GAChBpE,EAAYoE,EAAI,GAChBC,EAAkB,GAMtB,GALArgB,OAAOoB,KAAK6a,EAAUxR,eAAesI,SAAQ,SAAC1R,GACxC4a,EAAUxR,cAAcpJ,GAAK9O,SAC/B8tB,EAAgBxW,KAAKoS,EAAUxR,cAAcpJ,GAAKyI,eAGjDmS,EAAUxJ,aAAewJ,EAAUtJ,MAAM9H,MAAQoR,EAAUtJ,MAAMjnB,IAAK,CAEzE,IADA,IAAI6b,EAAe,GACVuB,EAAI,EAAGA,EAAIuX,EAAgBrjB,OAAQ8L,IAAK,CAC/C,IAAI0B,EACF,IAAImN,GAAI2I,YAAYC,UAAUC,YAAYC,qBAC5CjW,EAAGV,UAAY,CAACuW,EAAgBvX,IAChC0B,EAAGkW,WAAazE,EAAUtJ,MAAM9H,MAChCL,EAAGmW,SAAW1E,EAAUtJ,MAAMjnB,IAC9B6b,EAAasC,KAAKW,GAEpBoO,GAAiBqD,EAAUnT,GAAK,GAChCzE,KAA2BzU,GAAOlK,QAAS6hB,EAAc0U,EAAUnT,GAEnEuQ,GAAmB4C,EAAUnT,IAAK,EAGpCqO,GAAQ8E,EAAUnT,GAAKmT,EACvBnC,GAAW3C,IAEXyC,GAAO/P,KAAKmS,GACZnC,GAAUD,IACV6B,GAAaE,MAAQF,GAAaE,MAAQ,KA8oBtC,cAAC3H,GAAD,CACEhvB,KAAMuzB,EACNrE,mBAAoBA,EACpBD,gBAAiBA,EACjBG,aAAcA,EACdD,UAAWA,EACXE,WAAYA,EACZC,cAAeA,EACfE,QAAS,SAACxR,GACRkY,KACA1G,EAAQxR,IAEVuR,KAAMA,EACNzzB,YA7tBkB,kBAAM03B,GAAc,MA+tBxC,eAACoI,GAAA,EAAD,CAAQ57B,KAAM00B,GAAYl0B,QAAS,kBAAMP,GAAS,eAAlD,UACE,cAAC47B,GAAA,EAAD,CAAa3vB,GAAG,qBAAhB,0CAGA,cAAC4vB,GAAA,EAAD,UACE,cAACC,GAAA,EAAD,CAAmB7vB,GAAG,2BAAtB,+SAQF,eAAC8vB,GAAA,EAAD,WACE,cAACv+B,EAAA,EAAD,CAAQvB,QAAS,kBAAM+D,GAAS,eAAhC,sBACA,cAACxC,EAAA,EAAD,CACEvB,QAAS,YAhnBE,WACrB0D,KAGA,IAAIq8B,EAAmB,GACvB,IAAK,IAAI9V,KAAWlI,EACdA,EAASkI,GAAS5J,aACpB0f,EAAiBpX,KAAK5G,EAASkI,GAASrB,WAI5C,IADA,IAAIvC,EAAe,GACVuB,EAAI,EAAGA,EAAImY,EAAiBjkB,OAAQ8L,IAAK,CAChD,IAAI0B,EAAK,IAAImN,GAAI2I,YAAYC,UAAUC,YAAYC,qBACnDjW,EAAGV,UAAY,CAACmX,EAAiBnY,IAGjCvB,EAAasC,KAAKW,GAEpBnG,KAA6BzU,GAAOlK,QAAS6hB,GA+lBjC2Z,GACAvH,IAAc,IAHlB,yBAUJ,eAACwH,GAAA,EAAD,CACEx6B,MAAOA,EACP0K,SAAU,SAACC,EAAOkiB,GAChBiF,EAASjF,IAHb,UAME,cAAC4N,GAAA,EAAD,CACE98B,MAAM,cACNlD,KAAM,cAAC,KAAD,IACNF,QAAS,WACP06B,QAGJ,cAACwF,GAAA,EAAD,CACE98B,MAAM,WACNlD,KAAM,cAAC,KAAD,IACNF,QAAS,WAzwBYs3B,GAAc,MA6wBrC,cAAC4I,GAAA,EAAD,CACEj8B,IAAKq2B,GACLl3B,MAAM,eACNlD,KACE,cAACm0B,GAAD,CACEU,oBArVc,WAC1BN,GACED,GAAc1vB,KAAI,SAAC+uB,GAAD,mBAAC,eACdA,GADa,IAEhBG,UAAU,SAkVFoB,iBA9UW,SAACvB,GACxBY,GACED,GAAc1vB,KAAI,SAACgE,GAAD,OAChBA,EAAKkH,KAAO6jB,EAAa7jB,GAAzB,2BAAmClH,GAAnC,IAAyCkrB,UAAU,IAAUlrB,OA4UrDwrB,SAAUgG,GACV9F,cAAeA,OAIrB,cAAC0L,GAAA,EAAD,CACE98B,MAAM,SACNlD,KAAM,cAAC,KAAD,IACNF,QAAS,WACP+D,GAAS,SAAU,CAAEwB,SAAS,gBC56B7B,SAAS46B,KACtB,OAAOC,YAAU,CACf,CACEl3B,KAAM,OACN8iB,QAAS,cAAC1f,GAAD,IACTpK,SAAU,CACR,CAAEgH,KAAM,OAAQ8iB,QAAS,cAAC/J,GAAD,KACzB,CAAE/Y,KAAM,aAAc8iB,QAAS,cAAC/F,GAAD,KAC/B,CAAE/c,KAAM,QAAS8iB,QAAS,cAAC9F,GAAD,KAC1B,CAAEhd,KAAM,UAAW8iB,QAAS,cAAC+K,GAAD,OAMhC,CACE7tB,KAAM,IACN8iB,QAAS,cAACvf,GAAD,IACTvK,SAAU,CACR,CAAEgH,KAAM,IAAK8iB,QAAS,cAAC,IAAD,CAAU/mB,GAAG,WACnC,CAAEiE,KAAM,QAAS8iB,QAAS,cAACja,GAAD,KAC1B,CAAE7I,KAAM,MAAO8iB,QAAS,cAAC,GAAD,KACxB,CAAE9iB,KAAM,IAAK8iB,QAAS,cAAC,IAAD,CAAU/mB,GAAG,YAGvC,CAAEiE,KAAM,IAAK8iB,QAAS,cAAC,IAAD,CAAU/mB,GAAG,OAAOM,SAAO,O,+CC/BtC8F,GAND,CACZ1J,aAAc,EACd2J,eAAgB,GAChB+0B,eAAgB,ICDlB,SAASC,GAAeC,EAAQC,GAC9B,MAAM,8BAAN,OAAqCD,EAArC,aAAgDC,EAAhD,KAIF,IAAMC,GAAO,CACX,EAAG,UACH,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,KAAOvhC,YAAM,UAAW,KACxB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KAGrBwhC,GAAU,CACdjuB,QAAS,UACTkuB,MAAO,UACP/6B,KAAM,YACNgN,KAAM,UACNJ,OAAQ,UACRouB,aAAc,QAUVC,GAAO,CACXpuB,QAAS,UACTkuB,MAAO,UACP/6B,KAAM,UACNgN,KAAM,UACNJ,OAAQ,UACRouB,aAAc,QAEVE,GAAU,CACdruB,QAAS,UACTkuB,MAAO,UACP/6B,KAAM,UACNgN,KAAM,UACNJ,OAAQ,UACRouB,aAAcH,GAAK,MAEfM,GAAU,CACdtuB,QAAS,UACTkuB,MAAO,UACP/6B,KAAM,UACNgN,KAAM,UACNJ,OAAQ,UACRouB,aAAcH,GAAK,MAEfO,GAAQ,CACZvuB,QAAS,UACTkuB,MAAO,UACP/6B,KAAM,UACNgN,KAAM,UACNJ,OAAQ,UACRouB,aAAc,QAGVK,GAAY,CAChBt7B,QAAS26B,GAAeI,GAAQC,MAAOD,GAAQ96B,MAC/CwD,KAAMk3B,GAAeO,GAAKF,MAAOE,GAAKj7B,MACtCs7B,QAASZ,GAAeQ,GAAQH,MAAOG,GAAQl7B,MAC/CwT,QAASknB,GAAeS,GAAQJ,MAAOI,GAAQn7B,MAC/C6K,MAAO6vB,GAAeU,GAAML,MAAOK,GAAMp7B,OAqC5BzG,GA1BC,CACdgiC,OAAQ,CAAEC,MAAO,OAAQC,MAAO,QAChC17B,QAAQ,eAAM+6B,IACdn4B,UAAU,eA5DM,CAChBkK,QAAS,UACTkuB,MAAO,UACP/6B,KAAM,YACNgN,KAAM,UACNJ,OAAQ,UACRouB,aAAc,SAuDdx3B,KAAK,eAAMy3B,IACXK,QAAQ,eAAMJ,IACd1nB,QAAQ,eAAM2nB,IACdtwB,MAAM,eAAMuwB,IACZj/B,KAAM0+B,GACNa,UAAWL,GACXltB,MAlBmB,CACnBG,OAAQ,CAAC,UAAW,UAAW,UAAW,WAC1CD,KAAM,CAAC,UAAW,UAAW,UAAW,WACxCE,MAAO,CAAC,UAAW,UAAW,UAAW,WACzCH,OAAQ,CAAC,UAAW,UAAW,UAAW,WAC1CI,IAAK,CAAC,UAAW,UAAW,UAAW,YAcvCuB,QAAS8qB,GAAK,OACdn4B,KAAM,CAAE3C,QAAS86B,GAAK,KAAMl4B,UAAWk4B,GAAK,KAAMhsB,SAAUgsB,GAAK,MACjErhC,WAAY,CAAEyC,MAAO,OAAQxC,QAAS,OAAQkiC,QAASd,GAAK,MAC5D56B,OAAQ,CACNkD,OAAQ03B,GAAK,KACb7rB,MAAO6rB,GAAK,MACZ16B,SAAU06B,GAAK,OACfhsB,SAAUgsB,GAAK,OACfe,mBAAoBf,GAAK,OACzBgB,MAAOhB,GAAK,OACZiB,aAAc,IACdC,gBAAiB,MCnHrB,SAASC,GAAQn8B,GACf,MAAM,GAAN,OAAUA,EAAQ,GAAlB,OAGF,SAASo8B,GAAT,GAA8C,IAAf56B,EAAc,EAAdA,GAAI2Q,EAAU,EAAVA,GAAIyL,EAAM,EAANA,GACrC,MAAO,CACL,2BAA4B,CAC1BjN,SAAUwrB,GAAQ36B,IAEpB,2BAA4B,CAC1BmP,SAAUwrB,GAAQhqB,IAEpB,4BAA6B,CAC3BxB,SAAUwrB,GAAQve,KAKxB,IAgFele,GA9EI,CACjBuP,WAHmB,0BAInBmJ,kBAAmB,IACnBD,iBAAkB,IAClBvK,eAAgB,IAChByuB,GAAG,aACDxgC,WAAY,IACZkL,WAAY,KACZ4J,SAAUwrB,GAAQ,KACfC,GAAoB,CAAE56B,GAAI,GAAI2Q,GAAI,GAAIyL,GAAI,MAE/C0e,GAAG,aACDzgC,WAAY,IACZkL,WAAY,GAAK,GACjB4J,SAAUwrB,GAAQ,KACfC,GAAoB,CAAE56B,GAAI,GAAI2Q,GAAI,GAAIyL,GAAI,MAE/CxP,GAAG,aACDvS,WAAY,IACZkL,WAAY,IACZ4J,SAAUwrB,GAAQ,KACfC,GAAoB,CAAE56B,GAAI,GAAI2Q,GAAI,GAAIyL,GAAI,MAE/C2e,GAAG,aACD1gC,WAAY,IACZkL,WAAY,IACZ4J,SAAUwrB,GAAQ,KACfC,GAAoB,CAAE56B,GAAI,GAAI2Q,GAAI,GAAIyL,GAAI,MAE/C4e,GAAG,aACD3gC,WAAY,IACZkL,WAAY,IACZ4J,SAAUwrB,GAAQ,KACfC,GAAoB,CAAE56B,GAAI,GAAI2Q,GAAI,GAAIyL,GAAI,MAE/C6e,GAAG,aACD5gC,WAAY,IACZkL,WAAY,GAAK,GACjB4J,SAAUwrB,GAAQ,KACfC,GAAoB,CAAE56B,GAAI,GAAI2Q,GAAI,GAAIyL,GAAI,MAE/C8e,UAAW,CACT7gC,WAAY,IACZkL,WAAY,IACZ4J,SAAUwrB,GAAQ,KAEpBluB,UAAW,CACTpS,WAAY,IACZkL,WAAY,GAAK,GACjB4J,SAAUwrB,GAAQ,KAEpBQ,MAAO,CACL51B,WAAY,IACZ4J,SAAUwrB,GAAQ,KAEpB15B,MAAO,CACLsE,WAAY,GAAK,GACjB4J,SAAUwrB,GAAQ,KAEpBS,QAAS,CACP71B,WAAY,IACZ4J,SAAUwrB,GAAQ,KAEpBU,SAAU,CACRhhC,WAAY,IACZkL,WAAY,IACZ4J,SAAUwrB,GAAQ,IAClBW,cAAe,IACfp6B,cAAe,aAEjBq6B,OAAQ,CACNlhC,WAAY,IACZkL,WAAY,GAAK,GACjB4J,SAAUwrB,GAAQ,IAClBz5B,cAAe,eClFJ,SAASs6B,GAAoBxkC,GAC1C,OAAOga,iBCbM,SAAcha,GAC3B,MAAO,CACLykC,QAAS,CACPC,eAAgB,CACdC,KAAM,CACJ9jC,UAAWb,EAAMc,cAAc8jC,IAC/BlhC,aAAc1D,EAAMoN,MAAMg1B,eAC1B9hC,SAAU,WACVH,OAAQ,KAId0kC,cAAe,CACbvI,aAAc,CACZwI,qBAAsB,CAAEvhC,QAAS,MACjCwhC,yBAA0B,CAAExhC,QAAS,UAEvCmhC,eAAgB,CACdC,KAAM,CACJhkC,QAASX,EAAMY,QAAQ,EAAG,EAAG,MAInCokC,eAAgB,CACdN,eAAgB,CACdC,KAAM,CACJhkC,QAASX,EAAMY,QAAQ,ODZ7B8S,CAAK1T,GEdM,SAAeA,GAC5B,MAAO,CACLilC,gBAAiB,CACfP,eAAgB,CACdC,KAAM,CACJxhC,MAAO,UACPqZ,SAAU,OACVlH,YAAatV,EAAMY,QAAQ,MAIjCskC,kBAAmB,CACjBR,eAAgB,CACdC,KAAM,CACJnoB,SAAU,OACVlH,YAAatV,EAAMY,QAAQ,MAIjCukC,gBAAiB,CACfT,eAAgB,CACdC,KAAM,CACJhqB,UAAW,EACXjG,aAAc,GAEhB0wB,UAAW,CACTzqB,UAAW,EACXjG,aAAc,MFZpB2wB,CAAMrlC,GGdD,CACLslC,SAAU,CACRhJ,aAAc,CACZ0E,UAAW,GAGb0D,eAAgB,CACdC,KAAM,CACJ/vB,gBAAiB,WCTZ,SAAe5U,GAC5B,MAAO,CACLulC,aAAc,CACZb,eAAgB,CACdC,KAAM,CACJ,iBAAkB,CAChB,QAAS,CAAExhC,MAAOnD,EAAMkB,QAAQmJ,KAAKmM,YAGzCgvB,MAAO,CACL,iBAAkB,CAChBn8B,QAAS,EACTlG,MAAOnD,EAAMkB,QAAQmJ,KAAKmM,aAKlCivB,SAAU,CACRf,eAAgB,CACd72B,UAAW,CACT,WAAY,CACVsH,kBAAmBnV,EAAMkB,QAAQ4C,KAAK,WAK9C4hC,eAAgB,CACdhB,eAAgB,CACdC,KAAM,CACJ3jC,gBAAiBhB,EAAMkB,QAAQ4C,KAAK,OACpC,UAAW,CACT9C,gBAAiBhB,EAAMkB,QAAQ4C,KAAK,QAEtC,gBAAiB,CACf9C,gBAAiBhB,EAAMkB,QAAQ0G,OAAO47B,OAExC,iBAAkB,CAChBxiC,gBAAiBhB,EAAMkB,QAAQ0G,OAAO27B,qBAG1C11B,UAAW,CACT,WAAY,CACVsH,kBAAmBnV,EAAMkB,QAAQ4C,KAAK,WAK9C6hC,iBAAkB,CAChBjB,eAAgB,CACdC,KAAM,CACJ,qCAAsC,CACpCltB,YAAazX,EAAMkB,QAAQ4C,KAAK,QAElC,iBAAkB,CAChB,qCAAsC,CACpC2T,YAAazX,EAAMkB,QAAQ0G,OAAO27B,yBJtC5C/gC,CAAMxC,GKjBK,SAAgBA,GAC7B,MAAO,CACL4lC,UAAW,CACTlB,eAAgB,CACdC,KAAM,CACJ,UAAW,CACT9jC,UAAW,SAGfglC,UAAW,CACTrlC,OAAQ,IAEVslC,iBAAkB,CAChB3iC,MAAOnD,EAAMkB,QAAQ4C,KAAK,KAC1BjD,UAAWb,EAAMc,cAAcC,GAC/B,UAAW,CACTC,gBAAiBhB,EAAMkB,QAAQ4C,KAAK,OAGxCiiC,iBAAkB,CAChBllC,UAAWb,EAAMc,cAAc4G,SAEjCs+B,mBAAoB,CAClBnlC,UAAWb,EAAMc,cAAcwJ,WAEjC27B,gBAAiB,CACfphC,OAAO,aAAD,OAAe7E,EAAMkB,QAAQ4C,KAAK,QACxC,UAAW,CACT9C,gBAAiBhB,EAAMkB,QAAQ0G,OAAO+O,QAG1CuvB,YAAa,CACX,UAAW,CACTllC,gBAAiBhB,EAAMkB,QAAQ0G,OAAO+O,WLf9CrT,CAAOtD,GMlBI,SAAiBA,GAC9B,MAAO,CACLmmC,WAAY,CACVzB,eAAgB,CACd1sB,QAAS,CACPhX,gBAAiBhB,EAAMkB,QAAQ4C,KAAK,MAEtCsiC,MAAO,CACLjjC,MAAOnD,EAAMkB,QAAQ4C,KAAK,SNWhC+yB,CAAQ72B,GOjBG,SAAkBA,GAK/B,MAAO,CACLqmC,YAAa,CACX3B,eAAgB,CACdC,KAAM,CACJ3jC,gBANKC,YAAMjB,EAAMkB,QAAQwG,QAAQC,KAAM,IAOvClH,eAAgB,YAOhB,0BAA2B,CACzBU,WAAY,mBPApBmlC,CAAStmC,GQpBE,SAAoBA,GACjC,MAAO,CACLumC,cAAe,CACb7B,eAAgB,CACdne,UAAW,CACT7R,aAAc1U,EAAMY,QAAQ,IAE9BoT,aAAc,CACZU,aAAc1U,EAAMY,QAAQ,ORalC8F,CAAW1G,GSrBA,SAAoBA,GACjC,MAAO,CACLwmC,cAAe,CACbngB,SAAU,CACR,CACEvc,MAAO,CAAE3G,MAAO,WAChB8X,MAAO,CACL,UAAW,CAAEja,gBAAiBhB,EAAMkB,QAAQ0G,OAAO+O,SAGvD,CACE7M,MAAO,CAAE3G,MAAO,WAChB8X,MAAO,CACL,UAAW,CAAEja,gBAAiBhB,EAAMkB,QAAQ0G,OAAO+O,UAKzD+tB,eAAgB,CACdC,KAAM,MTGV7iC,CAAW9B,GUtBA,SAAsBA,GACnC,MAAO,CACLymC,gBAAiB,CACf/B,eAAgB,CACd9gC,MAAO,CACL/C,UAAWb,EAAMc,cAAc4lC,QVkBrCC,CAAa3mC,IWnBjB,IAAM4mC,GAAa1lC,GAAQ4C,KAAK,KAsDnBhD,GAnBc,SAACqC,GAC1B,IAAM0jC,EAAc5lC,YAAMkC,EAAO,KAEjC,MAAO,CACL2jC,GAAG,eAAD,OAAiBD,GACnB9lC,GAAG,gBAAD,OAAkB8lC,GACpBE,IAAI,aAAD,OAAeF,EAAf,2BAA6CA,GAChDjC,IAAI,aAAD,OAAeiC,EAAf,8BAAgDA,GACnDH,IAAI,aAAD,OAAeG,EAAf,8BAAgDA,GACnD3xB,IAAI,aAAD,OAAe2xB,EAAf,2BAA6CA,GAChDn/B,QAAQ,gBAAD,OAAkBzG,YAAMC,GAAQwG,QAAQC,KAAM,MACrD2C,UAAU,gBAAD,OAAkBrJ,YAAMC,GAAQoJ,UAAU3C,KAAM,MACzDwD,KAAK,gBAAD,OAAkBlK,YAAMC,GAAQiK,KAAKxD,KAAM,MAC/Cs7B,QAAQ,gBAAD,OAAkBhiC,YAAMC,GAAQ+hC,QAAQt7B,KAAM,MACrDwT,QAAQ,gBAAD,OAAkBla,YAAMC,GAAQia,QAAQxT,KAAM,MACrD6K,MAAM,gBAAD,OAAkBvR,YAAMC,GAAQsR,MAAM7K,KAAM,OAIxBq/B,CAAmBJ,IAIjCK,GAxDM,SAAC9jC,GACpB,IAAM+jC,EAAejmC,YAAMkC,EAAO,IAC5BgkC,EAAelmC,YAAMkC,EAAO,KAC5BikC,EAAenmC,YAAMkC,EAAO,KAClC,MAAO,CACL,OADK,2BAEe+jC,EAFf,4BAE+CC,EAF/C,4BAE+EC,GAF/E,2BAGeF,EAHf,4BAG+CC,EAH/C,4BAG+EC,GAH/E,2BAIeF,EAJf,4BAI+CC,EAJ/C,4BAI+EC,GAJ/E,2BAKeF,EALf,4BAK+CC,EAL/C,6BAKgFC,GALhF,2BAMeF,EANf,4BAM+CC,EAN/C,6BAMgFC,GANhF,2BAOeF,EAPf,6BAOgDC,EAPhD,6BAOiFC,GAPjF,2BAQeF,EARf,6BAQgDC,EARhD,6BAQiFC,GARjF,2BASeF,EATf,6BASgDC,EAThD,6BASiFC,GATjF,2BAUeF,EAVf,6BAUgDC,EAVhD,6BAUiFC,GAVjF,2BAWeF,EAXf,8BAWiDC,EAXjD,6BAWkFC,GAXlF,2BAYeF,EAZf,8BAYiDC,EAZjD,6BAYkFC,GAZlF,2BAaeF,EAbf,8BAaiDC,EAbjD,6BAakFC,GAblF,2BAceF,EAdf,8BAciDC,EAdjD,6BAckFC,GAdlF,2BAeeF,EAff,8BAeiDC,EAfjD,6BAekFC,GAflF,2BAgBeF,EAhBf,8BAgBiDC,EAhBjD,6BAgBkFC,GAhBlF,4BAiBgBF,EAjBhB,8BAiBkDC,EAjBlD,6BAiBmFC,GAjBnF,4BAkBgBF,EAlBhB,8BAkBkDC,EAlBlD,6BAkBmFC,GAlBnF,4BAmBgBF,EAnBhB,8BAmBkDC,EAnBlD,6BAmBmFC,GAnBnF,4BAoBgBF,EApBhB,8BAoBkDC,EApBlD,6BAoBmFC,GApBnF,6BAqBiBF,EArBjB,8BAqBmDC,EArBnD,6BAqBoFC,GArBpF,6BAsBiBF,EAtBjB,8BAsBmDC,EAtBnD,6BAsBoFC,GAtBpF,6BAuBiBF,EAvBjB,8BAuBmDC,EAvBnD,6BAuBoFC,GAvBpF,6BAwBiBF,EAxBjB,8BAwBmDC,EAxBnD,6BAwBoFC,GAxBpF,6BAyBiBF,EAzBjB,8BAyBmDC,EAzBnD,6BAyBoFC,IAyB7EC,CAAaT,IC5Cd,SAASU,GAAT,GAAoC,IAAbrjC,EAAY,EAAZA,SAC9BsjC,EAAeC,mBACnB,iBAAO,CACLtmC,WACAkM,SACAlG,cACA+/B,WACAnmC,oBAEF,IAGId,EAAQynC,aAAYF,GAG1B,OAFAvnC,EAAM0nC,WAAaC,GAAmB3nC,GAGpC,cAAC4nC,GAAA,EAAD,CAAsBC,aAAW,EAAjC,SACE,eAACC,GAAA,EAAD,CAAe9nC,MAAOA,EAAtB,UACE,cAAC+nC,GAAA,EAAD,IACC9jC,OC/BM,SAAS+Q,KACtB,IAAMhV,EAAQ+K,eAEd,OACE,cAAC,KAAD,CACEkK,OAAQ,CACN,IAAK,CACHpB,OAAQ,EACRlT,QAAS,EACTqnC,UAAW,cAEbC,KAAM,CACJ7nC,MAAO,OACPI,OAAQ,OACR0nC,wBAAyB,SAE3BC,KAAM,CACJ/nC,MAAO,OACPI,OAAQ,QAEV,QAAS,CACPJ,MAAO,OACPI,OAAQ,QAEVglC,MAAO,CACL,iBAAkB,CAChB4C,cAAe,YACf,+BAAgC,CAC9Bv0B,OAAQ,EACRw0B,iBAAkB,QAEpB,+BAAgC,CAC9Bx0B,OAAQ,EACRw0B,iBAAkB,UAIxBC,SAAU,CACR,+BAAgC,CAC9BnlC,MAAOnD,EAAMkB,QAAQmJ,KAAKmM,UAE5B,sBAAuB,CACrBnN,QAAS,EACTlG,MAAOnD,EAAMkB,QAAQmJ,KAAKmM,UAE5B,0BAA2B,CACzBrT,MAAOnD,EAAMkB,QAAQmJ,KAAKmM,UAE5B,iBAAkB,CAChBrT,MAAOnD,EAAMkB,QAAQmJ,KAAKmM,WAI9B+xB,IAAK,CAAEloC,QAAS,QAASsT,SAAU,QAGnC,WAAY,CACV60B,aAAc,YACd5xB,OAAQ,YACR9K,WAAY,sCAEd,uBAAwB,CACtB08B,aAAc,UACd5xB,OAAQ,cChEH,SAAS6xB,KACtB,IAAQt8B,EAAaC,cAAbD,SAMR,OAJAoB,qBAAU,WACR8kB,OAAOqW,SAAS,EAAG,KAClB,CAACv8B,IAEG,KCAM,SAASw8B,KACtB,OACE,eAACrB,GAAD,WACE,cAACmB,GAAD,IACA,cAAC,GAAD,IACA,cAAC1zB,GAAD,IACA,cAACmtB,GAAD,OCHczvB,QAAqC,cAA7B4f,OAAOuW,SAASC,UAEb,UAA7BxW,OAAOuW,SAASC,UAEhBxW,OAAOuW,SAASC,SAASx8B,MAAM,2D,eCHjCy8B,IAASC,OACP,cAAC,IAAD,UACE,cAAC,IAAD,UACE,cAAC,IAAD,CACE3kC,aAAc,CACZC,SAAU,MACVC,WAAY,UAEd0kC,oBAAqBC,KACrBC,SAAU,EANZ,SAQE,cAACP,GAAD,UAINhY,SAASwY,eAAe,SD4FpB,kBAAmB3/B,WACrBA,UACG4/B,cACAC,MACAnX,MAAK,SAACoX,GACLA,EAAaC,gBAEdC,OAAM,SAACh3B,GACNjC,QAAQiC,MAAMA,EAAMi3B,a,kYEnItBjR,EAAMC,EAAQ,KACdiR,EAAOjR,EAAQ,KACfkR,EAAOnR,EAAI2I,YAAYyI,SAASD,KAChCE,EAAYrR,EAAI2I,YAAYyI,SAASE,iBACrCC,EAAYvR,EAAI2I,YAAYyI,SAASG,UACrCC,EAAQxR,EAAI2I,YAAYyI,SAASI,MACjCC,EAAWzR,EAAI2I,YAAYC,UAAU8I,UAGpC,SAASC,EAAmBC,GACjC,IAAIC,EAAoB,IAAI7R,EAAI2I,YAAYC,UAAUkJ,kBAClDC,EAAqB,GACrBC,EAAU,IAAIhS,EAAI2I,YAAYC,UAAUqJ,QAC5CD,EAAQE,MAAQ,EAChBF,EAAQG,MAAQ,EAChBN,EAAkBv8B,KAAO,WACzBu8B,EAAkB5lB,SAAW,EAC7B4lB,EAAkBO,gBAAkBJ,EACpCD,EAAmB7f,KAAK2f,IAExBA,EAAoB,IAAI7R,EAAI2I,YAAYC,UAAUkJ,mBAChCx8B,KAAO,QACzBu8B,EAAkB5lB,SAAW,EAC7B4lB,EAAkBO,gBAAkBJ,EACpCD,EAAmB7f,KAAK2f,IAExBA,EAAoB,IAAI7R,EAAI2I,YAAYC,UAAUkJ,mBAChCx8B,KAAO,QACzBu8B,EAAkB5lB,SAAW,EAC7B4lB,EAAkBO,gBAAkBJ,EACpCD,EAAmB7f,KAAK2f,GAExB,IAAIQ,EAASC,EAAeb,EAASN,KAAMA,EAAKoB,kBAAmB,EAAG,EAAG,GACrEtB,EAAU,IAAIjR,EAAI2I,YAAYyI,SAASD,KAAKqB,eAChDvB,EAAQwB,mBAAqBV,EAC7Bd,EAAQyB,gBAAkB,GAC1BzB,EAAQ0B,mBAAqB,MAC7B,IAAIC,EAAaC,EAAYR,EAAQpB,GACrCW,EAAWkB,KAAKF,GAIX,SAASG,EAAiBnB,EAAY3oB,GAC3C,IAAIopB,EAASC,EACXb,EAASF,UACTA,EAAUyB,gBACV,EACA,EACA,GAEEC,EAAe,IAAIjT,EAAI2I,YAAYyI,SAASG,UAAU2B,aAC1DD,EAAahqB,IAAMA,EACnB,IAAI5H,EAAOwxB,EAAYR,EAAQY,GAC/BrB,EAAWkB,KAAKzxB,GAIX,SAAS8xB,EAAavB,EAAYvK,GACvC,IAAIgL,EAASC,EACXb,EAASH,iBACTD,EAAU+B,mBACV,EACA,EACA,GAEEC,EACF,IAAIrT,EAAI2I,YAAYyI,SAASE,iBAAiBgC,gBAChDD,EAAShM,KAAOA,EAChBuK,EAAWkB,KAAKD,EAAYR,EAAQgB,IAG/B,SAASE,EAAU3B,EAAY4B,EAASC,GAC7C,IAAIpB,EAASC,EACXb,EAASH,iBACTD,EAAUqC,SACV,EACA,EACA,GAEExgB,EAAQ,IAAI8M,EAAI2I,YAAYyI,SAASE,iBAAiBqC,MAC1DzgB,EAAM0gB,eAAiBJ,EACvBtgB,EAAM2gB,aAAeJ,EACrB7B,EAAWkB,KAAKD,EAAYR,EAAQnf,IAG/B,SAAS4gB,EAAmBlC,EAAYhiB,GAC7C,IAAIyiB,EAASC,EACXb,EAASH,iBACTD,EAAU0C,yBACV,EACA,EACA,GAEEC,EACF,IAAIhU,EAAI2I,YAAYyI,SAASE,iBAAiB2C,sBAChDD,EAAe1oB,SAAWsE,EAC1BgiB,EAAWkB,KAAKD,EAAYR,EAAQ2B,IAG/B,SAASE,EAAiBtC,EAAYuC,EAAe3O,GAE1D,IAAI6M,EAASC,EACXb,EAASH,iBACTD,EAAU+C,uBACV5O,EACAA,EACA,GAEE6O,EACF,IAAIrU,EAAI2I,YAAYyI,SAASE,iBAAiBgD,oBAChDD,EAAaE,cAAgBJ,EAC7BvC,EAAWkB,KAAKD,EAAYR,EAAQgC,IAI/B,SAASG,EAAc5C,EAAY3oB,GACxC,IAAIopB,EAASC,EAAeb,EAASD,MAAOA,EAAMiD,aAAc,EAAG,EAAG,GAClEC,EAAS,IAAI1U,EAAI2I,YAAYyI,SAASI,MAAMmD,UAChDD,EAAOzrB,IAAMA,EACb2oB,EAAWkB,KAAKD,EAAYR,EAAQqC,IAG/B,SAASpC,EAAermB,EAAU2oB,EAASC,EAAOC,EAAQC,GAC/D,MAAO,CACL9oB,SAAUA,EACVC,YAAa0oB,EACbI,UAAWH,EACXrP,cAAesP,EACfzoB,aAAc0oB,GAIX,SAASlC,EAAYR,EAAQpB,GAClC,IAAIgE,EAAc,IAAIjV,EAAIkV,YACtBC,EAAaF,EAAYG,KAC3B/C,EAAOpmB,SACPomB,EAAOnmB,aACPmpB,SAEEC,EAAU,IAAIpE,EAAKqE,aAAaN,GAIpC,OAHAK,EAAQE,WAAW,sCAAuCnD,GAC1DiD,EAAQE,WAAWL,EAAYlE,GACdqE,EAAQG,iBAoBpB,IAAMC,EAAW,SAACz9B,EAAQuU,EAAKmpB,GACpC,IAAI5pB,EAAa,KACbC,EAAc,KACdipB,EAAc,IAAIjV,EAAIkV,YAC1B,GAAuB,iBAAZ1oB,EAAInL,KAcR,CACL,IAAIA,EAAOgY,KAAKuc,MAAMppB,EAAInL,MAG1B,OAFA0K,EAAa1K,EAAK,GAClB2K,EAAc3K,EAAK,GACZ,CAAEgxB,OAAQtmB,EAAYklB,QAASjlB,GAjBtC,IAAI6pB,EAAS,KACPC,EAAa,IAAIC,WACvBD,EAAWE,UAAY,SAAC3qB,IACtBwqB,EAASz9B,EAAO69B,KAAKH,EAAW3b,SACzB+b,UAAU,GACjB,IAAIC,EAAS,IAAIjF,EAAKkF,aAAanB,EAAaY,GAChD9pB,EAAaoqB,EAAOE,UAAU,uCAC9BrqB,EAAcmqB,EAAOE,UACnBpB,EAAYG,KAAKrpB,EAAWE,SAAUF,EAAWG,cAEnDypB,EAAG19B,EAAQ8T,EAAYC,IAEzB8pB,EAAWQ,kBAAkB9pB,EAAInL,OASxBk1B,EAAb,WAIE,WAAYloC,GAAM,yBAHlBi5B,OAAS,GAGQ,KAFjBkP,OAAS,GAGLC,KAAKnP,OAAL,eAAmBj5B,GACnBooC,KAAKD,OAASnuB,OAAOoB,KAAKpb,GAAKqoC,QAC3B,SAACC,EAAKC,GAAN,mBAAC,eACMD,GADP,kBAEKtoC,EAAIuoC,GAAOA,MAEhB,IAXV,uCAeE,SAAIltB,GACA,OAAO+sB,KAAKnP,OAAO5d,IAAQ+sB,KAAKD,OAAO9sB,KAhB7C,iBAmBE,SAAImtB,GACFJ,KAAKnP,OAAOuP,EAAK,IAAMA,EAAK,GAC5BJ,KAAKD,OAAOK,EAAK,IAAMA,EAAK,OArBhC,O,0DC5LA,gFAAO,IAAMC,EAAY,SAACr+B,GACxB,IAAIs+B,EAAK,GACT,GAAIC,EAAOC,aACT,IACEF,EAAK1d,KAAKuc,MAAMoB,EAAOC,aAAaC,QAAQz+B,KAAa,GACzD,MAAO4S,GACP,OAAO,KAGX,OAAO0rB,GAGII,EAAW,SAAC1+B,EAAS4I,GAC5B21B,EAAOC,cACTD,EAAOC,aAAaG,QAClB3+B,EACA4gB,KAAKC,UAAUjY,O","file":"static/js/main.1b575eca.chunk.js","sourcesContent":["import { Icon } from '@iconify/react';\nimport { useState } from 'react';\nimport searchFill from '@iconify/icons-eva/search-fill';\n// material\nimport { styled, alpha } from '@mui/material/styles';\nimport {\n Box,\n Input,\n Slide,\n Button,\n InputAdornment,\n ClickAwayListener,\n IconButton\n} from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst APPBAR_MOBILE = 64;\nconst APPBAR_DESKTOP = 92;\n\nconst SearchbarStyle = styled('div')(({ theme }) => ({\n top: 0,\n left: 0,\n zIndex: 99,\n width: '100%',\n display: 'flex',\n position: 'absolute',\n alignItems: 'center',\n height: APPBAR_MOBILE,\n backdropFilter: 'blur(6px)',\n WebkitBackdropFilter: 'blur(6px)', // Fix on Mobile\n padding: theme.spacing(0, 3),\n boxShadow: theme.customShadows.z8,\n backgroundColor: `${alpha(theme.palette.background.default, 0.72)}`,\n [theme.breakpoints.up('md')]: {\n height: APPBAR_DESKTOP,\n padding: theme.spacing(0, 5)\n }\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function Searchbar() {\n const [isOpen, setOpen] = useState(false);\n\n const handleOpen = () => {\n setOpen((prev) => !prev);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n return (\n \n \n {!isOpen && (\n \n \n \n )}\n\n \n \n \n \n \n }\n sx={{ mr: 1, fontWeight: 'fontWeightBold' }}\n />\n \n Search\n \n \n \n \n \n );\n}\n","import PropTypes from 'prop-types';\n// material\nimport { Popover } from '@mui/material';\nimport { alpha, styled } from '@mui/material/styles';\n\n// ----------------------------------------------------------------------\n\nconst ArrowStyle = styled('span')(({ theme }) => ({\n [theme.breakpoints.up('sm')]: {\n top: -7,\n zIndex: 1,\n width: 12,\n right: 20,\n height: 12,\n content: \"''\",\n position: 'absolute',\n borderRadius: '0 0 4px 0',\n transform: 'rotate(-135deg)',\n background: theme.palette.background.paper,\n borderRight: `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`,\n borderBottom: `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`\n }\n}));\n\n// ----------------------------------------------------------------------\n\nMenuPopover.propTypes = {\n children: PropTypes.node.isRequired,\n sx: PropTypes.object\n};\n\nexport default function MenuPopover({ children, sx, ...other }) {\n return (\n theme.customShadows.z0,\n border: (theme) => `solid 1px ${theme.palette.grey[500_8]}`,\n width: 200,\n ...sx\n }\n }}\n {...other}\n >\n {/* */}\n\n {children}\n \n );\n}\n","// ----------------------------------------------------------------------\n\nconst account = {\n displayName: 'Michael Scott',\n email: 'michael@dundermifflin.com',\n photoURL: '/static/mock-images/avatars/avatar_default.jpg'\n};\n\nexport default account;\n","import { Icon } from '@iconify/react';\nimport { useRef, useState } from 'react';\nimport homeFill from '@iconify/icons-eva/home-fill';\nimport personFill from '@iconify/icons-eva/person-fill';\nimport settings2Fill from '@iconify/icons-eva/settings-2-fill';\nimport { Link as RouterLink } from 'react-router-dom';\n// material\nimport { alpha } from '@mui/material/styles';\nimport { Button, Box, Divider, MenuItem, Typography, Avatar, IconButton } from '@mui/material';\n// components\nimport MenuPopover from '../../components/MenuPopover';\n//\nimport account from '../../_mocks_/account';\n//react-router-dom\nimport { useNavigate } from \"react-router-dom\";\n// notification\nimport { useSnackbar } from \"notistack\";\n// ----------------------------------------------------------------------\n\nconst MENU_OPTIONS = [\n {\n label: 'Home',\n icon: homeFill,\n linkTo: '/app/main'\n },\n {\n label: 'Profile',\n icon: personFill,\n linkTo: '#'\n },\n {\n label: 'Settings',\n icon: settings2Fill,\n linkTo: '#'\n }\n];\n\n// ----------------------------------------------------------------------\n\nexport default function AccountPopover() {\n const { closeSnackbar } = useSnackbar();\n const anchorRef = useRef(null);\n const [open, setOpen] = useState(false);\n\n const handleOpen = () => {\n setOpen(true);\n };\n const handleClose = () => {\n setOpen(false);\n };\n\n const navigate = useNavigate();\n return (\n <>\n alpha(theme.palette.grey[900], 0.72)\n }\n })\n }}\n >\n \n \n\n \n \n \n {account.displayName}\n \n \n {account.email}\n \n \n\n \n\n {MENU_OPTIONS.map((option) => (\n \n \n\n {option.label}\n \n ))}\n\n \n {\n closeSnackbar();\n navigate(\"/login\", { replace: true });\n }}>\n Logout\n \n \n \n >\n );\n}\n","import { useRef, useState } from 'react';\n// material\nimport { alpha } from '@mui/material/styles';\nimport { Box, MenuItem, ListItemIcon, ListItemText, IconButton } from '@mui/material';\n// components\nimport MenuPopover from '../../components/MenuPopover';\n\n// ----------------------------------------------------------------------\n\nconst LANGS = [\n {\n value: 'en',\n label: 'English',\n icon: '/static/icons/ic_flag_en.svg'\n },\n {\n value: 'de',\n label: 'German',\n icon: '/static/icons/ic_flag_de.svg'\n },\n {\n value: 'fr',\n label: 'French',\n icon: '/static/icons/ic_flag_fr.svg'\n }\n];\n\n// ----------------------------------------------------------------------\n\nexport default function LanguagePopover() {\n const anchorRef = useRef(null);\n const [open, setOpen] = useState(false);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n return (\n <>\n alpha(theme.palette.primary.main, theme.palette.action.focusOpacity)\n })\n }}\n >\n \n \n\n \n \n {LANGS.map((option) => (\n \n \n \n \n \n {option.label}\n \n \n ))}\n \n \n >\n );\n}\n","// react stuff\nimport { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\nimport menu2Fill from '@iconify/icons-eva/menu-2-fill';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Box, Stack, AppBar, Toolbar, IconButton } from '@mui/material';\n// components\n// import { MHidden } from '../../components/@material-extend';\n//\nimport Searchbar from './Searchbar';\nimport AccountPopover from './AccountPopover';\nimport LanguagePopover from './LanguagePopover';\n\n// ----------------------------------------------------------------------\n\n// const DRAWER_WIDTH = 280;\nconst APPBAR_MOBILE = 64;\nconst APPBAR_DESKTOP = 92;\n\nconst RootStyle = styled(AppBar)(({ theme }) => ({\n boxShadow: 'none',\n backdropFilter: 'blur(6px)',\n WebkitBackdropFilter: 'blur(6px)', // Fix on Mobile\n backgroundColor: alpha(theme.palette.background.default, 0.72),\n zIndex: 1300,\n}));\n\nconst ToolbarStyle = styled(Toolbar)(({ theme }) => ({\n minHeight: APPBAR_MOBILE,\n [theme.breakpoints.up('lg')]: {\n minHeight: APPBAR_DESKTOP,\n padding: theme.spacing(0, 5)\n }\n}));\n\n// ----------------------------------------------------------------------\n\nDashboardNavbar.propTypes = {\n onOpenSidebar: PropTypes.func,\n onCloseSidebar: PropTypes.func\n};\n\nexport default function DashboardNavbar({ onOpenSidebar, onCloseSidebar }) {\n const [isOpenSidebar, setIsOpenSidebar] = useState(false);\n const openCloseSidebar = () => {\n if (isOpenSidebar) {\n onCloseSidebar();\n setIsOpenSidebar(false);\n } else {\n onOpenSidebar();\n setIsOpenSidebar(true);\n }\n };\n return (\n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n );\n}\n","import PropTypes from 'prop-types';\n// material\nimport { Box } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nLogo.propTypes = {\n sx: PropTypes.object\n};\n\nexport default function Logo({ sx }) {\n return ;\n}\n","import PropTypes from 'prop-types';\nimport SimpleBarReact from 'simplebar-react';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Box } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled('div')({\n flexGrow: 1,\n height: '100%',\n overflow: 'hidden'\n});\n\nconst SimpleBarStyle = styled(SimpleBarReact)(({ theme }) => ({\n maxHeight: '100%',\n '& .simplebar-scrollbar': {\n '&:before': {\n backgroundColor: alpha(theme.palette.grey[600], 0.48)\n },\n '&.simplebar-visible:before': {\n opacity: 1\n }\n },\n '& .simplebar-track.simplebar-vertical': {\n width: 10\n },\n '& .simplebar-track.simplebar-horizontal .simplebar-scrollbar': {\n height: 6\n },\n '& .simplebar-mask': {\n zIndex: 'inherit'\n }\n}));\n\n// ----------------------------------------------------------------------\n\nScrollbar.propTypes = {\n children: PropTypes.node.isRequired,\n sx: PropTypes.object\n};\n\nexport default function Scrollbar({ children, sx, ...other }) {\n const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n\n if (isMobile) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n \n {children}\n \n \n );\n}\n","import { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\nimport { NavLink as RouterLink, matchPath, useLocation } from 'react-router-dom';\nimport arrowIosForwardFill from '@iconify/icons-eva/arrow-ios-forward-fill';\nimport arrowIosDownwardFill from '@iconify/icons-eva/arrow-ios-downward-fill';\n// material\nimport { alpha, useTheme, styled } from '@mui/material/styles';\nimport { Box, List, Collapse, ListItemText, ListItemIcon, ListItemButton } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst ListItemStyle = styled((props) => )(\n ({ theme }) => ({\n ...theme.typography.body2,\n height: 48,\n position: 'relative',\n textTransform: 'capitalize',\n paddingLeft: theme.spacing(5),\n paddingRight: theme.spacing(2.5),\n color: theme.palette.text.secondary,\n '&:before': {\n top: 0,\n right: 0,\n width: 3,\n bottom: 0,\n content: \"''\",\n display: 'none',\n position: 'absolute',\n borderTopLeftRadius: 4,\n borderBottomLeftRadius: 4,\n backgroundColor: theme.palette.primary.main\n }\n })\n);\n\nconst ListItemIconStyle = styled(ListItemIcon)({\n width: 22,\n height: 22,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n});\n\n// ----------------------------------------------------------------------\n\nNavItem.propTypes = {\n item: PropTypes.object,\n active: PropTypes.func\n};\n\nfunction NavItem({ item, active }) {\n const theme = useTheme();\n const isActiveRoot = active(item.path);\n const { title, path, icon, info, children } = item;\n const [open, setOpen] = useState(isActiveRoot);\n\n const handleOpen = () => {\n setOpen((prev) => !prev);\n };\n\n const activeRootStyle = {\n color: 'primary.main',\n fontWeight: 'fontWeightMedium',\n bgcolor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n '&:before': { display: 'block' }\n };\n\n const activeSubStyle = {\n color: 'text.primary',\n fontWeight: 'fontWeightMedium'\n };\n\n if (children) {\n return (\n <>\n \n {icon && icon}\n \n {info && info}\n \n \n\n \n \n {children.map((item) => {\n const { title, path } = item;\n const isActiveSub = active(path);\n\n return (\n \n \n theme.transitions.create('transform'),\n ...(isActiveSub && {\n transform: 'scale(2)',\n bgcolor: 'primary.main'\n })\n }}\n />\n \n \n \n );\n })}\n \n \n >\n );\n }\n\n return (\n \n {icon && icon}\n \n {info && info}\n \n );\n}\n\nNavSection.propTypes = {\n navConfig: PropTypes.array\n};\n\nexport default function NavSection({ navConfig, ...other }) {\n const { pathname } = useLocation();\n const match = (path) => (path ? !!matchPath({ path, end: false }, pathname) : false);\n\n return (\n \n \n {navConfig.map((item) => (\n \n ))}\n \n \n );\n}\n","import { Icon } from '@iconify/react';\nimport homeOutline from '@iconify/icons-eva/home-outline';\nimport trendingUp from '@iconify/icons-ic/trending-up';\nimport swapFill from '@iconify/icons-eva/swap-fill';\nimport radioButtonOnFill from '@iconify/icons-eva/radio-button-on-fill';\nimport radioButtonOffOutline from '@iconify/icons-eva/radio-button-off-outline';\nimport dropletOutline from '@iconify/icons-eva/droplet-outline';\nimport sheildOutline from '@iconify/icons-eva/shield-outline';\n// ----------------------------------------------------------------------\n\nconst getIcon = (name) => ;\n\nconst sidebarConfig = [\n {\n title: 'Dashboard',\n path: '/app/main',\n icon: getIcon(homeOutline)\n },\n {\n title: 'Format converters',\n path: '/app/converters',\n icon: getIcon(swapFill)\n },\n {\n title: 'Wells tracker',\n path: '/app/wells',\n icon: getIcon(trendingUp)\n },\n {\n title: 'Hole cleaning',\n path: '/app/hole-cleaning',\n icon: getIcon(radioButtonOffOutline)\n },\n {\n title: 'Hole cementing',\n path: '/app/hole-cementing',\n icon: getIcon(radioButtonOnFill)\n },\n {\n title: 'Hydrocarbon display',\n path: '/app/hydrocarbon-display',\n icon: getIcon(dropletOutline)\n },\n {\n title: 'Overwatch agent',\n path: '/app/overwatch-agent',\n icon: getIcon(sheildOutline)\n },\n // {\n // title: 'user',\n // path: '/dashboard/user',\n // icon: getIcon(peopleFill)\n // },\n // {\n // title: 'product',\n // path: '/dashboard/products',\n // icon: getIcon(shoppingBagFill)\n // },\n // {\n // title: 'blog',\n // path: '/dashboard/blog',\n // icon: getIcon(fileTextFill)\n // },\n // {\n // title: 'login',\n // path: '/login',\n // icon: getIcon(lockFill)\n // },\n // {\n // title: 'register',\n // path: '/register',\n // icon: getIcon(personAddFill)\n // },\n // {\n // title: 'Not found',\n // path: '/404',\n // icon: getIcon(alertTriangleFill)\n // }\n];\n\nexport default sidebarConfig;\n","import PropTypes from 'prop-types';\nimport { useEffect } from 'react';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\nimport { Box, Link, Drawer, Typography, Avatar } from '@mui/material';\n// components\nimport Logo from '../../components/Logo';\nimport Scrollbar from '../../components/Scrollbar';\nimport NavSection from '../../components/NavSection';\n// import { MHidden } from '../../components/@material-extend';\n//\nimport sidebarConfig from './SidebarConfig';\nimport account from '../../_mocks_/account';\n\n// ----------------------------------------------------------------------\n\nconst DRAWER_WIDTH = 280;\n\nconst RootStyle = styled('div')(({ theme }) => ({\n [theme.breakpoints.up('lg')]: {\n flexShrink: 0,\n width: 0\n },\n}));\n\nconst AccountStyle = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2, 2.5),\n borderRadius: theme.shape.borderRadiusSm,\n backgroundColor: theme.palette.grey[200]\n}));\n\n// ----------------------------------------------------------------------\n\nDashboardSidebar.propTypes = {\n isOpenSidebar: PropTypes.bool,\n onCloseSidebar: PropTypes.func\n};\n\nexport default function DashboardSidebar({ isOpenSidebar, onCloseSidebar }) {\n const { pathname } = useLocation();\n\n useEffect(() => {\n if (isOpenSidebar) {\n onCloseSidebar();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pathname]);\n\n const renderContent = (\n \n \n \n \n \n \n\n \n \n \n \n \n \n {account.displayName}\n \n \n {account.role}\n \n \n \n \n \n\n \n\n \n\n \n );\n\n return (\n \n \n {renderContent}\n \n \n );\n}\n","import { useState } from 'react';\nimport { Outlet } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\n//\nimport DashboardNavbar from './DashboardNavbar';\nimport DashboardSidebar from './DashboardSidebar';\n\n// ----------------------------------------------------------------------\n\nconst APP_BAR_MOBILE = 64;\nconst APP_BAR_DESKTOP = 92;\n\nconst RootStyle = styled('div')({\n display: 'flex',\n minHeight: '100%',\n overflow: 'hidden'\n});\n\nconst MainStyle = styled('div')(({ theme }) => ({\n flexGrow: 1,\n overflow: 'auto',\n minHeight: '100%',\n paddingTop: APP_BAR_MOBILE + 24,\n paddingBottom: theme.spacing(9),\n [theme.breakpoints.up('lg')]: {\n paddingTop: APP_BAR_DESKTOP + 24,\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2)\n }\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function DashboardLayout() {\n const [open, setOpen] = useState(false);\n\n return (\n \n setOpen(true)} onCloseSidebar={() => setOpen(false)} />\n setOpen(false)} />\n \n \n \n \n );\n}\n","import { Link as RouterLink, Outlet } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\n// components\nimport Logo from '../components/Logo';\n\n// ----------------------------------------------------------------------\n\nconst HeaderStyle = styled('header')(({ theme }) => ({\n top: 0,\n left: 0,\n lineHeight: 0,\n width: '100%',\n position: 'absolute',\n padding: theme.spacing(3, 3, 0),\n [theme.breakpoints.up('sm')]: {\n padding: theme.spacing(5, 5, 0)\n }\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function LogoOnlyLayout() {\n return (\n <>\n \n \n \n \n \n \n >\n );\n}\n","import PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet-async';\nimport { forwardRef } from 'react';\n// material\nimport { Box } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst Page = forwardRef(({ children, title = '', ...other }, ref) => (\n \n \n {title}\n \n {children}\n \n));\n\nPage.propTypes = {\n children: PropTypes.node.isRequired,\n title: PropTypes.string\n};\n\nexport default Page;\n","import * as Yup from \"yup\";\nimport { useState, createRef } from \"react\";\nimport { Link as RouterLink, useNavigate } from \"react-router-dom\";\nimport { useFormik, Form, FormikProvider } from \"formik\";\nimport { Icon } from \"@iconify/react\";\nimport eyeFill from \"@iconify/icons-eva/eye-fill\";\nimport eyeOffFill from \"@iconify/icons-eva/eye-off-fill\";\n// material\nimport {\n Link,\n Stack,\n Checkbox,\n TextField,\n IconButton,\n InputAdornment,\n FormControlLabel,\n FormControl,\n InputLabel,\n Select,\n Divider,\n Typography,\n MenuItem,\n} from \"@mui/material\";\nimport { LoadingButton } from \"@mui/lab\";\n// etp\nimport { Buffer } from \"buffer\";\n// storage\nimport * as storage from \"../../../utils/storage\";\n// notification\nimport { useSnackbar } from \"notistack\";\n// ----------------------------------------------------------------------\n\nexport default function LoginForm() {\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const [refs] = useState({\n ip: createRef(),\n port: createRef(),\n email: createRef(),\n password: createRef(),\n });\n const navigate = useNavigate();\n const [showPassword, setShowPassword] = useState(false);\n const [server, setServer] = useState(\"\");\n const [ip] = useState(\"\");\n const [port] = useState(\"\");\n const [email] = useState(\"\");\n const [password] = useState(\"\");\n const handleChange = (event) => {\n setServer(event.target.value);\n if (event.target.value === \"Local\") {\n formik.setFieldValue(\"ip\", \"localhost\");\n formik.setFieldValue(\"port\", 9999);\n formik.setFieldValue(\"email\", \"user@localhost.here\");\n formik.setFieldValue(\"password\", \"pass\");\n } else if (event.target.value === \"Alpha\") {\n formik.setFieldValue(\"ip\", \"164.92.229.71\");\n formik.setFieldValue(\"port\", 9999);\n formik.setFieldValue(\"email\", \"user@localhost.here\");\n formik.setFieldValue(\"password\", \"pass\");\n }\n };\n const LoginSchema = Yup.object().shape({\n email: Yup.string()\n .email(\"Email must be a valid email address\")\n .required(\"Email is required\"),\n password: Yup.string().required(\"Password is required\"),\n ip: Yup.string().required(\"Host IP is required\"),\n port: Yup.number().required(\"Host Port is required\"),\n });\n\n const formik = useFormik({\n initialValues: {\n email: email,\n password: password,\n ip: ip,\n port: port,\n remember: true,\n },\n validationSchema: LoginSchema,\n onSubmit: () => {\n closeSnackbar();\n enqueueSnackbar(\"Connecting...\", {\n variant: \"info\",\n persist: true,\n });\n // get the server info\n var server = formik.values.ip;\n var port = formik.values.port;\n // generate websocket url\n var url = \"ws://\" + server + \":\" + port + \"/etp\";\n console.log(url);\n const socket = new WebSocket(url, \"energistics-tp\", server, {\n \"etp-encoding\": \"binary\",\n Authorization:\n \"Basic \" + new Buffer.alloc(64, \"user:pass\").toString(\"base64\"),\n });\n //----------------------------------\n socket.onopen = function (evt) {\n closeSnackbar();\n // store the server info to local storage\n storage.saveToLS(\"server\", {\n ip: server,\n port: port,\n url: url,\n });\n enqueueSnackbar(\"Connected to the server successfully\", {\n variant: \"success\",\n autoHideDuration: 3000,\n });\n socket.close();\n // redirect to /app/main after 3 seconds\n setTimeout(() => {\n navigate(\"/app/wells\", { replace: true });\n }, 1000);\n };\n //---------------------------------\n socket.onerror = function (evt) {\n closeSnackbar();\n enqueueSnackbar(\"Error connecting to the server\", {\n variant: \"error\",\n persist: true,\n });\n };\n return false;\n },\n });\n\n const { errors, touched, values, isSubmitting, handleSubmit, getFieldProps } =\n formik;\n\n const handleShowPassword = () => {\n setShowPassword((show) => !show);\n };\n\n return (\n \n \n \n \n Server\n \n Local\n Alpha On Digital Ocean\n Alger\n Hassi messaoud\n hassi r'mel\n Skikda\n \n \n\n \n \n \n\n \n \n AND\n \n \n\n \n \n\n \n \n \n \n \n ),\n }}\n error={Boolean(touched.password && errors.password)}\n helperText={touched.password && errors.password}\n />\n \n\n \n \n }\n label=\"Remember me\"\n />\n\n \n Forgot password?\n \n \n\n \n Login\n \n \n \n );\n}\n","// material\nimport { styled } from \"@mui/material/styles\";\nimport { Card, Stack, Container, Typography } from \"@mui/material\";\n// components\nimport Page from \"../components/Page\";\nimport { LoginForm } from \"../components/authentication/login\";\n\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Page)(({ theme }) => ({\n background: \"url(/static/mock-images/covers/pgs.jpg) no-repeat center center\",\n height: \"100%\",\n backgroundSize: \"cover\",\n [theme.breakpoints.up(\"md\")]: {\n display: \"flex\",\n },\n}));\n\nconst SectionStyle = styled(Card)(({ theme }) => ({\n padding: \"2rem\",\n width: \"100%\",\n maxWidth: 464,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n background: \"rgba(255,255,255, 0.75)\",\n backdropFilter: \"blur(30px)\",\n}));\n\nconst ContentStyle = styled(\"div\")(({ theme }) => ({\n maxWidth: 480,\n margin: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n padding: theme.spacing(10 , 0),\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function Login() {\n return (\n \n \n \n \n \n \n Sign in to Alpha PGS\n \n \n Enter your details below.\n \n \n \n \n \n \n \n );\n}\n","import { replace } from 'lodash';\nimport numeral from 'numeral';\n\n// ----------------------------------------------------------------------\n\nexport function fCurrency(number) {\n return numeral(number).format(Number.isInteger(number) ? '$0,0' : '$0,0.00');\n}\n\nexport function fPercent(number) {\n return numeral(number / 100).format('0.0%');\n}\n\nexport function fNumber(number) {\n return numeral(number).format();\n}\n\nexport function fShortenNumber(number) {\n return replace(numeral(number).format('0.00a'), '.00', '');\n}\n\nexport function fData(number) {\n return numeral(number).format('0.0 b');\n}\n","import { Icon } from '@iconify/react';\nimport warningFilled from '@iconify/icons-ant-design/warning-filled';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Card, Typography } from '@mui/material';\n// utils\nimport { fShortenNumber } from '../../../utils/formatNumber';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Card)(({ theme }) => ({\n boxShadow: 'none',\n textAlign: 'center',\n padding: theme.spacing(5, 0),\n color: theme.palette.error.darker,\n backgroundColor: theme.palette.error.lighter\n}));\n\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\n margin: 'auto',\n display: 'flex',\n borderRadius: '50%',\n alignItems: 'center',\n width: theme.spacing(8),\n height: theme.spacing(8),\n justifyContent: 'center',\n marginBottom: theme.spacing(3),\n color: theme.palette.error.dark,\n backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.error.dark, 0)} 0%, ${alpha(\n theme.palette.error.dark,\n 0.24\n )} 100%)`\n}));\n\n// ----------------------------------------------------------------------\n\n\nexport default function AppBugReports(props) {\n return (\n \n \n \n \n {fShortenNumber(props.value)}\n \n Warnings and Alarms\n \n \n );\n}\n","// material\nimport { alpha, useTheme } from '@mui/material/styles';\nimport { GlobalStyles } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nexport function BaseOptionChartStyle() {\n const theme = useTheme();\n\n const background = {\n backdropFilter: 'blur(6px)',\n WebkitBackdropFilter: 'blur(6px)', // Fix on Mobile\n backgroundColor: alpha(theme.palette.background.default, 0.72)\n };\n\n return (\n \n );\n}\n\nexport default function BaseOptionChart() {\n const theme = useTheme();\n\n const LABEL_TOTAL = {\n show: true,\n label: 'Total',\n color: theme.palette.text.secondary,\n ...theme.typography.subtitle2\n };\n\n const LABEL_VALUE = {\n offsetY: 8,\n color: theme.palette.text.primary,\n ...theme.typography.h3\n };\n\n return {\n // Colors\n colors: [\n theme.palette.primary.main,\n theme.palette.chart.yellow[0],\n theme.palette.chart.blue[0],\n theme.palette.chart.violet[0],\n theme.palette.chart.green[0],\n theme.palette.chart.red[0]\n ],\n\n // Chart\n chart: {\n toolbar: { show: false },\n zoom: { enabled: false },\n // animations: { enabled: false },\n foreColor: theme.palette.text.disabled,\n fontFamily: theme.typography.fontFamily\n },\n\n // States\n states: {\n hover: {\n filter: {\n type: 'lighten',\n value: 0.04\n }\n },\n active: {\n filter: {\n type: 'darken',\n value: 0.88\n }\n }\n },\n\n // Fill\n fill: {\n opacity: 1,\n gradient: {\n type: 'vertical',\n shadeIntensity: 0,\n opacityFrom: 0.4,\n opacityTo: 0,\n stops: [0, 100]\n }\n },\n\n // Datalabels\n dataLabels: { enabled: false },\n\n // Stroke\n stroke: {\n width: 3,\n curve: 'smooth',\n lineCap: 'round'\n },\n\n // Grid\n grid: {\n strokeDashArray: 3,\n borderColor: theme.palette.divider\n },\n\n // Xaxis\n xaxis: {\n axisBorder: { show: false },\n axisTicks: { show: false }\n },\n\n // Markers\n markers: {\n size: 0,\n strokeColors: theme.palette.background.paper\n },\n\n // Tooltip\n tooltip: {\n x: {\n show: false\n }\n },\n\n // Legend\n legend: {\n show: true,\n fontSize: 13,\n position: 'top',\n horizontalAlign: 'right',\n markers: {\n radius: 12\n },\n fontWeight: 500,\n itemMargin: { horizontal: 12 },\n labels: {\n colors: theme.palette.text.primary\n }\n },\n\n // plotOptions\n plotOptions: {\n // Bar\n bar: {\n columnWidth: '28%',\n borderRadius: 4\n },\n // Pie + Donut\n pie: {\n donut: {\n labels: {\n show: true,\n value: LABEL_VALUE,\n total: LABEL_TOTAL\n }\n }\n },\n // Radialbar\n radialBar: {\n track: {\n strokeWidth: '100%',\n background: theme.palette.grey[500_16]\n },\n dataLabels: {\n value: LABEL_VALUE,\n total: LABEL_TOTAL\n }\n },\n // Radar\n radar: {\n polygons: {\n fill: { colors: ['transparent'] },\n strokeColors: theme.palette.divider,\n connectorColors: theme.palette.divider\n }\n },\n // polarArea\n polarArea: {\n rings: {\n strokeColor: theme.palette.divider\n },\n spokes: {\n connectorColors: theme.palette.divider\n }\n }\n },\n\n // Responsive\n responsive: [\n {\n // sm\n breakpoint: theme.breakpoints.values.sm,\n options: {\n plotOptions: { bar: { columnWidth: '40%' } }\n }\n },\n {\n // md\n breakpoint: theme.breakpoints.values.md,\n options: {\n plotOptions: { bar: { columnWidth: '32%' } }\n }\n }\n ]\n };\n}\n","import { merge } from 'lodash';\nimport ReactApexChart from 'react-apexcharts';\n// material\nimport { Box, Card, CardHeader } from '@mui/material';\n// utils\nimport { fNumber } from '../../../utils/formatNumber';\n//\nimport { BaseOptionChart } from '../../charts';\n\n// ----------------------------------------------------------------------\n\nconst CHART_DATA = [{ data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380] }];\n\nexport default function AppConversionRates() {\n const chartOptions = merge(BaseOptionChart(), {\n tooltip: {\n marker: { show: false },\n y: {\n formatter: (seriesName) => fNumber(seriesName),\n title: {\n formatter: (seriesName) => `#${seriesName}`\n }\n }\n },\n plotOptions: {\n bar: { horizontal: true, barHeight: '28%', borderRadius: 2 }\n },\n xaxis: {\n categories: [\n 'Italy',\n 'Japan',\n 'China',\n 'Canada',\n 'France',\n 'Germany',\n 'South Korea',\n 'Netherlands',\n 'United States',\n 'United Kingdom'\n ]\n }\n });\n\n return (\n \n \n \n \n \n \n );\n}\n","import { merge } from 'lodash';\nimport ReactApexChart from 'react-apexcharts';\n// material\nimport { useTheme, styled } from '@mui/material/styles';\nimport { Card, CardHeader } from '@mui/material';\n//\nimport { BaseOptionChart } from '../../charts';\n\n// ----------------------------------------------------------------------\n\nconst CHART_HEIGHT = 392;\nconst LEGEND_HEIGHT = 72;\n\nconst ChartWrapperStyle = styled('div')(({ theme }) => ({\n height: CHART_HEIGHT,\n marginTop: theme.spacing(2),\n '& .apexcharts-canvas svg': {\n height: CHART_HEIGHT\n },\n '& .apexcharts-canvas svg,.apexcharts-canvas foreignObject': {\n overflow: 'visible'\n },\n '& .apexcharts-legend': {\n height: LEGEND_HEIGHT,\n alignContent: 'center',\n position: 'relative !important',\n borderTop: `solid 1px ${theme.palette.divider}`,\n top: `calc(${CHART_HEIGHT - LEGEND_HEIGHT}px) !important`\n }\n}));\n\n// ----------------------------------------------------------------------\n\nconst CHART_DATA = [\n { name: 'Series 1', data: [80, 50, 30, 40, 100, 20] },\n { name: 'Series 2', data: [20, 30, 40, 80, 20, 80] },\n { name: 'Series 3', data: [44, 76, 78, 13, 43, 10] }\n];\n\nexport default function AppCurrentSubject() {\n const theme = useTheme();\n\n const chartOptions = merge(BaseOptionChart(), {\n stroke: { width: 2 },\n fill: { opacity: 0.48 },\n legend: { floating: true, horizontalAlign: 'center' },\n xaxis: {\n categories: ['English', 'History', 'Physics', 'Geography', 'Chinese', 'Math'],\n labels: {\n style: {\n colors: [\n theme.palette.text.secondary,\n theme.palette.text.secondary,\n theme.palette.text.secondary,\n theme.palette.text.secondary,\n theme.palette.text.secondary,\n theme.palette.text.secondary\n ]\n }\n }\n }\n });\n\n return (\n \n \n \n \n \n \n );\n}\n","import { merge } from 'lodash';\nimport ReactApexChart from 'react-apexcharts';\n// material\nimport { useTheme, styled } from '@mui/material/styles';\nimport { Card, CardHeader } from '@mui/material';\n// utils\nimport { fNumber } from '../../../utils/formatNumber';\n//\nimport { BaseOptionChart } from '../../charts';\n\n// ----------------------------------------------------------------------\n\nconst CHART_HEIGHT = 372;\nconst LEGEND_HEIGHT = 72;\n\nconst ChartWrapperStyle = styled('div')(({ theme }) => ({\n height: CHART_HEIGHT,\n marginTop: theme.spacing(5),\n '& .apexcharts-canvas svg': { height: CHART_HEIGHT },\n '& .apexcharts-canvas svg,.apexcharts-canvas foreignObject': {\n overflow: 'visible'\n },\n '& .apexcharts-legend': {\n height: LEGEND_HEIGHT,\n alignContent: 'center',\n position: 'relative !important',\n borderTop: `solid 1px ${theme.palette.divider}`,\n top: `calc(${CHART_HEIGHT - LEGEND_HEIGHT}px) !important`\n }\n}));\n\n// ----------------------------------------------------------------------\n\nconst CHART_DATA = [4344, 5435, 1443, 4443];\n\nexport default function AppCurrentVisits() {\n const theme = useTheme();\n\n const chartOptions = merge(BaseOptionChart(), {\n colors: [\n theme.palette.primary.main,\n theme.palette.info.main,\n theme.palette.warning.main,\n theme.palette.error.main\n ],\n labels: ['America', 'Asia', 'Europe', 'Africa'],\n stroke: { colors: [theme.palette.background.paper] },\n legend: { floating: true, horizontalAlign: 'center' },\n dataLabels: { enabled: true, dropShadow: { enabled: false } },\n tooltip: {\n fillSeriesColor: false,\n y: {\n formatter: (seriesName) => fNumber(seriesName),\n title: {\n formatter: (seriesName) => `#${seriesName}`\n }\n }\n },\n plotOptions: {\n pie: { donut: { labels: { show: false } } }\n }\n });\n\n return (\n \n \n \n \n \n \n );\n}\n","import { Icon } from '@iconify/react';\nimport pieChartFilled from '@iconify/icons-ant-design/pie-chart-filled';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Card, Typography } from '@mui/material';\n// utils\nimport { fShortenNumber } from '../../../utils/formatNumber';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Card)(({ theme }) => ({\n boxShadow: 'none',\n textAlign: 'center',\n padding: theme.spacing(5, 0),\n color: theme.palette.warning.darker,\n backgroundColor: theme.palette.warning.lighter\n}));\n\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\n margin: 'auto',\n display: 'flex',\n borderRadius: '50%',\n alignItems: 'center',\n width: theme.spacing(8),\n height: theme.spacing(8),\n justifyContent: 'center',\n marginBottom: theme.spacing(3),\n color: theme.palette.warning.dark,\n backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.warning.dark, 0)} 0%, ${alpha(\n theme.palette.warning.dark,\n 0.24\n )} 100%)`\n}));\n\n// ----------------------------------------------------------------------\n\nconst TOTAL = 17233150;\n\nexport default function AppItemOrders() {\n return (\n \n \n \n \n {fShortenNumber(TOTAL)}\n \n Volume of extracted Oil\n \n \n );\n}\n","// ----------------------------------------------------------------------\n\nexport const mockImgCover = (index) => `/static/mock-images/covers/cover_${index}.jpg`;\nexport const mockImgProduct = (index) => `/static/mock-images/products/product_${index}.jpg`;\nexport const mockImgAvatar = (index) => `/static/mock-images/avatars/avatar_${index}.jpg`;\n","import faker from 'faker';\nimport PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\nimport { formatDistance } from 'date-fns';\nimport { Link as RouterLink } from 'react-router-dom';\nimport arrowIosForwardFill from '@iconify/icons-eva/arrow-ios-forward-fill';\n// material\nimport { Box, Stack, Link, Card, Button, Divider, Typography, CardHeader } from '@mui/material';\n// utils\nimport { mockImgCover } from '../../../utils/mockImages';\n//\nimport Scrollbar from '../../Scrollbar';\n\n// ----------------------------------------------------------------------\n\nconst NEWS = [...Array(5)].map((_, index) => {\n const setIndex = index + 1;\n return {\n title: faker.name.title(),\n description: faker.lorem.paragraphs(),\n image: mockImgCover(setIndex),\n postedAt: faker.date.soon()\n };\n});\n\n// ----------------------------------------------------------------------\n\nNewsItem.propTypes = {\n news: PropTypes.object.isRequired\n};\n\nfunction NewsItem({ news }) {\n const { image, title, description, postedAt } = news;\n\n return (\n \n \n \n \n \n {title}\n \n \n \n {description}\n \n \n \n {formatDistance(postedAt, new Date())}\n \n \n );\n}\n\nexport default function AppNewsUpdate() {\n return (\n \n \n\n \n \n {NEWS.map((news) => (\n \n ))}\n \n \n\n \n\n \n }\n >\n View all\n \n \n \n );\n}\n","import { Icon } from '@iconify/react';\nimport dashboardFilled from '@iconify/icons-ant-design/dashboard-filled';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Card, Typography } from '@mui/material';\n// utils\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Card)(({ theme }) => ({\n boxShadow: 'none',\n textAlign: 'center',\n padding: theme.spacing(5, 0),\n color: theme.palette.info.darker,\n backgroundColor: theme.palette.info.lighter\n}));\n\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\n margin: 'auto',\n display: 'flex',\n borderRadius: '50%',\n alignItems: 'center',\n width: theme.spacing(8),\n height: theme.spacing(8),\n justifyContent: 'center',\n marginBottom: theme.spacing(3),\n color: theme.palette.info.dark,\n backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.info.dark, 0)} 0%, ${alpha(\n theme.palette.info.dark,\n 0.24\n )} 100%)`\n}));\n\n// ----------------------------------------------------------------------\n\nconst TOTAL = 'Good';\n\nexport default function AppNewUsers() {\n return (\n \n \n \n \n {TOTAL}\n \n Server status\n \n \n );\n}\n","import faker from 'faker';\nimport PropTypes from 'prop-types';\n// material\nimport { Card, Typography, CardHeader, CardContent } from '@mui/material';\nimport {\n Timeline,\n TimelineItem,\n TimelineContent,\n TimelineConnector,\n TimelineSeparator,\n TimelineDot\n} from '@mui/lab';\n// utils\nimport { fDateTime } from '../../../utils/formatTime';\n\n// ----------------------------------------------------------------------\n\nconst TIMELINES = [\n {\n title: '1983, orders, $4220',\n time: faker.date.past(),\n type: 'order1'\n },\n {\n title: '12 Invoices have been paid',\n time: faker.date.past(),\n type: 'order2'\n },\n {\n title: 'Order #37745 from September',\n time: faker.date.past(),\n type: 'order3'\n },\n {\n title: 'New order placed #XF-2356',\n time: faker.date.past(),\n type: 'order4'\n },\n {\n title: 'New order placed #XF-2346',\n time: faker.date.past(),\n type: 'order5'\n }\n];\n\n// ----------------------------------------------------------------------\n\nOrderItem.propTypes = {\n item: PropTypes.object,\n isLast: PropTypes.bool\n};\n\nfunction OrderItem({ item, isLast }) {\n const { type, title, time } = item;\n return (\n \n \n \n {isLast ? null : }\n \n \n {title}\n \n {fDateTime(time)}\n \n \n \n );\n}\n\nexport default function AppOrderTimeline() {\n return (\n \n \n \n \n {TIMELINES.map((item, index) => (\n \n ))}\n \n \n \n );\n}\n","import { format, formatDistanceToNow } from 'date-fns';\n\n// ----------------------------------------------------------------------\n\nexport function fDate(date) {\n return format(new Date(date), 'dd MMMM yyyy');\n}\n\nexport function fDateTime(date) {\n return format(new Date(date), 'dd MMM yyyy HH:mm');\n}\n\nexport function fDateTimeSuffix(date) {\n return format(new Date(date), 'dd/MM/yyyy hh:mm p');\n}\n\nexport function fToNow(date) {\n return formatDistanceToNow(new Date(date), {\n addSuffix: true\n });\n}\n","import PropTypes from 'prop-types';\nimport { Form, FormikProvider, useFormik } from 'formik';\n// material\nimport {\n Box,\n Card,\n Checkbox,\n CardHeader,\n Typography,\n FormControlLabel,\n Stack\n} from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst TASKS = [\n 'Create FireStone Logo',\n 'Add SCSS and JS files if required',\n 'Stakeholder Meeting',\n 'Scoping & Estimations',\n 'Sprint Showcase'\n];\n\n// ----------------------------------------------------------------------\n\nTaskItem.propTypes = {\n task: PropTypes.string,\n checked: PropTypes.bool,\n formik: PropTypes.object\n};\n\nfunction TaskItem({ task, checked, formik, ...other }) {\n const { getFieldProps } = formik;\n\n return (\n \n \n }\n label={\n \n {task}\n \n }\n />\n \n );\n}\n\nexport default function AppTasks() {\n const formik = useFormik({\n initialValues: {\n checked: [TASKS[2]]\n },\n onSubmit: (values) => {\n console.log(values);\n }\n });\n\n const { values, handleSubmit } = formik;\n\n return (\n \n \n \n \n \n {TASKS.map((task) => (\n \n ))}\n \n \n \n \n );\n}\n","import faker from 'faker';\nimport PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\nimport googleFill from '@iconify/icons-eva/google-fill';\nimport twitterFill from '@iconify/icons-eva/twitter-fill';\nimport facebookFill from '@iconify/icons-eva/facebook-fill';\nimport linkedinFill from '@iconify/icons-eva/linkedin-fill';\n// material\nimport { Box, Grid, Card, Paper, Typography, CardHeader, CardContent } from '@mui/material';\n// utils\nimport { fShortenNumber } from '../../../utils/formatNumber';\n\n// ----------------------------------------------------------------------\n\nconst SOCIALS = [\n {\n name: 'FaceBook',\n value: faker.datatype.number(),\n icon: \n },\n {\n name: 'Google',\n value: faker.datatype.number(),\n icon: \n },\n {\n name: 'Linkedin',\n value: faker.datatype.number(),\n icon: \n },\n {\n name: 'Twitter',\n value: faker.datatype.number(),\n icon: \n }\n];\n\n// ----------------------------------------------------------------------\n\nSiteItem.propTypes = {\n site: PropTypes.object\n};\n\nfunction SiteItem({ site }) {\n const { icon, value, name } = site;\n\n return (\n \n \n {icon}\n {fShortenNumber(value)}\n \n {name}\n \n \n \n );\n}\n\nexport default function AppTrafficBySite() {\n return (\n \n \n \n \n {SOCIALS.map((site) => (\n \n ))}\n \n \n \n );\n}\n","import { merge } from 'lodash';\nimport ReactApexChart from 'react-apexcharts';\n// material\nimport { Card, CardHeader, Box } from '@mui/material';\n//\nimport { BaseOptionChart } from '../../charts';\n\n// ----------------------------------------------------------------------\n\nconst CHART_DATA = [\n {\n name: 'Team A',\n type: 'column',\n data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30]\n },\n {\n name: 'Team B',\n type: 'area',\n data: [44, 55, 41, 67, 22, 43, 21, 41, 56, 27, 43]\n },\n {\n name: 'Team C',\n type: 'line',\n data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39]\n }\n];\n\nexport default function AppWebsiteVisits() {\n const chartOptions = merge(BaseOptionChart(), {\n stroke: { width: [0, 2, 3] },\n plotOptions: { bar: { columnWidth: '11%', borderRadius: 4 } },\n fill: { type: ['solid', 'gradient', 'solid'] },\n labels: [\n '01/01/2003',\n '02/01/2003',\n '03/01/2003',\n '04/01/2003',\n '05/01/2003',\n '06/01/2003',\n '07/01/2003',\n '08/01/2003',\n '09/01/2003',\n '10/01/2003',\n '11/01/2003'\n ],\n xaxis: { type: 'datetime' },\n tooltip: {\n shared: true,\n intersect: false,\n y: {\n formatter: (y) => {\n if (typeof y !== 'undefined') {\n return `${y.toFixed(0)} visits`;\n }\n return y;\n }\n }\n }\n });\n\n return (\n \n \n \n \n \n \n );\n}\n","import { Icon } from '@iconify/react';\nimport fireFilled from '@iconify/icons-ant-design/fire-filled';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Card, Typography } from '@mui/material';\n// utils\nimport { fShortenNumber } from '../../../utils/formatNumber';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Card)(({ theme }) => ({\n boxShadow: 'none',\n textAlign: 'center',\n padding: theme.spacing(5, 0),\n color: theme.palette.primary.darker,\n backgroundColor: theme.palette.primary.lighter\n}));\n\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\n margin: 'auto',\n display: 'flex',\n borderRadius: '50%',\n alignItems: 'center',\n width: theme.spacing(8),\n height: theme.spacing(8),\n justifyContent: 'center',\n marginBottom: theme.spacing(3),\n color: theme.palette.primary.dark,\n backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.primary.dark, 0)} 0%, ${alpha(\n theme.palette.primary.dark,\n 0.24\n )} 100%)`\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function AppWellsNumber(props) {\n return (\n \n \n \n \n {fShortenNumber(props.value)}\n \n Number of wells\n \n \n );\n}\n","// react stuff\n// import { useState, useEffect } from \"react\";\n// material\nimport { Box } from \"@mui/material\";\nimport PropTypes from \"prop-types\";\nimport { styled } from \"@mui/material/styles\";\nimport TreeView from \"@mui/lab/TreeView\";\nimport TreeItem, { treeItemClasses } from \"@mui/lab/TreeItem\";\nimport Typography from \"@mui/material/Typography\";\nimport InfoIcon from \"@mui/icons-material/Info\";\nimport WhatshotIcon from \"@mui/icons-material/Whatshot\";\nimport ArrowDropDownIcon from \"@mui/icons-material/ArrowDropDown\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\n\n// sticky\nimport Sticky from \"react-sticky-el\";\n// ----------------------------------------------------------------------\nconst StyledTreeItemRoot = styled(TreeItem)(({ theme }) => ({\n color: theme.palette.text.secondary,\n [`& .${treeItemClasses.content}`]: {\n color: theme.palette.text.secondary,\n borderRadius: theme.spacing(1),\n // borderTopRightRadius: theme.spacing(2),\n // borderBottomRightRadius: theme.spacing(2),\n paddingRight: theme.spacing(1),\n fontWeight: theme.typography.fontWeightMedium,\n \"&.Mui-expanded\": {\n fontWeight: theme.typography.fontWeightRegular,\n },\n \"&:hover\": {\n backgroundColor: theme.palette.action.hover,\n },\n \"&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused\": {\n backgroundColor: `var(--tree-view-bg-color, ${theme.palette.action.selected})`,\n color: \"var(--tree-view-color)\",\n },\n [`& .${treeItemClasses.label}`]: {\n fontWeight: \"inherit\",\n color: \"inherit\",\n },\n },\n [`& .${treeItemClasses.group}`]: {\n marginLeft: 0,\n [`& .${treeItemClasses.content}`]: {\n paddingLeft: theme.spacing(2),\n },\n },\n}));\n\nfunction StyledTreeItem(props) {\n const {\n bgColor,\n color,\n labelIcon: LabelIcon,\n labelInfo,\n labelText,\n ...other\n } = props;\n\n return (\n \n \n \n {labelText}\n \n \n {labelInfo}\n \n \n }\n style={{\n \"--tree-view-color\": color,\n \"--tree-view-bg-color\": bgColor,\n }}\n {...other}\n />\n );\n}\n\nStyledTreeItem.propTypes = {\n bgColor: PropTypes.string,\n color: PropTypes.string,\n labelIcon: PropTypes.elementType.isRequired,\n labelInfo: PropTypes.string,\n labelText: PropTypes.string.isRequired,\n};\n\nconst colorAndBackgroundColorGenerator = (index) => {\n // a list of none repeating colors that we can use to color our tree items\n const plate = [\n [\"#e3742f\", \"#fcefe3\"],\n [\"#1a73e8\", \"#e8f0fe\"],\n [\"#a250f5\", \"#f3e8fd\"],\n [\"#3c8039\", \"#e6f4ea\"],\n ];\n const color = plate[index % plate.length][0];\n const bgColor = plate[index % plate.length][1];\n return { color, bgColor };\n};\n\nexport default function AppWellsTreeMap(props) {\n //set a counter to count the wells and wellbores\n let counter = 0;\n return (\n \n }\n defaultExpandIcon={}\n defaultEndIcon={}\n sx={{ flexGrow: 1, maxWidth: 400, overflowY: \"auto\" }}\n >\n {Object.entries(props.data).map(([well_key, well], index) => {\n const { color, bgColor } = colorAndBackgroundColorGenerator(index);\n const number_of_wellbores = Object.entries(well.wellbores).length;\n const wellbore_number_label =\n number_of_wellbores > 1 ? \"wellbores\" : \"wellbore\";\n return (\n {\n props.selectData({\n well: well.uri,\n wellbore: null,\n });\n }}\n >\n {Object.entries(well.wellbores).map(\n ([wellbore_key, wellbore], index) => {\n return (\n {\n props.selectData({\n well: well.uri,\n wellbore: wellbore.uri,\n });\n }}\n />\n );\n }\n )}\n \n );\n })}\n \n \n );\n}\n","// material\nimport { Card, Typography, CardHeader, CardContent } from \"@mui/material\";\n// utils\n// ----------------------------------------------------------------------\n\nexport default function AppWellTrackerInfo() {\n return (\n \n \n \n \n \n body1. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos\n blanditiis tenetur unde suscipit, quam beatae rerum inventore\n consectetur, neque doloribus, cupiditate numquam dignissimos laborum\n fugiat deleniti? Eum quasi quidem quibusdam.\n \n \n Do thing number one\n Do thing number two\n Do thing number three\n \n \n \n );\n}\n","// material\nimport { Card, Typography, CardHeader, CardContent } from \"@mui/material\";\n// utils\n// ----------------------------------------------------------------------\n\nexport default function AppWellDetails(props) {\n const well = props.well;\n // loop over the well attributes and display them\n return (\n \n \n \n {Object.keys(well).map((key, index) => {\n if (key === \"WellDatum\") {\n return \"\";\n }\n return (\n \n {key}: {well[key] ? well[key] : \"N/A\"}\n \n );\n })}\n \n \n );\n}\n","// react\nimport React from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n// material\nimport Switch from \"@mui/material/Switch\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Paper from \"@mui/material/Paper\";\nimport {\n Card,\n Typography,\n CardHeader,\n CardContent,\n TextField,\n} from \"@mui/material\";\nimport { LoadingButton } from \"@mui/lab\";\n// utils\n// storage\nimport * as storage from \"../../../utils/storage\";\n// ----------------------------------------------------------------------\n\nfunction processChannels(data) {\n if (data === {}) {\n return {};\n }\n // for key value pairs in data\n let channels = Object.keys(data).map((key) => {\n return {\n id: key,\n name: data[key].name,\n allowStream: true,\n minVal: -1,\n maxVal: -1,\n };\n });\n return channels;\n}\n\nexport default function AppWellboreDataSelection(props) {\n const [rows, setRows] = React.useState(processChannels(props.data));\n const [showTrajectory, setShowTrajectory] = React.useState(\n props.showTraj.value\n );\n const [trajectory, setTrajectory] = React.useState({\n streaming: false,\n history: false,\n });\n React.useEffect(() => {\n setRows(processChannels(props.data));\n setShowTrajectory(props.showTraj.value);\n }, [props]);\n\n const navigate = useNavigate();\n return (\n \n \n \n Log data\n {rows === {} ||\n rows === undefined ||\n rows === null ||\n rows.length === 0 ? (\n \n No data is not available for this wellbore.\n \n ) : (\n \n \n \n \n Channel\n Streaming\n Min value\n Max value\n \n \n \n {Object.keys(rows).map((key) => (\n \n \n {rows[key].name}\n \n \n {\n setRows((prevState) => {\n return {\n ...prevState,\n [key]: {\n ...prevState[key],\n allowStream: !prevState[key].allowStream,\n },\n };\n });\n }}\n />\n \n \n {\n setRows((prevState) => {\n return {\n ...prevState,\n [key]: {\n ...prevState[key],\n minVal: e.target.value,\n },\n };\n });\n }}\n />\n \n \n {\n setRows((prevState) => {\n return {\n ...prevState,\n [key]: {\n ...prevState[key],\n maxVal: e.target.value,\n },\n };\n });\n }}\n />\n \n \n ))}\n \n \n \n )}\n \n Trajectory data\n {showTrajectory ? (\n \n \n \n \n Channel\n Streaming\n \n \n \n \n \n Trajectory\n \n \n {\n setTrajectory({\n ...trajectory,\n streaming: e.target.checked,\n });\n }}\n />\n \n \n \n \n \n ) : (\n \n Trajectory data is not available for this wellbore.\n \n )}\n \n {\n // save the rows and trajectory data to the store\n storage.saveToLS(\"streaming-config\", {\n channels: rows,\n trajectory: trajectory,\n })\n // redirect to /app/monitor\n navigate(\"/app/monitor\");\n }}\n >\n Go to monitoring board\n \n \n \n );\n}\n","// material\nimport {\n Stack,\n Card,\n CardHeader,\n CardContent,\n TextField,\n} from \"@mui/material\";\nimport { LoadingButton } from \"@mui/lab\";\n// utils\n// ----------------------------------------------------------------------\n\nexport default function AppFormatConverterSettings() {\n return (\n \n \n \n \n \n \n \n \n \n Process the files\n \n \n \n );\n}\n","// react\nimport { useState, useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n// material\nimport { Box, Grid, Container, Typography } from \"@mui/material\";\n// components\nimport Page from \"../components/Page\";\nimport {\n AppTasks,\n AppNewUsers,\n AppBugReports,\n AppItemOrders,\n AppNewsUpdate,\n AppWellsNumber,\n AppOrderTimeline,\n AppCurrentVisits,\n AppWebsiteVisits,\n AppTrafficBySite,\n AppCurrentSubject,\n AppConversionRates,\n} from \"../components/_dashboard/app\";\n// storage\nimport * as storage from \"../utils/storage\";\n// notification\nimport { useSnackbar } from \"notistack\";\n// etp\n// import etp from \"etp\";\nimport { Buffer } from \"buffer\";\nimport * as etp_tools from \"../utils/etp_tools\";\n// ----------------------------------------------------------------------\n\nexport default function DashboardApp() {\n const navigate = useNavigate();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const [wellNumber, setWellNumber] = useState(0);\n const [ resources, setResources ] = useState({});\n useEffect(() => {\n enqueueSnackbar(\"Loading...\", {\n variant: \"info\",\n persist: true,\n preventDuplicate: true,\n });\n const server = storage.getFromLS(\"server\");\n // console.log(\"server\", storage.getFromLS(\"server\"));\n const etpHandler = (socket, msg_header, msg_message) => {\n // console.log(\"msg_header\", msg_header);\n // console.log(\"msg_message\", msg_message);\n if (msg_header.protocol === 3) {\n if (msg_header.messageType === 2) {\n var recource_name = msg_message.resource.name;\n resources[recource_name] = msg_message.resource;\n // add resource to resources\n setResources({\n resources\n });\n if (msg_header.messageFlags === 3) {\n // console.log(\"well number\", resources.Well);\n setWellNumber(resources.Well.hasChildren);\n storage.saveToLS(\"resources\", resources);\n closeSnackbar();\n }\n }\n }\n };\n if (server.url) {\n const socket = new WebSocket(server.url, \"energistics-tp\", server.ip, {\n \"etp-encoding\": \"binary\",\n Authorization:\n \"Basic \" + new Buffer.alloc(64, \"user:pass\").toString(\"base64\"),\n });\n socket.onerror = function (msg) {\n enqueueSnackbar(\"Error connecting to the server\", {\n variant: \"error\",\n });\n navigate(\"/login\", { replace: true });\n };\n socket.onclose = function (msg) {\n enqueueSnackbar(\"Connection closed\", {\n variant: \"error\",\n });\n navigate(\"/login\", { replace: true });\n };\n socket.onopen = function (msg) {\n enqueueSnackbar(\"Wellcome Michael. You are connected to: \" + server.ip, {\n autoHideDuration: 1500,\n preventDuplicate: true,\n });\n etp_tools.sendRequestSession(socket);\n etp_tools.sendGetRessource(socket, \"eml://witsml20\");\n };\n socket.onmessage = function (msg) {\n etp_tools.parseMsg(socket, msg, etpHandler)\n };\n } else {\n enqueueSnackbar(\"Server not found\", {\n variant: \"error\",\n });\n navigate(\"/login\", { replace: true });\n }\n }, []);\n\n return (\n \n \n \n Hi, Welcome back\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n );\n}\n","// ----------------------------------------------------------------------\n\nexport const varWrapEnter = {\n animate: {\n transition: { staggerChildren: 0.1 }\n }\n};\n\nexport const varWrapExit = {\n exit: {\n transition: { staggerChildren: 0.1 }\n }\n};\n\nexport const varWrapBoth = {\n animate: {\n transition: { staggerChildren: 0.07, delayChildren: 0.1 }\n },\n exit: {\n transition: { staggerChildren: 0.05, staggerDirection: -1 }\n }\n};\n","import {\n varBounceOut,\n varBounceOutUp,\n varBounceOutDown,\n varBounceOutLeft,\n varBounceOutRight\n} from './BounceOut';\n\n// ----------------------------------------------------------------------\n\nconst TRANSITION_ENTER = {\n duration: 0.72,\n ease: [0.43, 0.13, 0.23, 0.96]\n};\n\nconst TRANSITION_EXIT = {\n duration: 0.48,\n ease: [0.43, 0.13, 0.23, 0.96]\n};\n\nexport const varBounceIn = {\n animate: {\n scale: [0.3, 1.1, 0.9, 1.03, 0.97, 1],\n opacity: [0, 1, 1, 1, 1, 1],\n transition: TRANSITION_ENTER\n },\n exit: varBounceOut.animate\n};\n\nexport const varBounceInUp = {\n animate: {\n y: [720, -24, 12, -4, 0],\n scaleY: [4, 0.9, 0.95, 0.985, 1],\n opacity: [0, 1, 1, 1, 1],\n transition: { ...TRANSITION_ENTER }\n },\n exit: { ...varBounceOutDown.animate, transition: TRANSITION_EXIT }\n};\n\nexport const varBounceInDown = {\n animate: {\n y: [-720, 24, -12, 4, 0],\n scaleY: [4, 0.9, 0.95, 0.985, 1],\n opacity: [0, 1, 1, 1, 1],\n transition: TRANSITION_ENTER\n },\n exit: { ...varBounceOutUp.animate, transition: TRANSITION_EXIT }\n};\n\nexport const varBounceInLeft = {\n animate: {\n x: [-720, 24, -12, 4, 0],\n scaleX: [3, 1, 0.98, 0.995, 1],\n opacity: [0, 1, 1, 1, 1],\n transition: TRANSITION_ENTER\n },\n exit: { ...varBounceOutLeft.animate, transition: TRANSITION_EXIT }\n};\n\nexport const varBounceInRight = {\n animate: {\n x: [720, -24, 12, -4, 0],\n scaleX: [3, 1, 0.98, 0.995, 1],\n opacity: [0, 1, 1, 1, 1],\n transition: TRANSITION_ENTER\n },\n exit: { ...varBounceOutRight.animate, transition: TRANSITION_EXIT }\n};\n","// ----------------------------------------------------------------------\n\nexport const varBounceOut = {\n animate: {\n scale: [0.9, 1.1, 0.3],\n opacity: [1, 1, 0]\n }\n};\n\nexport const varBounceOutUp = {\n animate: {\n y: [-12, 24, -720],\n scaleY: [0.985, 0.9, 3],\n opacity: [1, 1, 0]\n }\n};\n\nexport const varBounceOutDown = {\n animate: {\n y: [12, -24, 720],\n scaleY: [0.985, 0.9, 3],\n opacity: [1, 1, 0]\n }\n};\n\nexport const varBounceOutLeft = {\n animate: {\n x: [0, 24, -720],\n scaleX: [1, 0.9, 2],\n opacity: [1, 1, 0]\n }\n};\n\nexport const varBounceOutRight = {\n animate: {\n x: [0, -24, 720],\n scaleX: [1, 0.9, 2],\n opacity: [1, 1, 0]\n }\n};\n","import PropTypes from 'prop-types';\nimport { motion } from 'framer-motion';\n// material\nimport { Box } from '@mui/material';\n//\nimport { varWrapEnter } from './variants';\n\n// ----------------------------------------------------------------------\n\nMotionContainer.propTypes = {\n open: PropTypes.bool.isRequired,\n children: PropTypes.node\n};\n\nexport default function MotionContainer({ open, children, ...other }) {\n return (\n \n {children}\n \n );\n}\n","import { motion } from 'framer-motion';\nimport { Link as RouterLink } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\nimport { Box, Button, Typography, Container } from '@mui/material';\n// components\nimport { MotionContainer, varBounceIn } from '../components/animate';\nimport Page from '../components/Page';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Page)(({ theme }) => ({\n display: 'flex',\n minHeight: '100%',\n alignItems: 'center',\n paddingTop: theme.spacing(15),\n paddingBottom: theme.spacing(10)\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function Page404() {\n return (\n \n \n \n \n \n \n Sorry, page not found!\n \n \n \n Sorry, we couldn’t find the page you’re looking for. Perhaps you’ve mistyped the URL?\n Be sure to check your spelling.\n \n\n \n \n \n\n \n Go to Home\n \n \n \n \n \n );\n}\n","import React, { useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Card, CardHeader, CardContent } from \"@mui/material\";\n// css file\nimport \"../assets/css/drop-file-input.css\";\n\nconst ImageConfig = {\n default: \"/static/icons/file_blank.png\",\n pdf: \"/static/icons/file_css.png\",\n png: \"/static/icons/file_pdf.png\",\n css: \"/static/icons/file_png.png\",\n};\n\nconst DropFileInput = (props) => {\n const wrapperRef = useRef(null);\n\n const [fileList, setFileList] = useState([]);\n\n const onDragEnter = () => wrapperRef.current.classList.add(\"dragover\");\n\n const onDragLeave = () => wrapperRef.current.classList.remove(\"dragover\");\n\n const onDrop = () => wrapperRef.current.classList.remove(\"dragover\");\n\n const onFileDrop = (e) => {\n const newFile = e.target.files[0];\n if (newFile) {\n const updatedList = [...fileList, newFile];\n setFileList(updatedList);\n props.onFileChange(updatedList);\n }\n };\n\n const fileRemove = (file) => {\n const updatedList = [...fileList];\n updatedList.splice(fileList.indexOf(file), 1);\n setFileList(updatedList);\n props.onFileChange(updatedList);\n };\n\n return (\n \n \n \n \n \n \n Drag & Drop your files here\n \n \n \n {\n fileList.length > 0 ? (\n \n \n Ready to upload\n \n {\n fileList.map((item, index) => (\n \n \n \n {item.name}\n {item.size}B\n \n fileRemove(item)}>x\n \n ))\n }\n \n ) : null\n }\n \n \n );\n};\n\nDropFileInput.propTypes = {\n onFileChange: PropTypes.func,\n};\n\nexport default DropFileInput;\n","// material\nimport { Box, Grid, Container, Typography } from \"@mui/material\";\n// components\nimport Page from \"../components/Page\";\nimport {\n AppWellTrackerInfo,\n AppFormatConverterSettings,\n} from \"../components/_dashboard/app\";\nimport DropFileInput from \"../components/DropFileInput\";\n// ----------------------------------------------------------------------\nconst onFileChange = (files) => {\n // console.log(files);\n};\nexport default function FormatConverter() {\n return (\n \n \n \n Track your wells\n \n \n \n \n \n \n onFileChange(files)} />\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","// react stuff\nimport { useState, useEffect, useRef } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n// material\nimport { Box, Grid, Container, Typography, Button } from \"@mui/material\";\n// components\nimport Page from \"../components/Page\";\nimport {\n AppWellTrackerInfo,\n AppWellsTreeMap,\n AppWellDetails,\n AppWellboreDataSelection,\n} from \"../components/_dashboard/app\";\n// storage\nimport * as storage from \"../utils/storage\";\n// notification\nimport { useSnackbar } from \"notistack\";\n// etp\n// import etp from \"etp\";\nimport { Buffer } from \"buffer\";\nimport * as etp_tools from \"../utils/etp_tools\";\n// xml to json\nimport { convertXML } from \"simple-xml-to-json\";\n//----------------------------------------------------------------------\nexport default function WellTracker() {\n const navigate = useNavigate();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const [selectedObjects, setSelectedObject] = useState({});\n const [channelInfos, setChannelInfos] = useState({});\n const [wells, setWells] = useState({});\n const [wellInfoTitle, setWellInfoTitle] = useState(\n \"Select a well to show its details\"\n );\n const [loadingComplete, setLoadingComplete] = useState({});\n const [showContent, setShowContent] = useState(false);\n const [showTrajectory, setShowTrajectory] = useState({ value: false });\n const [wellInfo, setWellInfo] = useState({});\n const getShowableData = (json) => {\n const well = json.Well.children;\n var data = {};\n // loop through the well data\n for (var i = 0; i < well.length; i++) {\n // loop through the attributes of the well\n for (var key in well[i]) {\n if (well[i][key].content) {\n data[key] = well[i][key].content;\n }\n }\n }\n return data;\n };\n const etpHandler = (socket, msg_header, msg_message) => {\n if (msg_header.protocol === 3) {\n if (msg_header.messageType === 2) {\n //------------------------------------------------------------------------------------------------------\n if (msg_message.resource.resourceType === \"Folder\") {\n if (\n msg_message.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=Wellbore\"\n ) {\n // get the first 58 character from the wellbore uri\n const well_uri = msg_message.resource.uri.substring(0, 57);\n // check if well[well_uri] does not exists or does not have attribute \"Wellbores\"\n if (!wells[well_uri]) {\n wells[well_uri] = {};\n wells[well_uri].wellbores = {};\n } else {\n if (!wells[well_uri].wellbores) {\n wells[well_uri].wellbores = {};\n }\n }\n if (msg_message.resource.hasChildren > 0) {\n etp_tools.sendGetRessource(socket, msg_message.resource.uri);\n } else {\n loadingComplete.waitingWells = loadingComplete.waitingWells - 1;\n setLoadingComplete(loadingComplete);\n }\n }\n //log------------------------------------------------------------------------------------------------------\n if (\n msg_message.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=Log\"\n ) {\n if (msg_message.resource.hasChildren > 0) {\n etp_tools.sendGetRessource(socket, msg_message.resource.uri);\n enqueueSnackbar(\"Loading...\", {\n variant: \"info\",\n persist: true,\n preventDuplicate: true,\n });\n } else {\n setChannelInfos({});\n loadingComplete.totalChannels = -1;\n setLoadingComplete(loadingComplete);\n closeSnackbar();\n enqueueSnackbar(\"No channels to be loaded\", {\n duration: 1500,\n preventDuplicate: true,\n });\n }\n }\n //channelset------------------------------------------------------------------------------------------------------\n if (\n msg_message.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=ChannelSet\"\n ) {\n if (msg_message.resource.hasChildren > 0) {\n etp_tools.sendGetRessource(socket, msg_message.resource.uri);\n } else {\n setChannelInfos({});\n loadingComplete.totalChannels = -1;\n setLoadingComplete(loadingComplete);\n closeSnackbar();\n enqueueSnackbar(\"No channels to be loaded\", {\n duration: 1500,\n preventDuplicate: true,\n });\n }\n }\n // trajectory------------------------------------------------------------------------------------------------------\n if (\n msg_message.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=Trajectory\"\n ) {\n if (\n !wells[selectedObjects.well].wellbores[selectedObjects.wellbore]\n .trajectories\n ) {\n wells[selectedObjects.well].wellbores[\n selectedObjects.wellbore\n ].trajectories = {};\n }\n if (msg_message.resource.hasChildren > 0) {\n etp_tools.sendGetRessource(socket, msg_message.resource.uri);\n setShowTrajectory({ value: true });\n }\n }\n }\n // channel------------------------------------------------------------------------------------------------------\n if (\n msg_message.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=Channel\"\n ) {\n if (\n !wells[selectedObjects.well].wellbores[selectedObjects.wellbore]\n .channels\n ) {\n wells[selectedObjects.well].wellbores[\n selectedObjects.wellbore\n ].channels = {};\n }\n if (msg_message.resource.hasChildren > 0) {\n if (loadingComplete.totalChannels) {\n loadingComplete.totalChannels =\n loadingComplete.totalChannels +\n msg_message.resource.hasChildren;\n } else {\n loadingComplete.totalChannels = msg_message.resource.hasChildren;\n }\n setLoadingComplete(loadingComplete);\n etp_tools.sendGetRessource(socket, msg_message.resource.uri);\n }\n }\n }\n //------------------------------------------------------------------------------------------------------\n if (msg_message.resource.resourceType === \"DataObject\") {\n if (\n msg_message.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=Well\"\n ) {\n // adding the well to wells state\n wells[msg_message.resource.uri] = msg_message.resource;\n setWells(wells);\n // check if loadingComplete has attribute waitingWells\n if (loadingComplete.waitingWells) {\n loadingComplete.waitingWells = loadingComplete.waitingWells + 1;\n } else {\n loadingComplete.waitingWells = 1;\n }\n if (msg_header.messageFlags === 3) {\n loadingComplete.wells = true;\n }\n setLoadingComplete(loadingComplete);\n etp_tools.sendGetRessource(socket, msg_message.resource.uri);\n }\n //------------------------------------------------------------------------------------------------------\n if (\n msg_message.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=Wellbore\"\n ) {\n // get the first 58 character from the wellbore uri\n const well_uri = msg_message.resource.uri.substring(0, 57);\n // add the wellbore to the well[well_uri]\n wells[well_uri].wellbores[msg_message.resource.uri] =\n msg_message.resource;\n setWells(wells);\n storage.saveToLS(\"wells\", wells);\n if (msg_header.messageFlags === 3) {\n loadingComplete.waitingWells = loadingComplete.waitingWells - 1;\n setLoadingComplete(loadingComplete);\n // ckeck if all wells are loaded and wells_finished is equal to 0\n if (\n loadingComplete.wells === true &&\n loadingComplete.waitingWells < 1\n ) {\n setShowContent(true);\n closeSnackbar();\n enqueueSnackbar(\n \"We have loaded \" + Object.keys(wells).length + \" wells\",\n {\n duration: 1500,\n preventDuplicate: true,\n }\n );\n }\n }\n }\n //LOG------------------------------------------------------------------------------------------------------\n if (\n msg_message.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=Log\"\n ) {\n etp_tools.sendGetRessource(socket, msg_message.resource.uri);\n }\n //channelset------------------------------------------------------------------------------------------------------\n if (\n msg_message.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=ChannelSet\"\n ) {\n etp_tools.sendGetRessource(socket, msg_message.resource.uri);\n }\n // trajectory------------------------------------------------------------------------------------------------------\n if (\n msg_message.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=Trajectory\"\n ) {\n }\n // channel------------------------------------------------------------------------------------------------------\n if (\n msg_message.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=Channel\"\n ) {\n wells[selectedObjects.well].wellbores[\n selectedObjects.wellbore\n ].channels[msg_message.resource.uri] = msg_message.resource;\n // channelCount represents the number of channels we received already\n if (loadingComplete.channelCount) {\n loadingComplete.channelCount = loadingComplete.channelCount + 1;\n } else {\n loadingComplete.channelCount = 1;\n }\n if (loadingComplete.channelCount === loadingComplete.totalChannels) {\n setWells(wells);\n storage.saveToLS(\"wells\", wells);\n var chans =\n wells[selectedObjects.well].wellbores[selectedObjects.wellbore]\n .channels;\n\n setChannelInfos(\n wells[selectedObjects.well].wellbores[selectedObjects.wellbore]\n .channels\n );\n loadingComplete.channels = true;\n delete loadingComplete.totalChannels;\n\n closeSnackbar();\n enqueueSnackbar(\n \"We have loaded \" + loadingComplete.channelCount + \" channels\",\n {\n duration: 1500,\n preventDuplicate: true,\n }\n );\n loadingComplete.channelCount = 0;\n }\n\n setLoadingComplete(loadingComplete);\n }\n }\n }\n if (msg_header.protocol === 4) {\n if (msg_header.messageType === 4) {\n if (\n msg_message.dataObject.resource.contentType ===\n \"application/x-witsml+xml;version=2.0;type=Well\"\n ) {\n var string = new TextDecoder().decode(msg_message.dataObject.data);\n var json = convertXML(string);\n var data = getShowableData(json);\n wells[msg_message.dataObject.resource.uri].data = data;\n setWells(wells);\n storage.saveToLS(\"wells\", wells);\n setWellInfo(data);\n setWellInfoTitle(\n \"Well: \" + wells[msg_message.dataObject.resource.uri].name\n );\n }\n }\n }\n };\n const socket = useRef(null);\n useEffect(() => {\n enqueueSnackbar(\"Loading...\", {\n variant: \"info\",\n persist: true,\n preventDuplicate: true,\n });\n const server = storage.getFromLS(\"server\");\n if (server.url) {\n socket.current = new WebSocket(server.url, \"energistics-tp\", server.ip, {\n \"etp-encoding\": \"binary\",\n Authorization:\n \"Basic \" + new Buffer.alloc(64, \"user:pass\").toString(\"base64\"),\n });\n\n socket.current.onerror = function (msg) {\n enqueueSnackbar(\"Error connecting to the server\", {\n variant: \"error\",\n });\n navigate(\"/login\", { replace: true });\n };\n socket.current.onclose = function (msg) {\n enqueueSnackbar(\"Connection closed\", {\n variant: \"error\",\n });\n navigate(\"/login\", { replace: true });\n };\n socket.current.onopen = function (msg) {\n enqueueSnackbar(\n \"Wellcome Michael. You are connected to: \" + server.ip,\n {\n autoHideDuration: 1500,\n preventDuplicate: true,\n }\n );\n etp_tools.sendRequestSession(socket.current);\n etp_tools.sendGetRessource(socket.current, \"eml://witsml20/Well\");\n };\n socket.current.onmessage = function (msg) {\n etp_tools.parseMsg(socket.current, msg, etpHandler);\n };\n } else {\n enqueueSnackbar(\"Server not found\", {\n variant: \"error\",\n });\n navigate(\"/login\", { replace: true });\n }\n }, []);\n\n const prevselected = useRef();\n useEffect(() => {\n if (\n prevselected.current &&\n (prevselected.current.well !== selectedObjects.well ||\n prevselected.current.wellbore !== selectedObjects.wellbore)\n ) {\n if (selectedObjects.well !== null && selectedObjects.wellbore !== null) {\n if (\n wells[selectedObjects.well].wellbores[selectedObjects.wellbore]\n .channels\n ) {\n setChannelInfos(\n wells[selectedObjects.well].wellbores[selectedObjects.wellbore]\n .channels\n );\n } else {\n delete loadingComplete.totalChannels;\n loadingComplete.channelCount = 0;\n setLoadingComplete(loadingComplete);\n etp_tools.sendGetRessource(socket.current, selectedObjects.wellbore);\n }\n if (\n !wells[selectedObjects.well].wellbores[selectedObjects.wellbore]\n .trajectories\n ) {\n setShowTrajectory({ value: false });\n } else {\n setShowTrajectory({ value: true });\n }\n }\n }\n prevselected.current = selectedObjects;\n socket.current.onmessage = function (msg) {\n etp_tools.parseMsg(socket.current, msg, etpHandler);\n };\n }, [selectedObjects]);\n // change wellInfo and wellInfoTitle\n\n const loadChannelSets = () => {};\n\n const updateWellDataInfo = (object) => {\n const well = object.well;\n const wellbore = object.wellbore;\n setSelectedObject({\n well: well,\n wellbore: wellbore,\n });\n if (well !== \"\") {\n const cachesWell = wells[well];\n if (cachesWell.data) {\n setWellInfo(cachesWell.data);\n setWellInfoTitle(\"Well: \" + cachesWell.name);\n } else {\n etp_tools.sendGetObject(socket.current, well);\n }\n } else {\n // no well is selected\n }\n };\n\n return (\n \n \n \n Track your wells\n \n \n \n \n \n \n {showContent ? (\n \n ) : (\n Loading...\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* eslint-disable array-callback-return */\n// react\nimport React from \"react\";\n// material\nimport { styled } from \"@mui/material/styles\";\nimport { Typography, Box } from \"@mui/material\";\n// Styles --------------------------------------------------\nconst LogWrapper = styled(Box)(({ theme }) => ({\n width: \"100%\",\n height: \"100%\",\n overflow: \"auto\",\n backgroundColor: theme.palette.grey[300],\n padding: theme.spacing(0.7),\n borderRadius: theme.spacing(0.7),\n marginTop: theme.spacing(0.5),\n}));\nconst LogLine = styled(Typography)(({ theme }) => ({\n fontSize: \"1rem\",\n fontFamily: \"monospace\",\n marginBottom: theme.spacing(0.5),\n width: \"100%\",\n fontWeight: \"lighter\",\n textAlign: \"left\",\n whiteSpace: \"nowrap\",\n color: theme.palette.grey[800],\n}));\nexport default function LogWidget(props) {\n // functions --------------------------------------------------\n const convertDataIntoLogs = (key, data, meta) => {\n let log = `${key} # `;\n Object.keys(data).map((index) => {\n log += `index: ${index} => `;\n Object.keys(data[index]).map((channelId) => {\n let channelName = meta.get(channelId);\n // console.log(\"channelName: \", channelName, \"channelId: \", channelId, \"meta: \", meta);\n log += `${channelName}: ${data[index][channelId]} `;\n });\n });\n return log;\n };\n // states -----------------------------------------------------\n const [logs, setLogs] = React.useState([]);\n const [textLogs, setTextLogs] = React.useState('');\n const [meta, setMeta] = React.useState({});\n // useEffect --------------------------------------------------\n React.useEffect(() => {\n // console.log(\"logs: \", props);\n setMeta(props.meta);\n let tmpLogs = [];\n // \n // let tmpTextLogs = '';\n if (props.logs) {\n Object.keys(props.logs).map((key) => {\n tmpLogs.push(convertDataIntoLogs(key, props.logs[key], meta));\n // tmpTextLogs += convertDataIntoLogs(key, props.logs[key], meta) + \"\\n\";\n });\n }\n setLogs(tmpLogs);\n // props.setDownloadableContent({\n // type: 'text/plain',\n // data: tmpTextLogs,\n // });\n }, [meta, props]);\n\n return (\n \n {logs.map((log, index) => {\n return {log};\n })}\n \n );\n}\n","\n\nimport { useEffect, useRef } from \"react\";\nimport React from 'react';\nimport wellioviz from \"alphawellio\";\n// material\nimport { Box } from \"@mui/material\";\nimport faker from \"faker\";\nvar template = [{\n \"curve_box\": {\n \"show_well_name\": \"yes\", /// not built yet\n \"show_depth_type\": \"no\", /// not built yet\n \"show_curve_units\": \"yes\", /// not built yet\n \"curve_box_depth_min\": -999, /// not built yet\n \"curve_box_depth_max\": -999, /// not built yet\n \"take_out_null_or_visualize\": \"no\", /// not built yet\n \"show_title\": \"no\",\n \"width\": 260,\n \"height\": 500,\n \"height_multiplier_components\": 1,\n \"margin\": {\"top\": 30, \"right\": 40, \"bottom\": 30, \"left\": 30},\n \"title\": {\"text\": \"\", \"title_font_size\": \"10px\"}, /// not built yet\n \"div_id\": \"well_holder_3\", /// Should be skip-able // default=random str? What happens if div doesn't exist?\n \"order_of_component\": [\"curves\", \"rectanges\", \"lines\"], /// not built yet\n \"lines_connected_across_curveboxes\": \"no\", /// not built yet\n \"header_sep_svg_or_not\": \"yes\",\n \"svg_header_height\": \"6em\",\n \"gridlines\": \"yes\",\n \"gridlines_color\": \"#D3D3D3\",\n \"gridlines_stroke_width\": 0.20,\n \"grouped_or_independent_x_scales\": \"independent\",\n //// variables for how to draw mouseover of hover box\n \"mouseover_yes_or_no\": \"no\", //// \"yes\" or \"no\"\n \"mouseover_depth_or_depth_and_curve\": \"depth_and_curve\", /// options= \"depth_and_curve\", \"depth\", or \"curve\"\n \"mouseover_curvename\": \"default\", //// default is first curve\n \"mouseover_color_or_default_which_is_curve_color\": \"default\" /// default is default, which then uses curve color or black\n },\n \"components\": [{\n \"curves\": [\n {\n \"data_type\": \"curve\",\n \"curve_names\": [\"DEPT\"],\n \"curve_colors\": [\"black\"],\n \"curve_stroke_dasharray\": [\"solid\"],\n \"stroke_linecap\": [\"butt\"],\n \"stroke_width\": [1],\n \"fill\": [\n {}\n ],\n \"curve_units\": [\"g/cm3\"],\n \"depth_limits\": [{\"min\": \"autocalculate\", \"max\": \"autocalculate\"}],\n \"curve_limits\": [{\"curve_name\": \"\", \"min\": -10000000, \"max\": 3}],\n \"data\": [],\n \"depth_curve_name\": \"DEPT\",/// not built yet\n \"data_id\": [\"placeholder_data_id\",], /// not built yet\n \"well_names\": [\"\"], /// not built yet\n \"scale_linear_log_or_yours\": [\"linear\"],\n \"line_color\": [], /// not built yet\n \"max_depth\": \"autocalculate\", /// not built yet\n \"min_depth\": \"autocalculate\", /// not built yet\n \"depth_type_string\": [\"\"],\n \"depth_units_string\": [\"\"],\n \"null_value\": [\"\"], /// not built yet\n }\n ],\n \"lines\": [\n {\n \"data_type\": \"line\", /// not built yet\n \"label\": \"example\", /// not built yet\n \"depth\": -999, /// not built yet\n \"color\": \"red\", /// not built yet\n \"stroke_width\": \"3px\", /// not built yet\n \"stroke_style\": \"solid\", /// not built yet\n \"transparency\": 1.0, /// not built yet\n \"stroke_linecap\": \"butt\"\n }\n ],\n \"rectangles\": [\n {\n \"data_type\": \"rectangle\",\n \"depth_top\": 0,\n \"x_starting_upper_left_corner\": 0,\n \"width\": 0,\n \"height\": 0,\n \"stroke_width\": \"2px\",\n \"stroke_linecap\": \"butt\",\n \"fill\": \"red\",\n \"opacity\": 0.5,\n \"label\": \"\", // not built into plotting template yet\n \"label_orientation\": \"horizontal\", // not built into plotting template yet\n \"lable_position\": \"right\" // not built into plotting template yet\n }\n ]\n }]\n},];\nfunction calcGridItemPx(\n gridUnits,\n colOrRowSize,\n marginPx\n) {\n return Math.round(\n colOrRowSize * gridUnits + Math.max(0, gridUnits - 1) * marginPx\n );\n}\n\nexport default function Wellog(props) {\n const nbr = 2;\n var database = useRef();\n var dataObject = useRef();\n const [holderId, setHolderId] = React.useState();\n var logRef = React.createRef();\n //console.log(\"PROPS*****\", props);\n var activatedChannels = []\n\n for (var ch in props.channelsState) {\n if (props.channelsState[ch].checked) {\n activatedChannels.push(props.channelsState[ch].name)\n }\n }\n //console.log(\"DIMENSIONS\", props.dimensions[0]);\n if (props.height && props.width) {\n var h = props.height - 20 //calcGridItemPx(props.dimensions[0].h, props.dimensions[1], 0);\n var w = props.width - 20 //calcGridItemPx(props.dimensions[0].w, props.dimensions[2], 100);\n } else {\n var h = 500;\n var w = 300;\n }\n\n //console.log(\"sizes\", h, w);\n\n useEffect(() => {\n var curves = [...activatedChannels];\n curves.push(\"DEPT\");\n //console.log(\"CURVATURE\", activatedChannels);\n var start = 0;\n var reformated = []\n for (var i=0; i <=2; i++){\n var instance = {}\n for (var ch in activatedChannels){\n instance[activatedChannels[ch]] = 0\n }\n instance[\"DEPT\"] = start + 1\n start = start + 1\n instance[\"UWI\"] = \"00/01-01-095-19W4/0\"\n reformated.push(instance)\n }\n //console.log(\"reformated\", reformated)\n dataObject.current = {\n \"well_log_curves_reformatted_for_d3\": reformated,\n \"curve_names\": curves,\n \"uwi\": \"00/01-01-095-19W4/0\"\n }\n\n template[0][\"curve_box\"][\"width\"] = w;\n template[0][\"curve_box\"][\"height\"] = h;\n template[0][\"curve_box\"][\"height_multiplier_components\"] = 1;\n let template_components = template[0][\"components\"];\n template[0][\"components\"][0][\"curves\"][0][\"curve_names\"] = curves;\n let template_curves = template_components[0][\"curves\"][0];\n let curve_names = template_curves[\"curve_names\"];\n var templates = []\n var i = 1;\n var curves_view = []\n for (var channel in activatedChannels) {\n if (parseInt(channel)+1 === activatedChannels.length) {\n var curve2 = \"\"\n } else {\n var curve2 = activatedChannels[parseInt(channel)+1]\n }\n curves_view.push({\n curve_name: activatedChannels[channel],\n fill: \"no\",\n fill_direction: \"left\",\n cutoffs: [],\n fill_colors: [],\n curve2: curve2,\n })\n }\n //console.log(curves_view)\n var plot_template_noFill = wellioviz.minimumDataIntoTemplateFunc(\n template,\n dataObject.current.well_log_curves_reformatted_for_d3,\n [dataObject.current.uwi],\n activatedChannels,\n [\"black\", \"blue\", \"green\", \"yellow\"],\n [\"\"],\n curves_view,\n \"well_holder_1_\" + i,\n w, // 300\n h, // 500\n \"DEPT\"\n );\n templates.push(plot_template_noFill);\n i++;\n //}\n var holder_id = faker.datatype.uuid()\n setHolderId(holder_id)\n var result_1 = wellioviz.multipleLogPlot(\"well_holder\"+holderId, templates);\n }, []);\n\n useEffect(() => {\n var holder_id = \"\"\n var activatedChannels = []\n for (var ch in props.channelsState) {\n if (props.channelsState[ch].checked) {\n activatedChannels.push(props.channelsState[ch].name)\n }\n }\n\n //console.log(\"HOLDER\", holder_id)\n\n if (props.dataPlot !== undefined && Object.keys(props.dataPlot).length !== 0) {\n props.setDownloadableContent({\n type: 'application/json',\n data: props.dataPlot,\n });\n ////// DUMMY DATA /////////\n /*\n var elts = dataObject.current.well_log_curves_reformatted_for_d3\n var last_dep = parseFloat(elts[elts.length - 1][\"DEPT\"])\n console.log(\"last depth\", last_dep);\n var instance = []\n for (var ch in activatedChannels){\n instance[ activatedChannels[ch]] = Math.round(Math.random()*10)\n }\n instance[\"DEPT\"] = last_dep + 0.250\n instance[\"UWI\"] = \"00/01-01-095-19W4/0\"\n console.log(\"instaaaannce\", instance)\n dataObject.current.well_log_curves_reformatted_for_d3.push(instance)\n */\n ///////////////////////\n // fill missing columns with 0 value\n for (var inst in props.dataPlot){\n for (var chan in activatedChannels) {\n if (!props.dataPlot[inst][activatedChannels[chan]]){\n props.dataPlot[inst][activatedChannels[chan]] = 0\n }\n }\n }\n //console.log(\"DATAAAPLOT\", props.dataPlot, Object.values(props.dataPlot), Object.values(props.dataPlot).length)\n // wellioviz requires to have at least 3 depths values in the data.\n if (Object.keys(props.dataPlot).length >= 3) {\n //console.log(\"THIIIIS\", Object.values(props.dataPlot))\n dataObject.current.well_log_curves_reformatted_for_d3 = [...Object.values(props.dataPlot)]\n } else {\n //console.log(\"BEFORETHAT\", dataObject.current.well_log_curves_reformatted_for_d3.length)\n dataObject.current.well_log_curves_reformatted_for_d3.push(...Object.values(props.dataPlot));\n //console.log(\"THAT\", dataObject.current.well_log_curves_reformatted_for_d3)\n }\n //console.log(\"heightt/width\", h, w)\n // set space for header based on the number of attributes\n var header_height = 4.5 + (activatedChannels.length - 1) + Math.floor((activatedChannels.length - 1)*0.5)\n\n template[0][\"curve_box\"][\"svg_header_height\"] = header_height.toString()+\"em\"\n //console.log(\"header_height\", template[0][\"curve_box\"][\"svg_header_height\"])\n template[0][\"curve_box\"][\"height_multiplier_components\"] = 1;\n var templates = []\n var i = 1;\n var curves_view = []\n for (var channel in activatedChannels) {\n if (parseInt(channel)+1 === activatedChannels.length) {\n var curve2 = \"\"\n } else {\n var curve2 = activatedChannels[parseInt(channel)+1]\n }\n //console.log(\"VIEEEW\", curve2, parseInt(channel)+1, activatedChannels.length, parseInt(channel)+1 === activatedChannels.length)\n curves_view.push({\n curve_name: activatedChannels[channel],\n fill: \"no\",\n fill_direction: \"left\",\n cutoffs: [],\n fill_colors: [],\n curve2: curve2,\n })\n }\n //console.log(\"CVIEEW\", curves_view);\n var plot_template_noFill = wellioviz.minimumDataIntoTemplateFunc(\n template,\n dataObject.current.well_log_curves_reformatted_for_d3,\n [dataObject.current.uwi],\n activatedChannels,\n [\"black\", \"blue\", \"green\", \"yellow\"],\n [\"\"],\n curves_view,\n \"well_holder_1_\" + i,\n w,\n h,\n \"DEPT\"\n );\n //console.log(\"TEMMMPPPPS\", plot_template_noFill[0][\"components\"][0][\"curves\"][0][\"data\"])\n //console.log(\"UPDATE HEIGHT\", plot_template_noFill[0][\"curve_box\"][\"width\"], plot_template_noFill[0][\"curve_box\"][\"height\"])\n plot_template_noFill[0][\"curve_box\"][\"width\"] = plot_template_noFill[0][\"curve_box\"][\"width\"] - 50\n plot_template_noFill[0][\"curve_box\"][\"height\"] = plot_template_noFill[0][\"curve_box\"][\"height\"] - 100\n plot_template_noFill[0][\"curve_box\"][\"margin\"] = {\"top\": 30, \"right\": 40, \"bottom\": 30 + header_height*10, \"left\": 30}\n //console.log(plot_template_noFill[0][\"curve_box\"][\"width\"], plot_template_noFill[0][\"curve_box\"][\"height\"])\n templates.push(plot_template_noFill);\n i++;\n //}\n var result_1 = wellioviz.multipleLogPlot(\"well_holder\"+holderId, templates);\n //console.log(\"SVG ELEMENT\", logRef.current);\n }\n }, [props.dataPlot, props.dimensions]);\n\n\n return (\n \n \n \n \n );\n}\n","/* eslint-disable array-callback-return */\n// react\nimport React from \"react\";\n// material\n\nexport default function ScalerWidget(props) {\n // states -----------------------------------------------------\n const [channelName, setChannelName] = React.useState(props.channelName);\n const [channelValue, setChannelValue] = React.useState(0);\n const [flash, setFlash] = React.useState(false);\n // functions --------------------------------------------------\n const latestObjectProperty = (obj) => {\n if (obj) {\n let keys = Object.keys(obj);\n return keys[keys.length - 1];\n }\n };\n // compact very large number\n const compactNumber = (num) => {\n if (num > 1000000000000) {\n return (num / 1000000000000).toFixed(1) + \" T\";\n } else if (num > 1000000000) {\n return (num / 1000000000).toFixed(1) + \" B\";\n } else if (num > 1000000) {\n return `${(num / 1000000).toFixed(2)} M`;\n } else if (num > 1000) {\n return `${(num / 1000).toFixed(2)} K`;\n } else {\n return num;\n }\n };\n //\n // useEffect --------------------------------------------------\n React.useEffect(() => {\n // console.log(\"scaler2 : \", props);\n setChannelName(props.channelName);\n if (props.data) {\n if (latestObjectProperty(props.data)) {\n var element = props.data[latestObjectProperty(props.data)];\n if (typeof element === \"number\") {\n setChannelValue(compactNumber(element));\n } else {\n setChannelValue(element);\n }\n } else {\n setChannelValue(0);\n }\n }\n setFlash(props.flash);\n }, [props]);\n\n // return ------------------------------------------------------\n return (\n \n \n \n {channelName}\n {channelValue}\n \n \n );\n}\n","/* eslint-disable array-callback-return */\n// react\nimport React from \"react\";\n// material\nimport { styled } from \"@mui/material/styles\";\nimport { Typography, Box } from \"@mui/material\";\n// Styles --------------------------------------------------\nconst DataWrapper = styled(Box)(({ theme }) => ({\n width: \"100%\",\n height: \"100%\",\n overflow: \"auto\",\n backgroundColor: theme.palette.grey[300],\n padding: theme.spacing(0.7),\n borderRadius: theme.spacing(0.7),\n marginTop: theme.spacing(0.5),\n}));\n\nexport default function ScalerWidget(props) {\n // states -----------------------------------------------------\n const [rows, setRows] = React.useState([]);\n const [columns, setColumns] = React.useState([]);\n function createData(name, calories, fat, carbs, protein) {\n return { name, calories, fat, carbs, protein };\n }\n \n const newRows = [\n createData('Frozen yoghurt', 159, 6.0, 24, 4.0),\n createData('Ice cream sandwich', 237, 9.0, 37, 4.3),\n createData('Eclair', 262, 16.0, 24, 6.0),\n createData('Cupcake', 305, 3.7, 67, 4.3),\n createData('Gingerbread', 356, 16.0, 49, 3.9),\n ];\n // functions --------------------------------------------------\n const generateColumns = (data) => {\n let tmpColumns = [];\n Object.keys(data).map((key) => {\n var channel = data[key];\n if (channel.checked) {\n tmpColumns.push({\n field: channel.name,\n headerName: channel.name,\n width: 150,\n channelId: channel.channelId,\n });\n }\n return null;\n });\n // console.log(\"tmpColumns: \", tmpColumns);\n return tmpColumns;\n };\n const generateRows = (data) => {\n let tmpRows = [];\n if (!data) {\n // console.log(\"no data\");\n return tmpRows;\n }\n Object.keys(data).map((rowKey) => {\n var row = data[rowKey];\n // console.log(\"row: \", row);\n var tmpRow = {\n id: rowKey,\n };\n // loop through the columns and check if they exist in the row\n Object.keys(columns).map((key) => {\n var column = columns[key];\n if (row[column.channelId]) {\n tmpRow[column.field] = row[column.channelId];\n } else {\n tmpRow[column.field] = \"\";\n }\n return null;\n });\n tmpRows.push(tmpRow);\n return null;\n });\n // console.log(\"tmpRows: \", tmpRows);\n return tmpRows;\n };\n // useEffect --------------------------------------------------\n React.useEffect(() => {\n // console.log(\"Data : \", props);\n setColumns(generateColumns(props.channelsState));\n setRows(generateRows(props.data));\n // console.log(\"****columns: \", columns);\n // console.log(\"****rows: \", rows);\n }, [props]);\n\n // return ------------------------------------------------------\n // generate a table with the data from the states\n return (\n \n \n \n \n {columns.map((column) => {\n return {column.headerName};\n })}\n \n \n \n {rows.map((row) => {\n return (\n \n {columns.map((column) => {\n return {row[column.channelId]};\n })}\n \n );\n })}\n \n \n \n );\n}\n","// react\nimport React from \"react\";\n// screenShot libraries\nimport { useScreenshot, createFileName } from \"use-react-screenshot\";\n// material\nimport { styled } from \"@mui/material/styles\";\nimport {\n Card,\n Typography,\n Box,\n Button,\n Modal,\n Grid,\n IconButton,\n TextField,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n Divider,\n Stack,\n FormControlLabel,\n Switch,\n FormGroup,\n} from \"@mui/material\";\n// icons\nimport SettingsIcon from \"@mui/icons-material/Settings\";\nimport CameraAltRoundedIcon from \"@mui/icons-material/CameraAltRounded\";\nimport CloseRoundedIcon from \"@mui/icons-material/CloseRounded\";\nimport FileDownloadRoundedIcon from \"@mui/icons-material/FileDownloadRounded\";\n// widgets -------------------------------------------------------------\nimport LogWidget from \"src/components/widgets/LogWidget\";\nimport Wellog from \"src/components/widgets/Wellog\";\nimport ScalerWidget from \"src/components/widgets/ScalerWidget\";\nimport { ConstructionOutlined } from \"@mui/icons-material\";\nimport DataGridWidget from \"src/components/widgets/DataGridWidget\";\n// ----------------------------------------------------------------------\nconst RootStyle = styled(\"div\")(({ theme }) => ({\n boxShadow: \"none\",\n padding: theme.spacing(2),\n height: \"100%\",\n}));\nconst ModelStyle = styled(Card)(({ theme }) => ({\n backgroundColor: \"rgba(255, 255, 255, 0.7)\",\n backdropFilter: \"blur(15px)\",\n padding: theme.spacing(3.5),\n boxShadow: \"none\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: 500,\n border: \"1px solid #c8bbf7\",\n}));\nconst ContentWrapper = styled(Box)(({ theme }) => ({\n position: \"relative\",\n padding: theme.spacing(0, 0, 2, 0),\n width: \"100%\",\n height: \"100%\",\n}));\n// ----------------------------------------------------------------------\n\nexport default function Widget(props) {\n // console.log(\"props widget: \", props);\n // states -------------------------------------------------------------\n // const [id, setId] = React.useState(props.id);\n const [title, setTitle] = React.useState(props.title);\n const [showTitle, setShowTitle] = React.useState(false);\n const [type, setType] = React.useState(props.type);\n const [open, setOpen] = React.useState(false);\n const [channels, setChannels] = React.useState(props.channels);\n const [data, setData] = React.useState({});\n const [dataLog, setDataLog] = React.useState({});\n // const [dataChart, setDataChart] = React.useState({});\n const [rowsData, setRowsData] = React.useState({});\n const [metadata, setMetadata] = React.useState(props.meta);\n const [defaultChannel, setDefaultChannel] = React.useState(\n props.defaultChannel\n );\n const [channelsState, setChannelsState] = React.useState(props.channelsState);\n const [downloadableContent, setDownloadableContent] = React.useState({\n type: \"text/plain\",\n data: \"\",\n });\n const [alertRanges, setAlertRanges] = React.useState(props.alertRanges);\n // Refs ---------------------------------------------------------------\n const self = React.createRef(null);\n // Screenshot ----------------------------------------------------------\n const [image, takeScreenshot] = useScreenshot({\n type: \"image/jpeg\",\n quality: 1.0,\n });\n // functions ------------------------------------------------------------\n // Functions ------------------------------------------------------------\n const handleOpen = () => setOpen(true);\n const handleClose = () => setOpen(false);\n const download = (\n image,\n { name = \"alpha-pgs-\" + title, extension = \"jpg\" } = {}\n ) => {\n const a = document.createElement(\"a\");\n a.href = image;\n a.download = createFileName(extension, name);\n a.click();\n };\n const downloadScreenshot = () => takeScreenshot(self.current).then(download);\n // add a function to download the data from the downloadableContent\n const downloadData = () => {\n const a = document.createElement(\"a\");\n if (downloadableContent.type === \"text/plain\") {\n a.download = createFileName(\"txt\", \"alpha-pgs-\" + title + \"-data\");\n } else if (type === \"application/json\") {\n a.download = createFileName(\"json\", \"alpha-pgs-\" + title + \"-data\");\n downloadableContent.data = JSON.stringify(downloadableContent.data);\n }\n a.href = URL.createObjectURL(\n new Blob([downloadableContent.data], { type: type })\n );\n a.click();\n };\n function calcGridItemPx(gridUnits, colOrRowSize, marginPx) {\n return Math.round(\n colOrRowSize * gridUnits + Math.max(0, gridUnits - 1) * marginPx\n );\n }\n\n function dataTransform(data) {\n var target = {};\n for (var d in data) {\n // console.log(data[d]);\n for (var c in data[d]) {\n // console.log(data[d][c]);\n if (!target[c]) {\n target[c] = {};\n }\n target[c][props.meta.get(d)] = data[d][c];\n target[c][\"DEPT\"] = parseInt(c);\n target[c][\"UWI\"] = \"00/01-01-095-19W4/0\";\n }\n }\n return target;\n }\n // UseEffects ------------------------------------------------------------\n React.useEffect(() => {\n setData(props.data);\n setDataLog(props.dataLog);\n //setDataChart(props.dataChart);\n setRowsData(props.rowsData);\n setAlertRanges(props.alertRanges);\n }, [props]);\n // ---------\n // get the width and height of the component\n const [width, setWidth] = React.useState(0);\n const [height, setHeight] = React.useState(0);\n React.useEffect(() => {\n if (self.current) {\n var widthVal = self.current.offsetWidth;\n var heightVal = self.current.offsetHeight;\n // console.log(\"props.dimensions: \", props.dimensions);\n if (widthVal < 100) {\n widthVal = calcGridItemPx(\n props.dimensions[0].w,\n props.dimensions[1],\n 0\n );\n }\n if (heightVal < 100) {\n heightVal = calcGridItemPx(\n props.dimensions[0].h,\n props.dimensions[1],\n 0\n );\n }\n // console.log(\"OFFSET\", widthVal, heightVal);\n setWidth(widthVal);\n setHeight(heightVal);\n }\n }, [props.resize]);\n // Return ---------------------------------------------------------------\n return (\n <>\n \n \n {showTitle && title !== \"\" && (\n \n {title}\n \n )}\n \n \n {(type === \"log\") && (\n \n \n \n )}\n\n \n \n \n \n \n \n \n \n \n \n {type === \"scaler\" && (\n \n )}\n {type === \"table\" && (\n \n )}\n {type === \"log\" && }\n {type === \"chart\" && (\n \n )}\n \n \n \n \n \n \n {title} configuration\n \n \n \n \n \n Configure {title} widget, set a new name, type, and select\n attributes.\n \n \n \n Widget properties\n \n \n \n \n setTitle(e.target.value)}\n />\n \n\n }\n label={\"Show the title\"}\n onChange={(event) => {\n setShowTitle(event.target.checked);\n }}\n />\n {/* \n Widget types\n {\n // setType(event.target.value);\n }}\n >\n Scaler\n Chart\n Table\n Log\n \n */}\n \n {type === \"scaler\" && (\n \n \n Data attributes\n \n \n )}\n {type === \"scaler\" && (\n \n \n Attribute\n {\n setDefaultChannel(event.target.value);\n }}\n >\n {Object.keys(channels).map((key) => {\n if (channelsState[key].allowStream) {\n return (\n \n {channels[key].name}\n \n );\n } else return null;\n })}\n \n \n \n )}\n {/* {type === \"chart\" && (\n \n \n {Object.keys(channelsState).map((channel, index) => {\n return (\n \n }\n label={channel.name}\n onChange={(event) => {\n channel.checked = event.target.checked;\n setChannelsState(channelsState);\n }}\n />\n );\n })}\n \n \n )} */}\n {\n handleClose();\n }}\n >\n Save\n \n {/* cancel button */}\n {\n // ask for confirmation using a prompt\n const confirmed = window.confirm(\n \"Are you sure you want to reset the widget {\" + title + \"} ?\"\n );\n if (confirmed) {\n props.removeItem();\n handleClose();\n }\n }}\n >\n Remove widget\n \n \n \n \n >\n );\n}\n","// react\nimport React from \"react\";\n// material\nimport { styled } from \"@mui/material/styles\";\nimport {\n Card,\n Typography,\n Box,\n Button,\n Modal,\n Grid,\n IconButton,\n TextField,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n Divider,\n Stack,\n FormControlLabel,\n Checkbox,\n FormGroup,\n} from \"@mui/material\";\nimport AdapterDateFns from \"@mui/lab/AdapterDateFns\";\nimport LocalizationProvider from \"@mui/lab/LocalizationProvider\";\nimport DateTimePicker from \"@mui/lab/DateTimePicker\";\n// icons\nimport CloseRoundedIcon from \"@mui/icons-material/CloseRounded\";\n// ----------------------------------------------------------------------\nconst ModalContainerStyle = styled(Modal)({\n position: \"absolute\",\n overflow: \"scroll\",\n height: \"100%\",\n display: \"block\",\n});\n\nconst ModalStyle = styled(Card)(({ theme }) => ({\n backgroundColor: \"rgba(255, 255, 255, 0.7)\",\n backdropFilter: \"blur(15px)\",\n padding: theme.spacing(3.5),\n boxShadow: \"none\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: 500,\n border: \"1px solid #c8bbf7\",\n}));\n\n// ----------------------------------------------------------------------\nconst generateRandomString = (length) => {\n let result = \"\";\n const characters =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n};\nexport default function AddWidget(props) {\n // States --------------------------------------------------------------\n const [title, setTitle] = React.useState(\"Widget-\" + generateRandomString(5));\n const [type, setType] = React.useState(\"scaler\");\n const [channels, setChannels] = React.useState({});\n const [defaultChannel, setDefaultChannel] = React.useState(-1);\n const [channelsState, setChannelsState] = React.useState({});\n const [countSelected, setCountSelected] = React.useState(0);\n const [isStreaming, setIsStreaming] = React.useState(true);\n const [range, setRange] = React.useState({ start: 0, end: 0 });\n const [index, setIndex] = React.useState(\"Depth\");\n // Functions ------------------------------------------------------------\n const reset = () => {\n setTitle(\"Widget-\" + generateRandomString(5));\n setType(\"scaler\");\n setDefaultChannel(-1);\n var tmpChannelsState = { ...channelsState };\n Object.keys(tmpChannelsState).forEach(function (key) {\n tmpChannelsState[key] = {\n name: key,\n checked: false,\n allowStream: tmpChannelsState[key][\"allowStream\"],\n channelId: tmpChannelsState[key].channelId,\n };\n });\n setChannelsState(tmpChannelsState);\n setCountSelected(0);\n setIsStreaming(true);\n setRange({ start: 0, end: 0 });\n setIndex(\"Depth\");\n };\n // UseEffects ------------------------------------------------------------\n React.useEffect(() => {\n // console.log(\"AddWidget.jsx: useEffect\");\n let tmpChannels = { ...props.channels };\n setChannels(tmpChannels);\n setDefaultChannel(\"\");\n var newChannels = {};\n var ch = tmpChannels;\n Object.keys(ch).forEach(function (key) {\n newChannels[key] = {\n name: ch[key][\"name\"],\n checked: false,\n allowStream: ch[key].allowStream,\n channelId: ch[key].channelId,\n };\n });\n setChannelsState(newChannels);\n }, [props.channels]);\n // Return ----------------------------------------------------------------\n return (\n {\n props.onClose();\n reset();\n }}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n >\n \n \n Adding a new widget\n {\n reset();\n props.handleClose();\n }}\n >\n \n \n \n \n \n \n setTitle(e.target.value)}\n />\n \n \n \n \n \n Widget type\n \n \n \n \n {\n setIndex(\"Depth\");\n setType(\"scaler\");\n }}\n >\n \n \n \n \n {\n setIndex(\"Depth\");\n setType(\"chart\");\n }}\n >\n \n \n \n \n {\n // setIndex(\"Depth\");\n // setType(\"table\");\n }}\n >\n \n \n \n \n {\n setIndex(\"Depth\");\n setType(\"log\");\n }}\n >\n \n \n \n \n {type === \"scaler\" && (\n <>\n \n Note: This widget only support steaming attributes\n \n \n \n Widget properties\n \n \n \n \n Attribute\n {\n setDefaultChannel(event.target.value);\n }}\n >\n {Object.keys(channels).map((key) => {\n if (channels[key][\"allowStream\"]) {\n return (\n \n {channels[key][\"name\"]}\n \n );\n } else {\n return null;\n }\n })}\n \n \n \n >\n )}\n {(type === \"chart\" || type === \"table\" || type === \"log\") && (\n <>\n \n \n Widget properties\n \n \n \n \n \n Streaming or range data\n \n {\n setIsStreaming(event.target.value);\n if (event.target.value) {\n setIndex(\"Depth\");\n }\n }}\n >\n Streaming\n Range\n \n \n \n {!isStreaming && (\n <>\n \n \n \n Time or depth index\n \n {\n setIndex(event.target.value);\n }}\n >\n Depth\n Time\n \n \n \n \n \n {index === \"Time\" && (\n \n \n Sorry, time index is not supported yet\n \n \n )}\n \n {index === \"Depth\" ? (\n \n {\n setRange({\n start: event.target.value,\n end: range.end,\n });\n }}\n />\n \n ) : (\n \n }\n label=\"Start time\"\n value={range.start}\n onChange={(newValue) => {\n setRange({\n start: newValue,\n end: range.end,\n });\n }}\n />\n \n )}\n \n \n {index === \"Depth\" ? (\n \n {\n setRange({\n start: range.start,\n end: event.target.value,\n });\n }}\n />\n \n ) : (\n \n }\n label=\"End time\"\n value={range.end}\n onChange={(newValue) => {\n setRange({\n start: range.start,\n end: newValue,\n });\n }}\n />\n \n )}\n \n \n \n >\n )}\n {(type !== \"log\" || !isStreaming) && (\n <>\n \n \n Choose the attribute to display:\n \n \n \n \n \n {Object.keys(channels).map((key) => {\n let channel = channels[key];\n if (\n (isStreaming && channel.allowStream) ||\n (!isStreaming &&\n channel.indexes &&\n (channel.indexes.length === 2 ||\n channel.indexes[0].indexType === index))\n ) {\n // if (!isStreaming || channel.allowStream) {\n return (\n {\n setChannelsState(\n Object.assign({}, channelsState, {\n [key]: {\n name: channel.name,\n allowStream: channel.allowStream,\n checked: event.target.checked,\n channelId: channel.channelId,\n },\n })\n );\n // change the count\n if (event.target.checked) {\n setCountSelected(countSelected + 1);\n } else {\n setCountSelected(countSelected - 1);\n }\n }}\n value={channel.channelId}\n />\n }\n label={channel.name}\n />\n );\n } else {\n return null;\n }\n })}\n \n \n \n >\n )}\n >\n )}\n {\n if (\n type === \"scaler\" &&\n (defaultChannel === -1 || defaultChannel === \"\")\n ) {\n alert(\"Please select an attribute\");\n return;\n }\n if (\n (type === \"table\" ||\n type === \"chart\" ||\n (type === \"log\" && !isStreaming)) &&\n (countSelected === 0 || countSelected === undefined)\n ) {\n alert(\"Please select at least one attribute\");\n return;\n }\n if (\n (type === \"table\" || type === \"chart\" || type === \"log\") &&\n !isStreaming &&\n range.start >= range.end\n ) {\n alert(\"Start time must be before end time\");\n return;\n }\n // console.log(channelsState);\n props.addItem({\n id: generateRandomString(5),\n title: title,\n type: type,\n defaultChannel: defaultChannel,\n channelsState: channelsState,\n isStreaming: isStreaming,\n range: range,\n index: index,\n });\n //clear the states\n reset();\n props.handleClose();\n }}\n >\n Add widget\n \n \n \n );\n}\n","// react\nimport React from \"react\";\n// material\nimport { styled } from \"@mui/material/styles\";\nimport {\n Card,\n Typography,\n Box,\n Button,\n Modal,\n Grid,\n IconButton,\n TextField,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n Divider,\n Stack,\n FormControlLabel,\n Checkbox,\n FormGroup,\n} from \"@mui/material\";\nimport Switch from \"@mui/material/Switch\";\nimport FormLabel from \"@mui/material/FormLabel\";\nimport Slider from \"@mui/material/Slider\";\nimport AdapterDateFns from \"@mui/lab/AdapterDateFns\";\nimport LocalizationProvider from \"@mui/lab/LocalizationProvider\";\nimport DateTimePicker from \"@mui/lab/DateTimePicker\";\n// icons\nimport CloseRoundedIcon from \"@mui/icons-material/CloseRounded\";\nimport PhotoSizeSelectLargeRoundedIcon from \"@mui/icons-material/PhotoSizeSelectLargeRounded\";\nimport PhotoSizeSelectActualRoundedIcon from \"@mui/icons-material/PhotoSizeSelectActualRounded\";\nimport DensitySmallRoundedIcon from \"@mui/icons-material/DensitySmallRounded\";\nimport DensityLargeRoundedIcon from \"@mui/icons-material/DensityLargeRounded\";\n\nimport UnfoldLessRoundedIcon from \"@mui/icons-material/UnfoldLessRounded\";\nimport UnfoldMoreRoundedIcon from \"@mui/icons-material/UnfoldMoreRounded\";\n// ----------------------------------------------------------------------\nconst ModalContainerStyle = styled(Modal)({\n position: \"absolute\",\n overflow: \"scroll\",\n height: \"100%\",\n display: \"block\",\n});\n\nconst ModalStyle = styled(Card)(({ theme }) => ({\n backgroundColor: \"rgba(255, 255, 255, 0.7)\",\n backdropFilter: \"blur(15px)\",\n padding: theme.spacing(3.5),\n boxShadow: \"none\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: 400,\n border: \"1px solid #c8bbf7\",\n}));\n\n// ----------------------------------------------------------------------\nconst generateRandomString = (length) => {\n let result = \"\";\n const characters =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n};\nexport default function ConfigBoard(props) {\n // States --------------------------------------------------------------\n const [numberOfColumns, setNumberOfColumns] = React.useState(12);\n const [rowHeight, setRowHeight] = React.useState(60);\n const [showHealth, setShowHealth] = React.useState(true);\n const [mute, setMute] = React.useState(false);\n // Functions ------------------------------------------------------------\n const reset = () => {};\n // UseEffects ------------------------------------------------------------\n React.useEffect(() => {\n // check if numberOfColumns is set\n if (props.numberOfColumns !== undefined) {\n setNumberOfColumns(props.numberOfColumns);\n }\n // check if rowHeight is set\n if (props.rowHeight !== undefined) {\n setRowHeight(props.rowHeight);\n }\n }, [props.numberOfColumns, props.rowHeight]);\n // Return ----------------------------------------------------------------\n return (\n \n \n \n Configure widgets board\n {\n reset();\n props.handleClose();\n }}\n >\n \n \n \n \n \n \n Number of columns\n \n \n \n setNumberOfColumns(e.target.value)}\n />\n \n \n \n \n Row height\n \n \n setRowHeight(e.target.value)}\n />\n \n \n \n \n \n setShowHealth(e.target.checked)}\n value={showHealth}\n />\n }\n label={\"Show health bar\"}\n />\n \n \n \n \n {\n setMute(e.target.checked);\n props.setMute(e.target.checked);\n }}\n value={mute}\n />\n }\n label={\"Mute sound\"}\n />\n \n \n \n {\n props.setNumberOfColumns(numberOfColumns);\n props.setRowHeight(rowHeight);\n props.setShowHealth(showHealth);\n props.setMute(mute);\n //clear the states\n reset();\n props.handleClose();\n }}\n >\n Confirm changes\n \n \n \n );\n}\n","import faker from \"faker\";\nimport PropTypes from \"prop-types\";\nimport { noCase } from \"change-case\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport { set, sub, formatDistanceToNow } from \"date-fns\";\nimport { Icon } from \"@iconify/react\";\nimport bellFill from \"@iconify/icons-eva/bell-fill\";\nimport clockFill from \"@iconify/icons-eva/clock-fill\";\nimport doneAllFill from \"@iconify/icons-eva/done-all-fill\";\n// material\nimport { alpha } from \"@mui/material/styles\";\nimport {\n Box,\n List,\n Badge,\n Button,\n Avatar,\n Tooltip,\n Divider,\n IconButton,\n Typography,\n ListItemText,\n ListSubheader,\n ListItemAvatar,\n ListItemButton,\n} from \"@mui/material\";\n// utils\nimport { mockImgAvatar } from \"../../utils/mockImages\";\n// components\nimport Scrollbar from \"../../components/Scrollbar\";\nimport MenuPopover from \"../../components/MenuPopover\";\n\n// ----------------------------------------------------------------------\n\nfunction renderContent(notification) {\n const title = (\n \n {notification.title}\n \n {noCase(notification.description)}\n \n \n );\n\n if (notification.type === \"order_placed\") {\n return {\n avatar: (\n \n ),\n title,\n };\n }\n if (notification.type === \"order_shipped\") {\n return {\n avatar: (\n \n ),\n title,\n };\n }\n if (notification.type === \"mail\") {\n return {\n avatar: (\n \n ),\n title,\n };\n }\n if (notification.type === \"chat_message\") {\n return {\n avatar: (\n \n ),\n title,\n };\n }\n return {\n avatar: ,\n title,\n };\n}\n\nNotificationItem.propTypes = {\n notification: PropTypes.object.isRequired,\n};\n\nfunction NotificationItem({ notification }) {\n const { avatar, title } = renderContent(notification);\n\n return (\n \n \n {avatar}\n \n \n \n {formatDistanceToNow(new Date(notification.createdAt))}\n \n }\n />\n \n );\n}\n\nexport default function NotificationsPopover(props) {\n const [anchorRef, setAnchorRef] = useState(props.notifRef);\n const [open, setOpen] = useState(false);\n const [notifications, setNotifications] = useState(props.notifications);\n const totalUnRead = notifications.filter(\n (item) => item.isUnRead === true\n ).length;\n useEffect(() => {\n setAnchorRef(props.notifRef);\n setNotifications(props.notifications);\n }, [props]);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n return (\n <>\n \n alpha(\n theme.palette.primary.main,\n theme.palette.action.focusOpacity\n ),\n }),\n }}\n >\n \n \n \n \n\n \n \n \n Notifications\n \n You have {totalUnRead} unread notifications\n \n \n\n {totalUnRead > 0 && (\n \n \n \n \n \n )}\n \n\n \n\n \n \n New\n \n }\n >\n {notifications.slice(0, 3).map((notification) => (\n props.handleMarkAsRead(notification)}\n />\n ))}\n \n\n \n Before that\n \n }\n >\n {notifications.slice(3, 7).map((notification) => (\n props.handleMarkAsRead(notification)}\n />\n ))}\n \n \n {/* \n \n \n View All\n \n */}\n \n >\n );\n}\n","// React\nimport React, { useState, useRef, useEffect, Fragment } from \"react\";\n// material\nimport { styled } from \"@mui/material/styles\";\nimport {\n Card,\n Typography,\n Box,\n CardContent,\n Grid,\n FormControlLabel,\n Switch,\n Collapse,\n} from \"@mui/material\";\n\nimport DoneAllOutlinedIcon from \"@mui/icons-material/DoneAllOutlined\";\nimport DangerousOutlinedIcon from \"@mui/icons-material/DangerousOutlined\";\n\nconst HealthBarStyle = styled(Card)(({ theme }) => ({\n boxShadow: \"none\",\n height: \"100%\",\n borderRadius: \"5px\",\n}));\n\nexport default function HealthBar(props) {\n //const [alerts, setAlerts] = React.useState(props.alerts);\n const [showAlertNbr, setShowAlertNbr] = useState(false);\n const [colorBck, setColorBck] = useState(\"\");\n const [outChannels, setOutChannels] = useState([]);\n const [checked, setChecked] = React.useState(false);\n const handleChange = () => {\n setChecked((prev) => !prev);\n };\n React.useEffect(() => {\n if (Object.values(props.alerts)) {\n var nbrAlerts = 0;\n Object.values(props.alerts).forEach((n) => (nbrAlerts += n));\n //console.log(\"NBR\", nbrAlerts)\n if (nbrAlerts > 0) {\n setShowAlertNbr(true);\n setColorBck(\n \"linear-gradient(90deg, rgba(2,0,36,1) 0%, rgba(247,0,0,1) 35%, rgba(255,0,69,0.01724439775910369) 90%);\"\n );\n var channels = [];\n for (var chan in props.alerts) {\n // console.log(\"CHECK CHAN\", chan);\n if (props.alerts[chan] === 1) {\n channels.push(props.meta[chan]);\n }\n }\n setOutChannels(channels);\n } else {\n setShowAlertNbr(false);\n setColorBck(\n \"linear-gradient(90deg, rgba(0,156,23,1) 0%, rgb(133 217 101) 35%, rgba(255,255,255,1) 90%)\"\n );\n }\n }\n }, []);\n\n React.useEffect(() => {\n if (Object.values(props.alerts)) {\n var nbrAlerts = 0;\n Object.values(props.alerts).forEach((n) => (nbrAlerts += n));\n //console.log(\"NBR\", nbrAlerts)\n if (nbrAlerts > 0) {\n setShowAlertNbr(true);\n setColorBck(\n \"linear-gradient(90deg, rgba(245 57 57) 0%, rgba(255,255,255,1) 100%)\"\n );\n var channels = [];\n for (var chan in props.alerts) {\n if (props.alerts[chan] === 1) {\n channels.push(props.meta[chan]);\n }\n }\n setOutChannels(channels);\n } else {\n setShowAlertNbr(false);\n setColorBck(\n \"linear-gradient(90deg, rgb(133 217 101) 0%, rgba(255,255,255,1) 100%)\"\n );\n }\n }\n }, [props]);\n\n return (\n <>\n {props.showHealth && props.widgets !== 0 && (\n \n \n \n {showAlertNbr ? (\n <>\n \n Out of range data.\n >\n ) : (\n <>\n \n Looking good.\n >\n )}\n \n \n \n {showAlertNbr ? (\n \n {\" \"}\n Some channels are out of range.\n \n ) : (\n \n {\" \"}\n Streaming data is withing the acceptable range.{\" \"}\n \n )}\n }\n label=\"Show more information\"\n />\n \n \n \n \n Latest data package was in:{\" \"}\n {props.lastPackage.timestamp}\n \n \n Latest index: {props.lastPackage.index}\n \n \n \n \n Total number of streaming data attributes:{\" \"}\n {props.nbrOfChannels}\n \n \n Total number of received data packages:{\" \"}\n {props.nbrOfPackages}\n \n \n \n \n\n {showAlertNbr && (\n \n \n \n Attention is required to channels :{\" \"}\n {outChannels.join(\", \")}.\n \n \n \n )}\n \n \n \n \n \n )}\n >\n );\n}\n","// React\nimport React, { useState, useRef, useEffect, Fragment } from \"react\";\n// material\nimport { styled } from \"@mui/material/styles\";\nimport {\n Grid,\n Container,\n Card,\n CardContent,\n Button,\n Box,\n Typography,\n Stack,\n} from \"@mui/material\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogContentText from \"@mui/material/DialogContentText\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport Paper from \"@mui/material/Paper\";\nimport BottomNavigation from \"@mui/material/BottomNavigation\";\nimport BottomNavigationAction from \"@mui/material/BottomNavigationAction\";\n// components\nimport Page from \"../components/Page\";\nimport Widget from \"../components/widgets/Widget\";\nimport AddWidget from \"../components/monitoringCards/AddWidget\";\nimport ConfigBoard from \"../components/monitoringCards/ConfigBoard\";\n// import the fixed tab bar\nimport AddCircleOutlineOutlinedIcon from \"@mui/icons-material/AddCircleOutlineOutlined\";\nimport SettingsOutlinedIcon from \"@mui/icons-material/SettingsOutlined\";\n\nimport LogoutRoundedIcon from \"@mui/icons-material/LogoutRounded\";\n\nimport NotificationsPopover from \"../layouts/dashboard/NotificationsPopover\";\n// Grid\nimport _ from \"lodash\";\nimport RGL, { WidthProvider } from \"react-grid-layout\";\nimport \"../assets/css/react-grid-layout.css\";\nimport \"../assets/css/widget.css\";\n// storage\nimport * as storage from \"../utils/storage\";\n// screenShot libraries\n// notification\nimport { useSnackbar } from \"notistack\";\n// faker\nimport faker from \"faker\";\n\n// etp\nimport { Buffer } from \"buffer\";\nimport * as etp_tools from \"../utils/etp_tools\";\nimport { useNavigate } from \"react-router-dom\";\nimport HealthBar from \"./HealthBar\";\nconst etp = require(\"etp\");\nconst ReactGridLayout = WidthProvider(RGL);\n\n// Styles --------------------------------------------------------------\nconst WidgetStyle = styled(Card)(({ theme }) => ({\n boxShadow: \"none\",\n height: \"100%\",\n}));\nconst useAudio = (url, mute) => {\n const [audio] = useState(new Audio(url));\n const [isMute, setIsMute] = useState(mute);\n const [playing, setPlaying] = useState(false);\n // state of the last time the audio was played\n const [lastPlayed, setLastPlayed] = useState(0);\n const [playedOnce, setPlayedOnce] = useState(false);\n\n const toggleAudio = () => {\n // check if the last time the audio was played is more than 10 seconds ago\n // console.log(\"isMute\", isMute);\n if (!isMute && ((Date.now() - lastPlayed > 4000) || !playedOnce)) {\n setPlaying(true);\n }\n };\n const toggleMute = (variable) => {\n // console.log(\"toggleMute\", variable);\n setIsMute(variable);\n };\n\n useEffect(() => {\n playing ? audio.play() : audio.pause();\n setLastPlayed(new Date());\n }, [playing]);\n\n useEffect(() => {\n audio.addEventListener(\"ended\", () => setPlaying(false));\n return () => {\n audio.removeEventListener(\"ended\", () => setPlaying(false));\n };\n }, []);\n\n return [playing, toggleAudio, toggleMute];\n};\nexport default function MonitoringView() {\n // loading from local storage ------------------------------------------\n var conf = storage.getFromLS(\"streaming-config\");\n // states --------------------------------------------------------------\n const [showHealth, setShowHealth] = useState(true);\n const [mute, setMute] = useState(false);\n const [numberOfColumns, setNumberOfColumns] = React.useState(16);\n const [rowHeight, setRowHeight] = React.useState(60);\n const [waitingChannelSets, setWaitingChannelSets] = useState({});\n const [channels, setChannels] = React.useState([]);\n const [trajectory, setTrajectory] = React.useState({});\n const [openAdd, setOpenAdd] = React.useState(false);\n const [openConfig, setOpenConfig] = React.useState(false);\n const [value, setValue] = React.useState(0);\n const [streamingData, setStreamingData] = React.useState({});\n const [rangeRequestData, setRangeRequestData] = React.useState({});\n const [streamingRowsData, setStreamingRowsData] = React.useState({});\n const [rangeRequestRowsData, setRangeRequestRowsData] = React.useState({});\n const [streamingLog, setStreamingLog] = React.useState({});\n const [rangeRequestLog, setRangeRequestLog] = React.useState({});\n const [alertRanges, setAlertRanges] = React.useState({});\n const [rangeRequestStatus, setRangeRequestStatus] = React.useState({});\n const [localUuid, setLocalUuid] = React.useState(\n new etp_tools.BidirectionalMap({})\n );\n const [localIdName, setLlocalIdName] = React.useState(\n new etp_tools.BidirectionalMap({})\n );\n const [openDialog, setOpenDialog] = React.useState(false);\n const [layout, setLayout] = useState([]);\n const [widgets, setWidgets] = useState({});\n const [widgetsCount, setWidgetsCount] = useState(1);\n const [notifications, setNotifications] = useState([]);\n const [audio, toggleAudio, toggleMute] = useAudio(\n \"/static/audio/notification.wav\",\n mute\n );\n const [resizeCount, setResizeCount] = useState(0);\n const [totalNumberOfDataPackages, setTotalNumberOfDataPackages] = useState(0);\n const [lastPackage, setLastPackage] = useState({\n timestamp: 'no package',\n index: 0,\n });\n // navigation ----------------------------------------------------------\n const navigate = useNavigate();\n // refs ---------------------------------------------------------------\n const socket = useRef(null);\n const self = React.createRef(null);\n const notificationIcon = React.createRef(null);\n // Screenshot ----------------------------------------------------------\n // snackbar ------------------------------------------------------------\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n // constants ------------------------------------------------------------\n const defaultProps = {\n className: \"layout\",\n cols: numberOfColumns,\n rowHeight: rowHeight,\n items: 0,\n width: 1500,\n };\n // functions ------------------------------------------------------------\n const handleOpenAdd = () => setOpenAdd(true);\n const handleCloseAdd = () => setOpenAdd(false);\n const handleOpenConfig = () => setOpenConfig(true);\n const handleCloseConfig = () => setOpenConfig(false);\n const onLayoutChange = (newLayout) => {\n for (let i = 0; i < newLayout.length; i++) {\n newLayout[i].h = layout[i].h;\n newLayout[i].w = layout[i].w;\n newLayout[i].maxH = layout[i].maxH;\n newLayout[i].maxW = layout[i].maxW;\n newLayout[i].minH = layout[i].minH;\n newLayout[i].minW = layout[i].minW;\n newLayout[i].static = layout[i].static;\n newLayout[i].isDraggable = layout[i].isDraggable;\n newLayout[i].isResizable = layout[i].isResizable;\n newLayout[i].resizeHandles = layout[i].resizeHandles;\n newLayout[i].isBounded = layout[i].isBounded;\n }\n setLayout(newLayout);\n };\n const onResize = (newLayout, oldItem, newItem, placeholder, e, element) => {\n setLayout(newLayout);\n setResizeCount(resizeCount + 1);\n };\n const removeItem = (id) => {\n // remove the item from the widgets\n if (layout.length === 1) {\n setLayout([]);\n setWidgets({});\n return;\n }\n const newWidgets = _.omit(widgets, id);\n setWidgets(newWidgets);\n //removing the element from the layout\n setLayout(layout.filter((item) => item.i !== id));\n defaultProps.items = defaultProps.items - 1;\n };\n const addItem = (item) => {\n // split the item into the widget and the layout\n let tmp = splitWidgetLayout(generateItem(item));\n let tmpWidget = tmp[1];\n let tmpLayout = tmp[0];\n let checkedChannels = [];\n Object.keys(tmpWidget.channelsState).forEach((key) => {\n if (tmpWidget.channelsState[key].checked) {\n checkedChannels.push(tmpWidget.channelsState[key].channelId);\n }\n });\n if (!tmpWidget.isStreaming && tmpWidget.range.start < tmpWidget.range.end) {\n var channelInfos = [];\n for (let i = 0; i < checkedChannels.length; i++) {\n var ch =\n new etp.Energistics.Datatypes.ChannelData.ChannelStreamingInfo();\n ch.channelId = [checkedChannels[i]];\n ch.startIndex = tmpWidget.range.start;\n ch.endIndex = tmpWidget.range.end;\n channelInfos.push(ch);\n }\n rangeRequestData[tmpWidget.i] = {};\n etp_tools.sendRangeRequest(socket.current, channelInfos, tmpWidget.i);\n // set the range request status\n rangeRequestStatus[tmpWidget.i] = false;\n }\n // update the widgets\n widgets[tmpWidget.i] = tmpWidget;\n setWidgets(widgets);\n // add the new layout\n layout.push(tmpLayout);\n setLayout(layout);\n defaultProps.items = defaultProps.items + 1;\n };\n const generateItem = (props) => {\n props.i = widgetsCount.toString();\n props.x = 0;\n props.y = 0;\n props.static = false;\n if (props.type === \"scaler\") {\n // props.isResizable = false;\n props.w = 3;\n props.h = 3;\n // props.minW = 3;\n // props.minH = 3;\n } else if (props.type === \"log\") {\n props.w = 4;\n props.h = 3;\n // props.minW = 4;\n // props.minH = 3;\n } else if (props.type === \"chart\") {\n props.w = 4;\n props.h = 10;\n } else {\n props.w = 4;\n props.h = 3;\n // props.minW = 4;\n // props.minH = 3;\n }\n setWidgetsCount(widgetsCount + 1);\n return props;\n };\n const splitWidgetLayout = (item) => {\n let tmpLayout = {\n i: item.i,\n };\n let tmpWidget = {\n i: item.i,\n };\n // loop over the attribute of item if the attribute is in [x, y, w, h, minW, minH, maxW, maxH, moved, static, isDraggable, isResizable, isBounded] add it to the tmpLayout else add it to the tmpWidget\n for (let key in item) {\n if (\n key === \"x\" ||\n key === \"y\" ||\n key === \"w\" ||\n key === \"h\" ||\n key === \"minW\" ||\n key === \"minH\" ||\n key === \"maxW\" ||\n key === \"maxH\" ||\n key === \"moved\" ||\n key === \"static\" ||\n key === \"isDraggable\" ||\n key === \"isResizable\" ||\n key === \"isBounded\"\n ) {\n tmpLayout[key] = item[key];\n } else {\n tmpWidget[key] = item[key];\n }\n }\n return [tmpLayout, tmpWidget];\n };\n const startStreaming = () => {\n closeSnackbar();\n // start the streaming\n // getting channels with allowStream = true, channels is an object\n let channelsToStream = [];\n for (let channel in channels) {\n if (channels[channel].allowStream) {\n channelsToStream.push(channels[channel].channelId);\n }\n }\n var channelInfos = [];\n for (let i = 0; i < channelsToStream.length; i++) {\n var ch = new etp.Energistics.Datatypes.ChannelData.ChannelStreamingInfo();\n ch.channelId = [channelsToStream[i]];\n //ch.startIndex = 0;\n //ch.endIndex = 20;\n channelInfos.push(ch);\n }\n etp_tools.sendStartStreaming(socket.current, channelInfos);\n //etp_tools.sendRangeRequest(socket.current, channelInfos, 5);\n };\n const etpHandler = (socket, msg_header, msg_message) => {\n //console.log(\"etpHandler:\", msg_header, msg_message);\n if (msg_header.protocol === 1) {\n let channelSetsUUIDS = [];\n if (msg_header.messageType === 2) {\n for (var i = 0; i < msg_message.channels.length; i++) {\n let channelUUID =\n msg_message.channels[i].channelUri.split(\"/Channel(\")[1];\n channelUUID = channelUUID.split(\")\")[0];\n let channelSetUUID =\n msg_message.channels[i].channelUri.split(\"/ChannelSet(\")[1];\n channelSetUUID = channelSetUUID.split(\")\")[0];\n if (!channelSetsUUIDS.includes(channelSetUUID)) {\n channelSetsUUIDS.push(channelSetUUID);\n }\n channels[channelUUID][\"channelId\"] =\n msg_message.channels[i].channelId;\n channels[channelUUID][\"dataType\"] = msg_message.channels[i].dataType;\n channels[channelUUID][\"indexes\"] = msg_message.channels[i].indexes;\n channels[channelUUID][\"status\"] = msg_message.channels[i].status;\n channels[channelUUID][\"uom\"] = msg_message.channels[i].uom;\n localUuid.add([\n msg_message.channels[i].channelId,\n msg_message.channels[i].channelUri,\n ]);\n setLocalUuid(localUuid);\n // create correspondance channelId == channel\n localIdName.add([\n msg_message.channels[i].channelId,\n msg_message.channels[i].channelName,\n ]);\n setLlocalIdName(localIdName);\n // initialize channel alerts\n var cid = msg_message.channels[i].channelId;\n if (!alertRanges[cid]) {\n alertRanges[cid] = 0;\n }\n setAlertRanges(alertRanges);\n }\n setChannels(channels);\n\n for (var i = 0; i < channelSetsUUIDS.length; i++) {\n let channelSetUUID = channelSetsUUIDS[i];\n if (waitingChannelSets[channelSetUUID]) {\n waitingChannelSets[channelSetUUID] = false;\n setWaitingChannelSets(waitingChannelSets);\n }\n }\n let countWaitingChannelSets = 0;\n for (let key in waitingChannelSets) {\n if (waitingChannelSets[key]) {\n countWaitingChannelSets++;\n }\n }\n if (countWaitingChannelSets === 0) {\n closeSnackbar();\n setOpenDialog(true);\n // const action = (\n // \n // \n // Okay\n // \n // navigate(\"/app/wells\")}>\n // No\n // \n // \n // );\n // enqueueSnackbar(\n // \"Loaded streaming meta-data successfully. Allow data streaming:\",\n // {\n // persist: true,\n // preventDuplicate: true,\n // action,\n // }\n // );\n }\n }\n if (msg_header.messageType === 3) {\n var nbrOfPackes = totalNumberOfDataPackages + 1\n setTotalNumberOfDataPackages(nbrOfPackes);\n // streaming mode\n let msg_data = msg_message.data;\n let tmpStreamingData = { ...streamingData };\n let tmpRangeRequestData = { ...rangeRequestData };\n let tmpStreamingRowsData = { ...streamingRowsData };\n let tmpRangeRequestRowsData = { ...rangeRequestRowsData };\n let tmpStreamingLog = { ...streamingLog };\n let tmpRangeRequestLog = { ...rangeRequestLog };\n for (let i = 0; i < msg_data.length; i++) {\n let channelId = msg_data[i].channelId;\n let indexes = msg_data[i].indexes;\n //\n let indexZero = indexes[0];\n if (msg_header.correlationId === 0 && indexes.length === 2) {\n indexZero = indexes[1];\n }\n // max between indexZero and lastPackageIndex\n let index = indexZero;\n if (index < lastPackage.index) {\n index = lastPackage.index;\n }\n setLastPackage({\n timestamp: new Date().toISOString(),\n index: index,\n })\n let value = msg_data[i].value.item;\n let tmpVal = 0;\n if (Object.keys(value)[0] === \"double\") {\n if (value.double > 50) {\n tmpVal = parseFloat(value.double.toFixed(0));\n } else {\n tmpVal = value.double.toFixed(2);\n }\n tmpVal = parseFloat(tmpVal);\n } else if (\n Object.keys(value)[0] === \"Energistics.Datatypes.ArrayOfDouble\"\n ) {\n tmpVal = \"(\";\n for (\n let i = 0;\n i < value[\"Energistics.Datatypes.ArrayOfDouble\"].values.length;\n i++\n ) {\n if (value[\"Energistics.Datatypes.ArrayOfDouble\"].values[i] > 50) {\n tmpVal +=\n value[\"Energistics.Datatypes.ArrayOfDouble\"].values[\n i\n ].toFixed(0);\n } else {\n tmpVal +=\n value[\"Energistics.Datatypes.ArrayOfDouble\"].values[\n i\n ].toFixed(2);\n }\n if (\n i !==\n value[\"Energistics.Datatypes.ArrayOfDouble\"].values.length - 1\n ) {\n tmpVal += \" | \";\n }\n }\n tmpVal += \")\";\n }\n // check if tmpVal is within the range min-max\n if (msg_header.correlationId === 0) {\n var channelUri = localUuid.get(channelId);\n let channelUuid = channelUri.split(\"/Channel(\")[1];\n channelUuid = channelUuid.split(\")\")[0];\n for (var chan in conf.channels) {\n let confUuid = conf.channels[chan].id.split(\"/Channel(\")[1];\n confUuid = confUuid.split(\")\")[0];\n if (confUuid === channelUuid) {\n let uninitialized =\n conf.channels[chan].maxVal === -1 &&\n conf.channels[chan].minVal === -1;\n if (uninitialized) break;\n let outOfRange =\n parseFloat(tmpVal) > parseFloat(conf.channels[chan].maxVal) ||\n parseFloat(tmpVal) < parseFloat(conf.channels[chan].minVal);\n if (outOfRange) {\n // play sound\n toggleAudio();\n if (alertRanges[channelId] !== 1) {\n alertRanges[channelId] = 1\n }\n // generate a new notification\n let notification = {\n id: faker.datatype.uuid(),\n title: \"Out of range\",\n description:\n \"The value of \" +\n conf.channels[chan].name +\n \" is out of range.\",\n avatar: null,\n type: \"mail\",\n createdAt: new Date(),\n isUnRead: true,\n };\n // insert the notification into the top of the notifications array\n let tmpNotifications = [notification, ...notifications];\n setNotifications(tmpNotifications);\n } else if (alertRanges[channelId] === 1) {\n alertRanges[channelId] = 0;\n }\n setAlertRanges(alertRanges)\n break;\n }\n }\n }\n // get time with millisecond precision\n let time = new Date();\n // convert to year, month, day, hour, minute, second, millisecond from time\n let year = time.getFullYear();\n let month = time.getMonth() + 1;\n let day = time.getDate();\n let hour = time.getHours();\n let minute = time.getMinutes();\n let second = time.getSeconds();\n let millisecond = time.getMilliseconds();\n let stringDate = `${year}-${month}-${day} ${hour}:${minute}:${second}.${millisecond}`;\n if (msg_header.correlationId === 0) {\n // Streaming log data\n if (!tmpStreamingLog[stringDate]) {\n tmpStreamingLog[stringDate] = {};\n }\n if (!tmpStreamingLog[stringDate][indexZero]) {\n tmpStreamingLog[stringDate][indexZero] = {};\n }\n tmpStreamingLog[stringDate][indexZero][channelId] = tmpVal;\n setStreamingLog(tmpStreamingLog);\n //console.log(\"NEW VALUE TO LOG\", indexZero, localIdName.get(channelId), tmpVal, streamingLog)\n // Streaming data\n if (!tmpStreamingData[channelId]) {\n tmpStreamingData[channelId] = {};\n }\n tmpStreamingData[channelId][indexZero] = tmpVal;\n // Streaming rows data\n if (!tmpStreamingRowsData[indexZero]) {\n tmpStreamingRowsData[indexZero] = {};\n tmpStreamingRowsData[indexZero][\"DEPT\"] = indexZero;\n tmpStreamingRowsData[indexZero][\"UWI\"] = \"00/01-01-095-19W4/0\";\n }\n tmpStreamingRowsData[indexZero][localIdName.get(channelId)] = tmpVal;\n setStreamingRowsData(tmpStreamingRowsData);\n //console.log(\"NEW VALUE TO CHART\", indexZero, localIdName.get(channelId), parseFloat(tmpVal), streamingRowsData)\n } else {\n //console.log(\"range for: \", msg_header.correlationId);\n // Range request log data\n if (!tmpRangeRequestLog[msg_header.correlationId]) {\n tmpRangeRequestLog[msg_header.correlationId] = {};\n }\n if (!tmpRangeRequestLog[msg_header.correlationId][stringDate]) {\n tmpRangeRequestLog[msg_header.correlationId][stringDate] = {};\n }\n if (\n !tmpRangeRequestLog[msg_header.correlationId][stringDate][\n indexZero\n ]\n ) {\n tmpRangeRequestLog[msg_header.correlationId][stringDate][\n indexZero\n ] = {};\n }\n if (\n !tmpRangeRequestLog[msg_header.correlationId][stringDate][\n indexZero\n ]\n ) {\n tmpRangeRequestLog[msg_header.correlationId][stringDate][\n indexZero\n ] = [];\n }\n tmpRangeRequestLog[msg_header.correlationId][stringDate][indexZero][\n channelId\n ] = tmpVal;\n setRangeRequestLog(tmpRangeRequestLog);\n // Range request data\n if (!tmpRangeRequestData[msg_header.correlationId]) {\n tmpRangeRequestData[msg_header.correlationId] = {};\n }\n if (!tmpRangeRequestData[msg_header.correlationId][channelId]) {\n tmpRangeRequestData[msg_header.correlationId][channelId] = {};\n }\n tmpRangeRequestData[msg_header.correlationId][channelId][\n indexZero\n ] = tmpVal;\n tmpRangeRequestData[msg_header.correlationId][channelId][\n indexZero\n ] = tmpVal;\n // Range request rows data\n if (!tmpRangeRequestRowsData[msg_header.correlationId]) {\n tmpRangeRequestRowsData[msg_header.correlationId] = {};\n }\n if (!tmpRangeRequestRowsData[msg_header.correlationId][indexZero]) {\n tmpRangeRequestRowsData[msg_header.correlationId][indexZero] = {};\n }\n tmpRangeRequestRowsData[msg_header.correlationId][indexZero][\n localIdName.get(channelId)\n ] = tmpVal;\n tmpRangeRequestRowsData[msg_header.correlationId][indexZero][\"DEPT\"] = indexZero;\n tmpRangeRequestRowsData[msg_header.correlationId][indexZero][\"UWI\"] = \"00/01-01-095-19W4/0\";\n setRangeRequestRowsData(tmpRangeRequestRowsData);\n }\n }\n if (msg_header.correlationId === 0) {\n setStreamingData(tmpStreamingData);\n } else {\n if (msg_header.messageFlags === 3) {\n var tmpRangeRequestStatus = { ...rangeRequestStatus };\n tmpRangeRequestStatus[msg_header.correlationId] = true;\n setRangeRequestStatus(tmpRangeRequestStatus);\n }\n }\n }\n }\n };\n const handleMarkAllAsRead = () => {\n setNotifications(\n notifications.map((notification) => ({\n ...notification,\n isUnRead: false,\n }))\n );\n };\n const handleMarkAsRead = (notification) => {\n setNotifications(\n notifications.map((item) =>\n item.id === notification.id ? { ...item, isUnRead: false } : item\n )\n );\n };\n // UseEffects ---------------------------------------------------------------\n useEffect(() => {\n enqueueSnackbar(\"Loading...\", {\n variant: \"info\",\n persist: true,\n preventDuplicate: true,\n });\n // load the sever configuration\n const server = storage.getFromLS(\"server\");\n // console.log(\"server\", storage.getFromLS(\"server\"));\n // if the streaming config.channels is empty or undefined, show an error notification\n if (conf.channels === undefined || conf.channels.length === 0) {\n closeSnackbar();\n const action = (\n \n navigate(\"/app/wells\")} color=\"inherit\">\n Go back\n \n \n );\n enqueueSnackbar(\"No channels available\", {\n variant: \"error\",\n persist: true,\n preventDuplicate: true,\n action,\n });\n }\n setTrajectory(conf.trajectory);\n if (server.url) {\n socket.current = new WebSocket(server.url, \"energistics-tp\", server.ip, {\n \"etp-encoding\": \"binary\",\n Authorization:\n \"Basic \" + new Buffer.alloc(64, \"user:pass\").toString(\"base64\"),\n });\n socket.current.onerror = function (msg) {\n // console.log(\"onerror\", msg);\n enqueueSnackbar(\"Error connecting to the server\", {\n variant: \"error\",\n });\n navigate(\"/login\", { replace: true });\n };\n socket.current.onclose = function (msg) {\n enqueueSnackbar(\"Connection closed\", {\n variant: \"error\",\n });\n navigate(\"/login\", { replace: true });\n };\n socket.current.onopen = function (msg) {\n etp_tools.sendRequestSession(socket.current);\n // uri example: eml://witsml20/ChannelSet(be28ebaa-ce38-4e67-9086-412aa91cf2a5)/Log(3df60b15-fb13-46a5-8c5a-1a8b4d0471cf)/Well(0b9a906f-1dca-4961-9b7c-4ed0852d8aae)/Wellbore(928280fe-c963-4bfd-b66b-000fc5bde063)/Channel(c104289e-2239-4d45-b610-47a6ba78bdef)\n var channelSets = [];\n var channelsFromConfig = {};\n if (conf.channels !== undefined && conf.channels.length !== 0) {\n Object.keys(conf.channels).forEach((key) => {\n var channelUri = conf.channels[key][\"id\"];\n // get the channelset uri from the channel uri\n var channelSetUri = channelUri.split(\"/ChannelSet(\")[1];\n channelSetUri = channelSetUri.split(\")/\")[0];\n if (!channelSets.includes(channelSetUri)) {\n channelSets.push(channelSetUri);\n waitingChannelSets[channelSetUri] = true;\n }\n // getting the channel id from the channel uri\n var channelId = channelUri.split(\"/Channel(\")[1];\n channelId = channelId.split(\")\")[0];\n channelsFromConfig[channelId] = conf.channels[key];\n });\n setChannels(channelsFromConfig);\n setWaitingChannelSets(waitingChannelSets);\n\n var wellUri = conf.channels[0][\"id\"].split(\"/Well(\")[1];\n wellUri = wellUri.split(\")/\")[0];\n\n var wellboreUri = conf.channels[0][\"id\"].split(\"/Wellbore(\")[1];\n wellboreUri = wellboreUri.split(\")/\")[0];\n\n etp_tools.sendStart(socket.current, 1, 1);\n var uris = [];\n for (var i = 0; i < channelSets.length; i++) {\n var uri =\n \"eml://witsml20/Well(\" +\n wellUri +\n \")\" +\n \"/Wellbore(\" +\n wellboreUri +\n \")\" +\n \"/ChannelSet(\" +\n channelSets[i] +\n \")\";\n uris.push(uri);\n }\n etp_tools.sendDescribe(socket.current, uris);\n }\n };\n } else {\n enqueueSnackbar(\"Server not found\", {\n variant: \"error\",\n });\n navigate(\"/login\", { replace: true });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n useEffect(() => {\n socket.current.onmessage = function (msg) {\n etp_tools.parseMsg(socket.current, msg, etpHandler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n streamingData,\n rangeRequestData,\n streamingLog,\n rangeRequestLog,\n rangeRequestStatus,\n streamingRowsData,\n rangeRequestRowsData,\n localIdName,\n channels,\n waitingChannelSets,\n notifications,\n alertRanges,\n ]);\n useEffect(() => {\n toggleMute(mute);\n }, [mute]);\n useEffect(() => {\n // loop over the layout\n var tmpLayout = [];\n //\n for (var i = 0; i < layout.length; i++) {\n //set the width to the minimum between the item width and numberOfColumns\n var item = layout[i]\n item.w = Math.min(item.w, numberOfColumns);\n // check if the item width + item x is bigger than the number of columns\n if (item.w + item.x > numberOfColumns) {\n // send the item to the next row\n item.x = 0;\n item.y += 5;\n }\n tmpLayout.push(item);\n }\n setLayout(tmpLayout);\n setResizeCount(resizeCount + 1);\n }, [rowHeight, numberOfColumns]);\n // Return -------------------------------------------------------------------\n return (\n \n \n \n \n \n {Object.keys(widgets).length === 0 ? (\n \n \n handleOpenAdd()}>\n \n Add widgets\n \n \n to the dashboard to see the data from the server.\n \n \n ) : (\n \n {Object.entries(widgets).map((widget) => {\n // get the layout item that has i = widget.i\n var layoutItem = null;\n for (var i = 0; i < layout.length; i++) {\n if (layout[i].i === widget[0]) {\n layoutItem = layout[i];\n break;\n }\n }\n if (layoutItem === null) {\n // console.log(\"layoutItem is null\", widget);\n return null;\n }\n // console.log(\"layoutItem\", layoutItem);\n return (\n \n removeItem(widget[1].i)}\n title={widget[1].title}\n type={widget[1].type}\n channels={channels}\n defaultChannel={widget[1].defaultChannel}\n channelsState={widget[1].channelsState}\n meta={localIdName}\n isStreaming={widget[1].isStreaming}\n index={widget[1].index}\n resize={resizeCount}\n alertRanges={alertRanges}\n // if widget.isStreaming is true, the widget will receive streamingData otherwise it will receive the rangeRequestData\n data={\n widget[1].isStreaming\n ? streamingData\n : rangeRequestData[widget[1].i]\n }\n rowsData={\n widget[1].isStreaming\n ? streamingRowsData\n : rangeRequestRowsData[widget[1].i]\n }\n dataLog={\n widget[1].isStreaming\n ? streamingLog\n : rangeRequestLog[widget[1].i]\n }\n range={widget[1].range}\n dimensions={[\n layoutItem,\n rowHeight,\n numberOfColumns,\n ]}\n localIdName={localIdName}\n />\n \n );\n })}\n \n )}\n \n \n \n \n \n {\n toggleMute();\n setMute(e);\n }}\n mute={mute}\n handleClose={handleCloseConfig}\n />\n navigate(\"/app/wells\")}>\n \n Metadata loaded successfully\n \n \n \n We have loaded the metadata for the selected channels. The next\n step consists of data-streaming which will happen in the\n background and you will be able to see the data in real time. You\n may add more widgets to the dashboard, or you can close this\n dialog and return to the previous page.\n \n \n \n navigate(\"/app/wells\")}>Disagree\n {\n startStreaming();\n setOpenDialog(false);\n }}\n >\n Agree\n \n \n \n {\n setValue(newValue);\n }}\n >\n }\n onClick={() => {\n handleOpenAdd();\n }}\n />\n }\n onClick={() => {\n handleOpenConfig();\n }}\n />\n \n }\n />\n }\n onClick={() => {\n navigate(\"/login\", { replace: true });\n }}\n />\n \n \n \n );\n}\n","import { Navigate, useRoutes } from 'react-router-dom';\n// layouts\nimport DashboardLayout from './layouts/dashboard';\nimport LogoOnlyLayout from './layouts/LogoOnlyLayout';\n//\nimport Login from './pages/Login';\nimport DashboardApp from './pages/DashboardApp';\n\nimport NotFound from './pages/Page404';\nimport FormatConverter from './pages/FormatConverter';\nimport WellTracker from './pages/Wells';\nimport MonitoringView from './pages/Monitor';\n// ----------------------------------------------------------------------\n\nexport default function Router() {\n return useRoutes([\n {\n path: '/app',\n element: ,\n children: [\n { path: 'main', element: },\n { path: 'converters', element: },\n { path: 'wells', element: },\n { path: 'monitor', element: },\n // { path: 'user', element: },\n // { path: 'products', element: },\n // { path: 'blog', element: }\n ]\n },\n {\n path: '/',\n element: ,\n children: [\n { path: '/', element: },\n { path: 'login', element: },\n { path: '404', element: },\n { path: '*', element: }\n ]\n },\n { path: '*', element: }\n ]);\n}","// ----------------------------------------------------------------------\n\nconst shape = {\n borderRadius: 8,\n borderRadiusSm: 12,\n borderRadiusMd: 16\n};\n\nexport default shape;\n","import { alpha } from \"@mui/material/styles\";\n\n// ----------------------------------------------------------------------\n\nfunction createGradient(color1, color2) {\n return `linear-gradient(to bottom, ${color1}, ${color2})`;\n}\n\n// SETUP COLORS\nconst GREY = {\n 0: \"#FFFFFF\",\n 100: \"#F9FAFB\",\n 200: \"#F4F6F8\",\n 300: \"#DFE3E8\",\n 400: \"#C4CDD5\",\n 500: \"#919EAB\",\n 600: \"#637381\",\n 700: \"#454F5B\",\n 800: \"#212B36\",\n 900: \"#161C24\",\n 500_8: alpha(\"#919EAB\", 0.08),\n 500_12: alpha(\"#919EAB\", 0.12),\n 500_16: alpha(\"#919EAB\", 0.16),\n 500_24: alpha(\"#919EAB\", 0.24),\n 500_32: alpha(\"#919EAB\", 0.32),\n 500_48: alpha(\"#919EAB\", 0.48),\n 500_56: alpha(\"#919EAB\", 0.56),\n 500_80: alpha(\"#919EAB\", 0.8),\n};\n\nconst PRIMARY = {\n lighter: \"#d7ccff\",\n light: \"#2c00cc\",\n main: \"#11004dff\",\n dark: \"#0c0330\",\n darker: \"#060218\",\n contrastText: \"#fff\",\n};\nconst SECONDARY = {\n lighter: \"#ffb3cb\",\n light: \"#ff4d85\",\n main: \"#ff296dff\",\n dark: \"#b30039\",\n darker: \"#4d0018\",\n contrastText: \"#fff\",\n};\nconst INFO = {\n lighter: \"#D0F2FF\",\n light: \"#74CAFF\",\n main: \"#1890FF\",\n dark: \"#0C53B7\",\n darker: \"#04297A\",\n contrastText: \"#fff\",\n};\nconst SUCCESS = {\n lighter: \"#E9FCD4\",\n light: \"#AAF27F\",\n main: \"#54D62C\",\n dark: \"#229A16\",\n darker: \"#08660D\",\n contrastText: GREY[800],\n};\nconst WARNING = {\n lighter: \"#FFF7CD\",\n light: \"#FFE16A\",\n main: \"#FFC107\",\n dark: \"#B78103\",\n darker: \"#7A4F01\",\n contrastText: GREY[800],\n};\nconst ERROR = {\n lighter: \"#FFE7D9\",\n light: \"#FFA48D\",\n main: \"#FF4842\",\n dark: \"#B72136\",\n darker: \"#7A0C2E\",\n contrastText: \"#fff\",\n};\n\nconst GRADIENTS = {\n primary: createGradient(PRIMARY.light, PRIMARY.main),\n info: createGradient(INFO.light, INFO.main),\n success: createGradient(SUCCESS.light, SUCCESS.main),\n warning: createGradient(WARNING.light, WARNING.main),\n error: createGradient(ERROR.light, ERROR.main),\n};\n\nconst CHART_COLORS = {\n violet: [\"#826AF9\", \"#9E86FF\", \"#D0AEFF\", \"#F7D2FF\"],\n blue: [\"#2D99FF\", \"#83CFFF\", \"#A5F3FF\", \"#CCFAFF\"],\n green: [\"#2CD9C5\", \"#60F1C8\", \"#A4F7CC\", \"#C0F2DC\"],\n yellow: [\"#FFE700\", \"#FFEF5A\", \"#FFF7AE\", \"#FFF3D6\"],\n red: [\"#FF6C40\", \"#FF8F6D\", \"#FFBD98\", \"#FFF2D4\"],\n};\n\nconst palette = {\n common: { black: \"#000\", white: \"#fff\" },\n primary: { ...PRIMARY },\n secondary: { ...SECONDARY },\n info: { ...INFO },\n success: { ...SUCCESS },\n warning: { ...WARNING },\n error: { ...ERROR },\n grey: GREY,\n gradients: GRADIENTS,\n chart: CHART_COLORS,\n divider: GREY[500_24],\n text: { primary: GREY[800], secondary: GREY[600], disabled: GREY[500] },\n background: { paper: \"#fff\", default: \"#fff\", neutral: GREY[200] },\n action: {\n active: GREY[600],\n hover: GREY[500_8],\n selected: GREY[500_16],\n disabled: GREY[500_80],\n disabledBackground: GREY[500_24],\n focus: GREY[500_24],\n hoverOpacity: 0.08,\n disabledOpacity: 0.48,\n },\n};\n\nexport default palette;\n","// ----------------------------------------------------------------------\n\nfunction pxToRem(value) {\n return `${value / 16}rem`;\n}\n\nfunction responsiveFontSizes({ sm, md, lg }) {\n return {\n '@media (min-width:600px)': {\n fontSize: pxToRem(sm)\n },\n '@media (min-width:900px)': {\n fontSize: pxToRem(md)\n },\n '@media (min-width:1200px)': {\n fontSize: pxToRem(lg)\n }\n };\n}\n\nconst FONT_PRIMARY = 'Public Sans, sans-serif';\n\nconst typography = {\n fontFamily: FONT_PRIMARY,\n fontWeightRegular: 400,\n fontWeightMedium: 600,\n fontWeightBold: 700,\n h1: {\n fontWeight: 700,\n lineHeight: 80 / 64,\n fontSize: pxToRem(40),\n ...responsiveFontSizes({ sm: 52, md: 58, lg: 64 })\n },\n h2: {\n fontWeight: 700,\n lineHeight: 64 / 48,\n fontSize: pxToRem(32),\n ...responsiveFontSizes({ sm: 40, md: 44, lg: 48 })\n },\n h3: {\n fontWeight: 700,\n lineHeight: 1.5,\n fontSize: pxToRem(24),\n ...responsiveFontSizes({ sm: 26, md: 30, lg: 32 })\n },\n h4: {\n fontWeight: 700,\n lineHeight: 1.5,\n fontSize: pxToRem(20),\n ...responsiveFontSizes({ sm: 20, md: 24, lg: 24 })\n },\n h5: {\n fontWeight: 700,\n lineHeight: 1.5,\n fontSize: pxToRem(18),\n ...responsiveFontSizes({ sm: 19, md: 20, lg: 20 })\n },\n h6: {\n fontWeight: 700,\n lineHeight: 28 / 18,\n fontSize: pxToRem(17),\n ...responsiveFontSizes({ sm: 18, md: 18, lg: 18 })\n },\n subtitle1: {\n fontWeight: 600,\n lineHeight: 1.5,\n fontSize: pxToRem(16)\n },\n subtitle2: {\n fontWeight: 600,\n lineHeight: 22 / 14,\n fontSize: pxToRem(14)\n },\n body1: {\n lineHeight: 1.5,\n fontSize: pxToRem(16)\n },\n body2: {\n lineHeight: 22 / 14,\n fontSize: pxToRem(14)\n },\n caption: {\n lineHeight: 1.5,\n fontSize: pxToRem(12)\n },\n overline: {\n fontWeight: 700,\n lineHeight: 1.5,\n fontSize: pxToRem(12),\n letterSpacing: 1.1,\n textTransform: 'uppercase'\n },\n button: {\n fontWeight: 700,\n lineHeight: 24 / 14,\n fontSize: pxToRem(14),\n textTransform: 'capitalize'\n }\n};\n\nexport default typography;\n","import { merge } from 'lodash';\nimport Card from './Card';\nimport Lists from './Lists';\nimport Paper from './Paper';\nimport Input from './Input';\nimport Button from './Button';\nimport Tooltip from './Tooltip';\nimport Backdrop from './Backdrop';\nimport Typography from './Typography';\nimport IconButton from './IconButton';\nimport Autocomplete from './Autocomplete';\n\n// ----------------------------------------------------------------------\n\nexport default function ComponentsOverrides(theme) {\n return merge(\n Card(theme),\n Lists(theme),\n Paper(theme),\n Input(theme),\n Button(theme),\n Tooltip(theme),\n Backdrop(theme),\n Typography(theme),\n IconButton(theme),\n Autocomplete(theme)\n );\n}\n","// ----------------------------------------------------------------------\n\nexport default function Card(theme) {\n return {\n MuiCard: {\n styleOverrides: {\n root: {\n boxShadow: theme.customShadows.z16,\n borderRadius: theme.shape.borderRadiusMd,\n position: 'relative',\n zIndex: 0 // Fix Safari overflow: hidden with border radius\n }\n }\n },\n MuiCardHeader: {\n defaultProps: {\n titleTypographyProps: { variant: 'h6' },\n subheaderTypographyProps: { variant: 'body2' }\n },\n styleOverrides: {\n root: {\n padding: theme.spacing(3, 3, 0)\n }\n }\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: theme.spacing(3)\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Lists(theme) {\n return {\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n color: 'inherit',\n minWidth: 'auto',\n marginRight: theme.spacing(2)\n }\n }\n },\n MuiListItemAvatar: {\n styleOverrides: {\n root: {\n minWidth: 'auto',\n marginRight: theme.spacing(2)\n }\n }\n },\n MuiListItemText: {\n styleOverrides: {\n root: {\n marginTop: 0,\n marginBottom: 0\n },\n multiline: {\n marginTop: 0,\n marginBottom: 0\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Paper() {\n return {\n MuiPaper: {\n defaultProps: {\n elevation: 0\n },\n\n styleOverrides: {\n root: {\n backgroundImage: 'none'\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Input(theme) {\n return {\n MuiInputBase: {\n styleOverrides: {\n root: {\n '&.Mui-disabled': {\n '& svg': { color: theme.palette.text.disabled }\n }\n },\n input: {\n '&::placeholder': {\n opacity: 1,\n color: theme.palette.text.disabled\n }\n }\n }\n },\n MuiInput: {\n styleOverrides: {\n underline: {\n '&:before': {\n borderBottomColor: theme.palette.grey[500_56]\n }\n }\n }\n },\n MuiFilledInput: {\n styleOverrides: {\n root: {\n backgroundColor: theme.palette.grey[500_12],\n '&:hover': {\n backgroundColor: theme.palette.grey[500_16]\n },\n '&.Mui-focused': {\n backgroundColor: theme.palette.action.focus\n },\n '&.Mui-disabled': {\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n underline: {\n '&:before': {\n borderBottomColor: theme.palette.grey[500_56]\n }\n }\n }\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n '& .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.grey[500_32]\n },\n '&.Mui-disabled': {\n '& .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.action.disabledBackground\n }\n }\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Button(theme) {\n return {\n MuiButton: {\n styleOverrides: {\n root: {\n '&:hover': {\n boxShadow: 'none'\n }\n },\n sizeLarge: {\n height: 48\n },\n containedInherit: {\n color: theme.palette.grey[800],\n boxShadow: theme.customShadows.z8,\n '&:hover': {\n backgroundColor: theme.palette.grey[400]\n }\n },\n containedPrimary: {\n boxShadow: theme.customShadows.primary\n },\n containedSecondary: {\n boxShadow: theme.customShadows.secondary\n },\n outlinedInherit: {\n border: `1px solid ${theme.palette.grey[500_32]}`,\n '&:hover': {\n backgroundColor: theme.palette.action.hover\n }\n },\n textInherit: {\n '&:hover': {\n backgroundColor: theme.palette.action.hover\n }\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Tooltip(theme) {\n return {\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backgroundColor: theme.palette.grey[800]\n },\n arrow: {\n color: theme.palette.grey[800]\n }\n }\n }\n };\n}\n","import { alpha } from '@mui/material/styles';\n\n// ----------------------------------------------------------------------\n\nexport default function Backdrop(theme) {\n // const varLow = alpha(theme.palette.grey[900], 0.48);\n // const varHigh = alpha(theme.palette.grey[900], 1);\n const varG = alpha(theme.palette.primary.main, 0.1);\n\n return {\n MuiBackdrop: {\n styleOverrides: {\n root: {\n backgroundColor: varG,\n backdropFilter: 'blur(5px)',\n // background: [\n // `rgb(22,28,36)`,\n // `-moz-linear-gradient(75deg, ${varLow} 0%, ${varLow} 100%)`,\n // `-webkit-linear-gradient(75deg, ${varLow} 0%, ${varLow} 100%)`,\n // `linear-gradient(75deg, ${varLow} 0%, ${varLow} 100%)`\n // ],\n '&.MuiBackdrop-invisible': {\n background: 'transparent'\n }\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Typography(theme) {\n return {\n MuiTypography: {\n styleOverrides: {\n paragraph: {\n marginBottom: theme.spacing(2)\n },\n gutterBottom: {\n marginBottom: theme.spacing(1)\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function IconButton(theme) {\n return {\n MuiIconButton: {\n variants: [\n {\n props: { color: 'default' },\n style: {\n '&:hover': { backgroundColor: theme.palette.action.hover }\n }\n },\n {\n props: { color: 'inherit' },\n style: {\n '&:hover': { backgroundColor: theme.palette.action.hover }\n }\n }\n ],\n\n styleOverrides: {\n root: {}\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Autocomplete(theme) {\n return {\n MuiAutocomplete: {\n styleOverrides: {\n paper: {\n boxShadow: theme.customShadows.z20\n }\n }\n }\n };\n}\n","// material\nimport { alpha } from '@mui/material/styles';\nimport palette from './palette';\n\n// ----------------------------------------------------------------------\n\nconst LIGHT_MODE = palette.grey[500];\n\nconst createShadow = (color) => {\n const transparent1 = alpha(color, 0.2);\n const transparent2 = alpha(color, 0.14);\n const transparent3 = alpha(color, 0.12);\n return [\n 'none',\n `0px 2px 1px -1px ${transparent1},0px 1px 1px 0px ${transparent2},0px 1px 3px 0px ${transparent3}`,\n `0px 3px 1px -2px ${transparent1},0px 2px 2px 0px ${transparent2},0px 1px 5px 0px ${transparent3}`,\n `0px 3px 3px -2px ${transparent1},0px 3px 4px 0px ${transparent2},0px 1px 8px 0px ${transparent3}`,\n `0px 2px 4px -1px ${transparent1},0px 4px 5px 0px ${transparent2},0px 1px 10px 0px ${transparent3}`,\n `0px 3px 5px -1px ${transparent1},0px 5px 8px 0px ${transparent2},0px 1px 14px 0px ${transparent3}`,\n `0px 3px 5px -1px ${transparent1},0px 6px 10px 0px ${transparent2},0px 1px 18px 0px ${transparent3}`,\n `0px 4px 5px -2px ${transparent1},0px 7px 10px 1px ${transparent2},0px 2px 16px 1px ${transparent3}`,\n `0px 5px 5px -3px ${transparent1},0px 8px 10px 1px ${transparent2},0px 3px 14px 2px ${transparent3}`,\n `0px 5px 6px -3px ${transparent1},0px 9px 12px 1px ${transparent2},0px 3px 16px 2px ${transparent3}`,\n `0px 6px 6px -3px ${transparent1},0px 10px 14px 1px ${transparent2},0px 4px 18px 3px ${transparent3}`,\n `0px 6px 7px -4px ${transparent1},0px 11px 15px 1px ${transparent2},0px 4px 20px 3px ${transparent3}`,\n `0px 7px 8px -4px ${transparent1},0px 12px 17px 2px ${transparent2},0px 5px 22px 4px ${transparent3}`,\n `0px 7px 8px -4px ${transparent1},0px 13px 19px 2px ${transparent2},0px 5px 24px 4px ${transparent3}`,\n `0px 7px 9px -4px ${transparent1},0px 14px 21px 2px ${transparent2},0px 5px 26px 4px ${transparent3}`,\n `0px 8px 9px -5px ${transparent1},0px 15px 22px 2px ${transparent2},0px 6px 28px 5px ${transparent3}`,\n `0px 8px 10px -5px ${transparent1},0px 16px 24px 2px ${transparent2},0px 6px 30px 5px ${transparent3}`,\n `0px 8px 11px -5px ${transparent1},0px 17px 26px 2px ${transparent2},0px 6px 32px 5px ${transparent3}`,\n `0px 9px 11px -5px ${transparent1},0px 18px 28px 2px ${transparent2},0px 7px 34px 6px ${transparent3}`,\n `0px 9px 12px -6px ${transparent1},0px 19px 29px 2px ${transparent2},0px 7px 36px 6px ${transparent3}`,\n `0px 10px 13px -6px ${transparent1},0px 20px 31px 3px ${transparent2},0px 8px 38px 7px ${transparent3}`,\n `0px 10px 13px -6px ${transparent1},0px 21px 33px 3px ${transparent2},0px 8px 40px 7px ${transparent3}`,\n `0px 10px 14px -6px ${transparent1},0px 22px 35px 3px ${transparent2},0px 8px 42px 7px ${transparent3}`,\n `0px 11px 14px -7px ${transparent1},0px 23px 36px 3px ${transparent2},0px 9px 44px 8px ${transparent3}`,\n `0px 11px 15px -7px ${transparent1},0px 24px 38px 3px ${transparent2},0px 9px 46px 8px ${transparent3}`\n ];\n};\n\nconst createCustomShadow = (color) => {\n const transparent = alpha(color, 0.24);\n\n return {\n z1: `0 1px 2px 0 ${transparent}`,\n z8: `0 8px 16px 0 ${transparent}`,\n z12: `0 0 2px 0 ${transparent}, 0 12px 24px 0 ${transparent}`,\n z16: `0 0 2px 0 ${transparent}, 0 16px 32px -4px ${transparent}`,\n z20: `0 0 2px 0 ${transparent}, 0 20px 40px -4px ${transparent}`,\n z24: `0 0 4px 0 ${transparent}, 0 24px 48px 0 ${transparent}`,\n primary: `0 8px 16px 0 ${alpha(palette.primary.main, 0.24)}`,\n secondary: `0 8px 16px 0 ${alpha(palette.secondary.main, 0.24)}`,\n info: `0 8px 16px 0 ${alpha(palette.info.main, 0.24)}`,\n success: `0 8px 16px 0 ${alpha(palette.success.main, 0.24)}`,\n warning: `0 8px 16px 0 ${alpha(palette.warning.main, 0.24)}`,\n error: `0 8px 16px 0 ${alpha(palette.error.main, 0.24)}`\n };\n};\n\nexport const customShadows = createCustomShadow(LIGHT_MODE);\n\nconst shadows = createShadow(LIGHT_MODE);\n\nexport default shadows;\n","import PropTypes from 'prop-types';\nimport { useMemo } from 'react';\n// material\nimport { CssBaseline } from '@mui/material';\nimport { ThemeProvider, createTheme, StyledEngineProvider } from '@mui/material/styles';\n//\nimport shape from './shape';\nimport palette from './palette';\nimport typography from './typography';\nimport componentsOverride from './overrides';\nimport shadows, { customShadows } from './shadows';\n\n// ----------------------------------------------------------------------\n\nThemeConfig.propTypes = {\n children: PropTypes.node\n};\n\nexport default function ThemeConfig({ children }) {\n const themeOptions = useMemo(\n () => ({\n palette,\n shape,\n typography,\n shadows,\n customShadows\n }),\n []\n );\n\n const theme = createTheme(themeOptions);\n theme.components = componentsOverride(theme);\n\n return (\n \n \n \n {children}\n \n \n );\n}\n","// material\nimport { useTheme } from '@mui/material/styles';\nimport { GlobalStyles as GlobalThemeStyles } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nexport default function GlobalStyles() {\n const theme = useTheme();\n\n return (\n \n );\n}\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n// ----------------------------------------------------------------------\n\nexport default function ScrollToTop() {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n}\n","// routes\nimport Router from \"./routes\";\n// theme\nimport ThemeConfig from \"./theme\";\nimport GlobalStyles from \"./theme/globalStyles\";\n// components\nimport ScrollToTop from \"./components/ScrollToTop\";\nimport { BaseOptionChartStyle } from \"./components/charts/BaseOptionChart\";\nimport React from \"react\";\n\n// ----------------------------------------------------------------------\n\nexport default function App() {\n return (\n \n \n \n \n \n \n );\n}\n","/* eslint-disable */\n/* @ts-nocheck */\n\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log('This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA');\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator\n .serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log('New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.');\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator\n .serviceWorker\n .ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","// scroll bar\nimport \"simplebar/src/simplebar.css\";\n\nimport ReactDOM from \"react-dom\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport { HelmetProvider } from \"react-helmet-async\";\n\n//\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n// import reportWebVitals from \"./reportWebVitals\";\nimport { SnackbarProvider } from \"notistack\";\n// material ui\nimport Zoom from \"@mui/material/Zoom\";\n// ----------------------------------------------------------------------\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to enable client cache, register instead.\nserviceWorker.unregister();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n// reportWebVitals();\n","const etp = require(\"etp\");\nconst avro = require(\"etp-avro\");\nconst Core = etp.Energistics.Protocol.Core;\nconst Streaming = etp.Energistics.Protocol.ChannelStreaming;\nconst Discovery = etp.Energistics.Protocol.Discovery;\nconst Store = etp.Energistics.Protocol.Store;\nconst PROTOCOL = etp.Energistics.Datatypes.Protocols;\n\n// Core\nexport function sendRequestSession(connection) {\n var supportedProtocol = new etp.Energistics.Datatypes.SupportedProtocol();\n var supportedProtocols = []; // should be Array\n var version = new etp.Energistics.Datatypes.Version();\n version.major = 2;\n version.minor = 0;\n supportedProtocol.role = \"producer\";\n supportedProtocol.protocol = 1;\n supportedProtocol.protocolVersion = version;\n supportedProtocols.push(supportedProtocol);\n\n supportedProtocol = new etp.Energistics.Datatypes.SupportedProtocol();\n supportedProtocol.role = \"store\";\n supportedProtocol.protocol = 3;\n supportedProtocol.protocolVersion = version;\n supportedProtocols.push(supportedProtocol);\n\n supportedProtocol = new etp.Energistics.Datatypes.SupportedProtocol();\n supportedProtocol.role = \"store\";\n supportedProtocol.protocol = 4;\n supportedProtocol.protocolVersion = version;\n supportedProtocols.push(supportedProtocol);\n\n var header = generateHeader(PROTOCOL.Core, Core.MsgRequestSession, 0, 0, 0);\n var message = new etp.Energistics.Protocol.Core.RequestSession();\n message.requestedProtocols = supportedProtocols;\n message.applicationName = \"\";\n message.applicationVersion = \"3.0\";\n var dataToSend = generateMsg(header, message);\n connection.send(dataToSend);\n}\n\n// Discovery\nexport function sendGetRessource(connection, uri) {\n var header = generateHeader(\n PROTOCOL.Discovery,\n Discovery.MsgGetResources,\n 0,\n 0,\n 0\n );\n var getRessource = new etp.Energistics.Protocol.Discovery.GetResources();\n getRessource.uri = uri;\n var data = generateMsg(header, getRessource);\n connection.send(data);\n}\n\n// Streaming\nexport function sendDescribe(connection, uris) {\n var header = generateHeader(\n PROTOCOL.ChannelStreaming,\n Streaming.MsgChannelDescribe,\n 0,\n 0,\n 0\n );\n var describe =\n new etp.Energistics.Protocol.ChannelStreaming.ChannelDescribe();\n describe.uris = uris;\n connection.send(generateMsg(header, describe));\n}\n\nexport function sendStart(connection, msgRate, dataItems) {\n var header = generateHeader(\n PROTOCOL.ChannelStreaming,\n Streaming.MsgStart,\n 0,\n 0,\n 0\n );\n var start = new etp.Energistics.Protocol.ChannelStreaming.Start();\n start.maxMessageRate = msgRate;\n start.maxDataItems = dataItems;\n connection.send(generateMsg(header, start));\n}\n\nexport function sendStartStreaming(connection, channelInfos) {\n var header = generateHeader(\n PROTOCOL.ChannelStreaming,\n Streaming.MsgChannelStreamingStart,\n 0,\n 0,\n 0\n );\n var streamingStart =\n new etp.Energistics.Protocol.ChannelStreaming.ChannelStreamingStart();\n streamingStart.channels = channelInfos;\n connection.send(generateMsg(header, streamingStart));\n}\n\nexport function sendRangeRequest(connection, channelsInfos, correlationId) {\n // console.log(\"*******sendRangeRequest\", channelsInfos);\n var header = generateHeader(\n PROTOCOL.ChannelStreaming,\n Streaming.MsgChannelRangeRequest,\n correlationId,\n correlationId,\n 0\n );\n var rangeRequest =\n new etp.Energistics.Protocol.ChannelStreaming.ChannelRangeRequest();\n rangeRequest.channelRanges = channelsInfos;\n connection.send(generateMsg(header, rangeRequest));\n}\n\n// Store\nexport function sendGetObject(connection, uri) {\n var header = generateHeader(PROTOCOL.Store, Store.MsgGetObject, 0, 0, 0);\n var getObj = new etp.Energistics.Protocol.Store.GetObject();\n getObj.uri = uri;\n connection.send(generateMsg(header, getObj));\n}\n\nexport function generateHeader(protocol, msgType, msgId, corrId, msgFlags) {\n return {\n protocol: protocol,\n messageType: msgType,\n messageId: msgId,\n correlationId: corrId,\n messageFlags: msgFlags,\n };\n}\n\nexport function generateMsg(header, message) {\n var schemaCache = new etp.SchemaCache();\n var schemaName = schemaCache.find(\n header.protocol,\n header.messageType\n ).fullName;\n\n var encoder = new avro.BinaryWriter(schemaCache);\n encoder.writeDatum(\"Energistics.Datatypes.MessageHeader\", header);\n encoder.writeDatum(schemaName, message);\n var dataToSend = encoder.getArrayBuffer();\n return dataToSend;\n}\n\nexport function readMsg(msg) {\n var msg_header = null;\n var msg_message = null;\n var schemaCache = new etp.SchemaCache();\n\n if (typeof msg.data == \"object\") {\n var reader = new avro.BinaryReader(schemaCache, new Uint8Array(msg.data));\n\n msg_header = reader.readDatum(\"Energistics.Datatypes.MessageHeader\");\n msg_message = reader.readDatum(\n schemaCache.find(msg_header.protocol, msg_header.messageType)\n );\n return [msg_header, msg_message];\n }\n}\n\nexport const parseMsg = (socket, msg, cb) => {\n var msg_header = null;\n var msg_message = null;\n var schemaCache = new etp.SchemaCache();\n if (typeof msg.data == \"object\") {\n var buffer = null;\n const fileReader = new FileReader();\n fileReader.onloadend = (e) => {\n buffer = Buffer.from(fileReader.result);\n buffer.readUInt8(1);\n var reader = new avro.BinaryReader(schemaCache, buffer);\n msg_header = reader.readDatum(\"Energistics.Datatypes.MessageHeader\");\n msg_message = reader.readDatum(\n schemaCache.find(msg_header.protocol, msg_header.messageType)\n );\n cb(socket, msg_header, msg_message);\n };\n fileReader.readAsArrayBuffer(msg.data);\n } else {\n var data = JSON.parse(msg.data);\n msg_header = data[0];\n msg_message = data[1];\n return { header: msg_header, message: msg_message };\n }\n};\n\nexport class BidirectionalMap {\n fwdMap = {}\n revMap = {}\n\n constructor(map) {\n this.fwdMap = { ...map }\n this.revMap = Object.keys(map).reduce(\n (acc, cur) => ({\n ...acc,\n [map[cur]]: cur,\n }),\n {}\n )\n }\n\n get(key) {\n return this.fwdMap[key] || this.revMap[key]\n }\n\n add(pair) {\n this.fwdMap[pair[0]] = pair[1]\n this.revMap[pair[1]] = pair[0]\n }\n}","export const getFromLS = (storage) => {\n let ls = {};\n if (global.localStorage) {\n try {\n ls = JSON.parse(global.localStorage.getItem(storage)) || {};\n } catch (e) {\n return null;\n }\n }\n return ls;\n};\n\nexport const saveToLS = (storage, data) => {\n if (global.localStorage) {\n global.localStorage.setItem(\n storage,\n JSON.stringify(data)\n );\n }\n};\n"],"sourceRoot":""}
Drag & Drop your files here
\n Ready to upload\n
{item.name}
{item.size}B
Loading...