{"version":3,"sources":["../node_modules/@mrwa/crashmap/esriControls/crashmapTools/collisionDiagrams/img sync nonrecursive /.(jpg)$","reportWebVitals.js","data/playerContext.js","data/fileType.js","playlist/VideoToGpsMatchDialog.js","context.js","fileSelection/NomadBreadcrumbs.js","fileSelection/NomadFileList.js","fileSelection/NomadFolderList.js","fileSelection/NomadSelect.js","data/misc.js","data/baseParser.js","data/nmeaParser.js","fileSelection/extractions.js","fileSelection/Nomad.png","fileSelection/OpenOrExtractFileDialog.js","data/gpxParser.js","data/gpsData.js","video/VideoPlayer.js","player/MediaPanel.js","player/TimeSelector.js","data/irisRoadData.js","locationInformation.js","roadSafety/crashState.js","roadSafety/CrashData.js","map/BaseMapSelector.js","roadSafety/collisionDiagramImages.js","map/CrashDependentComponent.js","map/LayerControl.js","map/MapControl.js","roadSafety/SpeedSign.js","data/ballBankData.js","data/ballBankParser.js","roadSafety/BallBank.js","roadSafety/RoadData.js","roadview.svg","roadSafety/RoadSafetyPanel.js","coordinateList/pin-left.svg","layerInformation/CollapseLayerPanel.js","layerInformation/LayerDetails.js","layerInformation/LayerPanel.js","coordinateList/pin-right.svg","coordinateList/coordinateListState.js","coordinateList/AddCoordinateToolBar.js","coordinateList/SavedPoint.js","coordinateList/SavedLine.js","coordinateList/CoordinateList.js","playlist/Playlist.js","videoTools/ScreenshotTool.js","App.js","Auth.js","index.js"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","playerContext","play","pause","setTime","setPlaybackRate","openFiles","requestRefresh","this","playing","playbackRate","videoInformation","gpsInformation","current","allData","videoToGpsFileMapping","playlistIndex","playingName","requestPlay","bind","requestPause","requestTime","requestPlaybackRate","requestOpenFiles","length","callback","push","forEach","func","i","splice","notifyStateSubscribers","seconds","rate","info","gpsFileUpdated","oldGpsData","notifyGpsDataSubscribers","notifyGpsFileSubscribers","isNew","notifyNewPlaylistSubscribers","index","FileType","file","construct","url","name","getFileName","fileUnion","case","FileSystem","Url","_","VideoToGpsMatchDialog","props","state","selections","handleSelect","handleAccept","handleMappings","prevProps","videosArray","Array","from","videoFiles","item","gpsArray","gpsFiles","videoNames","video","slice","lastIndexOf","gpsNames","gps","videoName","gpsIndex","indexOf","filter","x","setState","hasDuplicates","Set","size","find","messageState","message","ApplicationMessage","Info","onAccept","foundIndex","findIndex","target","previousState","value","selection","footerContents","type","onClick","className","onReject","modalProps","show","showVideoToGpsMatchDialog","title","hidden","onChange","gpsToVideoMatch","React","Component","AuthContext","createContext","CrashContext","isCrashUser","mapInitialised","NomadBreadcrumbs","crumbs","currentLocation","loading","refreshCrumbs","folderId","searchTerm","a","axios","get","nomadApiUrl","headers","Authorization","token","response","detail","data","parents","parent","assetType","displayName","properties","breadcrumbs","clearSearch","icon","faArrowLeft","breadcrumb","navigateToFolder","mediaType","columns","findAssociatedGps","gpsAsset","relatedAssets","related","metadataType","fullUrl","substring","NomadFileList","files","selectedFiles","sort","column","ascending","toggleColumnSort","selectFile","selectAll","acceptSelection","disabledActionButton","disabled","actionButton","refreshFileList","multiSelect","setActionButton","loadedFileCount","getFilesPage","pageOffset","filters","fieldName","operator","values","contentDefinitionId","assetTypes","postData","returnedFieldNames","pageSize","searchQuery","post","fileInfo","validItems","items","AcceptedGPSTypes","some","extension","toUpperCase","endsWith","totalItemCount","parseInt","currentTarget","dataset","sortColumn","includes","fileId","loadFiles","Promise","all","identifiers","previewVideoFullUrl","withAttachedGps","forVideo","createdDate","Date","textSort","b","itemA","itemB","file1","file2","f1","f2","videoDuration","ownerName","ownerUsername","style","width","readOnly","checked","headingClass","faFileVideo","faFileAlt","videoDurationDisplay","toLocaleString","parentId","displayPath","NomadFolderList","folders","refreshFolderList","getFolderPage","folder","folderInfo","faFolder","startParentId","ensureUniqueName","existingNames","originalName","workingName","left","right","NomadSelect","searchValue","cancelButton","setTitle","loadNomad","cancelFileSelectButton","cancelFileSelect","searchValueChanged","handleSearchKeyPress","performSearch","loadVideo","loadFolder","awaitingMapInitialisation","context","getCorpAuthToken","username","currentToken","assetId","defaultRedirect","stopPropagation","checkForGPS","updateIndex","updatedFiles","missingGpsFile","filesSelected","ev","key","setButtonOverrides","action","cancel","removeIndex","placeholder","onKeyPress","role","faSearch","contextType","formatterDate","Intl","DateTimeFormat","year","month","day","formatterDay","weekday","formatterTime","hour","minute","second","hour12","formatterTime24","hourCycle","loadFileAsText","reject","reader","FileReader","onload","result","onerror","readAsText","fetch","text","downloadFile","element","document","createElement","href","download","body","appendChild","click","URL","revokeObjectURL","removeChild","formatDate","date","format","formatTime","toRadians","degrees","Math","PI","toDegrees","radians","addBearing","bearingValue","calculateBearing","direction","calculateDirection","row","speed","startPoint","endPoint","startLat","latitude","startLng","longitude","destLat","destLng","y","sin","cos","atan2","bearingSlice","slices","sliceStart","parseRawData","fileData","splitRows","split","dataRMC","dataGGA","rmcArray","rmc","dateTime","convertGpsDate","convertGpsTime","sortingKey","coordinateConvert","time","dateDisplay","timeDisplay","dateSet","ggaArray","gga","dateString","toISOString","mergedData","geom","wholepart","fractional","combinedResult","parseFloat","toFixed","convertHr","BlackVueH265StartPoint","BlackVueH264StartPoint","extractGoPro","onProgress","cancellationToken","extractionState","extractionPercent","progress","percent","gpmfExtract","browserMode","useWorker","extracted","startsWith","endDate","timing","start","setSeconds","getSeconds","window","setImmediate","setTimeout","goproTelemetry","groupTimes","disableMerging","disableInterpolaltion","stream","GPS5Precision","GPS5Fix","WrongSpeed","telemetry","samples","streams","GPS5","downloadAsGpx","x1","x2","reduce","ele","extractBlackVue","getNMEA","decoder","TextDecoder","fileSize","likelyChunkCount","location","startLocation","results","textResult","decode","Uint8Array","join","replaceAll","cancelled","readAsArrayBuffer","isHEVC","nmea","parseRawNmeaData","isNaN","undefined","recordedPath","fileName","xmlAsJson","gpx","trk","trkseg","trkpt","xml","XMLBuilder","ignoreAttributes","build","Blob","endings","createObjectURL","substr","ManufacturerSignatures","GoPro","BlackVue","UnsupportedSignatures","OpenOrExtractFileDialog","extracting","nomadSelect","mainFileInputClicked","nomadFilesSelected","extractFileInputClicked","validateExtractFile","nomadSelectClicked","mainFileInput","createRef","extractFileInput","isGps","fileSignature","toString","padStart","entries","processGoPro","processBlackVue","Confirm","validVideoManufactuers","close","panelClass","contentsClass","max","isCorp","renderStandard","buttonOverrides","nomadSelectTitle","buttons","faFolderOpen","accept","multiple","display","ref","faMapMarkerAlt","src","alt","renderExtract","renderNomadSelect","XMLParser","parse","bufferDistanceMetres","calculateBufferedLine","dataRows","requestEsriModules","GeometryUtils","GeometryEngine","pathGeo","point","mapHelper","projectToView","fromJSON","paths","line","buffer","gpsToPoint","gpsRow","Point","spatialReference","wkid","parseGpsData","fileType","includeGeometry","parseNmeaData","projectedGeometry","parseGpxData","gpsData","onReadComplete","bufferedGeometry","gpsDataResponse","offsetSeconds","timeline","getTime","gpsDesiredTime","cutTimeline","isValidGeometry","forwardRef","forwardedRef","VideoPlayer","URLSearchParams","search","has","gpsRows","videoUrl","showOpenFileDialog","videoPlayer","closeVideoToGpsMatchDialog","videoTimeUpdate","metadataLoaded","acceptVideoToGpsMatchDialog","handleSelectFiles","hideOpenFileDialog","playEnded","videoPlay","videoPause","refreshTime","onContextStateChanged","playerStateChanged","setPlayerContext","console","log","videoSequence","handlePlaylistUpdates","videoIndex","dataIndex","currentPlayingIndex","gpsFileInputChanged","videoFileInputChanged","setPlayerContextForTime","duration","currentTime","getDataAtTime","setGpsInformation","setVideoInformation","videoPosition","videoLength","paused","setPlaylistIndex","setDefaultOrder","sortedSelections","setPlayerFiles","fileContents","parseFile","findValidRow","error","selectionsWithTimes","fileUrl","replace","readGpsFile","playsInline","muted","onEnded","onTimeUpdate","onLoadedMetadata","crossOrigin","pointerEvents","MediaPanel","requestFrameBack","requestLargeBack","requestSmallBack","requestSmallForward","requestLargeForward","requestFrameForward","delta","faStepBackward","faFastBackward","faBackward","faPause","faPlay","faForward","faFastForward","faStepForward","TimeSelector","showSettings","toggleSettings","handleTimeSelection","handleChangePlaybackRate","clearTimeout","currentlyPlaying","playbackSpeedClass","classNames","shown","min","step","onInput","faCog","irisRoadData","isInitialised","currentRoadData","irisRoadFeatures","irisDataChanged","irisRoadLayerConfig","onGpsDataChanged","gpsDataChanged","onGpsFileChanged","gpsFileChanged","uniqueIdentifier","subLayerId","rimeLayer","layers","layer","isMatchingLayer","query","geometry","spatialRelationship","outFields","returnGeometry","returnM","queryFeatures","features","determineClosestFeature","determineSlk","roadFeature","nearestCoordinate","roadFeatureVertices","flat","segmentStart","toPoint","vertexIndex","vertex","m","mapView","segmentEnd","distance","segmentLength","coordinate","pointDistance","currentPoint","closure","feature","distances","notifySubscribers","slk","roadNoAttribute","roadNameAttribute","cwyAttribute","roadNo","attributes","roadName","cwy","GPSInformation","offset","hasData","offsetChanged","setTimeOffset","htmlFor","SLKInformation","irisDataSet","dataChanged","initialise","onirisDataChanged","roadData","crashState","accountId","roadViewVehicleDetailsUrl","initialised","getAuthToken","crashDetailsState","Proxy","SubscriptionProxyHandler","CrashData","filterManager","crashDetailsDisplayManager","crashResultMarkup","mapSettings","severityDisplaySettings","crashes","filteredCrashes","getAuthorizationHeader","handleFilterUpdated","updateFilteredCrashes","showCollisionDiagrams","handleShowQuerySummary","showQuerySummary","crashDataApiUrl","filterQuery","searchResultFilters","JSON","Groups","group","crashFilterGroupLookups","LookupDomain","showCrashPopupContent","fetchCrashVehicleDetails","unfiltered","hideCrashDisplays","areaParams","extent","crashQuery","crashDetails","queryResults","sortedCrashes","sortBySlk","clearResultsMarkup","addResultMarkers","content","ProjectedGeometry","goTo","center","currentCrashPopupContent","hasContent","updatedFilters","filterCrashes","currentQuerySummaryPopupContent","crashVehicleDetails","cacheVehicleDetails","collisionDiagramFeatures","crash","visibleCrashes","contains","emptyStateObject","displaySettings","originalFilters","onFiltersChanged","itemKey","view","buttonIconComponent","ACDTButtonIconComponent","faPercentage","BaseMapSelector","basemaps","active","selectOne","selectItem","selectTwo","selectThree","Basemap","mapOne","fromId","mapTwo","mapThree","basemap","backgroundImage","thumbnailUrl","PureComponent","componentName","r","CrashDependentComponent","bindCrashUserChange","children","images","require","match","default","LayerControl","setHeaderButtons","RimeLayerControl","initialiseExternalControl","createCrashDependantComponent","contents","ToolStyle","reactElement","position","containerClass","CrashDetailsPopupControl","controlName","CollisionDiagramsOverpanel","collisionDiagramImages","QuerySummaryPanel","settings","initialiseExternalTool","AddCustomLayerTool","generateCarIcon","graphicsLayer","Graphic","symbol","height","angle","process","carIcon","graphics","add","RoadViewMapControl","controls","behaviours","crashChangeComponentCallbacks","layersChanged","setupPlayerContext","routeFeaturesGraphicsLayer","visible","featureCollections","identifyResults","activeTool","expectedParentLayers","layerInfo","subscribe","getMap","l","layerType","CrashLayer","overrideVisible","selectionLayerId","symbologySwitchScale","initialiseExternalLayer","getControls","tools","getTools","getBehaviours","addCrashChangeCallback","graphicsByLayer","loaded","topParent","removeMany","delete","showFeaturesAsGraphics","localStorage","getItem","set","sourceLayer","renderer","getSymbolAsync","removeAll","rl1","rl2","addMany","Map","carGraphicsLayer","zoomToGeometry","GraphicsLayer","setInterval","reorder","breakpoints","xsmall","flex","commands","appName","SpeedSign","threeDigit","speedLimit","BallBankRun","vicinity","comment","curves","flatMap","c","points","pt","coordinates","curve_date","road_name","LR","curveType","ball_bank","ballBank","test_speed","testSpeed","advisory_speed","advisorySpeed","fromFile","Curve","minSpeedPoint","safeSpeed","minPoint","PointData","refDist","round","sqrt","pow","DividerRowType","BallBankFields","runs","rows","runExtents","getRunExtents","currentRun","extents","arr","previousEndExtent","endRow","createRun","startRow","curve","lastDist","pointDataStartIndexes","j","startIndex","charAt","removeAndTrim","err","fileRows","previousEndRow","headerStartRow","headerEndRow","headerRows","convertBallBankDate","removeValues","outputValue","rem","trim","curveStartEndRows","val","indexes","getAllIndexes","rowNum","isPreviousRowStart","isNextRowEnd","dividerRowNumber","dividerType","divider","ballBankDate","FeatureSource","BallBank","videoSelections","ballBankFeatures","selectedRun","curveSpeed","currentBallBankFeatures","fileInput","fileUpload","handleSelectRun","updateCurrentBallBankFeatures","referencePoint","calculateCurveSpeed","bufferedPoint","every","mapping","vid","within","filterFeaturesNearPoint","featuresNearPoint","overrideRun","processRuns","source","curveSurveyFeatures","getRunId","featureDistances","curveFeature","safeSpeedAttribute","curveSurveyLayerConfig","suffix","runDateAttribute","runNameAttribute","possibleRuns","mapFeaturesToRunIds","allRunIds","sortedFeatures","run","isTXT","invalidFiles","featureData","validBallBankFeatures","flattenedFeatures","getFlattenedRun","runPoints","concat","pointFeatures","f","ballBankPoints","highlightUnsafeSpeed","speedWarningThresholdKph","curveSurveyLoading","stringify","highlight","RoadData","pavementDetails","hazardRating","alignmentDetails","leftUnsealed","leftSealed","sealWidth","laneCount","rightSealed","rightUnsealed","leftHazardRating","rightHazardRating","verticalCurveType","gradePercent","verticalDesignSpeed","horizontalProfile","curveRadius","calculatedSafeSpeed","crossfall","flexBasis","pavementDetailsLoading","hazardRatingLoading","alignmentDetailsLoading","fontSize","_g","possibleSpeeds","RoadSafetyPanel","allowSelection","curveSurveyReferencePoint","speedLimitLoading","speedLimitSet","handleSpeedChange","roadDataChanged","speedLimitFeatures","speedLimitDistances","speedLimitFeature","speedLimitLayerConfig","speedLimitAttribute","featuresWithinBuffer","curveSurveyBufferedPoint","pavementDetailsFeatures","pavementDetailDistances","minDistance","pavementDetailsFeature","pavementDetailsLayerConfig","leftUnsealedAttribute","leftSealedAttribute","sealWidthAttribute","laneCountAttribute","rightSealedAttribute","rightUnsealedAttribute","hazardRatingFeatures","roadsideHazardRatingLayerConfig","startSLKAttribute","endSLKAttribute","leftRightAttribute","hazardRatingAttribute","applicableFeatures","leftFeature","rightFeature","alignmentFeatures","alignmentDistances","alignmentFeature","geometryAlignmentLayerConfig","verticalCurveTypeAttribute","gradeAttribute","verticalDesignSpeedAttribute","horizontalProfileAttribute","curveRadiusAttribute","calculatedSafeSpeedAttribute","crossfallAttribute","getCurrentPoint","updateSpeedLimitValue","updateCurveSurveyValues","updatePavementDetailsValues","updateAlignmentValues","updateHazardRatingValues","getLayerData","finally","speedSelection","_excluded","_extends","assign","arguments","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgRoadview","_ref","svgRef","titleId","xmlns","viewBox","preserveAspectRatio","transform","stroke","d","ForwardRef","CollapseLayer","collapsed","togglePanelCollapse","fileChanged","togglePanelExpand","legend","faChevronDown","faChevronUp","LayerDetails","attributeTitles","attributeValues","layerFeatures","getNameToAliasMap","removeOnGpsDataChanged","closestFeature","mapTitles","esriLayerToLayer","nameToAliasMap","LayerPanel","expand","filteredGeometries","setLayers","excludedLayers","excludedLayer","serverLayers","ServerSubLayer","sourceJSON","geometryType","customLayers","CustomFileLayer","uuidv4","uid","SvgPinLeft","SvgPinRight","_savedCoordinates","AddCoordinateToolBar","isRecording","startCoordinates","handleAddPoint","startCapture","handleCapture","endCapture","pointGeometry","lineGeometry","startLatitude","startLongitude","endIndex","Polyline","pointCoordinate","note","toPointGeometry","pointCoord","coordinateListState","savedCoordinates","endLatitude","endLongitude","startData","endData","convertedStartPoint","convertedEndPoint","geodesicLength","endCoordinate","startRoadNo","startRoadName","startSLK","endRoadNo","endRoadName","endSLK","combinedCoordinate","toPolylineGeometry","calculateStraightLineDistance","calculateDistance","straightLineDistance","alongRoadDistance","resultCoordinate","buttonClass","buttonClassDisabled","faMapPin","SavedPoint","SavedLine","isSameRoad","hasSlk","pointHeader","segmentHeader","csvStringToArray","matches","re","exec","parsePoint","parseSegment","CoordinateList","removeCoordinate","handleNoteChange","handleTextExport","handleExport","handleCSVExport","handleSelectCSVFile","handleCSVImport","onNewPlaylist","previousCoords","flashGeoOutline","currentType","lineNumber","toCsv","createHeaderRow","createDataRow","coord","includeLabel","separator","toJSON","lastCoordType","coordinateData","newState","importButton","faUpload","faDownload","faSearchLocation","faTimes","Playlist","handleOnDragEnd","changePlayingItem","playPauseCurrentItem","awaitPlay","destination","playingItem","reorderItems","onDragEnd","droppableId","provided","droppableProps","innerRef","draggableId","draggableProps","dragHandleProps","ScreenshotTool","canScreenshot","takeScreenshot","videoRef","canvas","videoWidth","videoHeight","getContext","drawImage","toDataURL","faCamera","setDefaultOptions","version","setModalRoot","getElementById","App","isRoadViewUser","crashContext","sidebarExpanded","roadViewManual","toggleSidebar","handleSetPlayerContext","headerRef","settingsResponse","json","groupsQueryUrl","groupsQueryB2CScopes","groups","roadViewGroup","crashDataGroup","roadViewUserMessage","offsetCss","addEventListener","changeOffsetCss","innerHTML","clientHeight","collapse","marginRight","signOut","faSignOutAlt","sidebarClass","sidebar","expanded","userType","Provider","irisRoadLayer","rel","faQuestion","percentage","secondaryInitialSize","secondaryMinSize","primaryMinSize","faCaretRight","faFilm","faStream","speedLimitLayer","curveSurveyLayer","pavementDetailsLayer","roadsideHazardRatingLayer","geometryAlignmentLayer","excludedLayerDetails","ApplicationModal","config","b2c","corp","selectAccount","setAccount","msalObj","handleRedirectPromise","currentAccounts","getAllAccounts","signIn","accounts","account","homeAccountId","policies","names","idTokenClaims","iss","authorityDomain","aud","msalConfig","auth","clientId","localAccountId","loginRedirect","loginRequest","logoutRequest","postLogoutRedirectUri","redirectUri","logoutRedirect","scopes","request","tokenRequest","getAccountByHomeId","acquireTokenSilent","accessToken","msal","acquireTokenRedirect","environment","getCorpAuthTokenRedirect","getCorpAuthTokenPopup","warn","acquireTokenPopup","popupResponse","redirectError","Auth","authorised","b2cScopes","b2cClientId","corpScopes","corpClientId","authorities","authority","knownAuthorities","cache","cacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","level","containsPii","Verbose","debug","Warning","forceRefresh","idp","ReactDOM","render","StrictMode"],"mappings":"+RAAA,IAAIA,EAAM,CACT,UAAW,IACX,WAAY,IACZ,aAAc,IACd,aAAc,IACd,aAAc,IACd,aAAc,IACd,aAAc,IACd,aAAc,IACd,aAAc,IACd,aAAc,IACd,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,UAAW,IACX,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,UAAW,IACX,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,UAAW,IACX,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,UAAW,IACX,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,UAAW,IACX,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,YAAa,IACb,UAAW,IACX,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,UAAW,IACX,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,UAAW,IACX,WAAY,IACZ,WAAY,IACZ,YAAa,IACb,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,YAAa,IACb,YAAa,IACb,YAAa,IACb,YAAa,IACb,WAAY,IACZ,WAAY,IACZ,WAAY,KAIb,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOG,EAAoBF,GAE5B,SAASC,EAAsBF,GAC9B,IAAIG,EAAoBC,EAAEN,EAAKE,GAAM,CACpC,IAAIK,EAAI,IAAIC,MAAM,uBAAyBN,EAAM,KAEjD,MADAK,EAAEE,KAAO,mBACHF,EAEP,OAAOP,EAAIE,GAEZD,EAAeS,KAAO,WACrB,OAAOC,OAAOD,KAAKV,IAEpBC,EAAeW,QAAUR,EACzBS,EAAOC,QAAUb,EACjBA,EAAeE,GAAK,K,+XC1GLY,G,OAZS,SAAAC,GAClBA,GAAeA,aAAuBC,UACxC,8BAAqBC,MAAK,YAAkD,IAA/CC,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAON,GACPO,EAAQP,Q,waCPOQ,E,WAYnB,WACEC,EACAC,EACAC,EACAC,EACAC,EACAC,GACC,0ZAZ6B,KAY9B,gDAXyB,KAWzB,gDAVyB,KAUzB,gDATsB,KAUtB,YAAAC,KAAA,MAAaN,EACb,YAAAM,KAAA,MAAcL,EACd,YAAAK,KAAA,MAAgBJ,EAChB,YAAAI,KAAA,MAAwBH,EACxB,YAAAG,KAAA,MAAkBF,EAClB,YAAAE,KAAA,MAAuBD,EAEvBC,KAAKC,SAAU,EACfD,KAAKE,aAAe,EACpBF,KAAKG,iBAAmB,GACxBH,KAAKI,eAAiB,CAAEC,QAAS,GAAIC,QAAS,IAC9CN,KAAKO,sBAAwB,GAC7BP,KAAKQ,cAAgB,EACrBR,KAAKS,YAAc,GAEnBT,KAAKU,YAAcV,KAAKU,YAAYC,KAAKX,MACzCA,KAAKY,aAAeZ,KAAKY,aAAaD,KAAKX,MAC3CA,KAAKa,YAAcb,KAAKa,YAAYF,KAAKX,MACzCA,KAAKc,oBAAsBd,KAAKc,oBAAoBH,KAAKX,MACzDA,KAAKe,iBAAmBf,KAAKe,iBAAiBJ,KAAKX,M,yCAGrD,WACE,OAAOA,KAAKI,gBAAkBJ,KAAKI,eAAeE,QAAQU,OAAS,I,mCAGrE,SAAsBC,GACpB,YAAAjB,KAAA,MAAmCkB,KAAKD,K,oCAG1C,WAA0B,IAAD,OACvB,YAAAjB,KAAA,MAAmCmB,SAAQ,SAACF,GAAD,OAAcA,EAAS,Q,2BAGpE,SAAcA,GACZ,YAAAjB,KAAA,MAA2BkB,KAAKD,K,0CAGlC,WAAgC,IAAD,OAC7B,YAAAjB,KAAA,MAA2BmB,SAAQ,SAACF,GAAD,OAAcA,EAAS,Q,8BAG5D,SAAiBA,GACf,YAAAjB,KAAA,MAA8BkB,KAAKD,K,oCAGrC,SAAuBA,GAAW,IAAD,OAC/B,YAAAjB,KAAA,MAA8BmB,SAAQ,SAACC,EAAMC,GACvCD,IAASH,GACX,cAAI,GAAJ,GAA8BK,OAAOD,EAAG,Q,sCAK9C,WAA4B,IAAD,OACzB,YAAArB,KAAA,MAA8BmB,SAAQ,SAACF,GAAD,OACpCA,EAAS,EAAKb,eAAeC,c,8BAIjC,SAAiBY,GACf,YAAAjB,KAAA,MAA8BkB,KAAKD,K,sCAGrC,WAA4B,IAAD,OACzB,YAAAjB,KAAA,MAA8BmB,SAAQ,SAACF,GAAD,OACpCA,EAAS,EAAKb,qB,yBAIlB,WACE,YAAAJ,KAAA,mBAAcA,KAAd,QACAA,KAAKC,SAAU,EACfD,KAAKuB,2B,0BAGP,WACE,YAAAvB,KAAA,mBAAeA,KAAf,QACAA,KAAKC,SAAU,EACfD,KAAKuB,2B,8BAGP,WACE,YAAAvB,KAAA,mBAAmBA,KAAnB,U,yBAGF,SAAYwB,GACV,YAAAxB,KAAA,mBAAiBA,KAAjB,MAA+BwB,K,iCAGjC,SAAoBC,GACwB,IAAtCzB,KAAKO,sBAAsBS,SAC/BhB,KAAKE,aAAeuB,EACpB,YAAAzB,KAAA,mBAAyBA,KAAzB,MAA+CyB,GAC/CzB,KAAKuB,4B,4BAGP,WACE,YAAAvB,KAAA,mBAAwBA,KAAxB,U,iCAGF,SAAoB0B,GAClB1B,KAAKG,iBAAL,2BACMH,KAAKG,kBAAoB,IAC1BuB,GAEL1B,KAAKuB,2B,+BAGP,SAAkBG,GAA+B,IAAzBC,EAAwB,wDACxCC,EAAa5B,KAAKI,eAAeC,QACvCL,KAAKI,eAAL,2BACMJ,KAAKI,gBAAkB,IACxBsB,GAEDE,IAAe5B,KAAKI,eAAeC,SACrCL,KAAK6B,2BAEHF,GACF3B,KAAK8B,6B,4BAIT,SAAevB,EAAuBC,EAAeuB,GACnD/B,KAAKO,sBAAwBA,EAC7BP,KAAKQ,cAAL,OAAqBA,QAArB,IAAqBA,IAAiBR,KAAKQ,cAC3CR,KAAKuB,yBACDQ,GAAO/B,KAAKgC,iC,8BAGlB,SAAiBC,GACfjC,KAAKQ,cAAgByB,EACrBjC,KAAKuB,6B,sCCtJIW,EACC,SAACC,GAAD,OAAUC,oBAAU,aAAc,CAACD,KADpCD,EAEN,SAACG,EAAKC,GAAN,OAAeF,oBAAU,MAAO,CAACC,EAAKC,KAGtC,SAASC,EAAYC,GAC1B,OAAOA,EAAUC,KAAK,CACpBC,WAAY,SAACP,GAAD,OAAUA,EAAKG,MAC3BK,IAAK,SAACC,EAAGN,GAAJ,OAAaA,K,WCFDO,E,kDACnB,WAAYC,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CAAEC,WAAY,IAE3B,EAAKC,aAAe,EAAKA,aAAatC,KAAlB,gBACpB,EAAKuC,aAAe,EAAKA,aAAavC,KAAlB,gBACpB,EAAKwC,eAAiB,EAAKA,eAAexC,KAApB,gBAPL,E,sDAUnB,SAAmByC,GACbA,IAAcpD,KAAK8C,OAEvB9C,KAAKmD,mB,4BAGP,WAAkB,IAAD,IACTE,EAAcC,MAAMC,MACxB,UAACvD,KAAK8C,MAAMU,kBAAZ,QAA0B,IAAIvF,KAAI,SAACwF,GAAD,OAAUlB,EAAYkB,OAEpDC,EAAWJ,MAAMC,MACrB,UAACvD,KAAK8C,MAAMa,gBAAZ,QAAwB,IAAI1F,KAAI,SAACwF,GAAD,OAAUlB,EAAYkB,OAElDG,EAAaP,EAAYpF,KAAI,SAAC4F,GAAD,OACjCA,EAAMC,MAAM,EAAGD,EAAME,YAAY,SAE7BC,EAAWN,EAASzF,KAAI,SAACgG,GAAD,OAASA,EAAIH,MAAM,EAAGG,EAAIF,YAAY,SAE9Df,EAAaY,EAChB3F,KAAI,SAACiG,EAAW7C,GACf,IAAM8C,EAAWH,EAASI,QAAQF,GAClC,OAAIC,GAAY,EACP,CAAEN,MAAOR,EAAYhC,GAAI4C,IAAKP,EAASS,IACzC,QAERE,QAAO,SAACC,GAAD,OAAOA,KACjBtE,KAAKuE,SAAS,CAAEvB,iB,0BAGlB,WAEE,IAGMwB,EAHgB,IAAIC,IACxBzE,KAAK+C,MAAMC,WAAW/E,KAAI,SAACwF,GAAD,OAAUA,EAAKQ,QAEPS,OAAS1E,KAAK+C,MAAMC,WAAWhC,OAGxChB,KAAK+C,MAAMC,WAAW2B,MAC/C,SAAClB,GAAD,MAAuB,KAAbA,EAAKQ,QAKfjE,KAAK+C,MAAMC,WAAWhC,SAAWhB,KAAK8C,MAAMU,WAAWxC,OAEvD4D,eAAaC,QAAUC,qBAAmBrG,MACxC,sDAIA+F,EACFI,eAAaC,QAAUC,qBAAmBC,KACxC,4DAKJ/E,KAAK8C,MAAMkC,SAAShF,KAAK+C,MAAMC,c,0BAGjC,SAAaxE,GACX,IAAMyG,EAAajF,KAAK+C,MAAMC,WAAWkC,WACvC,SAACzB,GAAD,OAAUA,EAAKI,QAAUrF,EAAE2G,OAAO7C,QAEpC,GAAI2C,GAAc,EAAG,CACnB,IAAMG,EAAa,YAAOpF,KAAK+C,MAAMC,YACrCoC,EAAcH,GAAYhB,IAAMzF,EAAE2G,OAAOE,MACzCrF,KAAKuE,SAAS,CACZvB,WAAYoC,SAGdpF,KAAKuE,SAAS,CACZvB,WAAW,GAAD,mBACLhD,KAAK+C,MAAMC,YADN,CAER,CAAEa,MAAOrF,EAAE2G,OAAO7C,KAAM2B,IAAKzF,EAAE2G,OAAOE,a,6BAM9C,SAAgBnB,GACd,IAAMoB,EACJtF,KAAK+C,MAAMC,YACXhD,KAAK+C,MAAMC,WAAW2B,MAAK,qBAAGd,QAAsBK,KACtD,OAAOoB,EAAYA,EAAUrB,IAAM,K,oBAGrC,WAAU,IAAD,OACDsB,EACJ,qCACE,wBAAQC,KAAK,SAASC,QAASzF,KAAKkD,aAApC,qBAGA,wBAAQsC,KAAK,SAASE,UAAU,QAAQD,QAASzF,KAAK8C,MAAM6C,SAA5D,uBAKEC,EAAa,CACjBC,MAAO7F,KAAK8C,MAAMgD,0BAClBH,SAAU3F,KAAK8C,MAAM6C,SACrBI,MAAO,cACPR,kBAGF,OACGvF,KAAK8C,MAAMkD,QACV,cAAC,QAAD,2BAAWJ,GAAX,aACE,8BACG5F,KAAK8C,MAAMU,YAAcxD,KAAK8C,MAAMa,SACjC3D,KAAK8C,MAAMU,WAAWvF,KAAI,SAAC4F,EAAOxC,GAAR,OACxB,sBAAaqE,UAAU,YAAvB,UACE,gCAAQnD,EAAYsB,KACpB,yBACEvB,KAAMC,EAAYsB,GAClBoC,SAAU,EAAKhD,aACfoC,MAAO,EAAKa,gBAAgB3D,EAAYsB,IAH1C,UAKE,wBAAQwB,MAAM,GAAd,sCACC,EAAKvC,MAAMa,SAAS1F,KAAI,SAACgG,EAAK5C,GAAN,OACvB,wBAAgBgE,MAAO9C,EAAY0B,GAAnC,SACG1B,EAAY0B,IADF5C,WATTA,MAgBZ,c,GA1ImC8E,IAAMC,W,iDCN5CC,EAAcF,IAAMG,cAAc,IAClCC,EAAeJ,IAAMG,cAAc,CAC9CE,aAAa,EACbC,gBAAgB,ICAGC,E,kDACnB,WAAY5D,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CAAE4D,OAAQ,GAAIC,gBAAiB,GAAIC,SAAS,GAHxC,E,qDAMnB,WACE7G,KAAK8G,kB,gCAGP,SAAmB1D,GAEfpD,KAAK8C,MAAMiE,WAAa3D,EAAU2D,UAClC/G,KAAK8C,MAAMkE,aAAe5D,EAAU4D,YAEpChH,KAAK8G,kB,kEAIT,8BAAAG,EAAA,yDACOjH,KAAK8C,MAAMiE,SADlB,qDAEM/G,KAAK8C,MAAMkE,WAFjB,uBAGIhH,KAAKuE,SAAS,CACZoC,OAAQ,GACRC,gBAAgB,uBAAD,OAAyB5G,KAAK8C,MAAMkE,WAApC,OALrB,iCAUEhH,KAAKuE,SAAS,CAAEsC,SAAS,IAV3B,SAYyBK,IAAMC,IAAN,UAClBnH,KAAK8C,MAAMsE,YADO,sBACkBpH,KAAK8C,MAAMiE,SAD7B,WAErB,CACEM,QAAS,CACPC,cAAc,UAAD,OAAYtH,KAAK8C,MAAMyE,UAhB5C,OAYQC,EAZR,QAqBQC,EAASD,GAAYA,EAASE,OAElC1H,KAAKuE,SAAS,CACZoC,OACEc,EAAOE,SACPF,EAAOE,QAAQtD,QACb,SAACuD,GAAD,OAAiC,IAArBA,EAAOC,WAAyC,MAAtBD,EAAOE,eAEjDlB,gBAAiBa,EAAOM,WAAWD,cAGvC9H,KAAKuE,SAAS,CAAEsC,SAAS,IAhC3B,iD,0EAmCA,WAAU,IAAD,OACP,EAAiD7G,KAAK+C,MAAtCiF,EAAhB,EAAQrB,OAAqBC,EAA7B,EAA6BA,gBAC7B,OAAO5G,KAAK+C,MAAM8D,QAChB,qBAAKnB,UAAU,oBAAf,wBAEA,sBAAKA,UAAU,oBAAf,UACG1F,KAAK8C,MAAMkE,YACV,qBACEtB,UAAU,sBACVK,MAAM,wBACNN,QAASzF,KAAK8C,MAAMmF,YAHtB,SAKE,cAAC,kBAAD,CAAiBC,KAAMC,kBAG1BH,GACCA,EAAY/J,KAAI,SAACmK,GAAD,OACd,qBAEE1C,UAAU,aACV,UAAS0C,EAAWhK,GACpBqH,QAAS,EAAK3C,MAAMuF,iBAJtB,SAMGD,EAAWN,aALPM,EAAWhK,OAQrBwI,GACC,qBAAKlB,UAAU,gCAAf,SAAgDkB,W,GAlFZT,IAAMC,WCEvCkC,EACJ,EADIA,EAEL,EAGFC,EACE,EADFA,EAEM,EAFNA,EAGI,EAHJA,GAIK,E,SAGWC,G,iFAAf,WAAiCf,GAAjC,eAAAR,EAAA,6DACCwB,EACJhB,EAAOiB,eACPjB,EAAOiB,cAAc/D,MAAK,SAACgE,GAAD,OAAsC,KAAzBA,EAAQC,gBAH5C,kBAKHH,GAAY,CACVpG,IAAKoG,EAASI,QACdvG,KAAMmG,EAASpG,IAAIyG,UAAUL,EAASpG,IAAI0B,YAAY,KAAO,KAP5D,4C,0BAYcgF,G,kDACnB,WAAYjG,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACXiG,MAAO,GACPC,cAAe,GACfpC,SAAS,EACTqC,KAAM,CAAEC,OAAQZ,EAAca,WAAW,IAG3C,EAAKC,iBAAmB,EAAKA,iBAAiB1I,KAAtB,gBACxB,EAAK2I,WAAa,EAAKA,WAAW3I,KAAhB,gBAClB,EAAK4I,UAAY,EAAKA,UAAU5I,KAAf,gBACjB,EAAK6I,gBAAkB,EAAKA,gBAAgB7I,KAArB,gBAEvB,EAAK8I,qBACH,wBAAQjE,KAAK,SAASE,UAAU,SAASgE,UAAU,EAAnD,oBAIF,EAAKC,aACH,wBAAQnE,KAAK,SAASE,UAAU,SAASD,QAAS,EAAK+D,gBAAvD,oBArBe,E,qDA2BnB,WACExJ,KAAK4J,oB,gCAGP,SAAmBxG,GAEfpD,KAAK8C,MAAMiE,WAAa3D,EAAU2D,UAClC/G,KAAK8C,MAAMkE,aAAe5D,EAAU4D,YACpChH,KAAK8C,MAAMwF,YAAclF,EAAUkF,WAEnCtI,KAAK4J,oB,6BAIT,WACO5J,KAAK8C,MAAM+G,YAGd7J,KAAK8C,MAAMgH,gBACT9J,KAAK+C,MAAMkG,cAAcjI,OAAS,EAC9BhB,KAAK2J,aACL3J,KAAKyJ,sBALXzJ,KAAK8C,MAAMgH,gBAAgB,Q,oEAU/B,sBAAA7C,EAAA,yDACOjH,KAAK8C,MAAMiE,SADlB,wDAGE/G,KAAKuE,SAAS,CAAEsC,SAAS,EAAMmC,MAAO,GAAIe,gBAAiB,IAH7D,SAIQ/J,KAAKgK,aAAa,GAJ1B,gD,uHAOA,WAAmBC,GAAnB,gCAAAhD,EAAA,6DACQiD,EAAU,CACd,CACEC,UAAW,sBACXC,SAAU,SACVC,OAAQC,IAEV,CACEH,UAAW,YACXC,SAAU,SACVC,OAAQE,GAAWpI,MAErB,CACEgI,UAAW,YACXC,SAAU,SACVC,OAAM,UAAErK,KAAK8C,MAAMwF,iBAAb,QAA0BA,IAG/BtI,KAAK8C,MAAMkE,YACdkD,EAAQhJ,KAAK,CACXiJ,UAAW,WACXC,SAAU,SACVC,OAAQrK,KAAK8C,MAAMiE,WAIjByD,EAAW,CACfN,UACAO,mBAAoB,CAClB,0BACA,4BACA,mCACA,wBACA,4BACA,kBACA,kCACA,uBACA,2BAEFR,aACAS,SAAU,IAER1K,KAAK8C,MAAMkE,aACbwD,EAASG,YAAc3K,KAAK8C,MAAMkE,YA3CtC,SA8CyBE,IAAM0D,KAAN,UAElB5K,KAAK8C,MAAMsE,YAFO,sBAGrBoD,EACA,CACEnD,QAAS,CACPC,cAAc,UAAD,OAAYtH,KAAK8C,MAAMyE,UApD5C,OA8CQC,EA9CR,QAyDQqD,EAAWrD,GAAYA,EAASE,OAEhCoD,EACF9K,KAAK8C,MAAMwF,YAAcA,EACrBuC,EAASE,MAAM1G,QAAO,SAACZ,GAAD,OACpBuH,GAAiBC,MAAK,SAACC,GAAD,OACpBzH,EAAKsC,MAAMoF,cAAcC,SAASF,SAGtCL,EAASE,MACf/K,KAAKuE,SACH,CACEyE,MAAM,GAAD,mBAAMhJ,KAAK+C,MAAMiG,OAAjB,YAA2B8B,IAChCf,gBAAiB/J,KAAK+C,MAAMgH,gBAAkBc,EAASE,MAAM/J,SAE/D,WACM6J,EAASQ,eAAiB,EAAKtI,MAAMgH,gBACvC,EAAKC,aAAaC,EAAa,GAC5B,EAAK1F,SAAS,CAAEsC,SAAS,QAG7B7G,KAAKuE,SAAS,CAAEsC,SAAS,IA9ElC,gD,qFAiFA,SAAiBrI,GACf,IAAM2K,EAASmC,SAAS9M,EAAE+M,cAAcC,QAAQpN,IAC1CgL,EACJpJ,KAAK+C,MAAMmG,KAAKC,SAAWA,IAAUnJ,KAAK+C,MAAMmG,KAAKE,UACvDpJ,KAAKuE,SAAS,CAAE2E,KAAM,CAAEC,SAAQC,iB,0BAGlC,SAAaD,EAAQsC,GACnB,OAAOA,IAAetC,EAClBnJ,KAAK+C,MAAMmG,KAAKE,UACd,gBACA,iBACF,O,wBAGN,SAAW5K,GAAI,IAAD,OACZ,EAA0BA,EAAE+M,cAAcC,QAAlCpN,EAAR,EAAQA,GAAIiE,EAAZ,EAAYA,IAAKC,EAAjB,EAAiBA,KACbtC,KAAK8C,MAAM+G,YACT7J,KAAK+C,MAAMkG,cAAcyC,SAAStN,GACpC4B,KAAKuE,SACH,CACE0E,cAAejJ,KAAK+C,MAAMkG,cAAc5E,QACtC,SAACsH,GAAD,OAAYA,IAAWvN,OAG3B,kBAAM,EAAK0L,qBAGb9J,KAAKuE,SACH,CAAE0E,cAAc,GAAD,mBAAMjJ,KAAK+C,MAAMkG,eAAjB,CAAgC7K,MAC/C,kBAAM,EAAK0L,qBAIf9J,KAAK8C,MAAM8I,UAAU,CAAC,CAAE3H,IAAK,CAAE5B,MAAKC,a,uBAIxC,WAAa,IAAD,OACNtC,KAAK+C,MAAMiG,MAAMhI,SAAWhB,KAAK+C,MAAMkG,cAAcjI,OACvDhB,KAAKuE,SAAS,CAAE0E,cAAe,KAAM,kBAAM,EAAKa,qBAEhD9J,KAAKuE,SACH,CAAE0E,cAAejJ,KAAK+C,MAAMiG,MAAM/K,KAAI,SAACkE,GAAD,OAAUA,EAAK/D,QACrD,kBAAM,EAAK0L,uB,sEAKjB,WAAwB6B,GAAxB,iBAAA1E,EAAA,sEACyBC,IAAMC,IAAN,UAClBnH,KAAK8C,MAAMsE,YADO,sBACkBuE,EADlB,WAErB,CACEtE,QAAS,CACPC,cAAc,UAAD,OAAYtH,KAAK8C,MAAMyE,UAL5C,UACQC,EADR,SAUQC,EAASD,GAAYA,EAASE,MAVtC,yCAYWc,GAAkBf,IAZ7B,gD,2HAgBA,uCAAAR,EAAA,0DAEI,UAACjH,KAAK8C,MAAMwF,iBAAZ,QAAyBA,KAAqBA,EAFlD,wDAKQW,EAAgBjJ,KAAK+C,MAAMiG,MAAM3E,QAAO,SAAClC,GAAD,OAC5C,EAAKY,MAAMkG,cAAcyC,SAASvJ,EAAK/D,OAGzC4B,KAAKuE,SAAS,CAAEsC,SAAS,EAAMoC,cAAe,KAAM,kBAClD,EAAKa,qBAVT,SAYgC+B,QAAQC,IACpC7C,EAAchL,IAAd,uCAAkB,WAAOkE,GAAP,SAAA8E,EAAA,kEACT,CACL7I,GAAI+D,EAAK/D,GACTiE,IAAKF,EAAK4J,YAAYC,oBACtB1J,KAAMH,EAAK4D,OAJG,SAML,EAAKyC,kBAAkBrG,EAAK/D,IANvB,6CAChByF,MADgB,KAMhBI,IANgB,kDAAlB,wDAbJ,OAYQgI,EAZR,OAsBEjM,KAAKuE,SAAS,CAAEsC,SAAS,IACzB7G,KAAK8C,MAAM8I,UAAUK,GAvBvB,iD,0EA0BA,WAAU,IAAD,SACDC,GACJ,UAAClM,KAAK8C,MAAMwF,iBAAZ,QAAyBA,KAAqBA,EAC1CmD,EACJzL,KAAK+C,MAAMmG,KAAKC,SAAWZ,GAAqB2D,EAE5ClM,KAAK+C,MAAMmG,KAAKC,OADhBZ,EAEAS,EAAQ,YAAIhJ,KAAK+C,MAAMiG,OAAO/K,KAAI,SAACkE,GAAD,mBAAC,eACpCA,GADmC,IAEtCgK,YAAa,IAAIC,KAAKjK,EAAK4J,YAAYI,kBAEzC,SAASE,EAASpF,EAAGqF,GACnB,IAAMC,GAAQ,OAACtF,QAAD,IAACA,IAAK,IAAIkE,cAClBqB,GAAQ,OAACF,QAAD,IAACA,IAAK,IAAInB,cACxB,OAAIoB,EAAQC,GAAe,EACvBD,EAAQC,EAAc,EACnB,EA0BT,OArBAxD,EAAME,MAAK,SAACuD,EAAOC,GAAW,IAAD,IAHXzF,EAAGqF,EAIbK,EAAK,EAAK5J,MAAMmG,KAAKE,UAAYqD,EAAQC,EACzCE,EAAK,EAAK7J,MAAMmG,KAAKE,UAAYsD,EAAQD,EAC/C,OAAQhB,GACN,KAAKlD,EACH,OAAO8D,EACLM,EAAGZ,YAAYc,cACfD,EAAGb,YAAYc,eAEnB,KAAKtE,EACH,OAAO8D,EAAQ,UACbM,EAAGZ,YAAYe,iBADF,QACeH,EAAGZ,YAAYgB,cAD9B,UAEbH,EAAGb,YAAYe,iBAFF,QAEeF,EAAGb,YAAYgB,eAE/C,KAAKxE,GACH,OAlBYtB,EAkBI0F,EAAGR,YAlBJG,EAkBiBM,EAAGT,YAjBhClF,EAAIqF,EAkBT,QACE,OAAOD,EAASM,EAAG5G,MAAO6G,EAAG7G,WAKjC,sBAAKL,UAAU,kBAAf,UACE,qBAAKA,UAAU,iBAAf,SACG1F,KAAK+C,MAAM8D,QACV,6CAEA,kCACE,gCACE,+BACG7G,KAAK8C,MAAM+G,aAAe7J,KAAK+C,MAAMiG,MAAMhI,OAAS,GACnD,oBAAIgM,MAAO,CAAEC,MAAO,OAApB,SACE,uBACEzH,KAAK,WACL0H,UAAQ,EACRC,QACEnN,KAAK+C,MAAMiG,MAAMhI,SACjBhB,KAAK+C,MAAMkG,cAAcjI,OAE3B+E,MAAM,aACNN,QAASzF,KAAKuJ,cAIpB,oBACE,UAAShB,EACT9C,QAASzF,KAAKqJ,iBACd3D,UAAW1F,KAAKoN,aAAa7E,EAAckD,GAH7C,kBAOCS,GACC,oBACE,UAAS3D,EACT9C,QAASzF,KAAKqJ,iBACd3D,UAAW1F,KAAKoN,aACd7E,EACAkD,GALJ,sBAWF,oBACE,UAASlD,EACT9C,QAASzF,KAAKqJ,iBACd3D,UAAW1F,KAAKoN,aAAa7E,EAAgBkD,GAH/C,oBAOA,oBACE,UAASlD,GACT9C,QAASzF,KAAKqJ,iBACd3D,UAAW1F,KAAKoN,aAAa7E,GAAiBkD,GAHhD,0BAOCzL,KAAK8C,MAAMkE,YAAc,+CAG9B,gCACGgC,EAAM/K,KAAI,SAACkE,GAAD,aACT,qBAEEuD,UAAU,WACV,UAASvD,EAAK/D,GACd,WACE8N,EACI/J,EAAK4J,YAAYC,oBACjB7J,EAAK4J,YAAYlD,QAEvB,YAAW1G,EAAK4D,MAChBN,QAAS,EAAK6D,WAVhB,UAYG,EAAKxG,MAAM+G,aACV,6BACE,uBACErE,KAAK,WACL0H,UAAQ,EACRC,QAAS,EAAKpK,MAAMkG,cAAcyC,SAASvJ,EAAK/D,QAItD,qBAAIsH,UAAU,YAAd,UACE,cAAC,kBAAD,CACEwC,KAAMgE,EAAWmB,cAAcC,YAC/B5I,KAAK,OAENvC,EAAK4D,SAEPmG,GACC,6BAAK/J,EAAK4J,YAAYwB,uBAExB,uCACGpL,EAAK4J,YAAYe,iBADpB,QAEI3K,EAAK4J,YAAYgB,gBAErB,6BAAK5K,EAAKgK,YAAYqB,mBACrB,EAAK1K,MAAMkE,YACV,oBACEtB,UAAU,mBACV,UAASvD,EAAK4J,YAAY0B,SAC1BhI,QAAS,EAAK3C,MAAMuF,iBAHtB,SAKGlG,EAAK4J,YAAY2B,YAAY5E,UAC5B3G,EAAK4J,YAAY2B,YAAYtJ,QAAQ,KAAO,EAC5CjC,EAAK4J,YAAY2B,YAAY3J,YAAY,UA3C1C5B,EAAK/D,eAqDpB4B,KAAK+C,MAAM8D,SAAW7G,KAAK+C,MAAMiG,MAAMhI,OAAS,EAChD,qBAAK0E,UAAU,kBAAf,SACG1F,KAAK8C,MAAM+G,YAAX,UACM7J,KAAK+C,MAAMkG,cAAcjI,OAD/B,wBACqDhB,KAAK+C,MAAMiG,MAAMhI,OADtE,oBAEMhB,KAAK+C,MAAMiG,MAAMhI,OAFvB,YAID,Y,GA5Y+BmF,IAAMC,WCzB5BuH,G,kDACnB,WAAY7K,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CAAE6K,QAAS,GAAI/G,SAAS,GAHpB,E,qDAMnB,WACE7G,KAAK6N,sB,gCAGP,SAAmBzK,GACbpD,KAAK8C,MAAMiE,WAAa3D,EAAU2D,UACpC/G,KAAK6N,sB,sEAIT,sBAAA5G,EAAA,yDACOjH,KAAK8C,MAAMiE,SADlB,wDAGE/G,KAAKuE,SAAS,CAAEsC,SAAS,EAAM+G,QAAS,KAH1C,SAIQ5N,KAAK8N,cAAc,GAJ3B,gD,wHAOA,WAAoB7D,GAApB,wBAAAhD,EAAA,sEACyBC,IAAM0D,KAAN,UAElB5K,KAAK8C,MAAMsE,YAFO,sBAGrB,CACE8C,QAAS,CACP,CACEC,UAAW,sBACXC,SAAU,SACVC,OAAQC,IAEV,CACEH,UAAW,YACXC,SAAU,SACVC,OAAQE,GAAWwD,QAErB,CACE5D,UAAW,WACXC,SAAU,SACVC,OAAQrK,KAAK8C,MAAMiE,WAGvBkD,aACAS,SAAU,IAEZ,CACErD,QAAS,CACPC,cAAc,UAAD,OAAYtH,KAAK8C,MAAMyE,UA3B5C,OACQC,EADR,QAgCQwG,EAAaxG,GAAYA,EAASE,MAEtC1H,KAAKuE,SACH,CAAEqJ,QAAQ,GAAD,mBAAM5N,KAAK+C,MAAM6K,SAAjB,YAA6BI,EAAWjD,UACjD,WACMiD,EAAW3C,eAAiB,EAAKtI,MAAM6K,QAAQ5M,OACjD,EAAK8M,cAAc7D,EAAa,GAC7B,EAAK1F,SAAS,CAAEsC,SAAS,OAG7B7G,KAAKuE,SAAS,CAAEsC,SAAS,IA1ClC,gD,2EA6CA,WAAU,IAAD,OACP,OACG7G,KAAK+C,MAAM8D,SAAW7G,KAAK+C,MAAM6K,QAAQ5M,OAAS,IACjD,qBAAK0E,UAAU,mBAAf,SACG1F,KAAK+C,MAAM8D,QACV,6CAEA7G,KAAK+C,MAAM6K,QAAQ3P,KAAI,SAAC8P,GAAD,OACrB,sBAEErI,UAAU,uBACV,UAASqI,EAAO3P,GAChBqH,QAAS,EAAK3C,MAAMuF,iBAJtB,UAME,cAAC,kBAAD,CAAiBH,KAAM+F,WAAUvJ,KAAK,OACrCqJ,EAAOhI,QANHgI,EAAO3P,a,GA9EiB+H,IAAMC,WCUtCkE,I,OAAsB,wCAC7B4D,GAAgB,uCACT3D,GAAa,CACxBwD,OAAQ,EACR5L,KAAM,GAGR,SAASgM,GAAiB7L,EAAM8L,GAA4C,IAA7B/M,EAA4B,uDAAxB,EAAGgN,EAAqB,uDAAN,KACnE,GAAID,EAAchK,QAAQ9B,IAAS,EAAG,CACpC,IAAMgM,EAAW,OAAGD,QAAH,IAAGA,IAAgB/L,EAC9BiM,EAAOD,EAAYxF,UAAU,EAAGwF,EAAYvK,YAAY,MACxDyK,EAAQF,EAAYxF,UAAUwF,EAAYvK,YAAY,MAC5D,OAAOoK,GAAiB,GAAD,OAClBI,EADkB,cACRlN,GADQ,OACJmN,GACjBJ,EACA/M,EACAiN,GAGJ,OAAOhM,E,IAGYmM,G,kDAEnB,WAAY3L,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACXuF,UAAWA,EACXuB,aAAa,EACb6E,YAAa,GACb1H,WAAY,KACZ2H,aAAc,MAGhB,EAAK7L,MAAM8L,SACT,EAAK9L,MAAM+L,UACP,sCACA,yBAGN,EAAKC,uBACH,wBACEtJ,KAAK,SACLE,UAAU,eACVD,QAAS,EAAKsJ,iBAAiBpO,KAAtB,gBAHX,oBASF,EAAK0H,iBAAmB,EAAKA,iBAAiB1H,KAAtB,gBACxB,EAAKiL,UAAY,EAAKA,UAAUjL,KAAf,gBACjB,EAAKqO,mBAAqB,EAAKA,mBAAmBrO,KAAxB,gBAC1B,EAAKsO,qBAAuB,EAAKA,qBAAqBtO,KAA1B,gBAC5B,EAAKuO,cAAgB,EAAKA,cAAcvO,KAAnB,gBACrB,EAAKsH,YAAc,EAAKA,YAAYtH,KAAjB,gBACnB,EAAKmJ,gBAAkB,EAAKA,gBAAgBnJ,KAArB,gBAjCN,E,4FAoCnB,sBAAAsG,EAAA,0DACMjH,KAAK8C,MAAM+L,UADjB,uBAEI7O,KAAKuE,SAAS,CAAEwC,SAAUmH,KAF9B,SAGUlO,KAAKmP,UAAUnP,KAAK8C,MAAM+L,WAAW,GAH/C,6CAIe7O,KAAKoP,WAAWlB,IAJ/B,gD,6HAOA,sBAAAjH,EAAA,2DAEIjH,KAAK8C,MAAM+L,WACX7O,KAAK+C,MAAMsM,2BACXrP,KAAKsP,QAAQ7I,gBAJjB,gCAMUzG,KAAKmP,UAAUnP,KAAK8C,MAAM+L,WAAW,GAN/C,gD,qHAUA,WAAiB9H,GAAjB,eAAAE,EAAA,6DACEjH,KAAKuE,SAAS,CAAEsC,SAAS,IAD3B,SAEsB0I,GAAiBvP,KAAKsP,QAAQE,UAFpD,OAEQjI,EAFR,OAIEvH,KAAKuE,SAAS,CACZkL,aAAclI,EACdR,WACAF,SAAS,IAPb,gD,qHAWA,WAAgB6I,GAAhB,iCAAAzI,EAAA,yDAAyB0I,EAAzB,gCACO3P,KAAKsP,QAAQ7I,eADpB,uBAEIzG,KAAKuE,SAAS,CAAE8K,2BAA2B,IAF/C,iCAMErP,KAAKuE,SAAS,CAAEsC,SAAS,EAAMwI,2BAA2B,IAN5D,SAOsBE,GAClBvP,KAAKsP,QAAQE,SACbG,GATJ,cAOQpI,EAPR,0BAa2BL,IAAMC,IAAN,UAClBnH,KAAK8C,MAAMsE,YADO,sBACkBsI,EADlB,WAErB,CACErI,QAAS,CACPC,cAAc,UAAD,OAAYC,MAjBnC,WAaUC,EAbV,SAsBUC,EAASD,GAAYA,EAASE,MAtBxC,wBAwBM1H,KAAKuE,SAAS,CAAEwC,SAAUU,EAAOM,WAAW0F,WAxBlD,KAyBMzN,KAzBN,KA2BiB,CACLqC,IAAKoF,EAAOM,WAAWiE,oBACvB1J,KAAMmF,EAAOM,WAAWD,aA7BpC,UA+BqBU,GAAkBf,GA/BvC,0BA2BU5D,MA3BV,KA+BUI,IA/BV,uBAyBW2H,UAzBX,0EAoCIhH,eAAaC,QAAUC,qBAAmBrG,MACxC,kCAEFuB,KAAK8C,MAAM8L,SAAS,yBAvCxB,QA0CE5O,KAAKuE,SAAS,CACZkL,aAAclI,EACdV,SAAS,IA5Cb,0D,4HAgDA,WAAuBrI,GAAvB,eAAAyI,EAAA,6DACEzI,EAAEoR,kBACI7I,EAAWvI,EAAE+M,cAAcC,QAAQpN,GACzC4B,KAAKuE,SAAS,CAAEyC,WAAY,OAH9B,SAIQhH,KAAKoP,WAAWrI,GAJxB,gD,8EAUA,SAAUiC,GACR,GAAIhJ,KAAK+C,MAAMuF,YAAcA,EAC3BtI,KAAKuE,SACH,CACEyE,QACAV,UAAWA,EACXuB,aAAa,GAEf7J,KAAK6P,iBAEF,CACL,GAAqB,IAAjB7G,EAAMhI,OACR,MAAM,IAAIvC,MAAM,kDAElB,IAAMqR,EAAc9P,KAAK+C,MAAMiG,MAAM9D,WAAU,SAAC/C,GAAD,OAAWA,EAAK8B,OACzD8L,EAAY,YAAO/P,KAAK+C,MAAMiG,OAC9B/E,EAAM+E,EAAM,GAAG/E,IAErBA,EAAI3B,KAAO6L,GACTlK,EAAI3B,KACJtC,KAAK+C,MAAMiG,MAAM3E,QAAO,SAAClC,GAAD,OAAUA,EAAK8B,OAAKhG,KAAI,SAACkE,GAAD,OAAUA,EAAK8B,IAAI3B,SAErEyN,EAAaD,GAAb,2BAAiC9P,KAAK+C,MAAMiG,MAAM8G,IAAlD,IAAgE7L,QAChEjE,KAAKuE,SAAS,CAAEyE,MAAO+G,GAAgB/P,KAAK6P,gB,yBAIhD,WACE,GAAK7P,KAAK+C,MAAMiG,MAAhB,CAEA,IAAMgH,EAAiBhQ,KAAK+C,MAAMiG,MAAMrE,MAAK,SAACxC,GAAD,OAAWA,EAAK8B,OACzD+L,GACFhQ,KAAKuE,SAAS,CAAEoK,aAAc3O,KAAK8O,yBACnC9O,KAAK8C,MAAM8L,SAAX,8BAA2CoB,EAAenM,MAAMvB,QAEhEtC,KAAK8C,MAAMmN,cAAcjQ,KAAK+C,MAAMiG,U,gCAIxC,SAAmBkH,GACjBlQ,KAAKuE,SAAS,CAAEmK,YAAawB,EAAG/K,OAAOE,U,kCAGzC,SAAqB6K,GACJ,UAAXA,EAAGC,KAAiBnQ,KAAKkP,kB,2BAG/B,WACElP,KAAKuE,SAAS,CAAEyC,WAAYhH,KAAK+C,MAAM2L,gB,yBAGzC,WACE1O,KAAKuE,SAAS,CAAEyC,WAAY,S,6BAG9B,SAAgB2C,GACd3J,KAAK8C,MAAMsN,mBAAmB,CAC5BC,OAAQ1G,EACR2G,OAAQtQ,KAAK+C,MAAM4L,iB,8BAIvB,WACE,IAAM4B,EAAcvQ,KAAK+C,MAAMiG,MAAM9D,WAAU,SAAC/C,GAAD,OAAWA,EAAK8B,OACzD+E,EAAK,YAAOhJ,KAAK+C,MAAMiG,OAC7BA,EAAM1H,OAAOiP,EAAa,GAC1BvQ,KAAKuE,SAAS,CAAEyE,SAAShJ,KAAK6P,e,oBAGhC,WACE,OAAO7P,KAAK+C,MAAM8D,QAChB,qBAAKnB,UAAU,cAAf,wBACE1F,KAAK+C,MAAMsM,0BACb,qBAAK3J,UAAU,cAAf,4CAEA,sBAAKA,UAAU,cAAf,UACE,sBAAKA,UAAU,eAAf,UACE,qBAAKA,UAAU,cAAf,SACE,uBACEF,KAAK,SACLpH,GAAG,SACHkE,KAAK,SACLkO,YAAY,SACZnL,MAAOrF,KAAK+C,MAAM2L,YAClBzI,SAAUjG,KAAKgP,mBACfyB,WAAYzQ,KAAKiP,yBAGrB,qBACEvJ,UAAU,sBACVgL,KAAK,SACL3K,MAAM,iBACNN,QAASzF,KAAKkP,cACduB,WAAYzQ,KAAKiP,qBALnB,SAOE,cAAC,kBAAD,CAAiB/G,KAAMyI,WAAUjM,KAAK,YAG1C,cAAC,EAAD,CACEqC,SAAU/G,KAAK+C,MAAMgE,SACrBC,WAAYhH,KAAK+C,MAAMiE,WACvBiB,YAAajI,KAAKiI,YAClBV,MAAOvH,KAAK+C,MAAM0M,aAClBpH,iBAAkBrI,KAAKqI,iBACvBjB,YAAapH,KAAK8C,MAAMsE,cAE1B,sBAAK1B,UAAU,iBAAf,WACI1F,KAAK+C,MAAMiE,YACX,cAAC,GAAD,CACED,SAAU/G,KAAK+C,MAAMgE,SACrBQ,MAAOvH,KAAK+C,MAAM0M,aAClBpH,iBAAkBrI,KAAKqI,iBACvBjB,YAAapH,KAAK8C,MAAMsE,cAG5B,cAAC,GAAD,CACEL,SAAU/G,KAAK+C,MAAMgE,SACrBQ,MAAOvH,KAAK+C,MAAM0M,aAClBnH,UAAWtI,KAAK+C,MAAMuF,UACtBuB,YAAa7J,KAAK+C,MAAM8G,YACxB7C,WAAYhH,KAAK+C,MAAMiE,WACvB4E,UAAW5L,KAAK4L,UAChBvD,iBAAkBrI,KAAKqI,iBACvByB,gBAAiB9J,KAAK8J,gBACtB1C,YAAapH,KAAK8C,MAAMsE,wB,GAxPKjB,IAAMC,WAA1BqI,GACZmC,YAAcrK,E,wDCvCVsK,GAAgB,IAAIC,KAAKC,eAAe,QAAS,CAC5DC,KAAM,UACNC,MAAO,UACPC,IAAK,YAGMC,GAAe,IAAIL,KAAKC,eAAe,QAAS,CAC3DK,QAAS,UAGEC,GAAgB,IAAIP,KAAKC,eAAe,QAAS,CAC5DO,KAAM,UACNC,OAAQ,UACRC,OAAQ,UACRC,QAAQ,IAGGC,GAAkB,IAAIZ,KAAKC,eAAe,QAAS,CAC9DY,UAAW,MACXL,KAAM,UACNC,OAAQ,YAeH,SAAeK,GAAtB,mC,8CAAO,WAA8BpP,GAA9B,SAAAyE,EAAA,+EACE,IAAI4E,SAAQ,SAAChN,EAASgT,GAC3BrP,EAAUC,KAAK,CACbC,WAAY,SAACP,GACX,IAAM2P,EAAS,IAAIC,WACnBD,EAAOE,OAAS,WACdnT,EAAQiT,EAAOG,SAEjBH,EAAOI,QAAUL,EAEjBC,EAAOK,WAAWhQ,IAEpBQ,IAAI,WAAD,4BAAE,WAAON,GAAP,iBAAA4E,EAAA,+EAEsBmL,MAAM/P,GAF5B,cAEKmF,EAFL,gBAGkBA,EAAS6K,OAH3B,OAGK3K,EAHL,OAID7I,EAAQ6I,GAJP,kDAMDmK,EAAO,EAAD,IANL,0DAAF,mDAAC,SAZH,2C,yBAyBA,IAAMS,GAAe,SAAC5K,EAAMpF,GAEjC,IAAMiQ,EAAUC,SAASC,cAAc,KACvCF,EAAQG,KAAOhL,EACf6K,EAAQI,SAAWrQ,EACnBkQ,SAASI,KAAKC,YAAYN,GAC1BA,EAAQO,QACRC,IAAIC,gBAAgBT,GACpBC,SAASI,KAAKK,YAAYV,IClErB,SAASW,GAAWC,GACzB,OAAOtC,GAAcuC,OAAOD,GAGvB,SAASE,GAAWF,GACzB,OAAO9B,GAAc+B,OAAOD,GAAMhI,cAIpC,SAASmI,GAAUC,GACjB,OAAQA,EAAUC,KAAKC,GAAM,IAI/B,SAASC,GAAUC,GACjB,OAAkB,IAAVA,EAAiBH,KAAKC,GAIzB,SAASG,GAAWlQ,GACzB,GAAwB,IAApBA,EAAS1C,OAAc,OAAO0C,EAElC,IAAK,IAAIrC,EAAI,EAAGA,EAAIqC,EAAS1C,OAAS,EAAGK,IACvCqC,EAASrC,GAAGwS,aAAeC,GAAiBpQ,EAASrC,GAAIqC,EAASrC,EAAI,IACtEqC,EAASrC,GAAG0S,UAAYC,GAAmBtQ,EAASrC,IAetD,OAZAqC,EAASA,EAAS1C,OAAS,GAAG6S,aAC5BnQ,EAASA,EAAS1C,OAAS,GAAG6S,aAChCnQ,EAASA,EAAS1C,OAAS,GAAG+S,UAC5BrQ,EAASA,EAAS1C,OAAS,GAAG+S,UAEhCrQ,EAASvC,SAAQ,SAAC8S,EAAK5S,GACX,IAANA,GACc,WAAd4S,EAAIC,QACND,EAAIJ,aAAenQ,EAASrC,EAAI,GAAGwS,aACnCI,EAAIF,UAAYrQ,EAASrC,EAAI,GAAG0S,cAG7BrQ,EAIT,SAASoQ,GAAiBK,EAAYC,GACpC,IAAMC,EAAWf,GAAUa,EAAWG,UAChCC,EAAWjB,GAAUa,EAAWK,WAChCC,EAAUnB,GAAUc,EAASE,UAC7BI,EAAUpB,GAAUc,EAASI,WAE7BG,EAAInB,KAAKoB,IAAIF,EAAUH,GAAYf,KAAKqB,IAAIJ,GAC5CnQ,EACJkP,KAAKqB,IAAIR,GAAYb,KAAKoB,IAAIH,GAC9BjB,KAAKoB,IAAIP,GAAYb,KAAKqB,IAAIJ,GAAWjB,KAAKqB,IAAIH,EAAUH,GAG9D,OAFgBb,GAAUF,KAAKsB,MAAMH,EAAGrQ,IAEtB,KAAO,IAG3B,SAAS0P,GAAmBC,GAC1B,KAAIA,EAAIJ,cAAgB,GAAKI,EAAIJ,cAAgB,KA6B/C,MAAO,GANP,IAtBA,IAAMkB,EAAe,KACfC,EAAS,CACb,IACA,MACA,KACA,MACA,IACA,MACA,KACA,MACA,IACA,MACA,KACA,MACA,IACA,MACA,KACA,MACA,KAEEC,GAAa,MACbhT,EAAQ,EACLgT,EAAahB,EAAIJ,cAAc,CACpC,GAAII,EAAIJ,cAAgBoB,EAAaF,EAAc,OAAOC,EAAO/S,GACjEgT,GAAcF,EACd9S,KC/EC,SAASiT,GAAaC,GAC3B,IACMC,EADMD,EAASE,MAAM,MACLpX,KAAI,SAACqG,GAAD,OAAOA,EAAE+Q,MAAM,QACnCC,EAAUF,EAAU/Q,QAAO,SAACC,GAAD,OAAOA,EAAE,GAAG8G,SAAS,UAChDmK,EAAUH,EAAU/Q,QAAO,SAACC,GAAD,OAAOA,EAAE,GAAG8G,SAAS,UAEhDoK,EAAWF,EAAQrX,KAAI,SAACwX,GAC5B,IA4DkBvB,EA5DZwB,EAAW,IAAItJ,KAAKuJ,GAAeF,EAAI,IAAMG,GAAeH,EAAI,KAEtE,MAAO,CACLI,WAFiB,IAAIzJ,KAAK,aAAewJ,GAAeH,EAAI,KAG5DC,WACApB,SAAUwB,GAAkBL,EAAI,IAAI,GACpCjB,UAAWsB,GAAkBL,EAAI,IAAI,GACrCtC,KAAMwC,GAAeF,EAAI,IACzBvB,OAoDgBA,EApDIuB,EAAI,GAqDtB,GAAN,OAAWvB,EAAQ5I,SAAiB,MAAR4I,GAA5B,UApDI6B,KAAMH,GAAeH,EAAI,IACzBO,YAAa9C,GAAWwC,GACxBO,YAAa5C,GAAWqC,GACxBQ,SAAS,MAGPC,EAAWZ,EAAQtX,KAAI,SAACmY,GAC5B,IAAMC,EACJb,EAASxU,OAAS,EACdwU,EAAS,GAAGE,SAASY,cAAcxN,UAAU,EAAG,IAChD,aACA4M,EAAW,IAAItJ,KAAKiK,EAAaT,GAAeQ,EAAI,KAE1D,MAAO,CACLP,WAFiB,IAAIzJ,KAAK,aAAewJ,GAAeQ,EAAI,KAG5DV,WACApB,SAAUwB,GAAkBM,EAAI,IAAI,GACpC5B,UAAWsB,GAAkBM,EAAI,IAAI,GACrClC,MAAO,UACP6B,KAAMH,GAAeQ,EAAI,IACzBJ,YAAa9C,GAAWwC,GACxBO,YAAa5C,GAAWqC,GACxBQ,QAASV,EAASxU,OAAS,MAIzBuV,EAAU,sBAAOf,GAAP,YAAoBW,IAQpC,OAAOvC,GAPYtQ,MAAMC,KAAK,IAAIkB,IAAI8R,EAAWtY,KAAI,SAACgJ,GAAD,OAAOA,EAAE8O,UAAQ9X,KACpE,SAAC8X,GACC,OAAOQ,EAAW5R,MAAK,SAACsC,GAAD,OAAOA,EAAE8O,OAASA,QAGf7M,MAAK,SAACjC,EAAGqF,GAAJ,OAAUrF,EAAE4O,WAAavJ,EAAEuJ,eAMhE,SAASC,GAAkBU,EAAMlC,GAC/B,IAAMmC,EAAYnC,EAAWkC,EAAK1S,MAAM,EAAG,GAAK0S,EAAK1S,MAAM,EAAG,GACxD4S,EAAapC,EACfkC,EAAK1S,MAAM,EAAG,GAAK0S,EAAK1S,MAAM,EAAG,IACjC0S,EAAK1S,MAAM,EAAG,GAAK0S,EAAK1S,MAAM,EAAG,IAE/B6S,EAAiBrL,SAASmL,GAAaG,WAAWF,GAAc,GAGtE,OAAOE,WAFQtC,EAAW,IAAMqC,EAAiBA,GAEvBE,QAAQ,GASpC,SAASjB,GAAeG,GACtB,IAAMe,EAAYf,EAAKjS,MAAM,EAAG,GAAK,IAAMiS,EAAKjS,MAAM,GAItD,MAFkB,KADCgT,EAAUhT,MAAM,EAAG,GAAK,IAAMgT,EAAUhT,MAAM,IAC5B,IAMvC,SAAS6R,GAAexC,GACtB,IAAMjC,EAAMiC,EAAKrP,MAAM,EAAG,GACpBmN,EAAQkC,EAAKrP,MAAM,EAAG,GAI5B,MAFkB,KADLqP,EAAKrP,MAAM,EAAG,GACK,IAAMmN,EAAQ,IAAMC,EAK/C,IC5FD6F,GAAyB,MACzBC,GAAyB,MAExB,SAAeC,GAAtB,uC,8CAAO,WAA4B9U,EAAM+U,EAAYC,GAA9C,yBAAAlQ,EAAA,6DACLiQ,EAAW,CACTE,gBAAiB,uBACjBC,kBAAmB,IAEfC,EAAW,SAACC,GAAD,OAAaL,EAAW,CAAEG,kBAAmBE,KALzD,kBAQeC,KAAYrV,EAAM,CAClCsV,aAAa,EACbH,WAGAI,WAAW,EACXP,sBAdC,OAQHQ,EARG,0DAiBG,KAAEC,YAAc,KAAEA,WAAW,YAjBhC,uBAkBK,IAAInZ,MAAJ,UAAU,KAAEoG,eAAZ,cAlBL,iDAwBCgT,EAAU,IAAIzL,KAAKuL,EAAUG,OAAOC,QAClCC,WAAWH,EAAQI,aAAeN,EAAUG,OAAOjL,eAE3DqK,EAAW,CACTE,gBAAiB,uBACjBC,kBAAmB,IAGhBa,OAAOC,eAAcD,OAAOC,aAAe,SAAC7T,GAAD,OAAO8T,WAAW9T,EAAG,KAhChE,UAiCmB+T,KAAeV,EAAW,CAEhDW,WAAY,EACZC,gBAAgB,EAChBC,uBAAuB,EACvBC,OAAQ,CAAC,QACTC,cAAe,IACfC,QAAS,EACTC,WAAY,IACZtB,SAAU,SAACC,GAAD,OAAaL,EAAW,CAAEG,kBAA6B,IAAVE,OA1CpD,QAiCCsB,EAjCD,OA6CCC,EAAUD,EAAU,GAAKE,QAAQC,KAAKF,QAsB5CG,GArBqBH,EAClBzU,QAAO,SAACC,GAAD,OAAO,IAAI8H,KAAK9H,EAAE6O,MAAQ0E,KACjC3O,MAAK,SAACgQ,EAAIC,GAAL,OAAY,IAAI/M,KAAK8M,EAAG/F,MAAQ,IAAI/G,KAAK+M,EAAGhG,SAEjDiG,QACC,SAACnH,EAAQxO,GAAT,OACGwO,EAAOjR,QACRyC,EAAK0P,KAAK8E,eAAiBhG,EAAOA,EAAOjR,OAAS,GAAGmS,KAAK8E,aAEtDhG,EAHJ,sBAEQA,GAFR,CAEgBxO,MAElB,IAEDxF,KAAI,SAACqG,GAAD,MAAQ,CAEX,QAASA,EAAEe,MAAM,GACjB,QAASf,EAAEe,MAAM,GACjB0Q,KAAMzR,EAAE6O,KAAKmD,cACb+C,IAAK/U,EAAEe,MAAM,GAAGwR,QAAQ,GACxB3C,MAAO5P,EAAEe,MAAM,GAAGwR,QAAQ,OAGF1U,EAAKG,KAAMuW,EAAU,GAAK,gBAnEjD,0D,sBAsEA,SAAeS,GAAtB,uC,8CAAO,WACLnX,EACA+U,EACAC,GAHK,QAWIoC,EAXJ,uBAAAtS,EAAA,6DAWIsS,EAXJ,SAWYjC,GACf,OAAO,IAAIzL,SAAQ,SAAChN,EAAS+D,GAC3B,IAAMkP,EAAS,IAAIC,WACbyH,EAAU,IAAIC,YACdC,EAAWvX,EAAKuC,KAEhBiV,EAAmBD,EAAW,OAChCE,EAAWC,EACXxY,EAAI,EACFyY,EAAU,GAChBhI,EAAOE,OAAS,WACdsF,IAAYjW,EAAIsY,EAAoB,KACpC,IAAMI,EAAaP,EAAQQ,OAAOlI,EAAOG,QACzC6H,EAAQ5Y,KAAK6Y,GACTH,EAAWF,GAAY,IAAIO,WAAWnI,EAAOG,QAAQvG,SAAS,GAChE7M,EAAQib,EAAQI,KAAK,IAAIC,WAAW,OAAQ,OAExChD,GAAqBA,EAAkBiD,UAAWvb,EAAQ,OAE5D+a,GAAY,IACZ9H,EAAOuI,kBAAkBlY,EAAK2B,MAAM8V,EAAUA,EAAW,QAI/D9H,EAAOuI,kBAAkBlY,EAAK2B,MAAM8V,EAAUA,EAAW,UA/B7DU,EAJK,gCAMCT,EAAgBS,EAClBvD,GACAC,GA+BJE,EAAW,CACTE,gBAAiB,sBACjBC,kBAAmB,IAzChB,SA4CckC,GAAQ,SAAClC,GAAD,OACzBH,EAAW,CAAEG,yBA7CV,UA4CCkD,EA5CD,wDA6DLtB,GAXqBuB,GAAiBD,GAAMtc,KAAI,SAACqG,GAC/C,IAAM4P,EAAQ5I,SAAShH,EAAE4P,OAAS,IAClC,MAAO,CAEL,QAAS5P,EAAEgQ,SACX,QAAShQ,EAAEkQ,UACXuB,KAAMzR,EAAEoR,SAASY,cACjBpC,MAAOuG,MAAMvG,QAASwG,EAAYxG,MAMpC/R,EAAKG,KACLgY,EAAS,gBAAkB,gBAhExB,4C,yBAoEP,SAASrB,GAAc0B,EAAcC,EAAUtY,GAC7C,IAAMuY,EAAY,CAChBC,IAAK,CACH,UAAW,oCACX,cAAe,4CACfC,IAAK,CACHzY,OACA0Y,OAAQ,CACNC,MAAON,MAQTO,EAHa,IAAIC,cAAW,CAChCC,kBAAkB,IAEGC,MAAMR,GAGvBC,EAAM,IAAIQ,KAAK,CAACJ,GAAM,CAC1B1V,KAAM,sBACN+V,QAAS,WAEXjJ,GACES,IAAIyI,gBAAgBV,GADV,UAEPF,EAASa,OAAO,EAAGb,EAAS7W,YAAY,MAFjC,S,OC1KC,ICsBT2X,GAAyB,CAC7BC,MAAO,cACPC,SAAU,mDAGNC,GAAwB,CAC5BD,SAAU,mDAIC5Q,GAAmB,CAAC,OAAQ,MAAO,OAE3B8Q,G,kDAEnB,WAAYhZ,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACXgZ,YAAY,EACZC,YAAgC,MAAnBlZ,EAAM+L,UACnBuI,gBAAiB,GACjBC,kBAAmB,GAGrB,EAAK4E,qBAAuB,EAAKA,qBAAqBtb,KAA1B,gBAC5B,EAAKsP,cAAgB,EAAKA,cAActP,KAAnB,gBACrB,EAAKub,mBAAqB,EAAKA,mBAAmBvb,KAAxB,gBAE1B,EAAKwb,wBAA0B,EAAKA,wBAAwBxb,KAA7B,gBAC/B,EAAKyb,oBAAsB,EAAKA,oBAAoBzb,KAAzB,gBAC3B,EAAK0b,mBAAqB,EAAKA,mBAAmB1b,KAAxB,gBAE1B,EAAK2b,cAAgBnW,IAAMoW,YAC3B,EAAKC,iBAAmBrW,IAAMoW,YAnBb,E,wDAsBnB,WACEvc,KAAKsc,cAAcjc,QAAQyS,U,qCAG7B,WACE9S,KAAKwc,iBAAiBnc,QAAQyS,U,gCAGhC,WACE9S,KAAKuE,SAAS,CAAEyX,aAAa,M,2BAG/B,SAAcxd,GACZ,IAAMie,EAAQ,SAACjX,GAIb,OAHewF,GAAiBC,MAAK,SAACC,GAAD,OACnC1F,EAAK2F,cAAcC,SAASF,OAI1BlC,EAAQ1F,MAAMC,KAAK/E,EAAE2G,OAAO6D,OAC5BxF,EAAawF,EAChB3E,QAAO,SAAClC,GAAD,OAAWsa,EAAMta,EAAKG,SAC7BrE,KAAI,SAACkE,GAAD,OAAUD,EAAoBC,MAC/BwB,EAAWqF,EACd3E,QAAO,SAAClC,GAAD,OAAUsa,EAAMta,EAAKG,SAC5BrE,KAAI,SAACkE,GAAD,OAAUD,EAAoBC,MAEjCwB,EAAS3C,SAAWwC,EAAWxC,OACjC4D,eAAaC,QAAUC,qBAAmBrG,MACxC,2CAGFuB,KAAK8C,MAAMmN,cAAczM,EAAYG,GACrC3D,KAAKsc,cAAcjc,QAAQgF,MAAQ,Q,gCAIvC,SAAmB2D,GACbA,EAAMhI,OAAS,GACjBhB,KAAK8C,MAAMmN,cACTjH,EAAM/K,KAAI,gBAAG4F,EAAH,EAAGA,MAAH,OAAe3B,EAAa2B,EAAMxB,IAAKwB,EAAMvB,SACvD0G,EAAM/K,KAAI,gBAAGgG,EAAH,EAAGA,IAAH,OAAa/B,EAAa+B,EAAI5B,IAAK4B,EAAI3B,SACjD0G,EAAM/K,KAAI,gBAAG4F,EAAH,EAAGA,MAAOI,EAAV,EAAUA,IAAV,MAAqB,CAAEJ,MAAOA,EAAMvB,KAAM2B,IAAKA,EAAI3B,UAGjEtC,KAAKuE,SAAS,CAAEyX,aAAa,M,iCAG/B,SAAoBxd,GAAI,IAAD,OACrB,GAA8B,IAA1BA,EAAE2G,OAAO6D,MAAMhI,OAAnB,CAEA,IAAMmB,EAAO3D,EAAE2G,OAAO6D,MAAM,GACtB8I,EAAS,IAAIC,WACnBD,EAAOE,OAAS,WACd,IAAM0K,EAAgB,YAAI,IAAIzC,WAAWnI,EAAOG,SAC7ChU,KAAI,SAACqG,GAAD,OAAOA,EAAEqY,SAAS,IAAIC,SAAS,EAAG,QACtC1C,KAAK,KAKR,OAJctb,OAAOie,QAAQnB,IAC1BrX,QAAO,mCAAKgB,GAAL,kBAAgBqX,EAAchR,SAASrG,MAC9CpH,KAAI,uDAAuB,IAG5B,KAAKyd,GAAuBC,MAC1B,EAAKmB,aAAa3a,GAClB,MACF,KAAKuZ,GAAuBE,SAC1B,EAAKmB,gBAAgB5a,GACrB,MACF,QAIE,GAHyBvD,OAAOie,QAAQhB,IACrCxX,QAAO,mCAAKgB,GAAL,kBAAgBqX,EAAchR,SAASrG,MAC9CpH,KAAI,uDAAuB,KAEvB4d,GAAsBD,SACzBhX,eAAaC,QAAUC,qBAAmBkY,QACxC,kWACA,kBAAM,EAAKD,gBAAgB5a,GAAM,KACjC,8BAGJ,CACE,IAAM8a,EAAyBre,OAAOD,KACpC+c,IACAxB,KAAK,KACPtV,eAAaC,QAAUC,qBAAmBrG,MAAnB,mEACuCwe,EADvC,eAOjCnL,EAAOuI,kBAAkBlY,EAAK2B,MAAM,EAAG,Q,iEAGzC,WAAmB3B,GAAnB,oBAAA8E,EAAA,6DACEjH,KAAKuE,SAAS,CAAEwX,YAAY,IAC5B/b,KAAKmX,kBAAoB,CAAEiD,WAAW,GAFxC,kBAIUnD,GACJ9U,GACA,SAACmV,GAAD,OAAc,EAAK/S,SAAS+S,KAC5BtX,KAAKmX,mBAPX,uDAUIvS,eAAaC,QAAUC,qBAAmBrG,MAAM,KAAEoG,SAVtD,yBAYI7E,KAAKuE,SAAS,CAAEwX,YAAY,IAZhC,4E,2HAgBA,WAAsB5Z,GAAtB,kCAAA8E,EAAA,6DAA4BqT,EAA5B,gCACEta,KAAKuE,SAAS,CAAEwX,YAAY,IAC5B/b,KAAKmX,kBAAoB,CAAEiD,WAAW,GAFxC,kBAIUd,GACJnX,GACA,SAACmV,GAAD,OAAc,EAAK/S,SAAS+S,KAC5BtX,KAAKmX,kBACLmD,GARN,uDAWI1V,eAAaC,QAAUC,qBAAmBrG,MAAM,KAAEoG,SAXtD,yBAaI7E,KAAKuE,SAAS,CAAEwX,YAAY,IAbhC,4E,0EAiBA,WACM/b,KAAKmX,oBAAmBnX,KAAKmX,kBAAkBiD,WAAY,GAC/Dpa,KAAKuE,SAAS,CAAEwX,YAAY,EAAOC,aAAa,IAChDhc,KAAK8C,MAAM6C,a,2BAGb,WAAiB,IAAD,OACRJ,EACJ,mCACE,wBACEC,KAAK,SACLE,UAAU,eACVD,QAAS,kBAAO,EAAK0R,kBAAkBiD,WAAY,GAHrD,sBAUExU,EAAa,CACjBC,KAAM7F,KAAK8C,MAAM+C,KACjBF,SAAU3F,KAAKkd,MAAMvc,KAAKX,MAC1Bmd,WAAY,iBACZC,cAAe,WACfrX,MAAO/F,KAAK+C,MAAMqU,gBAClB7R,kBAGF,OACE,cAAC,QAAD,2BAAWK,GAAX,aACE,8BACE,2BAAUP,MAAOrF,KAAK+C,MAAMsU,kBAAmBgG,IAAI,MAAnD,UACGrd,KAAK+C,MAAMsU,kBADd,c,+BAQR,WAAqB,IAAD,OAClB,IAAKrX,KAAKsP,QAAQgO,OAAQ,OAAOtd,KAAKud,iBAEtC,IAAMhY,EACJ,sCACKvF,KAAK8C,MAAM+L,WACZ7O,KAAK+C,MAAMya,iBACXxd,KAAK+C,MAAMya,gBAAgBlN,QAC3B,wBACE9K,KAAK,SACLE,UAAU,eACVD,QAAS,WACH,EAAK3C,MAAM+L,UAAW,EAAKqO,QAC1B,EAAK3Y,SAAS,CAAEyX,aAAa,EAAOwB,gBAAiB,QAL9D,oBAWDxd,KAAK+C,MAAMya,iBAAmBxd,KAAK+C,MAAMya,gBAAgBnN,UAIxDzK,EAAa,CACjBC,KAAM7F,KAAK8C,MAAM+C,KACjBF,SAAU3F,KAAKkd,MAAMvc,KAAKX,MAC1Bmd,WAAY,iBACZC,cAAe,WACfrX,MAAO/F,KAAK+C,MAAM0a,iBAClBlY,kBAGF,OACE,cAAC,QAAD,2BAAWK,GAAX,aACE,cAAC,GAAD,CACEgJ,SAAU,SAAC7I,GAAD,OAAW,EAAKxB,SAAS,CAAEkZ,iBAAkB1X,KACvDkK,cAAejQ,KAAKkc,mBACpB9L,mBAAoB,SAACsN,GAAD,OAClB,EAAKnZ,SAAS,CAAEiZ,gBAAiBE,KAEnC7O,UAAW7O,KAAK8C,MAAM+L,UACtBzH,YAAapH,KAAK8C,MAAMsE,mB,4BAMhC,WACE,IAAM7B,EACJ,qCACE,yBACEC,KAAK,SACLE,UAAU,oBACVD,QAASzF,KAAKic,qBACdlW,MAAM,2BAJR,iBAOE,cAAC,kBAAD,CAAiBmC,KAAMyV,eAAcjZ,KAAK,UAE5C,uBACEc,KAAK,OACLoY,OAAQ,CAAC,WAAD,mBAAe5S,GAAiB/M,KAAI,SAACqG,GAAD,iBAAWA,QAAM4V,KAC3D,MAEF2D,UAAQ,EACR5X,SAAUjG,KAAKiQ,cACfjD,MAAO,CAAE8Q,QAAS,QAClBC,IAAK/d,KAAKsc,gBAEZ,yBACE9W,KAAK,SACLE,UAAU,oBACVD,QAASzF,KAAKmc,wBACdpW,MAAM,8BAJR,oBAOE,cAAC,kBAAD,CAAiBmC,KAAM8V,iBAAgBtZ,KAAK,UAE7C1E,KAAKsP,QAAQgO,QACZ,yBACE9X,KAAK,SACLE,UAAU,oBACVD,QAASzF,KAAKqc,mBACdtW,MAAM,sCAJR,kBAOE,qBAAKkY,IDtTF,y8DCsTmBC,IAAI,QAG9B,uBACE1Y,KAAK,OACLoY,OAAO,UACP3X,SAAUjG,KAAKoc,oBACfpP,MAAO,CAAE8Q,QAAS,QAClBC,IAAK/d,KAAKwc,sBAKV5W,EAAa,CACjBC,KAAM7F,KAAK8C,MAAM+C,KACjBF,SAAU3F,KAAK8C,MAAM6C,SACrBwX,WAAY,iBACZC,cAAe,WACfrX,MAAO,eACPR,kBAGF,OACE,cAAC,QAAD,2BAAWK,GAAX,aACE,sBAAKF,UAAU,cAAf,UACE,sJAIA,+BACE,+BACE,2CADF,+BAGA,+BACE,0CADF,+BAGA,+BACE,0CADF,6DAKF,6IAIA,+BACE,+BACE,2CADF,wBAGA,+BACE,8CADF,2EAKF,4HAIA,4BACE,uL,oBAWV,WACE,OAAI1F,KAAK+C,MAAMgZ,WAAmB/b,KAAKme,gBACnCne,KAAK+C,MAAMiZ,YAAoBhc,KAAKoe,oBACjCpe,KAAKud,qB,GA7VqCpX,IAAMC,WC1BpD,SAAS8O,GAAaC,GAoB3B,OAAOvB,GAnBQ,IAAIyK,aAAU,CAAEjD,kBAAkB,IAC7BkD,MAAMnJ,GAER2F,IAAIC,IAAIC,OAAOC,MAAMhd,KAAI,SAACgd,GAAW,IAAD,EAyBlC/G,EAxBZf,EAAO,IAAI/G,KAAKA,KAAKkS,MAAMrD,EAAMlF,OACvC,MAAO,CACLF,WAAY1C,EACZuC,SAAUvC,EACVmB,SAAUwB,GAAkBmF,EAAM,UAClCzG,UAAWsB,GAAkBmF,EAAM,UACnC/G,MAAK,QAkBWA,EAlBI+G,EAAM/G,MAArB,EAmBO,MAATA,EAAA,WAA4B,IAARA,GAAa2C,QAAQ,GAAzC,SAAqD,YAnBnD,QAA+B,UACpCb,YAAa9C,GAAWC,GACxB8C,YAAa5C,GAAWF,GACxB+C,SAAS,MAIWhN,MAAK,SAACjC,EAAGqF,GAAJ,OAAUrF,EAAE4O,WAAavJ,EAAEuJ,eAM1D,SAASC,GAAkBU,GACzB,OAAOI,WAAWJ,GAAMK,QAAQ,GDCbiF,GACZlL,YAAcvK,E,4CE9BVkY,GAAuB,G,SAKrBC,G,iFAAf,WAAqCC,GAArC,uBAAAxX,EAAA,sEACkDyX,KAAmB,CACjEC,cAAe,kCACfC,eAAgB,sCAHpB,uBACUD,EADV,EACUA,cAAeC,EADzB,EACyBA,eAKjBC,EAAUJ,EACbxgB,KACC,SAACgW,GAAD,QACIwG,MAAMxG,EAAIO,YAAciG,MAAMxG,EAAIK,YAAc,CAChDL,EAAIO,UACJP,EAAIK,aAGTjQ,QAAO,SAACya,GAAD,OAAWA,KAdvB,SAeqBC,KAAUC,cAC3BL,EAAcM,SAAS,CACrBC,MAAO,CAACL,MAjBd,cAeQM,EAfR,iBAsBeP,EAAeQ,OAAOD,EAAMZ,GAAsB,UAtBjE,sF,+BAyBec,G,iFAAf,WAA0BC,GAA1B,qBAAArY,EAAA,sEAC0ByX,KAAmB,CACzCa,MAAO,wBAFX,uBACUA,EADV,EACUA,MAIAjL,EAAwBgL,EAAxBhL,SAAUE,EAAc8K,EAAd9K,UALpB,SAMeuK,KAAUC,cACrB,IAAIO,EAAM,CACRjL,WACAE,YACAgL,iBAAkB,CAAEC,KAAM,SAVhC,oF,sBAeO,SAASC,GAAahY,EAAMiY,GAAoC,IAA1BC,EAAyB,wDACpE,OAAQD,GACN,IAAK,OACL,IAAK,MACH,OAAOE,GAAcnY,GAAMzJ,KAAI,SAACqhB,GAAD,mBAAC,eAC3BA,GAD0B,IAE7BQ,kBAAmBF,GAAmBP,GAAWC,QAErD,IAAK,MACH,OAAOS,GAAarY,GAAMzJ,KAAI,SAACqhB,GAAD,mBAAC,eAC1BA,GADyB,IAE5BQ,kBAAmBF,GAAmBP,GAAWC,QAErD,QACE,MAAM,IAAI7gB,MAAJ,iCAAoCkhB,K,8FAI3BK,G,4QAKnB,WACE,OAAO,YAAAhgB,KAAP,U,yBAGF,SAAYwC,EAAWyd,GAAiB,IAAD,OACrC,YAAAjgB,KAAA,QAAiB,KACjBwC,EAAUC,KAAK,CACbC,WAAY,SAACP,GACX,IAAM2P,EAAS,IAAIC,WACnBD,EAAOE,OAAS,WACd,IAAMtK,EAAOoK,EAAOG,OACd0N,EACJxd,EAAKqD,KAAK2F,eACVhJ,EAAKG,KAAKwG,UAAU3G,EAAKG,KAAKyB,YAAY,KAAO,GAAGoH,cAEtD,cAAI,IAAJ,IAAiBuU,GAAahY,EAAMiY,GAAU,GAC9C,cAAI,IAAJ,IAAqBnB,GAAsB,cAAD,SAE1CyB,GACEA,EAAe,cAAD,QAAiB,EAAKC,mBAGxCpO,EAAOK,WAAWhQ,IAEpBQ,IAAI,WAAD,4BAAE,WAAON,EAAKC,GAAZ,iBAAA2E,EAAA,sEAC2BmL,MAAM/P,GADjC,cACG8d,EADH,gBAEgBA,EAAgB9N,OAFhC,OAEG3K,EAFH,OAGH,cAAI,IAAJ,IAAiBgY,GACfhY,EACApF,EAAKwG,UAAUxG,EAAKyB,YAAY,KAAO,GAAGoH,eAC1C,GAEF,cAAI,IAAJ,IAAqBqT,GAAsB,cAAD,SAE1CyB,GAAkBA,EAAe,cAAD,QAAiB,EAAKC,kBAVnD,2CAAF,qDAAC,O,2BAeR,SAAcE,GACZ,YAAApgB,KAAA,QAAsBogB,I,2BAMxB,SAAcrK,GAAO,IAAD,EAClB,IAAK,YAAA/V,KAAD,QAAiB,OAAO,KAI5B,IAAMqgB,EAAW,YAAArgB,KAAA,QAAe/B,KAAI,SAACyJ,GAAD,OAClCA,EAAKwO,QACDxO,EAAKgO,SAAS4K,UACdlU,KAAKkS,MAAM,aAAe5W,EAAKqO,SAG/BwK,EADYF,EAAS,GAEyB,KAArCtK,GAAI,sBAAI/V,KAAJ,uBAA2B,IACxCwgB,EAAcH,EAAShc,QAAO,SAAC0R,GAAD,OAAUA,GAAQwK,KAEhDtO,EAAS,YAAAjS,KAAA,QAAewgB,EAAYxf,OAAS,GACnD,OAAO,2BACFiR,GADL,IAEEwO,gBACExO,IAAWwI,MAAMxI,EAAOqC,YAAcmG,MAAMxI,EAAOuC,iB,KC9H5CrO,I,OAAAA,IAAMua,YAAW,SAAC5d,EAAOib,GAAR,OAC9B,cAAC,GAAD,2BAAiBjb,GAAjB,IAAwB6d,aAAc5C,SAGlC6C,G,kDACJ,WAAY9d,GAAQ,IAAD,wBACjB,cAAMA,GAEN,IAAMT,EAAM,IAAIwe,gBAAgB3I,OAAO0B,SAASkH,QAC1CjS,EAAYxM,EAAI0e,IAAI,WAAa1e,EAAI8E,IAAI,WAAa,KAJ3C,OAKjB,EAAKpE,MAAQ,CACXie,QAAS,GACTC,SAAU,KACVxgB,YAAa,KACbqF,2BAA2B,EAC3Bob,mBAAiC,MAAbrS,EACpBA,aAEF,EAAKsS,YAAL,UAAmBre,EAAM6d,oBAAzB,QAAyCxa,IAAMoW,YAC/C,EAAK6E,2BACH,EAAKA,2BAA2BzgB,KAAhC,gBACF,EAAK0gB,gBAAkB,EAAKA,gBAAgB1gB,KAArB,gBACvB,EAAK2gB,eAAiB,EAAKA,eAAe3gB,KAApB,gBACtB,EAAK4gB,4BACH,EAAKA,4BAA4B5gB,KAAjC,gBAEF,EAAK6gB,kBAAoB,EAAKA,kBAAkB7gB,KAAvB,gBACzB,EAAK8gB,mBAAqB,EAAKA,mBAAmB9gB,KAAxB,gBAC1B,EAAKsP,cAAgB,EAAKA,cAActP,KAAnB,gBACrB,EAAK+gB,UAAY,EAAKA,UAAU/gB,KAAf,gBAEjB,EAAKlB,cAAgB,IAAIA,EACvB,EAAKkiB,UAAUhhB,KAAf,gBACA,EAAKihB,WAAWjhB,KAAhB,gBACA,EAAKf,QAAQe,KAAb,gBACA,EAAKd,gBAAgBc,KAArB,gBACA,EAAK6gB,kBACL,EAAKK,YAAYlhB,KAAjB,iBAEF,EAAKlB,cAAcqiB,sBACjB,EAAKC,mBAAmBphB,KAAxB,iBAEFmC,EAAMkf,iBAAiB,EAAKviB,eArCX,E,4FAwCnB,sBAAAwH,EAAA,sDACMjH,KAAK+C,MAAM8L,WAAWoT,QAAQC,IAAIliB,KAAK+C,MAAM8L,WADnD,gD,sFAIA,SAAmB9L,GAEf/C,KAAKmiB,gBAAkBpf,EAAMxC,uBAC7BP,KAAKQ,gBAAkBuC,EAAMvC,eAE7BR,KAAKoiB,sBACHrf,EAAMxC,sBACNwC,EAAMvC,iB,mCAKZ,SAAsB2hB,EAAe3hB,GACnC,IAAMgD,EAAaF,MAAMC,KAAKvD,KAAKwD,YAC7BG,EAAWL,MAAMC,KAAKvD,KAAK2D,UAC3B0e,EAAa7e,EAChBvF,KAAI,SAACwF,GAAD,OAAUlB,EAAYkB,MAC1BW,QAAQ+d,EAAc3hB,GAAeqD,OAClCye,EAAY3e,EACf1F,KAAI,SAACwF,GAAD,OAAUlB,EAAYkB,MAC1BW,QAAQ+d,EAAc3hB,GAAeyD,KAEpCoe,IAAeriB,KAAKuiB,sBACtBviB,KAAKwiB,oBAAoBxiB,KAAK2D,SAAS2e,IACvCtiB,KAAKyiB,sBAAsBziB,KAAKwD,WAAW6e,KAE7CriB,KAAKmiB,cAAgBA,EACrBniB,KAAKQ,cAAgBA,EACrBR,KAAKuiB,oBAAsBF,I,4BAG7B,SAAe7jB,GACbwB,KAAKmhB,YAAY9gB,QAAQH,aAAeF,KAAKP,cAAcS,aAE3DF,KAAK0iB,wBAAwB,EAAGlkB,EAAE2G,OAAOwd,Y,+BAG3C,WACE3iB,KAAKuE,SAAS,CAAE2c,oBAAoB,M,yBAGtC,WACOlhB,KAAKmhB,YAAY9gB,SACtBL,KAAK0iB,wBAAwB1iB,KAAKmhB,YAAY9gB,QAAQuiB,e,6BAGxD,SAAgBpkB,GACd,IAAMuX,EAAOvX,EAAE2G,OAAOyd,YAEtB5iB,KAAK0iB,wBAAwB3M,EAAMvX,EAAE2G,OAAOwd,Y,qCAG9C,SAAwB5M,EAAM4M,GAC5B,IAAM3C,EAAUhgB,KAAK8C,MAAMkd,QAAQ6C,cAAc9M,GAE7C/V,KAAKP,cAAcW,eAAeC,UAAY2f,GAChDhgB,KAAKP,cAAcqjB,kBAAkB,CACnCziB,QAAS2f,IAGbhgB,KAAKP,cAAcsjB,oBAAoB,CACrCC,cAAejN,EACfkN,YAAaN,M,uBAIjB,WACO3iB,KAAK+C,MAAMke,UACZjhB,KAAKmhB,YAAY9gB,QAAQ6iB,QAAQljB,KAAKmhB,YAAY9gB,QAAQX,S,wBAGhE,WACOM,KAAK+C,MAAMke,WACXjhB,KAAKmhB,YAAY9gB,QAAQ6iB,QAAQljB,KAAKmhB,YAAY9gB,QAAQV,W,uBAGjE,WACE,GAAIK,KAAKQ,gBAAkBR,KAAKwD,WAAWxC,OAAS,EAGlD,OAFAhB,KAAKP,cAAcQ,SAAU,OAC7BD,KAAKP,cAAc8B,yBAIrBvB,KAAKP,cAAc0jB,iBAAiBnjB,KAAKQ,cAAgB,K,wCAG3D,WACER,KAAKuE,SAAS,CAAEuB,2BAA2B,M,gFAG7C,WAAkC9C,GAAlC,eAAAiE,EAAA,6DACEjH,KAAKohB,6BADP,SAEiCphB,KAAKojB,gBAAgBpgB,GAFtD,OAEQqgB,EAFR,OAGErjB,KAAKP,cAAc6jB,eAAeD,EAAkB,GAAG,GAHzD,gD,uFAMA,WACErjB,KAAKuE,SAAS,CAAE2c,oBAAoB,EAAOrS,UAAW,S,kEAGxD,WAAoBrL,EAAYG,GAAhC,2BAAAsD,EAAA,yDAA0CjE,EAA1C,+BAAuD,KACrDhD,KAAKuE,SAAS,CAAE2c,oBAAoB,EAAOrS,UAAW,OAEtD7O,KAAKwD,WAAaA,EAClBxD,KAAK2D,SAAWA,EAChB3D,KAAKuiB,qBAAuB,EACF,IAAtB/e,EAAWxC,OANjB,iCAQUhB,KAAKuhB,4BAA4B,CACrC,CAAE1d,MAAOtB,EAAYiB,EAAW,IAAKS,IAAK1B,EAAYoB,EAAS,OATrE,mCAWaX,EAXb,kCAYUhD,KAAKuhB,4BAA4Bve,GAZ3C,gCAcIhD,KAAKuE,SAAS,CAAEuB,2BAA2B,IAd/C,iD,6HAkBA,WAAsB9C,GAAtB,eAAAiE,EAAA,sEACoC4E,QAAQC,IACxCxI,MAAMC,KAAKvD,KAAK2D,UAAU1F,IAA1B,uCAA8B,WAAOkE,EAAMd,GAAb,yBAAA4F,EAAA,6DACtB2T,EAAWrY,EAAYJ,GACvBmD,EAAYtC,EAAW2B,MAAK,SAACL,GAAD,OAAOA,EAAEL,MAAQ2W,KAFvB,SAGDhJ,GAAezP,GAHd,cAGtBohB,EAHsB,OAItB5D,EAAW/E,EACd9R,UAAU8R,EAAS7W,YAAY,KAAO,GACtCoH,cANyB,SAQpBqY,EARoB,YAQJ9D,GAAa6D,EAAc5D,IAC7C8D,EAAeD,EAAU7e,MAAK,SAAClB,GAAD,OAAUA,EAAKoS,cATvB,6CAUdvQ,GAVc,IAUHuQ,WAAY4N,EAAa5N,cAVtB,yCAY1BoM,QAAQyB,MAAR,UACK9I,EADL,kDAZ0B,kBAenB,MAfmB,0DAA9B,0DAFJ,cACQ+I,EADR,yBAsBSA,EACJtf,QAAO,SAACC,GAAD,OAAOA,KACd4E,MAAK,SAACjC,EAAGqF,GAAJ,OAAUrF,EAAE4O,WAAavJ,EAAEuJ,eAxBrC,gD,0FA4BA,SAAsBrT,GAAY,IAAD,OAC/BA,EAAUC,KAAK,CACbC,WAAY,SAACP,GACX,IAAMyhB,EAAU7Q,IAAIyI,gBAAgBrZ,GAE9B1B,EAAc0B,EAAKG,KAAKuhB,QAAQ,YAAa,IACnD,EAAKtf,SAAS,CACZ0c,SAAU2C,EACVnjB,gBAEF,EAAKhB,cAAcQ,SAAU,EAC7B,EAAKR,cAAcgB,YAAcA,GAEnCkC,IAAK,SAACN,EAAKC,GACT,IAAM7B,EAAc6B,EAAKuhB,QAAQ,YAAa,IAC9C,EAAKtf,SAAS,CACZ0c,SAAU5e,EACV5B,gBAEF,EAAKhB,cAAcQ,SAAU,EAC7B,EAAKR,cAAcgB,YAAcA,O,iCAKvC,SAAoB+B,GAAY,IAAD,OAC7BxC,KAAK8C,MAAMkd,SACThgB,KAAK8C,MAAMkd,QAAQ8D,YAAYthB,GAAW,SAACwe,EAASd,GAAV,OACxC,EAAKzgB,cAAcqjB,kBACjB,CAAExiB,QAAS0gB,EAASd,qBACpB,Q,qBAKR,SAAQ1e,GACDxB,KAAK+C,MAAMke,UAEZzf,GAAWxB,KAAKmhB,YAAY9gB,QAAQsiB,WACtC3iB,KAAKmhB,YAAY9gB,QAAQuiB,YAAcphB,K,6BAG3C,SAAgBC,GACTzB,KAAKmhB,YAAY9gB,UACtBL,KAAKmhB,YAAY9gB,QAAQH,aAAeuB,K,oBAG1C,WACE,OACE,qCACE,qBAAKiE,UAAU,uBAAf,SACE,sBAAKA,UAAU,cAAf,UAOG1F,KAAK+C,MAAMke,SACV,uBACElD,IAAK/d,KAAKmhB,YACVzb,UAAU,QACVqe,aAAW,EACXC,OAAK,EACL/F,IAAKje,KAAK+C,MAAMke,SAChBgD,QAASjkB,KAAK0hB,UACdwC,aAAclkB,KAAKqhB,gBACnB8C,iBAAkBnkB,KAAKshB,eACvB8C,YAAY,YACZpX,MAAO,CAAEqX,cAAe,UAG1B,qBAAK3e,UAAU,mBAAf,SACE,cAAC,kBAAD,CACEK,MAAM,eACNmC,KAAMyV,eACNjZ,KAAK,MACLe,QAASzF,KAAKwhB,sBAInBxhB,KAAK+C,MAAMtC,aACV,qBAAKiF,UAAU,WAAf,SAA2B1F,KAAK+C,MAAMtC,mBAI5C,cAAC,EAAD,CACEuF,QAAShG,KAAK+C,MAAM+C,0BACpBnC,SAAU3D,KAAK2D,SACfH,WAAYxD,KAAKwD,WACjBwB,SAAUhF,KAAKuhB,4BACf5b,SAAU3F,KAAKohB,6BAEjB,cAAC,GAAD,CACEvb,KAAM7F,KAAK+C,MAAMme,mBACjBvb,SAAU3F,KAAKyhB,mBACfxR,cAAejQ,KAAKiQ,cACpBpB,UAAW7O,KAAK+C,MAAM8L,UACtBzH,YAAapH,KAAK8C,MAAMsE,qB,GAjSRjB,IAAMC,WCIXke,I,yDACnB,WAAYxhB,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,GAEb,EAAKwhB,iBAAmB,EAAK1jB,YAAYF,KAAjB,gBART,MAQkD,GACjE,EAAK6jB,iBAAmB,EAAK3jB,YAAYF,KAAjB,gBAXT,IAWkD,GACjE,EAAK8jB,iBAAmB,EAAK5jB,YAAYF,KAAjB,gBAXT,GAWkD,GACjE,EAAK+jB,oBAAsB,EAAK7jB,YAAYF,KAAjB,eAZZ,GAYoD,GACnE,EAAKgkB,oBAAsB,EAAK9jB,YAAYF,KAAjB,eAdZ,IAcoD,GACnE,EAAKikB,oBAAsB,EAAK/jB,YAAYF,KAAjB,eAbZ,MAaoD,GAVlD,E,qDAanB,WACMX,KAAK8C,MAAMrD,eACbO,KAAK8C,MAAMrD,cAAcqiB,sBACvB9hB,KAAK+hB,mBAAmBphB,KAAKX,S,gCAKnC,SAAmBoD,GAEfpD,KAAK8C,MAAMrD,gBAAkB2D,EAAU3D,eACvCO,KAAK8C,MAAMrD,eAEXO,KAAK8C,MAAMrD,cAAcqiB,sBACvB9hB,KAAK+hB,mBAAmBphB,KAAKX,S,gCAKnC,SAAmB+C,GACjB/C,KAAKuE,SAAL,eAAmBxB,M,yBAGrB,SAAY8hB,EAAOllB,GACjB,IAAMijB,EAAc5iB,KAAK8C,MAAMrD,cAAcU,iBAAiB6iB,cAC1DrjB,GACFK,KAAK8C,MAAMrD,cAAcmB,eAE3BZ,KAAK8C,MAAMrD,cAAcoB,YAAY+hB,EAAciC,K,oBAGrD,WACE,OAAK7kB,KAAK8C,MAAMrD,cAGd,sBAAKiG,UAAU,aAAf,UACE,gCACE,sBAAKA,UAAU,aAAf,UACE,wBACEF,KAAK,SACLC,QAASzF,KAAKukB,iBACdxe,MAAM,iBAHR,SAKE,cAAC,kBAAD,CAAiBmC,KAAM4c,iBAAgBpgB,KAAK,SAE9C,wBACEc,KAAK,SACLC,QAASzF,KAAKwkB,iBACdze,MAAM,kBAHR,SAKE,cAAC,kBAAD,CAAiBmC,KAAM6c,iBAAgBrgB,KAAK,SAE9C,wBACEc,KAAK,SACLC,QAASzF,KAAKykB,iBACd1e,MAAM,gBAHR,SAKE,cAAC,kBAAD,CAAiBmC,KAAM8c,aAAYtgB,KAAK,YAG5C,qBAAKgB,UAAU,kBAAf,SACE,wBACEF,KAAK,SACLC,QACEzF,KAAK+C,MAAM9C,QACPD,KAAK8C,MAAMrD,cAAcmB,aACzBZ,KAAK8C,MAAMrD,cAAciB,YAE/BqF,MAAO/F,KAAK+C,MAAM9C,QAAU,QAAU,OAPxC,SASE,cAAC,kBAAD,CACEiI,KAAMlI,KAAK+C,MAAM9C,QAAUglB,UAAUC,SACrCxgB,KAAK,WAIX,sBAAKgB,UAAU,aAAf,UACE,wBACEF,KAAK,SACLC,QAASzF,KAAK0kB,oBACd3e,MAAM,mBAHR,SAKE,cAAC,kBAAD,CAAiBmC,KAAMid,YAAWzgB,KAAK,SAEzC,wBACEc,KAAK,SACLC,QAASzF,KAAK2kB,oBACd5e,MAAM,qBAHR,SAKE,cAAC,kBAAD,CAAiBmC,KAAMkd,gBAAe1gB,KAAK,SAE7C,wBACEc,KAAK,SACLC,QAASzF,KAAK4kB,oBACd7e,MAAM,oBAHR,SAKE,cAAC,kBAAD,CAAiBmC,KAAMmd,gBAAe3gB,KAAK,eAIjD,qBAAKgB,UAAU,kBAAf,SACE,wBACEF,KAAK,SACLC,QAASzF,KAAK8C,MAAMrD,cAAcsB,iBAClCgF,MAAM,eAHR,SAKE,cAAC,kBAAD,CAAiBmC,KAAMyV,eAAcjZ,KAAK,cA1EZ,S,GA9CFyB,IAAMC,Y,iECbzBkf,G,kDAGnB,WAAYxiB,GAAQ,IAAD,6BACjB,cAAMA,GADW,oEAGjB,EAAKC,MAAQ,CACXwiB,cAAc,EACdplB,iBAAkB,GAClBqB,QAAS,KACTtB,aAAc,GAGhB,EAAKslB,eAAiB,EAAKA,eAAe7kB,KAApB,gBACtB,EAAK8kB,oBAAsB,EAAKA,oBAAoB9kB,KAAzB,gBAC3B,EAAK+kB,yBAA2B,EAAKA,yBAAyB/kB,KAA9B,gBAZf,E,sDAenB,SAAmByC,GACbpD,KAAK8C,MAAMrD,gBAAkB2D,EAAU3D,eACzCO,KAAK8C,MAAMrD,cAAcqiB,sBACvB9hB,KAAK+hB,mBAAmBphB,KAAKX,S,gCAKnC,SAAmB+C,GACjB/C,KAAKuE,SAAL,2BAAmBxB,GAAnB,IAA0BvB,QAAS,U,4BAGrC,WACExB,KAAKuE,SAAS,CAAEghB,cAAevlB,KAAK+C,MAAMwiB,iB,iCAG5C,SAAoB/mB,GAAI,IAAD,OAEfgD,EAAUhD,EAAE2G,OAAOE,MACzB,YAAIrF,KAAJ,SACE2lB,aAAa,YAAA3lB,KAAD,SACZ,YAAAA,KAAA,QAA0B,OAE1BA,KAAK4lB,iBAAmB5lB,KAAK8C,MAAMrD,cAAcQ,QACjDD,KAAK8C,MAAMrD,cAAcmB,gBAG3B,YAAAZ,KAAA,QAA0BoY,YAAW,WACnC,EAAKtV,MAAMrD,cAAcoB,YAAYW,GACjC,EAAKokB,kBACP,EAAK9iB,MAAMrD,cAAciB,cAE3B,cAAI,IAAJ,IAA0B,OACzB,KACHV,KAAKuE,SAAS,CAAE/C,c,sCAGlB,SAAyBhD,GACvBwB,KAAK8C,MAAMrD,cAAcqB,oBAAoBtC,EAAE2G,OAAOE,S,oBAGxD,WAAU,IAAD,QACP,IAAKrF,KAAK8C,MAAMrD,cAAe,OAAO,KAEtC,IAAM+B,EAAO,oBACXxB,KAAK+C,MAAMvB,eADA,QAEXxB,KAAK8C,MAAMrD,cAAcU,iBAAiB6iB,qBAF/B,QAGX,EACIC,EAAW,UAAGjjB,KAAK+C,MAAM5C,iBAAiB8iB,mBAA/B,QAA8C,EACzD4C,EAAqBC,KAAW,gBAAiB,CACrDC,MAAO/lB,KAAK+C,MAAMwiB,eAGpB,OACE,sBAAK7f,UAAU,eAAf,UACE,uBACEA,UAAU,WACVF,KAAK,QACLwgB,IAAI,IACJ3I,IAAK5C,MAAMwI,GAAe,EAAIA,EAC9BgD,KAAK,OACLlgB,MAAM,OACNV,MAAOoV,MAAMjZ,GAAW,EAAIA,EAC5B0kB,QAASlmB,KAAKylB,sBAEhB,uBAAO/f,UAAU,cAAjB,SACG,IAAI0G,KAAe,IAAV5K,GAAgB8U,cAAcmF,OAAO,GAAI,KAErD,sBAAK/V,UAAWmgB,EAAhB,UACE,yCACA,yBACExgB,MAAK,UAAErF,KAAK+C,MAAM7C,oBAAb,QAA6B,EAClC+F,SAAUjG,KAAK0lB,yBAFjB,UAIE,wBAAQrgB,MAAO,GAAf,kBACA,wBAAQA,MAAO,EAAf,gBACA,wBAAQA,MAAO,IAAf,kBACA,wBAAQA,MAAO,EAAf,sBAGJ,cAAC,kBAAD,CAAiB6C,KAAMie,QAAO1gB,QAASzF,KAAKwlB,wB,GAlGVrf,IAAMC,W,SCH1CggB,G,WACJ,aAAe,oBACbpmB,KAAKqmB,eAAgB,EACrBrmB,KAAKsmB,gBAAkB,KACvBtmB,KAAKumB,iBAAmB,KACxBvmB,KAAKwmB,gBAAkB,G,8CAGzB,SAAWC,EAAqBhnB,GAC1BO,KAAKqmB,gBACTrmB,KAAKqmB,eAAgB,EACrBrmB,KAAKymB,oBAAsBA,EAC3BzmB,KAAKP,cAAgBA,EAErBO,KAAKP,cAAcinB,iBAAiB1mB,KAAK2mB,eAAehmB,KAAKX,OAC7DA,KAAKP,cAAcmnB,iBAAiB5mB,KAAK6mB,eAAelmB,KAAKX,U,+BAG/D,SAAkBiB,GAChBjB,KAAKwmB,gBAAgBtlB,KAAKD,K,+BAG5B,WAAqB,IAAD,OAClBjB,KAAKwmB,gBAAgBrlB,SAAQ,SAACF,GAC5BA,EAAS,EAAKqlB,sB,mEAIlB,sCAAArf,EAAA,yDACEjH,KAAKumB,iBAAmB,KAD1B,WAI6CvmB,KAAKymB,oBAAtCK,EAJZ,EAIYA,iBAAkBC,EAJ9B,EAI8BA,WACpBC,EAAYjI,KAAUkI,OAAOtiB,MAAK,SAACuiB,GAAD,OACtCC,2BAAgB,CAAEL,mBAAkBC,cAAcG,MANxD,iEAWmClnB,KAAKP,cAAcW,eAC/C8f,iBAZP,cAWUA,EAXV,OAaUkH,EAAQ,CACZC,SAAUnH,EACVoH,oBAAqB,aACrBC,UAAW,CAAC,KACZC,gBAAgB,EAChBC,SAAS,GAlBf,UAqBYT,EAAUE,MAAMQ,cAAcN,GArB1C,QAoBIpnB,KAAKumB,iBApBT,OAsBMoB,SAEF3nB,KAAK2mB,eAAe3mB,KAAKP,cAAcW,eAAeC,SAxB1D,kDA0BI4hB,QAAQC,IAAI,qCA1BhB,0D,yHA8BA,WAAqBlC,GAArB,UAaiB4H,EAbjB,EAiCiBC,EAjCjB,2BAAA5gB,EAAA,6FAAAA,EAAA,MAiCE,WAA4B6gB,EAAaC,GAAzC,yBAAA9gB,EAAA,6DACQ+gB,EAAsBF,EAAYT,SAASnI,MAAM+I,OAWjDC,GAVAC,EAAU,SAACC,GACf,IAAMC,EAASL,EAAoBI,GACnC,MAAO,CACL5iB,KAAM,QACNlB,EAAG+jB,EAAO,GACV1T,EAAG0T,EAAO,GACVC,EAAGD,EAAO,GACV7I,iBAAkBT,KAAUwJ,QAAQ/I,oBAGXuI,EAAkBK,aACzCI,EAAaL,EAAQJ,EAAkBK,YAAc,GAb7D,SAc8BxJ,EAAe6J,SACzCP,EACAM,GAhBJ,cAcQE,EAdR,gBAkB8B9J,EAAe6J,SACzCP,EACAH,EAAkBY,YApBtB,cAkBQC,EAlBR,0BAuBKJ,EAAWF,EAAIJ,EAAaI,IAAMM,EAAgBF,GACnDR,EAAaI,GAxBjB,4CAjCF,yBAiCiBT,EAjCjB,kFAAA5gB,EAAA,MAaE,kCAAAA,EAAA,sEAC6B+Y,EAAQF,kBADrC,cACQ+I,EADR,gBAG0Bhd,QAAQC,IAC9Bgd,EAAQvC,iBAAiBtoB,IAAzB,uCACE,WAAO8qB,GAAP,SAAA9hB,EAAA,sEACQ2X,EAAe6J,SAASI,EAAcE,EAAQ1B,UADtD,mFADF,wDAJJ,cAGQ2B,EAHR,OASQlB,EACJgB,EAAQvC,iBAAiByC,EAAU5kB,QAAQoP,KAAKwS,IAAL,MAAAxS,KAAI,YAAQwV,MAV3D,SAYkCpK,EAAemJ,kBAC7CD,EAAYT,SACZwB,GAdJ,cAYQd,EAZR,yBAiBS,CAAED,cAAaC,sBAjBxB,4CAbF,yBAaiBH,EAbjB,2CACO5nB,KAAKumB,iBADZ,oDAEOvG,GAAYA,EAAQS,gBAF3B,wBAGIzgB,KAAKsmB,gBAAkB,KACvBtmB,KAAKipB,oBAJT,4CAQmCvK,KAAmB,CAClDE,eAAgB,sCATpB,wBAQUA,EARV,EAQUA,eAIFkK,EAAU9oB,KAZlB,UA6DmD4nB,IA7DnD,wBA6DUE,EA7DV,EA6DUA,YAAaC,EA7DvB,EA6DuBA,kBA7DvB,UA8DoBF,EAAaC,EAAaC,GA9D9C,QA8DQmB,EA9DR,SAgEIlpB,KAAKymB,oBADC0C,EA/DV,EA+DUA,gBAAiBC,EA/D3B,EA+D2BA,kBAAmBC,EA/D9C,EA+D8CA,aAE5CrpB,KAAKsmB,gBAAkB,CACrBgD,OAAQxB,EAAYyB,WAAWJ,GAC/BK,SAAU1B,EAAYyB,WAAWH,GACjCK,IAAK3B,EAAYyB,WAAWF,GAC5BH,IAAKA,GAEPlpB,KAAKipB,oBAvEP,iD,8DA2Ea,OAAI7C,GCpINsD,I,OAAb,kDACE,WAAY5mB,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CAAE4mB,OAAQ,EAAGC,SAAS,GAEnC,EAAKC,cAAgB,EAAKA,cAAclpB,KAAnB,gBALJ,EADrB,sDASE,SAAmByC,GACbpD,KAAK8C,MAAMrD,gBAAkB2D,EAAU3D,eACzCO,KAAK8C,MAAMrD,cAAcinB,iBAAiB1mB,KAAK2mB,eAAehmB,KAAKX,SAXzE,4BAeE,SAAeggB,GACbhgB,KAAKuE,SAASyb,EAAO,2BAAQA,GAAR,IAAiB4J,SAAS,IAAS,CAAEA,SAAS,MAhBvE,2BAmBE,SAAcprB,GACZ,IAAM4hB,EAAgB5M,KAAK6J,IAAI7J,KAAKwS,IAAIxnB,EAAE2G,OAAOE,MAAO,IAAK,GAC7DrF,KAAK8C,MAAMkd,QAAQ8J,cAAc1J,GACjCpgB,KAAK8C,MAAMrD,cAAcM,iBACzBC,KAAKuE,SAAS,CAAE6b,oBAvBpB,oBA0BE,WAAU,IAAD,EACP,OAAKpgB,KAAK8C,MAAMrD,eAAkBO,KAAK8C,MAAMrD,cAAcW,eAIzD,sBAAKsF,UAAU,qCAAf,UACE,sBAAKA,UAAU,aAAf,UACE,gCACE,yCACC1F,KAAK+C,MAAM6mB,SAAW5pB,KAAK+C,MAAMmT,SAChC,+BAAOlW,KAAK+C,MAAMiT,iBAGtB,gCACE,yCACChW,KAAK+C,MAAM6mB,SAAW,+BAAO5pB,KAAK+C,MAAMkT,cACzC,gCACE,uBAAO8T,QAAQ,gBAAf,oBACA,uBACE3rB,GAAG,gBACHoH,KAAK,SACLygB,KAAM,EACN5I,IAAK,EACL2I,KAAM,EACN3gB,MAAK,UAAErF,KAAK+C,MAAMqd,qBAAb,QAA8B,EACnCna,SAAUjG,KAAK6pB,gBAEjB,sBAAMnkB,UAAU,OAAhB,qBAGJ,gCACE,0CACC1F,KAAK+C,MAAM6mB,SAAW,+BAAO5pB,KAAK+C,MAAMmR,cAG7C,sBAAKxO,UAAU,aAAf,UACE,gCACE,wCACC1F,KAAK+C,MAAM6mB,SAAW,+BAAO5pB,KAAK+C,MAAMuR,cAG3C,gCACE,yCACCtU,KAAK+C,MAAM6mB,SAAW,+BAAO5pB,KAAK+C,MAAMyR,eAG3C,gCACE,4CACCxU,KAAK+C,MAAM6mB,SAAW,+BAAO5pB,KAAK+C,MAAMgR,qBA9CxC,SA5Bb,GAAoC5N,IAAMC,YAkF7B4jB,GAAb,kDACE,WAAYlnB,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACX6mB,SAAS,GAGX,EAAKK,aAAc,EAEnB,EAAKC,YAAc,EAAKA,YAAYvpB,KAAjB,gBATF,EADrB,sDAaE,WACMX,KAAKiqB,aACLjqB,KAAK8C,MAAMrD,eAAiBO,KAAK8C,MAAM2jB,sBACzCL,GAAa+D,WACXnqB,KAAK8C,MAAM2jB,oBACXzmB,KAAK8C,MAAMrD,eAEb2mB,GAAagE,kBAAkBpqB,KAAKkqB,YAAYvpB,KAAKX,OACrDA,KAAKiqB,aAAc,KArBzB,yBAyBE,SAAYI,GACNA,EACFrqB,KAAKuE,SAAS,CACZ+kB,OAAQe,EAASf,OACjBE,SAAUa,EAASb,SACnBC,IAAKY,EAASZ,IACdP,IAAKmB,EAASnB,IACdU,SAAS,IAGX5pB,KAAKuE,SAAS,CACZqlB,SAAS,MApCjB,oBAyCE,WAAU,IAAD,EACP,OAAK5pB,KAAK8C,MAAMrD,eAAkBO,KAAK8C,MAAMrD,cAAcW,eAIzD,qBAAKsF,UAAU,qCAAf,SACG1F,KAAK+C,MAAM8D,QACV,kDAEA,qCACE,sBAAKnB,UAAU,aAAf,UACE,gCACE,6CACA,+BAAO1F,KAAK+C,MAAM6mB,SAAW5pB,KAAK+C,MAAMumB,YAE1C,gCACE,8CACA,+BAAOtpB,KAAK+C,MAAM6mB,SAAW5pB,KAAK+C,MAAMymB,cAE1C,gCACE,yCACA,+BAAOxpB,KAAK+C,MAAM6mB,SAAW5pB,KAAK+C,MAAM0mB,YAG5C,qBAAK/jB,UAAU,oBAAf,SACE,gCACE,wCACA,sBAAMA,UAAU,QAAhB,SACG1F,KAAK+C,MAAM6mB,UAERhT,WAAW5W,KAAK+C,MAAMmmB,MACtB,UAAClpB,KAAK+C,MAAM4mB,cAAZ,QAAsB,GAAK,KAC3B9S,QAAQ,eA9BjB,SA3Cb,GAAoC1Q,IAAMC,W,2DChFpCkkB,G,kDACJ,aAAe,IAAD,8BACZ,gBACKC,UAAY,KACjB,EAAKC,0BAA4B,KACjC,EAAKC,aAAc,EAJP,E,8CAOd,SAAW3nB,GACT9C,KAAKwqB,0BAA4B1nB,EAAM0nB,0BACvCxqB,KAAKuqB,UAAYznB,EAAMynB,UACvBvqB,KAAKyqB,aAAc,I,kCAGrB,WACE,IAAKzqB,KAAKyqB,YAAa,MAAM,IAAIhsB,MAAM,gCACvC,OAAOuB,KAAKwqB,4B,gEAGd,sBAAAvjB,EAAA,yDACOjH,KAAKyqB,YADZ,sBAC+B,IAAIhsB,MAAM,gCADzC,sCAIqCisB,GAAa1qB,KAAKuqB,WAJvD,iEAIMjjB,cAJN,yBAGID,QAHJ,uD,mEAnBuBsjB,GA6BV,OAAIC,MAAM,IAAIN,GAAc,IAAIO,M,+KCR1BC,I,8EACnB,WAAYhoB,GAAQ,IAAD,8BACjB,cAAMA,IAEDioB,cAAgB,KACrB,EAAKC,2BAA6B,KAClC,EAAKC,kBAAoB,IAAIA,KAC3B,EAAKnoB,MAAMooB,YAAYC,yBAGzB,EAAKpoB,MAAQ,CACXmH,QAAS,KACTkhB,QAAS,KACTC,gBAAiB,MAGnB,EAAKxE,eAAiB,EAAKA,eAAelmB,KAApB,gBACtB,EAAK2qB,uBAAyB,EAAKA,uBAAuB3qB,KAA5B,gBAC9B,EAAK4qB,oBAAsB,EAAKA,oBAAoB5qB,KAAzB,gBAC3B,EAAK6qB,sBAAwB,EAAKA,sBAAsB7qB,KAA3B,gBAC7B,EAAK8qB,sBAAwB,EAAKA,sBAAsB9qB,KAA3B,gBAC7B,EAAK+qB,uBAAyB,EAAKC,iBAAiBhrB,KAAtB,eAAiC,MApB9C,E,iGAwBnB,sBAAAsG,EAAA,qFAGqCyjB,GAAa1qB,KAAK8C,MAAMynB,WAH7D,iEAGMjjB,cAHN,yBAEID,QAFJ,uD,4HAQA,mCAAAJ,EAAA,kEAC4BC,IAD5B,eAEOlH,KAAK8C,MAAMooB,YAAYU,gBAF9B,0BAGU5rB,KAAKsrB,yBAHf,wCACkCnkB,IADlC,mCACQ0kB,EADR,OAKE7rB,KAAK8rB,oBAAsBC,KAAKzN,MAAMuN,EAAYnkB,MAElD1H,KAAK+qB,cAAgB,IAAIA,KACvB/qB,KAAK8rB,oBAAoBE,OAAO3nB,QAAO,SAAC4nB,GAAD,OACrC,EAAKnpB,MAAMooB,YAAYgB,wBAAwBxgB,SAC7CugB,EAAME,kBAIZnsB,KAAKgrB,2BAA6B,IAAIA,KACpCjM,KAAUwJ,QACVvoB,KAAK8C,MAAMooB,YAAYC,wBACvBnrB,KAAKosB,sBAAsBzrB,KAAKX,OAChC,kBAAM,EAAK+C,MAAMsoB,kBACjBf,GAAW+B,yBAAyB1rB,KAAK2pB,KAE3CtqB,KAAKuE,SAAS,CAAE2F,QAASlK,KAAK+qB,cAAcuB,aAC5CtsB,KAAK8C,MAAMrD,cAAcmnB,iBAAiB5mB,KAAK6mB,gBAC/C7mB,KAAK8C,MAAMrD,cAAcqiB,sBAAsB9hB,KAAKusB,mBAvBtD,UAwBQvsB,KAAKirB,kBAAkBd,WAAWpL,KAAUwJ,SAxBpD,iD,sFA2BA,SAAmBnlB,GACbpD,KAAK8C,MAAMrD,gBAAkB2D,EAAU3D,gBACzCO,KAAK8C,MAAMrD,cAAcmnB,iBAAiB5mB,KAAK6mB,gBAC/C7mB,KAAK8C,MAAMrD,cAAcqiB,sBAAsB9hB,KAAKusB,sB,mEAQxD,WAAqBnsB,GAArB,uBAAA6G,EAAA,sEACiC7G,EAAe8f,iBADhD,cACQA,EADR,gBAEkCnB,KAAUC,cAAckB,EAAkB,CACxET,KAAM,OAHV,cAEQK,EAFR,YAM2B5Y,IAN3B,eAOOlH,KAAK8C,MAAMooB,YAAYU,gBAP9B,sBAQI,CACEY,WAAY1M,EACZ2M,OAAQ3M,EAAkB2M,QAVhC,UAYUzsB,KAAKsrB,yBAZf,0CAMiC1gB,KANjC,wCAMQ8hB,EANR,QAeiBhlB,MAAQglB,EAAWhlB,KAAK1G,OAAS,GAflD,kCAiB+B6K,QAAQC,IACjC4gB,EAAWhlB,KAAKzJ,IAAhB,uCAAoB,WAAOgU,GAAP,SAAAhL,EAAA,+EAAkB,IAAI0lB,gBAAa1a,IAAnC,2CAApB,wDAlBN,QAiBU2a,EAjBV,OAoBUC,EAAgBF,gBAAaG,UAAUF,GAC7C5sB,KAAKirB,kBAAkB8B,qBACvB/sB,KAAKirB,kBAAkB+B,iBAAiBH,GACxC7sB,KAAKuE,SAAS,CACZ6mB,QAASyB,EACTxB,gBAAiBwB,IAzBvB,iD,0FA8BA,SAAsBI,GACpBA,EAAQN,aAAaO,kBAAkB/tB,MAAK,SAACkoB,GAAD,OAC1CtI,KAAUwJ,QAAQ4E,KAAK,CAAEC,OAAQ/F,OAEnCiD,GAAW+C,yBAA2B,CACpCC,YAAY,EACZL,a,iCAIJ,SAAoBM,GAClBvtB,KAAKuE,SAAS,CACZ2F,QAASqjB,IAEXvtB,KAAKwrB,sBAAsB+B,K,mCAG7B,SAAsBA,GACpB,IAAMlC,EAAkBN,KAAcyC,cACpCxtB,KAAK+C,MAAMqoB,QACXmC,GAEFvtB,KAAKirB,kBAAkB8B,qBACvB/sB,KAAKirB,kBAAkB+B,iBAAiB3B,GACxCrrB,KAAKuE,SAAS,CAAE8mB,oBAGdf,GAAWmD,iCACXnD,GAAWmD,gCAAgCH,YAE3CttB,KAAK2rB,iBAAiBN,GAItBf,GAAWoD,qBAC+B,IAA1CpD,GAAWoD,oBAAoB1sB,QAE/BhB,KAAKgrB,2BAA2B2C,oBAAoB,MAGlDrD,GAAWsD,2BACbtD,GAAWsD,yBACTtD,GAAWsD,yBAAyBvpB,QAAO,SAACwpB,GAAD,OACzCxC,EAAgB3f,SAASmiB,S,0EAKjC,kCAAA5mB,EAAA,sDACQ6mB,EAAiB,GADzB,eAEoB9tB,KAAK+C,MAAMsoB,iBAF/B,gEAEWwC,EAFX,aAGQ9O,KAAUwJ,QAAQkE,OAH1B,SAGgDoB,EAAMX,kBAHtD,4BAGiCa,SAHjC,iCAIMD,EAAe5sB,KAAK2sB,GAJ1B,+IAMEvD,GAAWsD,yBAA2BE,EANxC,gE,qFASA,WACExD,GAAWsD,yBAA2B,GACtCtD,GAAWmD,gCAAkCO,oBAC7C1D,GAAW+C,yBAA2BW,sB,8BAGxC,SAAiB5C,GACfd,GAAWmD,gCAAkC,CAC3CH,YAAY,EACZL,QAAS,CACP7B,QAASA,GAAWprB,KAAK+C,MAAMsoB,gBAC/BS,oBAAqB9rB,KAAK8rB,oBAC1BmC,gBAAiBjuB,KAAK8C,MAAMooB,YAAYC,4B,oBAK9C,WACE,OAAInrB,KAAK+C,MAAMqoB,SAAWprB,KAAK+qB,cAE3B,qCACE,qBAAKrlB,UAAU,qBAAf,SACE,cAAC,KAAD,CACEwoB,gBAAiBluB,KAAK+qB,cAAcuB,WACpCpiB,QAASlK,KAAK+C,MAAMmH,QACpBikB,iBAAkBnuB,KAAKurB,oBACvB6C,QAASrD,KAAcqD,YAG3B,sBAAK1oB,UAAU,8BAAf,UACE,8BACE,cAAC,KAAD,CACE2oB,KAAMtP,KAAUwJ,QAChB6C,QAASprB,KAAK+C,MAAMsoB,gBACpBV,kBAAmBL,GACnBgE,oBAAqBC,SAGzB,8BACE,cAAC,KAAD,CACExoB,MAAM,4BACNN,QAASzF,KAAKusB,kBACdrkB,KAAM,cAAC,KAAD,CAA6BxC,UAAU,mBAGjD,8BACE,cAAC,KAAD,CACEK,MAAM,8BACNN,QAASzF,KAAKyrB,sBACdvjB,KAAM,cAAC,KAAD,CAA0BxC,UAAU,mBAG9C,8BACE,cAAC,KAAD,CACEK,MAAM,qBACNN,QAASzF,KAAK0rB,uBACdxjB,KACE,cAAC,kBAAD,CACEA,KAAMsmB,eACN9oB,UAAU,aACVhB,KAAK,iBAQP,S,GAlOqByB,IAAMC,YCvBxBqoB,I,yDAGnB,WAAY3rB,GAAQ,IAAD,EACjB,GADiB,qBACZA,EAAM4rB,UAAsC,IAA1B5rB,EAAM4rB,SAAS1tB,OACpC,MAAM,IAAIvC,MAAM,mDAFD,OAIjB,cAAMqE,IAEDC,MAAQ,CAAE4rB,OAAQ,OAEvB,EAAKC,UAAY,EAAKC,WAAWluB,KAAhB,eAA2B,OAC5C,EAAKmuB,UAAY,EAAKD,WAAWluB,KAAhB,eAA2B,OAC5C,EAAKouB,YAAc,EAAKF,WAAWluB,KAAhB,eAA2B,SAV7B,E,4FAanB,oCAAAsG,EAAA,sEAC4ByX,KAAmB,CAC3CsQ,QAAS,iBAFb,gBACUA,EADV,EACUA,QAIFC,EAASD,EAAQE,OAAOlvB,KAAK8C,MAAM4rB,SAAS,GAAGpsB,MAC/C6sB,EAASH,EAAQE,OAAOlvB,KAAK8C,MAAM4rB,SAAS,GAAGpsB,MAC/C8sB,EAAWJ,EAAQE,OAAOlvB,KAAK8C,MAAM4rB,SAAS,GAAGpsB,MAEvDtC,KAAKuE,SAAS,CAAE0qB,SAAQE,SAAQC,aATlC,gD,8EAYA,SAAWC,GACT,OAAQA,GACN,IAAK,MACHrvB,KAAK8C,MAAMurB,KAAKpwB,IAAIoxB,QAAUrvB,KAAK+C,MAAMksB,OACzC,MACF,IAAK,MACHjvB,KAAK8C,MAAMurB,KAAKpwB,IAAIoxB,QAAUrvB,KAAK+C,MAAMosB,OACzC,MACF,IAAK,QACHnvB,KAAK8C,MAAMurB,KAAKpwB,IAAIoxB,QAAUrvB,KAAK+C,MAAMqsB,SACzC,MACF,QACE,MAAM,IAAI3wB,MAAM,mBAGpBuB,KAAKuE,SAAS,CAAEoqB,OAAQU,M,oBAG1B,WACE,OACE,sBAAK3pB,UAAS,gCAA2B1F,KAAK+C,MAAM4rB,OAAtC,UAAd,UACE,qBACEjpB,UAAU,qBACVK,MAAO/F,KAAK8C,MAAM4rB,SAAS,GAAG3oB,MAC9BN,QAASzF,KAAK4uB,UACd5hB,MACEhN,KAAK+C,MAAMksB,QAAU,CACnBK,gBAAgB,QAAD,OAAUtvB,KAAK+C,MAAMksB,OAAOM,aAA5B,SAIrB,qBACE7pB,UAAU,qBACVK,MAAO/F,KAAK8C,MAAM4rB,SAAS,GAAG3oB,MAC9BN,QAASzF,KAAK8uB,UACd9hB,MACEhN,KAAK+C,MAAMosB,QAAU,CACnBG,gBAAgB,QAAD,OAAUtvB,KAAK+C,MAAMosB,OAAOI,aAA5B,SAIrB,qBACE7pB,UAAU,uBACVK,MAAO/F,KAAK8C,MAAM4rB,SAAS,GAAG3oB,MAC9BN,QAASzF,KAAK+uB,YACd/hB,MACEhN,KAAK+C,MAAMqsB,UAAY,CACrBE,gBAAgB,QAAD,OAAUtvB,KAAK+C,MAAMqsB,SAASG,aAA9B,gB,GA3EgBppB,IAAMqpB,gBAA9Bf,GACZgB,cAAgB,wB,ICJNC,G,oFCAEC,G,kDACnB,WAAY7sB,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CAAEyD,YAAa1D,EAAM0D,aAClC1D,EAAM8sB,qBAAoB,SAACppB,GAAD,OAAiB,EAAKjC,SAAS,CAAEiC,mBAJ1C,E,0CAOnB,WACE,OAAOxG,KAAK+C,MAAMyD,YAAcxG,KAAK8C,MAAM+sB,SAAW,S,GATL1pB,IAAMC,WDDrD0pB,GAAS,IACIJ,GAQjBK,QAPSpxB,OAAOwC,SAAQ,SAACgP,GAEvB,IAAI1M,EAAO0M,EAAI6f,MAAM,6BAA6B,GAClDF,GAAOrsB,GAAQisB,GAAEvf,GAAK8f,WAWXH,U,iDEbMI,G,8MAGnB,sBAAAjpB,EAAA,yJAGMjH,KAAK8C,MAAMqtB,kBACbnwB,KAAK8C,MAAMqtB,iBACT,8BACE,cAAC,KAAD,CAAoB9B,KAAMruB,KAAK8C,MAAMurB,UAN7C,gD,2DAHwC+B,iBAArBF,GACZT,cAAgB,uB,cC4CzB,SAASY,GACPC,EACA9qB,EACA+qB,GAEA,OAAQ/qB,GACN,KAAKipB,GAAgBgB,cACnB,OAAOe,YAAUrqB,OAAM,SAACkoB,GAAD,YAAW,CAChCoC,aACE,cAAC,GAAD,CAAiBpC,KAAMA,EAAMK,SAAU6B,EAAS7B,WAElDgC,SAAQ,UAAEH,EAASG,gBAAX,QAAuB,eAC/BC,eAAgB,gBAEpB,KAAKC,KAAyBC,YAC5B,OAAOL,YAAUrqB,OAAM,SAACkoB,GAAD,MAAW,CAChCoC,aAAcH,EACZ,cAAC,KAAD,CACEjC,KAAMA,EACN1D,kBAAmBL,GACnBnZ,aAAcA,GACdN,cAAeA,GACfQ,cAAeK,MAGnBgf,SAAU,SACVC,eAAgB,gBAEpB,KAAKG,KAA2BrB,cAC9B,OAAOe,YAAUrqB,OAAM,SAACkoB,GAAD,MAAW,CAChCoC,aAAcH,EACZ,cAAC,KAAD,CACEjC,KAAMA,EACN1D,kBAAmBL,GACnBwF,OAAQiB,MAGZL,SAAU,SACVC,eAAgB,0CAEpB,KAAKK,KAAkBvB,cACrB,OAAOe,YAAUrqB,OAAM,SAACkoB,GAAD,MAAW,CAChCoC,aAAcH,EACZ,cAAC,KAAD,CAAmBjC,KAAMA,EAAM1D,kBAAmBL,MAEpDoG,SAAU,SACVC,eAAgB,sCAEpB,KAAKT,GAAaT,cAChB,OAAOe,YAAUrqB,OAAM,SAACkoB,GAAD,MAAW,CAChCoC,aAAc,cAAC,GAAD,CAAcpC,KAAMA,EAAM4C,SAAUV,IAClDG,SAAUH,EAASG,SACnBC,eAAgB,iBAEpB,QACE,OAAO,MAIb,SAASO,GAAuB1rB,GAC9B,OAAQA,IACD2rB,KAAmB1B,cACf,IAAIe,YAAUrqB,OAAM,SAACkoB,GAAD,MAAW,CACpCoC,aAAc,cAAC,KAAD,CAAoBpC,KAAMA,QAGnC,K,SAIE+C,G,mFAAf,WAA+BC,EAAehK,GAA9C,qBAAApgB,EAAA,sEAC4ByX,KAAmB,CAC3C4S,QAAS,iBAFb,uBACUA,EADV,EACUA,QAIFC,EAAS,CACb/rB,KAAM,iBACNyH,MAAO,OACPukB,OAAQ,OACRC,MAAO,MACPpvB,IAAI,GAAD,OAAKqvB,GAAL,uBAECC,EAAU,IAAIL,EAAQ,CAC1BjK,SAAUA,EACVkK,OAAQA,IAEVF,EAAcO,SAASC,IAAIF,GAhB7B,kBAkBSA,GAlBT,4C,sBAwBA,IAGqBG,G,kDAEnB,WAAYhvB,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACX9E,IAAK,KACL8zB,SAAU,KACVtH,YAAa,KACbuH,WAAY,KACZvrB,eAAgB,MAGlB,EAAKwrB,8BAAgC,GAErC,EAAKxrB,eAAiB,EAAKA,eAAe9F,KAApB,gBACtB,EAAKuxB,cAAgB,EAAKA,cAAcvxB,KAAnB,gBAdJ,E,qDAiBnB,WACMX,KAAK8C,MAAMooB,aACblrB,KAAKmqB,aAGPnqB,KAAKmyB,uB,gCAGP,SAAmB/uB,GAAY,IAAD,QACvBpD,KAAK+C,MAAM0nB,aAAezqB,KAAK8C,MAAMooB,aACxClrB,KAAKmqB,aAGHnqB,KAAK8C,MAAMrD,gBAAkB2D,EAAU3D,eACzCO,KAAKmyB,qBAGPnyB,KAAKiyB,8BAA8B9wB,SAAQ,SAACF,GAAD,OACzCA,EAAS,EAAKqO,QAAQ9I,kB,gCAI1B,WAAsB,IAAD,OACfxG,KAAK8C,MAAMrD,gBACbO,KAAK8C,MAAMrD,cAAcinB,iBAAiB1mB,KAAK2mB,eAAehmB,KAAKX,OACnEA,KAAK8C,MAAMrD,cAAcmnB,iBAAiB5mB,KAAK6mB,eAAelmB,KAAKX,OACnEA,KAAK8C,MAAMrD,cAAcqiB,uBAAsB,SAACxS,GAC1C,EAAK8iB,6BACP,EAAKA,2BAA2BC,QAAU/iB,EAAQrP,SAEpD8e,KAAUuT,mBAAmBC,gBAAkB,GAC3CxT,KAAUyT,aAAYzT,KAAUyT,WAAa,Y,wBAKvD,WAAc,IAAD,OACXxyB,KAAKyyB,qBAAuBzyB,KAAK8C,MAAMooB,YAAYjtB,IAAIgpB,OAAOhpB,KAC5D,SAACy0B,GAAD,OAAeA,EAAU5L,oBAW3B/H,KAAU4T,UAAU,SAAU3yB,KAAKkyB,eASnClyB,KAAKuE,SAAS,CACZkmB,aAAa,EACbxsB,IAAK20B,kBAAO5yB,KAAK8C,MAAMooB,YAAYjtB,KATA,SAAC40B,EAAG5wB,GAAJ,OAxLzC,SAAiC4wB,EAAG5wB,EAAOkpB,GACzC,OAAQ0H,EAAEC,YACHC,KAAWD,UACP,IAAIC,KACTF,EAAE/L,iBACF+L,EAAExwB,IACFwwB,EAAEG,gBACFH,EAAEI,iBACFhxB,EACAkpB,EACA0H,EAAEK,sBAGG,KA4KPC,CACEN,EACA5wB,EACA,EAAKa,MAAMooB,YAAYC,4BAMzB4G,SAAUqB,uBACRpzB,KAAK8C,MAAMooB,YAAY6G,SACvB1B,GAA0B1vB,KACxB,KACAX,KAAKswB,8BAA8B3vB,KAAKX,QAG5CqzB,MAAOC,oBAAStzB,KAAK8C,MAAMooB,YAAYmI,MAAOnC,IAC9Cc,WAAYuB,yBAAcvzB,KAAK8C,MAAMooB,YAAY8G,gB,2CAIrD,SAA8BnC,GAC5B,OACE,cAAC,GAAD,CACErpB,YAAaxG,KAAKsP,QAAQ9I,YAC1BopB,oBAAqB5vB,KAAKwzB,uBAAuB7yB,KAAKX,MAFxD,SAIG6vB,M,oCAKP,SAAuB5uB,GACrBjB,KAAKiyB,8BAA8B/wB,KAAKD,K,kEAG1C,WAAoBgmB,GAApB,0BAAAhgB,EAAA,yDA2BOjH,KAAKyzB,gBA3BZ,gEA4BwBxM,GA5BxB,0BA4BWD,EA5BX,QA6BI,IACGA,EAAUE,MAAMwM,SAChB,EAAKjB,qBAAqB9tB,MACzB,SAACmiB,GAAD,OACEE,EAAU2M,WACV3M,EAAU2M,YAAY7M,mBAAqBA,KAG/C,kBAEGE,EAAUqL,SAAW,EAAKoB,gBAAgB1S,IAAIiG,KAEjD,EAAKoL,2BAA2BwB,WAC9B,EAAKH,gBAAgBtsB,IAAI6f,IAE3B,EAAKyM,gBAAgBI,OAAO7M,IAG5BA,EAAUqL,SACV,EAAKyB,yBACJ,EAAKL,gBAAgB1S,IAAIiG,IAE1B,EAAK8M,uBAAuB9M,IAnDlC,2T,uFAyEA,WACEjI,KAAUkI,OAAO9lB,SAAQ,SAAC+lB,GACxB,IAAK,IAAIzjB,KAAQswB,aACXtwB,IAASyjB,EAAM5kB,OACjB4kB,EAAMmL,QAAyC,SAA/B0B,aAAaC,QAAQvwB,S,2EAM7C,WAA6BujB,GAA7B,gCAAA/f,EAAA,yDAEK+f,EAAUE,OACVF,EAAUE,MAAMQ,eAChB1nB,KAAKyzB,gBAJV,wDAQEzzB,KAAKyzB,gBAAgBQ,IAAIjN,EAAW,IARtC,SAS4BtI,KAAmB,CAC3C4S,QAAS,iBAVb,uBASUA,EATV,EASUA,QATV,SAaiCtxB,KAAK8C,MAAMrD,cAAcW,eACrD8f,iBAdL,cAaQA,EAbR,OAeQkH,EAAQ,CACZC,SAAUnH,EACVoH,oBAAqB,aACrBC,UAAW,CAAC,KACZC,gBAAgB,GAnBpB,UAsB0BR,EAAUE,MAAMQ,cAAcN,GAtBxD,eAsBQO,EAtBR,OAsBgEA,SAtBhE,UAuByB9b,QAAQC,IAC7B6b,EAAS1pB,IAAT,uCAAa,WAAO8qB,GAAP,eAAA9hB,EAAA,sEACU8hB,EAAQmL,YAAYC,SAASC,eAChDrL,GAFS,cACLwI,EADK,yBAIJ,IAAID,EAAQ,CAAEjK,SAAU0B,EAAQ1B,SAAUkK,YAJtC,2CAAb,wDAxBJ,QAuBQK,EAvBR,OAgCE5xB,KAAKyzB,gBAAgBQ,IAAIjN,EAAW4K,GAEpC5xB,KAAKoyB,2BAA2BiC,YAChC/wB,MAAMC,KAAKvD,KAAKyzB,gBAAgB90B,QAC7BuK,MACC,SAACorB,EAAKC,GAAN,OACExV,KAAUkI,OAAO7iB,QAAQmwB,GAAOxV,KAAUkI,OAAO7iB,QAAQkwB,MAE5DnzB,SAAQ,SAAC6lB,GAAD,OACP,EAAKoL,2BAA2BoC,QAC9B,EAAKf,gBAAgBtsB,IAAI6f,OA1CjC,iD,0HA+CA,iCAAA/f,EAAA,sDACEjH,KAAKoyB,2BAA2BiC,YAChCr0B,KAAKyzB,gBAAkB,IAAIgB,IAC3B1V,KAAUkI,OACP5iB,QACC,SAAC2iB,GAAD,OACEA,EAAUqL,SACV,EAAKI,qBAAqB9tB,MACxB,SAACmiB,GAAD,OACEE,EAAU2M,WACV3M,EAAU2M,YAAY7M,mBAAqBA,QAGlD3lB,SAAQ,SAAC6lB,GAAD,OAAe,EAAK8M,uBAAuB9M,MAbxD,gD,yHAgBA,WAAqBhH,GAArB,uBAAA/Y,EAAA,yDACO+Y,GAAYA,EAAQS,gBAD3B,wDAGUX,EAAoCE,EAApCF,kBAAmBjM,EAAiBmM,EAAjBnM,aAH7B,SAI6BiM,EAJ7B,UAIQ+I,EAJR,iBAOI7oB,KAAK00B,iBAAiB9C,SAAS7mB,MAAM,UAPzC,uEAQWqmB,GAAgBpxB,KAAK00B,iBAAkB7L,GARlD,6BAMQ8I,EANR,MAUUJ,OAAOE,MAAQ5d,EAAe,GACtC8d,EAAQtK,SAAWwB,EAEnB9J,KAAU4V,eAAe9L,GAb3B,iD,0HAgBA,qCAAA5hB,EAAA,sEACkCyX,KAAmB,CACjDkW,cAAe,8BAFnB,gBACUA,EADV,EACUA,cAGR50B,KAAK00B,iBAAmB,IAAIE,EAAc,CAAEx2B,GApRf,2BAqR7B4B,KAAKoyB,2BAA6B,IAAIwC,EAAc,CAClDx2B,GArR+B,6BAsR/Bi0B,SAAS,IAGXtT,KAAUwJ,QAAQtqB,IAAI4zB,IAAI7xB,KAAKoyB,4BAC/BrT,KAAUwJ,QAAQtqB,IAAI4zB,IAAI7xB,KAAK00B,kBAE/BG,aAAY,WACI9V,KAAUwJ,QAAQtqB,IAAIgpB,OAAO7iB,QAAQ,EAAKswB,oBAC1C3V,KAAUwJ,QAAQtqB,IAAIgpB,OAAOjmB,OAAS,GAClD+d,KAAUwJ,QAAQtqB,IAAI62B,QACpB,EAAKJ,iBACL3V,KAAUwJ,QAAQtqB,IAAIgpB,OAAOjmB,OAAS,KAEzC,KAGH+d,KAAUwJ,QAAQwM,YAAYC,OAAS,EAEvCh1B,KAAKuE,SAAS,CAAEkC,gBAAgB,IAChCzG,KAAK8C,MAAM2D,gBAAkBzG,KAAK8C,MAAM2D,iBA1B1C,iD,0EA6BA,WACE,IAAKzG,KAAK+C,MAAM9E,IAAK,OAAO,KAE5B,IAAMyH,EAAYogB,KAAW,aAAc,CACzC,gBAAiB9lB,KAAK8C,MAAM7C,UAE9B,OACE,qBAAKyF,UAAWA,EAAhB,SACE,sBAAKA,UAAU,eAAesH,MAAO,CAAEioB,KAAM,GAA7C,UACE,cAAC,KAAD,CACEh3B,IAAK+B,KAAK+C,MAAM9E,IAChBo1B,MAAK,sBAAMrzB,KAAK+C,MAAMswB,OAAjB,YAA2BrzB,KAAK+C,MAAMgvB,WAC3CC,WAAYhyB,KAAK+C,MAAMivB,WACvBkD,SAAU,GACVC,QAAQ,WACR1K,YAAazqB,KAAKyG,iBAEnBzG,KAAKsP,QAAQ9I,aACZxG,KAAK8C,MAAMooB,aACXlrB,KAAK+C,MAAM0D,gBACT,cAAC,GAAD,CACEhH,cAAeO,KAAK8C,MAAMrD,cAC1ByrB,YAAalrB,KAAK8C,MAAMooB,YACxBX,UAAWvqB,KAAKsP,QAAQib,qB,GAjUQpkB,IAAMC,WAAjC0rB,GACZlhB,YAAcrK,E,gCC9IR,SAAS6uB,GAAUtyB,GAChC,IAAM4C,EAAYogB,KAAW,YAAa,CACxCuP,WAAYvyB,EAAMwyB,YAAc,MAElC,OAAOxyB,EAAM+D,QACX,kDAEA,qBAAKnB,UAAWA,EAAhB,SACE,8BAAM5C,EAAMwyB,YAAc,M,oICbXC,G,WAOnB,WAAY/L,EAAUgM,EAAUC,EAAStiB,GAAO,sTAC9C,YAAAnT,KAAA,QAAiBwpB,EACjB,YAAAxpB,KAAA,QAAiBw1B,EACjB,YAAAx1B,KAAA,QAAgBy1B,EAChB,YAAAz1B,KAAA,QAAamT,EACb,YAAAnT,KAAA,QAAe,G,0CAGjB,WACE,OAAO,YAAAA,KAAP,U,oBAEF,WACE,OAAO,YAAAA,KAAP,U,mBAEF,WACE,OAAO,YAAAA,KAAP,U,gBAEF,WACE,OAAO,YAAAA,KAAP,U,kBAEF,WACE,OAAO,YAAAA,KAAP,U,6BAGF,WAAmB,IAAD,OAChB,OAAOA,KAAK01B,OAAOC,SAAQ,SAACC,GAAD,OACzBA,EAAEC,OAAO53B,KAAI,SAAC63B,GAAD,MAAS,CACpBC,YAAa,CAAEzhB,SAAUwhB,EAAGxhB,SAAUE,UAAWshB,EAAGthB,WACpD+U,WAAY,CACVyM,WAAW,YAAC,EAAF,QACVC,UAAU,YAAC,EAAF,QACTT,SAAS,YAAC,EAAF,QACRC,QAAQ,YAAC,EAAF,QACPS,GAAIN,EAAEO,UACNC,UAAWN,EAAGO,SACdC,WAAYR,EAAGS,UACfC,eAAgBZ,EAAEa,cAClBC,UAAU,c,0DAOPC,GAAb,WAGE,WAAYR,GAAY,wIACtB,YAAAn2B,KAAA,QAAkBm2B,EAClB,YAAAn2B,KAAA,QAAe,GALnB,2CAQE,WACE,OAAO,YAAAA,KAAP,UATJ,kBAWE,WACE,OAAO,YAAAA,KAAP,UAZJ,yBAmBE,WACE,IAAIiS,EAASjS,KAAK42B,cAAcC,UAChC,OAAQ5kB,EAAS,GAWf,QACE,MATF,KAAK,EACL,KAAK,EACL,KAAK,EACHA,GAAUA,EAAS,EACnB,MACF,KAAK,EACHA,IAKJ,OAAOA,IAnCX,yBAyCE,WACE,IAAM4kB,EAAYrjB,KAAKwS,IAAL,MAAAxS,KAAI,YAAQ,YAAAxT,KAAA,QAAa/B,KAAI,SAAC63B,GAAD,OAAQA,EAAGe,eAC1D,OAAO,YAAA72B,KAAA,QAAa2E,MAAK,SAACmyB,GAAD,OAAcA,EAASD,YAAcA,SA3ClE,K,wIA+CaE,GAAb,WAME,WAAYV,EAAUW,EAAST,EAAWjiB,EAAUE,GAAY,sTAC9D,YAAAxU,KAAA,QAAiBq2B,EACjB,YAAAr2B,KAAA,QAAgBg3B,EAChB,YAAAh3B,KAAA,QAAkBu2B,EAClB,YAAAv2B,KAAA,QAAiBsU,EACjB,YAAAtU,KAAA,QAAkBwU,EAXtB,0CAcE,WACE,OAAO,YAAAxU,KAAP,UAfJ,mBAiBE,WACE,OAAO,YAAAA,KAAP,UAlBJ,qBAoBE,WACE,OAAO,YAAAA,KAAP,UArBJ,oBAuBE,WACE,OAAO,YAAAA,KAAP,UAxBJ,qBA0BE,WACE,OAAO,YAAAA,KAAP,UA3BJ,qBAiCE,WACE,OAAOwT,KAAKyjB,OACRzjB,KAAK0jB,KAA4B,KAAtB,YAAAl3B,KAAA,QAAiB,GAAYwT,KAAK2jB,IAAL,YAASn3B,KAAT,QAA0B,IAAlE,YACAA,KADA,UAEC,IAAM,YAAAA,KAAA,QAAiB,IAF1B,YAGEA,KAHF,aAnCN,KChGMo3B,GAA0B,QAA1BA,GAAwC,MAAxCA,GAAwD,UACxDC,GACK,KADLA,GAEE,QAFFA,GAGM,YAHNA,GAIK,WAJLA,GAKE,QALFA,GAWK,UAXLA,GAYQ,aAZRA,GAaC,MAbDA,GAcC,MAdDA,GAeE,OAaD,SAASniB,GAAaC,GAC3B,IACE,IAAMmiB,EAAO,GACPC,EAAOpiB,EAASE,MAAM,MACtBmiB,EAAaC,GAAcF,GAI7BG,EAAa,KA4DjB,OA3DAF,EAAWr2B,SAAQ,SAACw2B,EAASt2B,EAAGu2B,GAC9B,IAAMC,EAAoBx2B,EAAI,EAAIu2B,EAAIv2B,EAAI,GAAGy2B,OAAS,KACtDJ,EAAaK,GAAUR,EAAMI,EAAQK,SAAUH,GAK/C,IAHA,IAAII,EAAQ,KACRC,EAAW,KACXC,EAAwB,GACnBC,EAAIT,EAAQK,SAAUI,EAAIT,EAAQG,OAAQM,IAC7Cb,EAAKa,GAAGxgB,WAAW,OAAOugB,EAAsBj3B,KAAKk3B,GAG3DD,EAAsBh3B,SAAQ,SAACk3B,GAC7B,GAAIA,EAAaV,EAAQG,OAAS,EAAG,CACnC,IAAM3B,EAAYoB,EAAKc,EAAa,GAAGC,OAAO,GACxCjC,EAAWzf,WACf2hB,GAAchB,EAAKc,EAAa,GAAI,CAClChB,GACA,OACChiB,MAAM,KAAK,IAEV2hB,EAAUpgB,WACd2hB,GAAchB,EAAKc,EAAa,GAAI,CAClChB,GACA,QAGEd,EAAYjrB,SAChBitB,GAAchB,EAAKc,EAAa,GAAI,CAAChB,GAAoB,QAErD/iB,EAAWsC,WACf2hB,GAAchB,EAAKc,EAAa,GAAI,CAAChB,GAAoB,QAErD7iB,EAAYoC,WAChB2hB,GAAchB,EAAKc,EAAa,GAAI,CAAChB,GAAqB,QAEtDvY,EAAQ,IAAIiY,GAChBV,EACAW,EACAT,EACAjiB,EACAE,KAICyjB,GACD9B,IAAc8B,EAAM9B,WACpBrX,EAAMkY,QAAUkB,EA7DC,OA+DbD,GAAOP,EAAWhC,OAAOx0B,KAAK+2B,GAClCA,EAAQ,IAAItB,GAAMR,IAEpB8B,EAAMpC,OAAO30B,KAAK4d,GAClBoZ,EAAWpZ,EAAMkY,YAGrBU,EAAWhC,OAAOx0B,KAAK+2B,GACvBX,EAAKp2B,KAAKw2B,MAGLJ,EACP,MAAOkB,GAEP,OADAvW,QAAQC,IAAIsW,GACL,MAMX,SAAST,GAAUU,EAAUT,EAAUU,GACrC,IAAMC,EAAiBD,GAAkC,EACnDE,EAAeZ,EACfa,EAAaJ,EAAS30B,MAAM60B,EAAgBC,GAC5CpP,EAAW+O,GACfM,EAAWl0B,MAAK,SAAC+qB,GAAD,OAA0C,IAAnCA,EAAEtrB,QAAQizB,OACjC,CAACA,GAAqB,OAElB7B,EAAW+C,GACfM,EAAWl0B,MAAK,SAAC+qB,GAAD,OAA8C,IAAvCA,EAAEtrB,QAAQizB,OACjC,CAACA,GAAyB,OAEtB5B,EAAU8C,GACdM,EAAWl0B,MAAK,SAAC+qB,GAAD,OAA6C,IAAtCA,EAAEtrB,QAAQizB,OACjC,CAACA,GAAwB,OAErBlkB,EAAO2lB,GACXP,GACEM,EAAWl0B,MAAK,SAAC+qB,GAAD,OAA0C,IAAnCA,EAAEtrB,QAAQizB,OACjC,CAACA,GAAqB,QAI1B,OAAO,IAAI9B,GAAY/L,EAAUgM,EAAUC,EAAStiB,GAKtD,SAASolB,GAAclzB,EAAO0zB,GAC5B,IAAIC,EAAW,OAAG3zB,QAAH,IAAGA,IAAS,GAI3B,OAHA0zB,EAAa53B,SAAQ,SAAC83B,GACpBD,EAAcA,EAAYnV,QAAQoV,EAAK,OAElCD,EAAYE,OAQrB,SAASzB,GAAcF,GACrB,IAAM4B,EAAoB,GA4C1B,OA1CsB,SAACvB,EAAKwB,GAE1B,IADA,IAAIC,EAAU,GACLh4B,EAAI,EAAGA,EAAIu2B,EAAI52B,OAAQK,IAC1Bu2B,EAAIv2B,GAAG+C,QAAQg1B,IAAQ,GAAGC,EAAQn4B,KAAKG,GAE7C,OAAOg4B,EAIWC,CAAc/B,EAAMF,IACrCnuB,MAAK,SAACjC,EAAGqF,GAAJ,OAAUrF,EAAIqF,KACnBrO,KAAI,SAACs7B,GACJ,IAAMC,EACJD,EAAS,GAA2C,IAAtChC,EAAKgC,EAAS,GAAGn1B,QAAQ,SACnCq1B,EACJF,EAAShC,EAAKv2B,OAAS,GAAyC,IAApCu2B,EAAKgC,EAAS,GAAGn1B,QAAQ,OASvD,MAAO,CAAEs1B,iBAAkBH,EAAQI,YAPhCH,GAAsBC,IACrBD,IAAuBC,EACrBrC,GACAoC,EACApC,GACAA,OAOEj2B,SAAQ,SAACy4B,EAASv4B,EAAGu2B,GAE7BgC,EAAQD,cAAgBvC,IACxB/1B,EAAIu2B,EAAI52B,OAAS,GACjB42B,EAAIv2B,EAAI,GAAGs4B,cAAgBvC,IAE3B+B,EAAkBj4B,KAAK,CACrB82B,SAAU4B,EAAQF,iBAClB5B,OAAQF,EAAIv2B,EAAI,GAAGq4B,sBAKlBP,EAKT,SAASL,GAAoBe,GAC3B,IAAM3oB,EAAM2oB,EAAa/1B,MAAM,EAAG,GAC5BmN,EAAQ4oB,EAAa/1B,MAAM,EAAG,GAC9BkN,EAAO6oB,EAAa/1B,MAAM,EAAG,IACnC,MAAM,GAAN,OAAUkN,EAAV,YAAkBC,EAAlB,YAA2BC,G,OAGtB,IC7LD4oB,GAA4B,KAA5BA,GAA+C,KAEhCC,G,kDACnB,WAAYj3B,GAAQ,IAAD,8BACjB,cAAMA,IACDk3B,gBAAkB,GACvB,EAAKC,iBAAmB,GACxB,EAAKl3B,MAAQ,CACXm3B,YAAa,KACbC,WAAY,KACZC,wBAAyB,IAG3B,EAAKC,UAAYl0B,IAAMoW,YAEvB,EAAK+d,WAAa,EAAKA,WAAW35B,KAAhB,gBAClB,EAAK45B,gBAAkB,EAAKA,gBAAgB55B,KAArB,gBACvB,EAAK6gB,kBAAoB,EAAKA,kBAAkB7gB,KAAvB,gBACzB,EAAK65B,8BACH,EAAKA,8BAA8B75B,KAAnC,gBAhBe,E,qDAmBnB,WACMX,KAAK8C,MAAMrD,eACbO,KAAK8C,MAAMrD,cAAcqiB,sBACvB9hB,KAAK+hB,mBAAmBphB,KAAKX,S,uEAInC,WAAyBoD,GAAzB,SAAA6D,EAAA,yDAEMjH,KAAK8C,MAAM23B,iBAAmBr3B,EAAUq3B,gBAC1Cz6B,KAAK06B,oBAAoB16B,KAAK8C,MAAM23B,gBAKpCz6B,KAAK8C,MAAMrD,gBAAkB2D,EAAU3D,eACvCO,KAAK8C,MAAMrD,eAEXO,KAAK8C,MAAMrD,cAAcqiB,sBACvB9hB,KAAK+hB,mBAAmBphB,KAAKX,QAK/BA,KAAK8C,MAAM63B,eACX36B,KAAK8C,MAAM63B,gBAAkBv3B,EAAUu3B,cAlB3C,gCAoBU36B,KAAKw6B,gCApBf,gD,uFA4BA,SAAmBz3B,GAAQ,IAAD,QAGtBA,EAAMxC,sBAAsBS,SAAWhB,KAAKg6B,gBAAgBh5B,SAC3D+B,EAAMxC,sBAAsBq6B,OAAM,SAACC,GAAD,OACjC,EAAKb,gBAAgB/uB,MACnB,SAAC6vB,GAAD,OAASA,EAAIj3B,QAAUg3B,EAAQh3B,OAASi3B,EAAI72B,MAAQ42B,EAAQ52B,aAIhEjE,KAAKg6B,gBAAkBj3B,EAAMxC,sBAC7BP,KAAKi6B,iBAAmB,GACxBj6B,KAAKuE,SAAS,CACZ61B,wBAAyB,Q,kFAS/B,yCAAAnzB,EAAA,2DACMjH,KAAKi6B,iBAAiBj5B,OAAS,GAAKhB,KAAK8C,MAAM63B,eADrD,iCAEqCjc,KAAmB,CAClDE,eAAgB,sCAHtB,uBAEYA,EAFZ,EAEYA,eAFZ,SAM0C/S,QAAQC,IAC5C9L,KAAKi6B,iBAAiBh8B,IAAtB,uCAA0B,WAAO8qB,GAAP,SAAA9hB,EAAA,sEACjB2X,EAAemc,OACpBhS,EAAQ1B,SACR,EAAKvkB,MAAM63B,eAHW,uCAKpB5R,EALoB,2BAMpB,KANoB,iFAA1B,kCAAA/oB,KAAA,iBAPN,OAMUg7B,EANV,OAgBUC,EAAoBD,EAAwB32B,QAChD,SAAC0kB,GAAD,OAAaA,KAGf/oB,KAAKuE,SAAS,CACZ61B,wBAAyBa,IArB/B,iD,8HAgCA,WAA0BR,EAAgBS,GAA1C,kCAAAj0B,EAAA,yDACQizB,EAAcgB,EAChBnP,KAAKzN,MAAM4c,GACXl7B,KAAKm7B,cAAcjB,YAHzB,uBAKIl6B,KAAKuE,SAAS,CAAE41B,WAAY,OALhC,0CASmCzb,KAAmB,CAClDE,eAAgB,sCAVpB,uBASUA,EATV,EASUA,eAIJ+I,EACFuS,EAAYkB,SAAWtB,GACnB95B,KAAK8C,MAAMu4B,oBAAoBh3B,QAC7B,SAAC0kB,GAAD,OACE,EAAKuS,SAASvS,EAAS+Q,MACvBI,EAAY97B,MAEhB4B,KAAK+C,MAAMq3B,wBAAwB/1B,QACjC,SAAC0kB,GAAD,OACE,EAAKuS,SAASvS,EAAS+Q,MAA4BI,EAAY97B,MAtB3E,UA0BiCyN,QAAQC,IACrC6b,EAAS1pB,IAAT,uCACE,WAAO8qB,GAAP,SAAA9hB,EAAA,sEACQ2X,EAAe6J,SAASgS,EAAgB1R,EAAQ1B,UADxD,mFADF,wDA3BJ,QA0BQkU,EA1BR,OAgCQC,EACJ7T,EAAS4T,EAAiBn3B,QAAQoP,KAAKwS,IAAL,MAAAxS,KAAI,YAAQ+nB,MAExCE,EAAuBz7B,KAAK8C,MAAM44B,uBAAlCD,mBACRz7B,KAAKuE,SAAS,CAAE41B,WAAYqB,EAAajS,WAAWkS,KApCtD,iD,sFAuCA,SAAgBj9B,GACdwB,KAAKuE,SAAS,CAAE21B,YAAanO,KAAKzN,MAAM9f,EAAE2G,OAAOE,SACjDrF,KAAK06B,oBAAoB16B,KAAK8C,MAAM23B,eAAgBj8B,EAAE2G,OAAOE,S,+BAG/D,WACErF,KAAKq6B,UAAUh6B,QAAQyS,U,sBASzB,SAASiW,EAAS4S,GAChB,MACE37B,KAAK8C,MAAM44B,uBADLE,EAAR,EAAQA,iBAAkBC,EAA1B,EAA0BA,iBAG1B,MAAM,GAAN,OAAU9S,EAAQQ,WAAWsS,GAA7B,YAAkDhrB,GAAcuC,OAC9D,IAAIhH,KAAK2c,EAAQQ,WAAWqS,KAD9B,aAEMD,EAFN,O,yBASF,WAAe,IAAD,SACZ,IACG37B,KAAK8C,MAAMu4B,qBACkC,IAA9Cr7B,KAAK+C,MAAMq3B,wBAAwBp5B,OAEnC,MAAO,CAAE86B,aAAc,GAAI5B,YAAa,MAE1C,IAAQ0B,EAAqB57B,KAAK8C,MAAM44B,uBAAhCE,iBAGFG,EAAsB,SAACpU,EAAUyT,GACrC,IAAMY,GAAY,OAACrU,QAAD,IAACA,IAAY,IAC5Bze,MACC,SAACyD,EAAIC,GAAL,OACE,IAAIR,KAAKQ,EAAG2c,WAAWqS,IACvB,IAAIxvB,KAAKO,EAAG4c,WAAWqS,OAE1B39B,KAAI,SAACg+B,GAAD,OAAoB,EAAKX,SAASW,EAAgBb,MAEzD,OADkB,YAAO,IAAI32B,IAAIu3B,IACb/9B,KAAI,SAACG,GAAD,MAAS,CAAEA,GAAIA,EAAIg9B,OAAQA,OAG/CU,EAAY,sBACbC,EACD/7B,KAAK8C,MAAMu4B,oBACXvB,KAHc,YAKbiC,EACD/7B,KAAK+C,MAAMq3B,wBACXN,MAKEI,EAAW,UACf4B,EAAan3B,MACX,SAACu3B,GAAD,OACE,EAAKn5B,MAAMm3B,aACXgC,EAAI99B,KAAO,EAAK2E,MAAMm3B,YAAY97B,IAClC89B,EAAId,SAAW,EAAKr4B,MAAMm3B,YAAYkB,iBAL3B,QAMTU,EAAa96B,OAAS86B,EAAa,GAAK,KAEhD,MAAO,CAAEA,eAAc5B,iB,+DAMzB,WAAiB17B,GAAjB,sCAAAyI,EAAA,6DACQk1B,EAAQ,SAAC32B,GAEb,QADeA,EAAK2F,cAAcC,SAAS,SAIvCgxB,EAAe,GANvB,SASiCvwB,QAAQC,IACrCxI,MAAMC,KAAK/E,EAAE2G,OAAO6D,OAAO/K,IAA3B,uCAA+B,WAAOkE,EAAMd,GAAb,iBAAA4F,EAAA,0DACzBk1B,EAAMh6B,EAAKG,MADc,gCAEAsP,GAAe1P,EAAoBC,IAFnC,cAErBohB,EAFqB,QAGrB8Y,EAAcnnB,GAAaqO,KACU,IAAvB8Y,EAAYr7B,QAC9Bo7B,EAAal7B,KAAKiB,EAAKG,MALE,kBAMpB+5B,GANoB,OAQ3BD,EAAal7B,KAAKiB,EAAKG,MARI,4CAA/B,0DAVJ,cASQ23B,EATR,OAwBQqC,EAAwBrC,EAAiB51B,QAC7C,SAAC0kB,GAAD,OAAaA,GAAWA,EAAQ/nB,OAAS,KAIrCu7B,EAAoBD,EACvBrU,OACAhqB,KAAI,SAACi+B,GAAD,OAASA,EAAIM,qBACjBpjB,QAAO,SAACqjB,EAAW/E,GAClB,OAAO+E,EAAUC,OAAOhF,KACvB,IAGCiF,EAAgBJ,EACnBt+B,KAAI,SAAC8qB,GAAD,OACH,EAAKkR,iBAAiBhvB,MACpB,SAAC2xB,GAAD,OACEA,EAAE7G,YAAYzhB,WAAayU,EAAQgN,YAAYzhB,UAC/CsoB,EAAE7G,YAAYvhB,YAAcuU,EAAQgN,YAAYvhB,WAChDooB,EAAErT,WAAWyM,aAAejN,EAAQQ,WAAWyM,YAC/C4G,EAAErT,WAAW0M,YAAclN,EAAQQ,WAAW0M,aAE9C,KACAlN,KAEL1kB,QAAO,SAACyxB,GAAD,OAAQA,KAjDpB,UAmD0BpX,KAAmB,CACzCa,MAAO,wBApDX,wBAmDUA,EAnDV,EAmDUA,MAnDV,UAwD+B1T,QAAQC,IACnC6wB,EAAc1+B,IAAd,uCAAkB,WAAO63B,GAAP,SAAA7uB,EAAA,sEAEE8X,KAAUC,cACxB,IAAIO,EAAM,CACRjL,SAAUwhB,EAAGC,YAAYzhB,SACzBE,UAAWshB,EAAGC,YAAYvhB,UAC1BgL,iBAAkB,CAAEC,KAAM,SANhB,+BASDqW,EAAGC,YATF,KAUFD,EAAGvM,WAVD,mBAEdlC,SAFc,KASd0O,YATc,KAUdxM,WAVc,kDAAlB,wDAzDJ,QAwDQsT,EAxDR,OAwEE78B,KAAKi6B,iBAAmBj6B,KAAKi6B,iBAAiByC,OAAOG,GACrD78B,KAAKw6B,gCAED4B,EAAap7B,OAAS,IACxB4D,eAAaC,QAAUC,qBAAmBrG,MAAnB,6CAEnBD,EAAE2G,OAAO6D,MAAMhI,OAASo7B,EAAap7B,OAFlB,eAGdxC,EAAE2G,OAAO6D,MAAMhI,OAHD,oBA5E3B,iD,2EAoFA,WACE,IAAKhB,KAAK8C,MAAM44B,uBAAwB,OAAO,KAE/C,MAAsC17B,KAAKm7B,cAAnCW,EAAR,EAAQA,aAAc5B,EAAtB,EAAsBA,YAChB4C,EACqB,MAAzB98B,KAAK+C,MAAMo3B,YACc,MAAzBn6B,KAAK8C,MAAMwyB,YACmD,MAA9Dt1B,KAAK8C,MAAM44B,uBAAuBqB,0BAClC/8B,KAAK8C,MAAMwyB,WAAat1B,KAAK+C,MAAMo3B,YACjCn6B,KAAK8C,MAAM44B,uBAAuBqB,yBACtC,OAAO/8B,KAAK8C,MAAMk6B,mBAChB,kDAEA,sBAAKt3B,UAAU,WAAf,UACE,sBAAKA,UAAU,YAAf,UACE,uBAAOqkB,QAAQ,YAAf,8BACA,sBAAKrkB,UAAU,uBAAf,UACE,wBACEtH,GAAG,YACHiH,MAAO60B,EAAcnO,KAAKkR,UAAU/C,GAAe,GACnDn0B,MAAOm0B,EAAcA,EAAY97B,GAAK,GACtC6H,SAAUjG,KAAKu6B,gBAJjB,SAMGuB,EAAa79B,KAAI,SAACi+B,GAAD,OAChB,wBAEE72B,MAAO0mB,KAAKkR,UAAUf,GACtBx2B,UACEw2B,EAAId,SAAWtB,GAAyB,cAAgB,KAJ5D,SAOGoC,EAAI99B,IANA89B,EAAI99B,SAUf,wBACEoH,KAAK,SACLC,QAASzF,KAAKwhB,kBACdzb,MAAM,wBACNL,UAAU,QACVgE,SAA0C,IAAhC1J,KAAKg6B,gBAAgBh5B,OALjC,SAOE,cAAC,kBAAD,CAAiBkH,KAAMyV,eAAcjZ,KAAK,SAE5C,uBACEc,KAAK,OACLoY,OAAO,OACPC,UAAQ,EACR5X,SAAUjG,KAAKs6B,WACfttB,MAAO,CAAE8Q,QAAS,QAClBC,IAAK/d,KAAKq6B,kBAIhB,sBAAK30B,UAAU,iBAAf,UACE,qBAAKA,UAAU,WAAf,SACE,uBAAOqkB,QAAQ,aAAf,8BAEF,qBACErkB,UAAWogB,KAAW,WAAY,WAAY,CAC5CoX,UAAWJ,IAFf,SAKE,sBAAM1+B,GAAG,aAAT,SAC4B,MAAzB4B,KAAK+C,MAAMo3B,WAAX,UACMn6B,KAAK+C,MAAMo3B,WADjB,QAEG,mB,GAtXoBh0B,IAAMC,W,OCd7B,SAAS+2B,GAASr6B,GAC/B,IAAQs6B,EAAoDt6B,EAApDs6B,gBAAiBC,EAAmCv6B,EAAnCu6B,aAAcC,EAAqBx6B,EAArBw6B,iBACvC,SAOIF,QAPJ,IAOIA,IAAmB,GANrBG,EADF,EACEA,aACAC,EAFF,EAEEA,WACAC,EAHF,EAGEA,UACAC,EAJF,EAIEA,UACAC,EALF,EAKEA,YACAC,EANF,EAMEA,cAEF,SACEP,QADF,IACEA,IAAgB,GADJQ,EAAd,EAAQtvB,KAA+BuvB,EAAvC,EAAgCtvB,MAEhC,SAQI8uB,QARJ,IAQIA,IAAoB,GAPtBS,EADF,EACEA,kBACAC,EAFF,EAEEA,aACAC,EAHF,EAGEA,oBACAC,EAJF,EAIEA,kBACAC,EALF,EAKEA,YACAC,EANF,EAMEA,oBACAC,EAPF,EAOEA,UAGF,OACE,sBAAK34B,UAAU,WAAf,UACE,qBAAKA,UAAU,UAAUsH,MAAO,CAAEsxB,UAAW,OAA7C,SACGx7B,EAAMy7B,uBACL,kDAEA,qCACE,sBAAK74B,UAAU,eAAf,UACE,kDACA,sBAAKA,UAAU,OAAf,UACE,sBAAKA,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,+CAEF,qBAAKA,UAAU,WAAf,SACE,+BACmB,MAAhB63B,EAAA,UAA0BA,EAA1B,KAA4C,YAInD,sBAAK73B,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,6CAEF,qBAAKA,UAAU,WAAf,SACE,+BAAqB,MAAd83B,EAAA,UAAwBA,EAAxB,KAAwC,kBAKvD,sBAAK93B,UAAU,eAAf,UACE,iDACA,sBAAKA,UAAU,OAAf,UACE,sBAAKA,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,uDAEF,qBAAKA,UAAU,WAAf,SACE,+BAAoB,MAAb+3B,EAAA,UAAuBA,EAAvB,KAAsC,YAGjD,sBAAK/3B,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,4CAEF,qBAAKA,UAAU,WAAf,SACE,+BAAOg4B,eAKf,sBAAKh4B,UAAU,eAAf,UACE,mDACA,sBAAKA,UAAU,OAAf,UACE,sBAAKA,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,6CAEF,qBAAKA,UAAU,WAAf,SACE,+BACkB,MAAfi4B,EAAA,UAAyBA,EAAzB,KAA0C,YAIjD,sBAAKj4B,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,+CAEF,qBAAKA,UAAU,WAAf,SACE,+BACoB,MAAjBk4B,EAAA,UAA2BA,EAA3B,KAA8C,uBAS/D,qBAAKl4B,UAAU,UAAUsH,MAAO,CAAEsxB,UAAW,MAA7C,SACGx7B,EAAM07B,oBACL,kDAEA,mCACE,sBAAK94B,UAAU,eAAf,UACE,kDACA,sBAAKA,UAAU,OAAf,UACE,sBAAKA,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,2CAEF,qBAAKA,UAAU,WAAf,SACE,+BAAOm4B,SAGX,sBAAKn4B,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,4CAEF,qBAAKA,UAAU,WAAf,SACE,+BAAOo4B,mBAQrB,qBAAKp4B,UAAU,UAAUsH,MAAO,CAAEsxB,UAAW,OAA7C,SACGx7B,EAAM27B,wBACL,kDAEA,mCACE,sBAAK/4B,UAAU,eAAf,UACE,8CACA,sBAAKA,UAAU,OAAf,UACE,sBAAKA,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,0DAEF,qBAAKA,UAAU,WAAWsH,MAAO,CAAE0xB,SAAU,UAA7C,SACE,+BAAOX,SAGX,sBAAKr4B,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,4CAEF,qBAAKA,UAAU,WAAWsH,MAAO,CAAE0xB,SAAU,UAA7C,SACE,+BACmB,MAAhBV,EAAA,UAA0BA,EAA1B,KAA4C,YAInD,sBAAKt4B,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,4DAEF,qBACEA,UAAWogB,KAAW,WAAY,CAChCoX,UACyB,MAAvBe,GACoB,MAApBn7B,EAAMwyB,YACNxyB,EAAMwyB,WAAa2I,IALzB,SAQE,+BAC0B,MAAvBA,EAAA,UACMA,EADN,QAEG,YAIV,sBAAKv4B,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,yDAEF,qBAAKA,UAAU,WAAf,SACE,+BAAOw4B,SAGX,sBAAKx4B,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,mDAEF,qBAAKA,UAAU,WAAf,SACE,+BACkB,MAAfy4B,EAAA,UAAyBA,EAAzB,KAA0C,YAIjD,sBAAKz4B,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,4DAEF,qBACEA,UAAWogB,KAAW,WAAY,CAChCoX,UACyB,MAAvBkB,GACoB,MAApBt7B,EAAMwyB,YACNxyB,EAAMwyB,WAAa8I,IALzB,SAQE,+BAC0B,MAAvBA,EAAA,UACMA,EADN,QAEG,YAIV,sBAAK14B,UAAU,eAAf,UACE,qBAAKA,UAAU,WAAf,SACE,gDAEF,qBAAKA,UAAU,WAAf,SACE,+BAAO24B,sB,WC9NvBM,GCaEC,GAAiB,CAAC,MAAO,MAEVC,G,kDACnB,WAAY/7B,GAAQ,IAAD,8BACjB,cAAMA,IAEDmnB,aAAc,EAEnB,EAAKlnB,MAAQ,CACXuyB,WAAY,IACZzuB,SAAS,EACTw0B,oBAAqB,GACrByD,gBAAgB,EAChBC,0BAA2B,KAC3B3B,gBAAiB,KACjBC,aAAc,KACdC,iBAAkB,KAClB0B,mBAAmB,EACnBhC,oBAAoB,EACpBiC,eAAe,EACfV,wBAAwB,EACxBC,qBAAqB,EACrBC,yBAAyB,GAG3B,EAAKS,kBAAoB,EAAKA,kBAAkBv+B,KAAvB,gBAtBR,E,sDAyBnB,SAAmByC,GACbpD,KAAK8C,MAAMrD,gBAAkB2D,EAAU3D,gBACzCO,KAAK8C,MAAMrD,cAAcinB,iBAAiB1mB,KAAK2mB,eAAehmB,KAAKX,OACnEA,KAAK8C,MAAMrD,cAAcmnB,iBAAiB5mB,KAAK6mB,eAAelmB,KAAKX,QAEjEA,KAAKiqB,aACLjqB,KAAK8C,MAAMrD,eAAiBO,KAAK8C,MAAM2jB,sBACzCL,GAAa+D,WACXnqB,KAAK8C,MAAM2jB,oBACXzmB,KAAK8C,MAAMrD,eAEb2mB,GAAagE,kBAAkBpqB,KAAKm/B,gBAAgBx+B,KAAKX,OACzDA,KAAKiqB,aAAc,K,+BAIvB,SAAkBzrB,GAChBwB,KAAKuE,SAAS,CAAE+wB,WAAY92B,EAAE2G,OAAOE,U,0EAGvC,WAA4BwjB,GAA5B,uBAAA5hB,EAAA,yDACOjH,KAAKo/B,mBADZ,oDAEOvW,EAFP,uBAGI7oB,KAAKuE,SAAS,CAAE+wB,WAAY,MAHhC,0CAOmC5W,KAAmB,CAClDE,eAAgB,sCARpB,uBAOUA,EAPV,EAOUA,eAPV,UAYoC/S,QAAQC,IACxC9L,KAAKo/B,mBAAmBnhC,IAAxB,uCACE,WAAO8qB,GAAP,SAAA9hB,EAAA,sEACQ2X,EAAe6J,SAASI,EAAcE,EAAQ1B,UADtD,mFADF,kCAAArnB,KAAA,iBAbJ,QAYQq/B,EAZR,OAkBQC,EACJt/B,KAAKo/B,mBACHC,EAAoBj7B,QAAQoP,KAAKwS,IAAL,MAAAxS,KAAI,YAAQ6rB,MAOzB,MALb/J,EAAa1e,WACjB0oB,EAAkB/V,WAChBvpB,KAAK8C,MAAMy8B,sBAAsBC,wBAGXx/B,KAAK+C,MAAMk8B,cAMX,KAAf3J,GACTt1B,KAAKuE,SAAS,CACZ+wB,WAAYgK,GAAqBhK,EACjC2J,eAAe,EACfH,gBAAgB,IATlB9+B,KAAKuE,SAAS,CACZ+wB,WAAY,IACZ2J,eAAe,EACfH,gBAAgB,IA/BtB,iD,mIA0CA,WAA8BjW,GAA9B,qBAAA5hB,EAAA,yDACOjH,KAAKq7B,oBADZ,oDAEOxS,EAFP,uBAGI7oB,KAAKuE,SAAS,CACZ82B,oBAAqB,GACrB0D,0BAA2BlW,IALjC,0CAUmCnK,KAAmB,CAClDE,eAAgB,sCAXpB,uBAUUA,EAVV,EAUUA,eAVV,UAe8BA,EAAeQ,OACzCyJ,EACAtK,GACA,UAlBJ,eAeQoc,EAfR,iBAqBU9uB,QAAQC,IACZ9L,KAAKq7B,oBAAoBp9B,IAAzB,uCAA6B,WAAO8qB,GAAP,SAAA9hB,EAAA,sEACpB2X,EAAemc,OAAOhS,EAAQ1B,SAAUsT,GADpB,uCAEvB5R,EAFuB,2BAGvB,KAHuB,iFAA7B,kCAAA/oB,KAAA,iBAtBN,QAoBQy/B,EApBR,OA4BIp7B,QAAO,SAAC0kB,GAAD,OAAaA,KAEtB/oB,KAAKuE,SAAS,CACZ82B,oBAAqBoE,EACrBV,0BAA2BlW,EAC3B6W,yBAA0B/E,IAjC9B,iD,uIAqCA,WAAkC9R,GAAlC,uBAAA5hB,EAAA,yDACOjH,KAAK2/B,wBADZ,oDAEO9W,EAFP,uBAGI7oB,KAAKuE,SAAS,CAAE64B,gBAAiB,OAHrC,0CAOmC1e,KAAmB,CAClDE,eAAgB,sCARpB,uBAOUA,EAPV,EAOUA,eAPV,UAWwC/S,QAAQC,IAC5C9L,KAAK2/B,wBAAwB1hC,IAA7B,uCACE,WAAO8qB,GAAP,SAAA9hB,EAAA,sEACQ2X,EAAe6J,SACnBI,EACAE,EAAQ1B,SACR,UAJJ,mFADF,kCAAArnB,KAAA,iBAZJ,QAWQ4/B,EAXR,OAsBQC,EAAcrsB,KAAKwS,IAAL,MAAAxS,KAAI,YAAQosB,IAC1BE,EACJD,GAAethB,IACfve,KAAK2/B,wBACHC,EAAwBx7B,QAAQy7B,IAGpC7/B,KAAKuE,SAAS,CACZ64B,gBAAiB0C,GAA0B,CACzCvC,aACEuC,EAAuBvW,WACrBvpB,KAAK8C,MAAMi9B,2BAA2BC,uBAE1CxC,WACEsC,EAAuBvW,WACrBvpB,KAAK8C,MAAMi9B,2BAA2BE,qBAE1CxC,UACEqC,EAAuBvW,WACrBvpB,KAAK8C,MAAMi9B,2BAA2BG,oBAE1CxC,UACEoC,EAAuBvW,WACrBvpB,KAAK8C,MAAMi9B,2BAA2BI,oBAE1CxC,YACEmC,EAAuBvW,WACrBvpB,KAAK8C,MAAMi9B,2BAA2BK,sBAE1CxC,cACEkC,EAAuBvW,WACrBvpB,KAAK8C,MAAMi9B,2BAA2BM,2BArDhD,iD,oIA2DA,WAA+BhW,GAA/B,+BAAApjB,EAAA,yDACOjH,KAAKsgC,qBADZ,oDAEOjW,EAFP,uBAGIrqB,KAAKuE,SAAS,CAAE84B,aAAc,OAHlC,4BAaMr9B,KAAK8C,MAAMy9B,gCALbpX,EARJ,EAQIA,gBACAqX,EATJ,EASIA,kBACAC,EAVJ,EAUIA,gBACAC,EAXJ,EAWIA,mBACAC,EAZJ,EAYIA,sBAGIC,EAAqB5gC,KAAKsgC,qBAAqBj8B,QACnD,SAAC0kB,GAAD,OACEA,EAAQQ,WAAWJ,KAAqBkB,EAASf,QACjDP,EAAQQ,WAAWiX,IAAsBnW,EAASnB,KAClDH,EAAQQ,WAAWkX,IAAoBpW,EAASnB,OAE9C2X,EAAcD,EAAmBj8B,MACrC,SAACokB,GAAD,MAAwD,MAA3CA,EAAQQ,WAAWmX,MAE5BI,EAAeF,EAAmBj8B,MACtC,SAACokB,GAAD,MAAwD,MAA3CA,EAAQQ,WAAWmX,MAGlC1gC,KAAKuE,SAAS,CACZ84B,aAAc,CACZ9uB,KAAMsyB,GAAeA,EAAYtX,WAAWoX,GAC5CnyB,MAAOsyB,GAAgBA,EAAavX,WAAWoX,MA/BrD,iD,iIAoCA,WAA4B9X,GAA5B,uBAAA5hB,EAAA,yDACOjH,KAAK+gC,kBADZ,oDAEOlY,EAFP,uBAGI7oB,KAAKuE,SAAS,CAAE+4B,iBAAkB,OAHtC,0CAOmC5e,KAAmB,CAClDE,eAAgB,sCARpB,uBAOUA,EAPV,EAOUA,eAPV,UAWmC/S,QAAQC,IACvC9L,KAAK+gC,kBAAkB9iC,IAAvB,uCACE,WAAO8qB,GAAP,SAAA9hB,EAAA,sEACQ2X,EAAe6J,SACnBI,EACAE,EAAQ1B,SACR,UAJJ,mFADF,kCAAArnB,KAAA,iBAZJ,QAWQghC,EAXR,OAsBQnB,EAAcrsB,KAAKwS,IAAL,MAAAxS,KAAI,YAAQwtB,IAC1BC,EACJpB,GAAethB,IACfve,KAAK+gC,kBAAkBC,EAAmB58B,QAAQy7B,IAEpD7/B,KAAKuE,SAAS,CACZ+4B,iBAAkB2D,GAAoB,CACpClD,kBACEkD,EAAiB1X,WACfvpB,KAAK8C,MAAMo+B,6BAA6BC,4BAE5CnD,aACEiD,EAAiB1X,WACfvpB,KAAK8C,MAAMo+B,6BAA6BE,gBAE5CnD,oBACEgD,EAAiB1X,WACfvpB,KAAK8C,MAAMo+B,6BAA6BG,8BAE5CnD,kBACE+C,EAAiB1X,WACfvpB,KAAK8C,MAAMo+B,6BAA6BI,4BAE5CnD,YACE8C,EAAiB1X,WACfvpB,KAAK8C,MAAMo+B,6BAA6BK,sBAE5CnD,oBACE6C,EAAiB1X,WACfvpB,KAAK8C,MAAMo+B,6BAA6BM,8BAE5CnD,UACE4C,EAAiB1X,WACfvpB,KAAK8C,MAAMo+B,6BAA6BO,uBAvDlD,iD,oFA6DA,SAAgBzhB,GACd,OAAOA,GAAWA,EAAQS,iBAAmBT,EAAQF,oB,mEAGvD,WAAqBE,GAArB,eAAA/Y,EAAA,sEAC6BjH,KAAK0hC,gBAAgB1hB,GADlD,OACQ6I,EADR,OAIE7oB,KAAK2hC,sBAAsB9Y,GAC3B7oB,KAAK4hC,wBAAwB/Y,GAC7B7oB,KAAK6hC,4BAA4BhZ,GACjC7oB,KAAK8hC,sBAAsBjZ,GAP7B,gD,oFAUA,SAAgBwB,GACdrqB,KAAK+hC,yBAAyB1X,K,mEAOhC,WAAqBjqB,GAArB,wBAAA6G,EAAA,sDACEjH,KAAKo/B,mBAAqB,KAC1Bp/B,KAAKq7B,oBAAsB,KAC3Br7B,KAAK2/B,wBAA0B,KAC/B3/B,KAAKsgC,qBAAuB,KAC5BtgC,KAAK+gC,kBAAoB,KACzB/gC,KAAKuE,SAAS,CACZy6B,mBAAmB,EACnBhC,oBAAoB,EACpBuB,wBAAwB,EACxBC,qBAAqB,EACrBC,yBAAyB,IAGrBuD,EAdR,+BAAA/6B,EAAA,MAcuB,qCAAAA,EAAA,yDAAS6f,EAAT,EAASA,iBAAkBC,EAA3B,EAA2BA,WAExCC,EAAYjI,KAAUkI,OAAOtiB,MAAK,SAACuiB,GAAD,OACtCC,2BAAgB,CAAEL,mBAAkBC,cAAcG,MAHjC,yCAKI,IALJ,uBAQY9mB,EAAe8f,iBAR3B,cAQbA,EARa,OASbkH,EAAQ,CACZC,SAAUnH,EACVoH,oBAAqB,aACrBC,UAAW,CAAC,KACZC,gBAAgB,GAbC,UAeLR,EAAUE,MAAMQ,cAAcN,GAfzB,wCAeiCO,UAfjC,4CAdvB,sDAgCQ+Z,EAAkB,kBACtB,EAAKA,gBAAgB,EAAK5+B,MAAMrD,cAAcW,eAAeC,UAC/D2hC,EAAahiC,KAAK8C,MAAMy8B,uBACrBpgC,KADH,uCACQ,WAAOigC,GAAP,SAAAn4B,EAAA,6DACJ,EAAKm4B,mBAAqBA,EADtB,KAEJ,EAFI,SAE6BsC,IAF7B,wBAECC,sBAFD,2DADR,uDAKGM,SAAQ,kBAAM,EAAK19B,SAAS,CAAEy6B,mBAAmB,OACpDgD,EAAahiC,KAAK8C,MAAM44B,wBACrBv8B,KADH,uCACQ,WAAOk8B,GAAP,SAAAp0B,EAAA,6DACJ,EAAKo0B,oBAAsBA,EADvB,KAEJ,EAFI,SAE+BqG,IAF/B,wBAECE,wBAFD,2DADR,uDAKGK,SAAQ,kBAAM,EAAK19B,SAAS,CAAEy4B,oBAAoB,OACrDgF,EAAahiC,KAAK8C,MAAMi9B,4BACrB5gC,KADH,uCACQ,WAAOwgC,GAAP,SAAA14B,EAAA,6DACJ,EAAK04B,wBAA0BA,EAD3B,KAEJ,EAFI,SAEmC+B,IAFnC,wBAECG,4BAFD,2DADR,uDAKGI,SAAQ,kBAAM,EAAK19B,SAAS,CAAEg6B,wBAAwB,OACzDyD,EAAahiC,KAAK8C,MAAMy9B,iCACrBphC,KADH,uCACQ,WAAOmhC,GAAP,SAAAr5B,EAAA,sDACJ,EAAKq5B,qBAAuBA,EAC5B,EAAKyB,yBAAyB3b,GAAaE,iBAFvC,2CADR,uDAKG2b,SAAQ,kBAAM,EAAK19B,SAAS,CAAEi6B,qBAAqB,OACtDwD,EAAahiC,KAAK8C,MAAMo+B,8BACrB/hC,KADH,uCACQ,WAAO4hC,GAAP,SAAA95B,EAAA,6DACJ,EAAK85B,kBAAoBA,EADrB,KAEJ,EAFI,SAE6BW,IAF7B,wBAECI,sBAFD,2DADR,uDAKGG,SAAQ,kBAAM,EAAK19B,SAAS,CAAEk6B,yBAAyB,OA/D5D,iD,2EAkEA,WACE,IAAM/4B,EAAYogB,KAAW,0BAA2B,CACtDoc,eAAgBliC,KAAK+C,MAAM+7B,iBAE7B,OACE,sBAAKp5B,UAAU,kBAAf,UACE,sBAAKA,UAAWA,EAAhB,UACG1F,KAAK+C,MAAM+7B,gBACV,sBAAKp5B,UAAU,YAAf,UACE,0CACA,wBACEL,MAAOrF,KAAK+C,MAAMuyB,WAClBvvB,MAAO/F,KAAK+C,MAAMuyB,WAClBrvB,SAAUjG,KAAKk/B,kBAHjB,SAKGN,GAAe3gC,KAAI,SAACiW,EAAO7S,GAAR,OAClB,yBAAgBgE,MAAO6O,EAAvB,UACGA,EADH,UAAa7S,WAOrB,cAAC+zB,GAAD,CACEE,WAAYt1B,KAAK+C,MAAMuyB,WACvBzuB,QAAS7G,KAAK+C,MAAMi8B,uBAGxB,cAAC,GAAD,CACEtD,uBAAwB17B,KAAK8C,MAAM44B,uBACnCL,oBAAqBr7B,KAAK+C,MAAMs4B,oBAChCZ,eAAgBz6B,KAAK+C,MAAMg8B,0BAC3B/B,mBAAoBh9B,KAAK+C,MAAMi6B,mBAC/BrC,cAAe36B,KAAK+C,MAAM28B,yBAC1BjgC,cAAeO,KAAK8C,MAAMrD,cAC1B61B,WAAYt1B,KAAK+C,MAAMuyB,aAEzB,cAAC6H,GAAD,CACEC,gBAAiBp9B,KAAK+C,MAAMq6B,gBAC5BC,aAAcr9B,KAAK+C,MAAMs6B,aACzBC,iBAAkBt9B,KAAK+C,MAAMu6B,iBAC7BiB,uBAAwBv+B,KAAK+C,MAAMw7B,uBACnCC,oBAAqBx+B,KAAK+C,MAAMy7B,oBAChCC,wBAAyBz+B,KAAK+C,MAAM07B,wBACpCnJ,WAAYt1B,KAAK+C,MAAMuyB,oB,GA7ZYnvB,IAAMC,WDb/C+7B,GAAY,CAAC,QAAS,WAE1B,SAASC,KAA2Q,OAA9PA,GAAWxjC,OAAOyjC,QAAU,SAAUl9B,GAAU,IAAK,IAAI9D,EAAI,EAAGA,EAAIihC,UAAUthC,OAAQK,IAAK,CAAE,IAAI+5B,EAASkH,UAAUjhC,GAAI,IAAK,IAAI8O,KAAOirB,EAAcx8B,OAAO2jC,UAAUC,eAAeC,KAAKrH,EAAQjrB,KAAQhL,EAAOgL,GAAOirB,EAAOjrB,IAAY,OAAOhL,GAAkBi9B,GAASM,MAAM1iC,KAAMsiC,WAEhT,SAASK,GAAyBvH,EAAQwH,GAAY,GAAc,MAAVxH,EAAgB,MAAO,GAAI,IAAkEjrB,EAAK9O,EAAnE8D,EAEzF,SAAuCi2B,EAAQwH,GAAY,GAAc,MAAVxH,EAAgB,MAAO,GAAI,IAA2DjrB,EAAK9O,EAA5D8D,EAAS,GAAQ09B,EAAajkC,OAAOD,KAAKy8B,GAAqB,IAAK/5B,EAAI,EAAGA,EAAIwhC,EAAW7hC,OAAQK,IAAO8O,EAAM0yB,EAAWxhC,GAAQuhC,EAASx+B,QAAQ+L,IAAQ,IAAahL,EAAOgL,GAAOirB,EAAOjrB,IAAQ,OAAOhL,EAFxM29B,CAA8B1H,EAAQwH,GAAuB,GAAIhkC,OAAOmkC,sBAAuB,CAAE,IAAIC,EAAmBpkC,OAAOmkC,sBAAsB3H,GAAS,IAAK/5B,EAAI,EAAGA,EAAI2hC,EAAiBhiC,OAAQK,IAAO8O,EAAM6yB,EAAiB3hC,GAAQuhC,EAASx+B,QAAQ+L,IAAQ,GAAkBvR,OAAO2jC,UAAUU,qBAAqBR,KAAKrH,EAAQjrB,KAAgBhL,EAAOgL,GAAOirB,EAAOjrB,IAAU,OAAOhL,EAMne,SAAS+9B,GAAYC,EAAMC,GACzB,IAAIr9B,EAAQo9B,EAAKp9B,MACbs9B,EAAUF,EAAKE,QACfvgC,EAAQ6/B,GAAyBQ,EAAMhB,IAE3C,OAAoB,gBAAoB,MAAOC,GAAS,CACtDkB,MAAO,6BACPr2B,MAAO,eACPukB,OAAQ,eACR+R,QAAS,4BACTC,oBAAqB,gBACrBzlB,IAAKqlB,EACL,kBAAmBC,GAClBvgC,GAAQiD,EAAqB,gBAAoB,QAAS,CAC3D3H,GAAIilC,GACHt9B,GAAS,KAAM44B,KAAOA,GAAkB,gBAAoB,IAAK,CAClE8E,UAAW,2DACXC,OAAQ,QACM,gBAAoB,OAAQ,CAC1CC,EAAG,g4BAIP,IEnCI,GFmCAC,GAA0B,aAAiBV,IG7B1BW,IH8BN,I,yDG7Bb,WAAY/gC,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CAAE+gC,WAAW,GAC1B,EAAKC,oBAAsB,EAAKA,oBAAoBpjC,KAAzB,gBAJV,E,sDAOnB,WACMX,KAAK8C,MAAMkhC,aACbhkC,KAAKikC,sB,iCAIT,WACEjkC,KAAKuE,SAAS,CAAEu/B,WAAY9jC,KAAK+C,MAAM+gC,c,+BAGzC,WACE9jC,KAAKuE,SAAS,CAAEu/B,WAAW,M,oBAG7B,WACE,OACE,sBAAKp+B,UAAU,oBAAf,UACE,sBAAKA,UAAU,mBAAf,UACE,iCAAS1F,KAAK8C,MAAMohC,SACpB,qBAAKx+B,UAAU,iBAAf,SACE,wBACED,QAASzF,KAAK+jC,oBACdr+B,UAAU,kCACVF,KAAK,SACLO,MAAO/F,KAAK+C,MAAM+gC,UAAY,SAAW,WAJ3C,SAMG9jC,KAAK+C,MAAM+gC,UACV,cAAC,kBAAD,CAAiB57B,KAAMi8B,gBAAez/B,KAAK,OAE3C,cAAC,kBAAD,CAAiBwD,KAAMk8B,cAAa1/B,KAAK,cAKjD,qBAAKgB,UAAW1F,KAAK+C,MAAM+gC,UAAY,cAAgB,aAAvD,SACG9jC,KAAK8C,MAAM+sB,kB,GA3CqB1pB,IAAMqpB,gB,mBCCpC6U,I,OAAb,kDACE,WAAYvhC,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CAAEuhC,gBAAiB,GAAIC,gBAAiB,IAErD,EAAKC,cAAgB,GAErB,EAAK7d,eAAiB,EAAKA,eAAehmB,KAApB,gBACtB,EAAK8jC,kBAAoB,EAAKA,kBAAkB9jC,KAAvB,gBACzB,EAAKinB,wBAA0B,EAAKA,wBAAwBjnB,KAA7B,gBATd,EADrB,4FAaE,mCAAAsG,EAAA,4DACOjH,KAAK8C,MAAMrD,cAAcW,eAAeE,QAAQU,OAAS,GADhE,wDAEEhB,KAAK8C,MAAMrD,cAAcinB,iBAAiB1mB,KAAK2mB,gBACzCqb,EAHR,+BAAA/6B,EAAA,MAGuB,WAAO+f,GAAP,iBAAA/f,EAAA,sEAEY,EAAKnE,MAAMrD,cAAcW,eACrD8f,iBAHgB,UAEbA,EAFa,+DAKbkH,EAAQ,CACZC,SAAUnH,EACVoH,oBAAqB,aACrBC,UAAW,CAAC,KACZC,gBAAgB,GATC,SAWLR,EAAUE,MAAMQ,cAAcN,GAXzB,uCAWiCO,UAXjC,2CAHvB,+DAgB6Bqa,EAAahiC,KAAK8C,MAAMokB,OAhBrD,OAgBElnB,KAAKwkC,cAhBP,OAiBExkC,KAAK2mB,eAAe3mB,KAAK8C,MAAMrD,cAAcW,eAAeC,SAjB9D,gDAbF,wFAiCE,WACEL,KAAK8C,MAAMrD,cAAcilC,uBAAuB1kC,KAAK2mB,kBAlCzD,mEAqCE,WAAqB3G,GAArB,iBAAA/Y,EAAA,sEAC+BjH,KAAK4nB,wBAAwB5H,GAD5D,UACQ2kB,EADR,OAEQC,EAAY5kC,KAAKykC,kBAAkBE,GACpCA,EAHP,uBAII3kC,KAAKuE,SAAS,CACZggC,gBAAiB,GACjBD,gBAAiB,KANvB,0BAWEtkC,KAAKuE,SAAS,CACZ+/B,gBACuB,IAArBM,EAAU5jC,OACNpC,OAAOD,KAAKgmC,EAAepb,YAAYzlB,MAAM,GAC7ClF,OAAOyL,OAAOu6B,GAAW9gC,MAAM,GACrCygC,gBAAiB3lC,OAAOyL,OAAOs6B,EAAepb,YAAYzlB,MAAM,KAhBpE,gDArCF,sFAyDE,SAAkBilB,GAChB,GAAKA,EAAL,CACA,IAAM7B,EACJ6B,EAAQmL,aAAenV,KAAU8lB,iBAAiB9b,EAAQmL,aAC5D,OAAOhN,EAAQA,EAAM4d,eAAiB,QA7D1C,4EAgEE,WAA8B9kB,GAA9B,uBAAA/Y,EAAA,4DACOjH,KAAKwkC,cAAcxjC,OAAS,IAAMgf,EADzC,iEAEmCtB,KAAmB,CAClDE,eAAgB,sCAHpB,uBAEUA,EAFV,EAEUA,eAFV,SAK6BoB,EAAQF,kBALrC,cAKQ+I,EALR,iBAM0Bhd,QAAQC,IAC9B9L,KAAKwkC,cAAcvmC,IAAnB,uCACE,WAAO8qB,GAAP,SAAA9hB,EAAA,sEACQ2X,EAAe6J,SACnBI,EACAE,EAAQ1B,SACR,UAJJ,mFADF,kCAAArnB,KAAA,iBAPJ,eAMQgpB,EANR,OAiBQ6W,EAAcrsB,KAAKwS,IAAL,MAAAxS,KAAI,YAAQwV,IAjBlC,kBAmBI6W,GAAethB,IACfve,KAAKwkC,cAAcxb,EAAU5kB,QAAQy7B,KApBzC,iDAhEF,2EAwFE,WACE,IAAMjW,EACJ5pB,KAAK+C,MAAMuhC,gBAAgBtjC,OAAShB,KAAK+C,MAAMwhC,gBAAgBvjC,OAAS,EAC1E,OACE,qBAAK0E,UAAU,wBAAf,SACE,uBAAOA,UAAU,oBAAjB,SACGkkB,EACC,kCACE,oBAAIlkB,UAAU,oBAAd,SACG1F,KAAK+C,MAAMuhC,gBAAgBrmC,KAAI,SAAC8H,EAAO1E,GAAR,OAC9B,6BAAa0E,GAAJ1E,QAGb,oBAAIqE,UAAU,oBAAd,SACG1F,KAAK+C,MAAMwhC,gBAAgBtmC,KAAI,SAACoH,EAAOhE,GAAR,OAC9B,6BAAagE,GAAJhE,WAKf,gCACE,oBAAIqE,UAAU,oBAAd,SACE,4EA9GhB,GAAkCS,IAAMC,Y,UCE3B2+B,GAAb,kDACE,WAAYjiC,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACX+jB,iBAAkB,KAClBke,QAAQ,EACRC,mBAAoB,IAGtB,EAAKpe,eAAiB,EAAKA,eAAelmB,KAApB,gBACtB,EAAKukC,UAAY,EAAKA,UAAUvkC,KAAf,gBAVA,EADrB,qDAcE,WACEoe,KAAU4T,UAAU,SAAU3yB,KAAKklC,aAfvC,gCAkBE,SAAmB9hC,GACbpD,KAAK8C,MAAMrD,gBAAkB2D,EAAU3D,eACzCO,KAAK8C,MAAMrD,cAAcmnB,iBAAiB5mB,KAAK6mB,kBApBrD,uBAwBE,WACE,IAAMse,EAAiB,GASvB,GARAnlC,KAAK8C,MAAMqiC,eAAehkC,SAAQ,SAACikC,GACjC,IAAQte,EAAiCse,EAAjCte,iBAAkBC,EAAeqe,EAAfre,WACpBC,EAAYjI,KAAUkI,OAAOtiB,MAAK,SAACuiB,GAAD,OACtCC,2BAAgB,CAAEL,mBAAkBC,cAAcG,MAEpDie,EAAejkC,KAAK8lB,MAGlBjI,KAAUkI,OAAQ,CACpB,IAAMA,EAASlI,KAAUkI,OACnBoe,EAAepe,EAAO5iB,QAC1B,SAAC2iB,GAAD,OACEA,aAAqBse,mBACuB,yBAA5Cte,EAAUE,MAAMqe,WAAWC,cAC3Bxe,EAAUqL,UACT8S,EAAez5B,SAASsb,MAEvBye,EAAexe,EAAO5iB,QAC1B,SAAC2iB,GAAD,OACEA,aAAqB0e,oBACY,aAAjC1e,EAAUE,MAAMse,cAChBxe,EAAUqL,WAEdryB,KAAKuE,SAAS,CACZ0gC,mBAAmB,GAAD,mBAAMI,GAAN,YAAuBI,SAlDjD,4BAuDE,WAAkB,IAAD,OACfzlC,KAAKuE,SAAS,CAAEuiB,iBAAkB6e,eAAUX,QAAQ,IAAQ,WAC1D,EAAKzgC,SAAS,CAAEygC,QAAQ,SAzD9B,oBA6DE,WAAU,IAAD,OACP,OACE,8BACGhlC,KAAK+C,MAAMkiC,mBAAmBhnC,KAAI,SAACipB,GAAD,OACjC,cAAC,GAAD,CAEEgd,OAAQhd,EAAM5kB,KACd0hC,YAAa,EAAKjhC,MAAMiiC,OAH1B,SAKE,cAAC,GAAD,CACEvlC,cAAe,EAAKqD,MAAMrD,cAC1BynB,MAAOA,KANJ,UAAGA,EAAMA,MAAMtf,OAAOg+B,IAAtB,YAA6B1e,EAAM9oB,KAAnC,UAA8C8oB,EAAM9oB,SAHrD4B,KAAK+C,MAAM+jB,sBA/D3B,GAAgC3gB,IAAMC,WHPlC,GAAY,CAAC,QAAS,WAE1B,SAAS,KAA2Q,OAA9P,GAAWxH,OAAOyjC,QAAU,SAAUl9B,GAAU,IAAK,IAAI9D,EAAI,EAAGA,EAAIihC,UAAUthC,OAAQK,IAAK,CAAE,IAAI+5B,EAASkH,UAAUjhC,GAAI,IAAK,IAAI8O,KAAOirB,EAAcx8B,OAAO2jC,UAAUC,eAAeC,KAAKrH,EAAQjrB,KAAQhL,EAAOgL,GAAOirB,EAAOjrB,IAAY,OAAOhL,GAAkB,GAASu9B,MAAM1iC,KAAMsiC,WAEhT,SAAS,GAAyBlH,EAAQwH,GAAY,GAAc,MAAVxH,EAAgB,MAAO,GAAI,IAAkEjrB,EAAK9O,EAAnE8D,EAEzF,SAAuCi2B,EAAQwH,GAAY,GAAc,MAAVxH,EAAgB,MAAO,GAAI,IAA2DjrB,EAAK9O,EAA5D8D,EAAS,GAAQ09B,EAAajkC,OAAOD,KAAKy8B,GAAqB,IAAK/5B,EAAI,EAAGA,EAAIwhC,EAAW7hC,OAAQK,IAAO8O,EAAM0yB,EAAWxhC,GAAQuhC,EAASx+B,QAAQ+L,IAAQ,IAAahL,EAAOgL,GAAOirB,EAAOjrB,IAAQ,OAAOhL,EAFxM,CAA8Bi2B,EAAQwH,GAAuB,GAAIhkC,OAAOmkC,sBAAuB,CAAE,IAAIC,EAAmBpkC,OAAOmkC,sBAAsB3H,GAAS,IAAK/5B,EAAI,EAAGA,EAAI2hC,EAAiBhiC,OAAQK,IAAO8O,EAAM6yB,EAAiB3hC,GAAQuhC,EAASx+B,QAAQ+L,IAAQ,GAAkBvR,OAAO2jC,UAAUU,qBAAqBR,KAAKrH,EAAQjrB,KAAgBhL,EAAOgL,GAAOirB,EAAOjrB,IAAU,OAAOhL,EAMne,SAAS0gC,GAAW1C,EAAMC,GACxB,IAAIr9B,EAAQo9B,EAAKp9B,MACbs9B,EAAUF,EAAKE,QACfvgC,EAAQ,GAAyBqgC,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtDG,MAAO,6BACPr2B,MAAO,eACPukB,OAAQ,eACR+R,QAAS,4BACTC,oBAAqB,gBACrBzlB,IAAKqlB,EACL,kBAAmBC,GAClBvgC,GAAQiD,EAAqB,gBAAoB,QAAS,CAC3D3H,GAAIilC,GACHt9B,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClE09B,UAAW,2DACXC,OAAQ,QACM,gBAAoB,OAAQ,CAC1CC,EAAG,mRACY,gBAAoB,OAAQ,CAC3CA,EAAG,yLACY,gBAAoB,OAAQ,CAC3CA,EAAG,yGAIP,IIvCI,GJuCA,GAA0B,aAAiBkC,IIrC3C,IJsCW,IItCC,CAAC,QAAS,YAE1B,SAAS,KAA2Q,OAA9P,GAAWjnC,OAAOyjC,QAAU,SAAUl9B,GAAU,IAAK,IAAI9D,EAAI,EAAGA,EAAIihC,UAAUthC,OAAQK,IAAK,CAAE,IAAI+5B,EAASkH,UAAUjhC,GAAI,IAAK,IAAI8O,KAAOirB,EAAcx8B,OAAO2jC,UAAUC,eAAeC,KAAKrH,EAAQjrB,KAAQhL,EAAOgL,GAAOirB,EAAOjrB,IAAY,OAAOhL,GAAkB,GAASu9B,MAAM1iC,KAAMsiC,WAEhT,SAAS,GAAyBlH,EAAQwH,GAAY,GAAc,MAAVxH,EAAgB,MAAO,GAAI,IAAkEjrB,EAAK9O,EAAnE8D,EAEzF,SAAuCi2B,EAAQwH,GAAY,GAAc,MAAVxH,EAAgB,MAAO,GAAI,IAA2DjrB,EAAK9O,EAA5D8D,EAAS,GAAQ09B,EAAajkC,OAAOD,KAAKy8B,GAAqB,IAAK/5B,EAAI,EAAGA,EAAIwhC,EAAW7hC,OAAQK,IAAO8O,EAAM0yB,EAAWxhC,GAAQuhC,EAASx+B,QAAQ+L,IAAQ,IAAahL,EAAOgL,GAAOirB,EAAOjrB,IAAQ,OAAOhL,EAFxM,CAA8Bi2B,EAAQwH,GAAuB,GAAIhkC,OAAOmkC,sBAAuB,CAAE,IAAIC,EAAmBpkC,OAAOmkC,sBAAsB3H,GAAS,IAAK/5B,EAAI,EAAGA,EAAI2hC,EAAiBhiC,OAAQK,IAAO8O,EAAM6yB,EAAiB3hC,GAAQuhC,EAASx+B,QAAQ+L,IAAQ,GAAkBvR,OAAO2jC,UAAUU,qBAAqBR,KAAKrH,EAAQjrB,KAAgBhL,EAAOgL,GAAOirB,EAAOjrB,IAAU,OAAOhL,EAMne,SAAS2gC,GAAY3C,EAAMC,GACzB,IAAIr9B,EAAQo9B,EAAKp9B,MACbs9B,EAAUF,EAAKE,QACfvgC,EAAQ,GAAyBqgC,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtDG,MAAO,6BACPr2B,MAAO,eACPukB,OAAQ,eACR+R,QAAS,4BACTC,oBAAqB,gBACrBzlB,IAAKqlB,EACL,kBAAmBC,GAClBvgC,GAAQiD,EAAqB,gBAAoB,QAAS,CAC3D3H,GAAIilC,GACHt9B,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClE09B,UAAW,2DACXC,OAAQ,QACM,gBAAoB,OAAQ,CAC1CC,EAAG,mRACY,gBAAoB,OAAQ,CAC3CA,EAAG,gMACY,gBAAoB,OAAQ,CAC3CA,EAAG,yGAIP,IAAI,GAA0B,aAAiBmC,ICxBhC,IDyBA,ICzBA,IAAIlb,MACjB,I,WAbA,aAAe,oBACb5qB,KAAK+lC,kBAAoB,G,kDAG3B,WACE,OAAO/lC,KAAK+lC,mB,IAEd,SAAqB1gC,GACnBrF,KAAK+lC,kBAAoB1gC,M,MAM3B,IAAIwlB,OCDO2a,I,OACD,YADCA,GAEJ,QAGYQ,G,kDACnB,WAAYljC,GAAQ,IAAD,8BACjB,cAAMA,IACDC,MAAQ,CAAEkjC,aAAa,GAE5B,EAAKC,iBAAmB,KACxB,EAAKjc,aAAc,EAEnB,EAAKkc,eAAiB,EAAKA,eAAexlC,KAApB,gBACtB,EAAKylC,aAAe,EAAKC,cAAc1lC,KAAnB,gBAA8B,GAClD,EAAK2lC,WAAa,EAAKD,cAAc1lC,KAAnB,gBAA8B,GAChD,EAAKkmB,eAAiB,EAAKA,eAAelmB,KAApB,gBAVL,E,sDAanB,WACMX,KAAKiqB,aACLjqB,KAAK8C,MAAMrD,eAAiBO,KAAK8C,MAAM2jB,sBACzCL,GAAa+D,WACXnqB,KAAK8C,MAAM2jB,oBACXzmB,KAAK8C,MAAMrD,eAEbO,KAAK8C,MAAMrD,cAAcmnB,iBAAiB5mB,KAAK6mB,eAAelmB,KAAKX,OACnEA,KAAKiqB,aAAc,K,4BAIvB,WACEjqB,KAAKkmC,iBAAmB,KACxBlmC,KAAKuE,SAAS,CAAE0hC,aAAa,M,oEAI/B,WAAsBM,GAAtB,uBAAAt/B,EAAA,yDACUqN,EAAwBiyB,EAAxBjyB,SAAUE,EAAc+xB,EAAd/xB,WACdiG,MAAMnG,KAAamG,MAAMjG,GAF/B,iEAG0BkK,KAAmB,CACzCa,MAAO,wBAJX,uBAGUA,EAHV,EAGUA,MAGF8H,EAAW,IAAI9H,EAAM,CACzBjL,WACAE,YACAgL,iBAAkB,CAAEC,KAAM,QAT9B,kBAWS4H,GAXT,2C,8HAeA,WAAyBmf,GAAzB,yBAAAv/B,EAAA,0DAEIwT,MAAM+rB,EAAaC,iBACnBhsB,MAAM+rB,EAAaE,iBAClBF,EAAaG,UACc,OAA5BH,EAAanO,WALjB,iDASE,IADM1d,EAAe,GACZtZ,EAAImlC,EAAanO,WAAYh3B,EAAImlC,EAAaG,SAAUtlC,IACzDyd,EAAQ,CACZ9e,KAAK8C,MAAMrD,cAAcW,eAAeE,QAAQe,GAAGmT,UACnDxU,KAAK8C,MAAMrD,cAAcW,eAAeE,QAAQe,GAAGiT,UAErDqG,EAAazZ,KAAK4d,GAdtB,gBAgB6BJ,KAAmB,CAC5CkoB,SAAU,2BAjBd,uBAgBUA,EAhBV,EAgBUA,SAIFvf,EAAW,IAAIuf,EAAS,CAC5B1nB,MAFW,CAACvE,GAGZ6E,iBAAkB,CAAEC,KAAM,QAtB9B,kBAwBS4H,GAxBT,iD,0HA2BA,8BAAApgB,EAAA,0DAEImf,GAAaE,mBACXF,GAAaE,gBAAgBhS,UAC7B8R,GAAaE,gBAAgB9R,WAC7B4R,GAAaE,gBAAgB4C,KALnC,wBAOU2d,EAAkB,CACtBvd,OAAQlD,GAAaE,gBAAgBgD,QAAU,GAC/CE,SAAUpD,GAAaE,gBAAgBkD,UAAY,GACnDN,IAAK9C,GAAaE,gBAAgB4C,IAC9B9C,GAAaE,gBAAgB4C,IAAIrS,QAAQ,GACzC,GACJvC,SACE8R,GAAa3mB,cAAcW,eAAeC,QAAQiU,UAAY,GAChEE,UACE4R,GAAa3mB,cAAcW,eAAeC,QAAQmU,WAAa,GACjEsyB,KAAM,GACNthC,KAAMggC,IAlBZ,6BAqBSqB,GArBT,iBAsBsB7mC,KAAK+mC,gBAAgBF,GAtB3C,yBAsBMxf,SAtBN,MAoBU2f,GApBV,wBAwBIC,GAAoBC,iBAApB,sBACKD,GAAoBC,kBADzB,CAEEF,IA1BN,wBA6BIpiC,eAAaC,QAAUC,qBAAmBrG,MACxC,iDA9BN,iD,wIAmCA,WAAoCkqB,GAApC,yBAAA1hB,EAAA,yDAEK0hB,EAAW8d,eACX9d,EAAW+d,gBACX/d,EAAWwe,aACXxe,EAAWye,aALhB,iEAQmC1oB,KAAmB,CAClDE,eAAgB,sCATpB,uBAQUA,EARV,EAQUA,eAGFyoB,EAAY,CAChB/yB,SAAUqU,EAAW8d,cACrBjyB,UAAWmU,EAAW+d,gBAElBY,EAAU,CACdhzB,SAAUqU,EAAWwe,YACrB3yB,UAAWmU,EAAWye,cAjB1B,KAoBoCroB,KApBpC,UAqBU/e,KAAK+mC,gBAAgBM,GArB/B,0CAoB8CroB,cApB9C,+BAoBQuoB,EApBR,YAuBkCxoB,KAvBlC,UAwBU/e,KAAK+mC,gBAAgBO,GAxB/B,0CAuB4CtoB,cAvB5C,+BAuBQwoB,EAvBR,iBA2Be5oB,EAAe6J,SAC1B8e,EACAC,EACA,UA9BJ,0F,6HAkCA,WAAwBngB,GAAxB,iBAAApgB,EAAA,sEACmCyX,KAAmB,CAClDE,eAAgB,sCAFpB,uBACUA,EADV,EACUA,eADV,SAKeA,EAAe6oB,eAAepgB,EAAU,UALvD,mF,yHAQA,WAAoB4e,GAApB,yBAAAh/B,EAAA,0DAEImf,GAAaE,mBACXF,GAAaE,gBAAgBhS,UAC7B8R,GAAaE,gBAAgB9R,WAC7B4R,GAAaE,gBAAgB4C,KALnC,oBAOQwe,EAAgB,KACdtnC,EAAiBJ,KAAK8C,MAAMrD,cAAcW,eAChDJ,KAAKuE,SAAS,CAAE0hC,YAAaA,IACzBA,GACI5N,EAAaj4B,EAAeE,QAAQ4E,WACxC,SAACZ,GAAD,OAAOA,EAAEuR,aAAezV,EAAeC,QAAQwV,cAEjD7V,KAAKkmC,iBAAmB,CACtB7N,WAAYA,GAAc,EAAIA,EAAa,KAC3CsP,YAAavhB,GAAaE,gBAAgBgD,QAAU,GACpDse,cAAexhB,GAAaE,gBAAgBkD,UAAY,GACxDqe,SAAUzhB,GAAaE,gBAAgB4C,IACnC9C,GAAaE,gBAAgB4C,IAAIrS,QAAQ,GACzC,GACJ4vB,cAAermC,EAAeC,QAAQiU,UAAY,GAClDoyB,eAAgBtmC,EAAeC,QAAQmU,WAAa,KAGtDkzB,EAAgB,CACdf,SACEvmC,EAAeE,QAAQ4E,WACrB,SAACZ,GAAD,OAAOA,EAAEuR,aAAezV,EAAeC,QAAQwV,eAC5C,KACPiyB,UAAW1hB,GAAaE,gBAAgBgD,QAAU,GAClDye,YAAa3hB,GAAaE,gBAAgBkD,UAAY,GACtDwe,OAAQ5hB,GAAaE,gBAAgB4C,IACjC9C,GAAaE,gBAAgB4C,IAAIrS,QAAQ,GACzC,GACJswB,YAAa/mC,EAAeC,QAAQiU,UAAY,GAChD8yB,aAAchnC,EAAeC,QAAQmU,WAAa,IAGhDyzB,EAvCV,uCAwCSjoC,KAAKkmC,kBACLwB,GAzCT,IA0CMZ,KAAM,GACNthC,KAAMggC,MAEJkC,EA7CR,iCA8C6B1nC,KAAKkoC,mBAAmBD,GA9CrD,cA8CY5gB,EA9CZ,oCAgDW4gB,GAhDX,aAiDQ5gB,EAjDR,UAkDoCrnB,KAAKmoC,8BAC/BF,GAnDV,qCAqDiCjoC,KAAKooC,kBAAkB/gB,GArDxD,0BAiDQA,SAjDR,KAkDQghB,qBAlDR,KAqDQC,kBArDR,MA+CYC,GA/CZ,wBAwDMtB,GAAoBC,iBAApB,sBACKD,GAAoBC,kBADzB,CAEEqB,IAGFvoC,KAAKkmC,iBAAmB,KACxBwB,EAAgB,KA9DtB,kFAiEI9iC,eAAaC,QAAUC,qBAAmBrG,MACxC,iDAlEN,iD,2EAuEA,WACE,IAAKuB,KAAK8C,MAAMrD,gBAAkBO,KAAK8C,MAAMrD,cAAcmqB,QACzD,OAAO,KAGT,IAAM4e,EAAc,sBACdC,EAAsB,4CAC5B,OACE,sBAAK/iC,UAAU,kBAAf,UACE,qBACEgE,SAAU1J,KAAK+C,MAAMkjC,YACrBxgC,QAASzF,KAAKmmC,eACdzgC,UAAW1F,KAAK+C,MAAMkjC,YAAcwC,EAAsBD,EAC1DhjC,KAAK,SACLO,MAAM,YALR,SAOE,cAAC,kBAAD,CAAiBmC,KAAMwgC,eAEzB,qBACEh/B,SAAU1J,KAAK+C,MAAMkjC,YACrBvgC,UAAW1F,KAAK+C,MAAMkjC,YAAcwC,EAAsBD,EAC1DhjC,KAAK,SACLO,MAAM,gBACNN,QAASzF,KAAKomC,aALhB,SAOE,cAAC,GAAD,CAAU1gC,UAAU,iBAEtB,qBACEA,UACG1F,KAAK+C,MAAMkjC,YAAoCuC,EAAtBC,EAE5BjjC,KAAK,SACLO,MAAM,cACN2D,UAAW1J,KAAK+C,MAAMkjC,YACtBxgC,QAASzF,KAAKsmC,WAPhB,SASE,cAAC,GAAD,CAAS5gC,UAAU,wB,GAlQqBS,IAAMC,WClBzC,SAASuiC,GAAW7lC,GACjC,OAAIA,EAAMgc,MAAMtZ,OAASggC,GAA2B,KAElD,sBAAM9/B,UAAU,gBAAhB,mBACM5C,EAAMgc,MAAMwK,OADlB,YAC4BxmB,EAAMgc,MAAM0K,SADxC,YAEI1mB,EAAMgc,MAAMoK,IACRpmB,EAAMgc,MAAMoK,IADhB,WAEQpmB,EAAMgc,MAAMxK,SAFpB,YAEgCxR,EAAMgc,MAAMtK,UAF5C,QCLO,SAASo0B,GAAU9lC,GAChC,GAAIA,EAAMqc,KAAK3Z,OAASggC,GAAuB,OAAO,KACtD,IAAM/c,EAAQ,WAAO3lB,EAAMqc,KAAKmpB,kBAAkBzxB,QAAQ,GAA5C,KAEd,OAAO/T,EAAM+lC,WACX,sBAAMnjC,UAAU,gBAAhB,mBACM5C,EAAMqc,KAAKwoB,YADjB,YACgC7kC,EAAMqc,KAAKyoB,cAD3C,YAEI9kC,EAAMgmC,OAAN,UACOhmC,EAAMqc,KAAK0oB,SADlB,cACgC/kC,EAAMqc,KAAK6oB,OAD3C,YACqDvf,GADrD,WAEQ3lB,EAAMqc,KAAKsnB,cAFnB,YAEoC3jC,EAAMqc,KAAKunB,eAF/C,gBAEqE5jC,EAAMqc,KAAKgoB,YAFhF,YAE+FrkC,EAAMqc,KAAKioB,aAF1G,aAE2H3e,MAI/H,sBAAM/iB,UAAU,gBAAhB,mBACM5C,EAAMqc,KAAKwoB,YADjB,YACgC7kC,EAAMqc,KAAKyoB,cAD3C,YAEI9kC,EAAMqc,KAAK2oB,UAFf,YAGMhlC,EAAMqc,KAAK4oB,YAHjB,YAIIjlC,EAAMgmC,OAAN,UACOhmC,EAAMqc,KAAK0oB,SADlB,cACgC/kC,EAAMqc,KAAK6oB,OAD3C,YACqDvf,GADrD,WAEQ3lB,EAAMqc,KAAKsnB,cAFnB,YAEoC3jC,EAAMqc,KAAKunB,eAF/C,cAEmE5jC,EAAMqc,KAAKgoB,YAF9E,YAE6FrkC,EAAMqc,KAAKioB,aAFxG,aAEyH3e,M,WCA3HsgB,GAAc,uDACdC,GACJ,yJAGF,SAASC,GAAiBvhC,GAIxB,IAHA,IAEIwhC,EAFEC,EAAK,wDACLl3B,EAAS,GAEPi3B,EAAUC,EAAGC,KAAK1hC,IACxBuK,EAAO/Q,UACUwZ,IAAfwuB,EAAQ,GAAmBA,EAAQ,GAAGrlB,QAAQ,MAAO,KAAOqlB,EAAQ,IAGxE,OAAOj3B,E,SAGMo3B,G,iFAAf,WAA0BlqB,GAA1B,mBAAAlY,EAAA,6DACQS,EAAOuhC,GAAiB9pB,GADhC,SAE0BT,KAAmB,CACzCa,MAAO,wBAHX,uBAEUA,EAFV,EAEUA,MAFV,kBAKS,CACL+J,OAAQ5hB,EAAK,GACb8hB,SAAU9hB,EAAK,GACfwhB,IAAKxhB,EAAK,GACV4M,SAAU5M,EAAK,GACf8M,UAAW9M,EAAK,GAChBo/B,KAAMp/B,EAAK,GACXlC,KAAMggC,GACNne,SAAU9H,EAAMN,SAAS8M,KAAKzN,MAAM5W,EAAK,OAb7C,4C,+BAiBe4hC,G,iFAAf,WAA4BnqB,GAA5B,uBAAAlY,EAAA,6DACQS,EAAOuhC,GAAiB9pB,GADhC,SAE6CT,KAAmB,CAC5DE,eAAgB,oCAChBgoB,SAAU,2BAJd,uBAEUhoB,EAFV,EAEUA,eAAgBgoB,EAF1B,EAE0BA,SAIlBvf,EAAWuf,EAAS3nB,SAAS8M,KAAKzN,MAAM5W,EAAK,MANrD,KAQiBA,EAAK,GARtB,KASmBA,EAAK,GATxB,KAUcA,EAAK,GAVnB,KAWmBA,EAAK,GAXxB,KAYoBA,EAAK,GAZzB,KAaeA,EAAK,GAbpB,KAciBA,EAAK,GAdtB,KAeYA,EAAK,GAfjB,KAgBiBA,EAAK,GAhBtB,KAiBkBA,EAAK,GAjBvB,MAkBUA,EAAK,IAlBf,MAmBU89B,GAnBV,MAoBIne,EApBJ,UAqB6BzI,EAAe6oB,eAAepgB,EAAU,UArBrE,+CAQIsgB,YARJ,KASIC,cATJ,KAUIC,SAVJ,KAWIpB,cAXJ,KAYIC,eAZJ,KAaIoB,UAbJ,KAcIC,YAdJ,KAeIC,OAfJ,KAgBIb,YAhBJ,KAiBIC,aAjBJ,KAkBIN,KAlBJ,MAmBIthC,KAnBJ,MAoBI6hB,SApBJ,MAqBIihB,kBArBJ,qD,0BAyBqBiB,G,kDACnB,WAAYzmC,GAAQ,IAAD,8BACjB,cAAMA,IACDC,MAAQ,CAAEmkC,iBAAkB,IAEjC,EAAKvS,eAAiB,EAAKA,eAAeh0B,KAApB,gBACtB,EAAK6oC,iBAAmB,EAAKA,iBAAiB7oC,KAAtB,gBACxB,EAAK8oC,iBAAmB,EAAKA,iBAAiB9oC,KAAtB,gBACxB,EAAK+oC,iBAAmB,EAAKC,aAAahpC,KAAlB,gBAA6B,GACrD,EAAKipC,gBAAkB,EAAKD,aAAahpC,KAAlB,gBAA6B,GACpD,EAAKkpC,oBAAsB,EAAKA,oBAAoBlpC,KAAzB,gBAC3B,EAAKmpC,gBAAkB,EAAKA,gBAAgBnpC,KAArB,gBAEvB,EAAK05B,UAAYl0B,IAAMoW,YAZN,E,qDAenB,WAAqB,IAAD,OAClB0qB,GAAoBtU,UAAU,oBAAoB,SAACuU,GACjD,EAAK3iC,SAAS,CAAE2iC,0B,gCAIpB,SAAmB9jC,GACbpD,KAAK8C,MAAMrD,gBAAkB2D,EAAU3D,eACzCO,KAAK8C,MAAMrD,cAAcsqC,eACvB,kBAAO9C,GAAoBC,iBAAmB,Q,8BAKpD,SAAiB1oC,GACf,IAAMwrC,EAAc,YAAO/C,GAAoBC,kBAC/C8C,EAAexrC,EAAE2G,OAAOqG,QAAQvJ,OAAO6kC,KAAOtoC,EAAE2G,OAAOE,MACvD4hC,GAAoBC,iBAAmB8C,I,4BAIzC,SAAe3iB,GACRA,IACHziB,eAAaC,QAAUC,qBAAmBrG,MACxC,4CAGAuB,KAAK8C,MAAMrD,cAAcQ,SAC3BD,KAAK8C,MAAMrD,cAAcmB,eAC3BwX,YAAW,WACT2G,KACG4V,eAAetN,GACfloB,MAAK,kBAAM4f,KAAUkrB,gBAAgB5iB,QACvC,O,iCAGL,WACErnB,KAAKq6B,UAAUh6B,QAAQgF,MAAQ,KAC/BrF,KAAKq6B,UAAUh6B,QAAQyS,U,6BAGzB,SAAgBtU,GAAI,IAAD,OACX2D,EAAO3D,EAAE2G,OAAO6D,OAASxK,EAAE2G,OAAO6D,MAAM,GAC9C,GAAK7G,EAAL,CAEA,IAAM2P,EAAS,IAAIC,WACnBD,EAAOE,OAAP,sBAAgB,wCAAA/K,EAAA,sDACRS,EAAOoK,EAAOG,OAAOoD,MAAM,SAE7B60B,EAAc,KACdC,EAAa,EACbl4B,EAAS,GALC,eAMKvK,GANL,4DAMHyX,EANG,QAOZgrB,IAPY,UASG,KAAThrB,EATM,4DAWNA,EAAKvH,WAAWmxB,IAXV,iBAWwBmB,EAAc1E,GAXtC,2BAYDrmB,IAAS6pB,GAZR,iBAYuBkB,EAAc1E,GAZrC,2BAae,OAAhB0E,EAbC,sBAcAA,EAdA,cAeD1E,GAfC,UAkBDA,GAlBC,gCAgBJvzB,EAhBI,UAgBco3B,GAAWlqB,GAhBzB,gCAgBGje,KAhBH,yDAmBJ+Q,EAnBI,UAmBcq3B,GAAanqB,GAnB3B,gCAmBGje,KAnBH,mDAsBE,IAAIzC,MAAM,8BAtBZ,sCAyBF,IAAIA,MAAM,2CAzBR,kEA4BVmG,eAAaC,QAAUC,qBAAmBrG,MAAnB,qCACS0rC,IA7BtB,kKAmCdlD,GAAoBC,iBAApB,sBACK,EAAKnkC,MAAMmkC,kBACXj1B,GArCS,wEAyChBH,EAAOK,WAAWhQ,M,0BAIpB,WAA6B,IAAhBioC,EAAe,wDAC1B,SAASC,EAAgB7kC,GACvB,OAAQA,GACN,KAAKggC,GACH,OAAOuD,GACT,KAAKvD,GACH,OAAOwD,GACT,QACE,MAAM,IAAIvqC,MAAM,+BAGtB,SAAS6rC,EACPC,GAIC,IAHDC,EAGA,wDAFAC,EAEA,uDAFY,IACZ7qB,IACA,yDACA,OAAQ2qB,EAAM/kC,MACZ,KAAKggC,GACH,MAAM,GAAN,OAAUgF,EAAe,UAAY,IAArC,OAA0CD,EAAMjhB,QAAhD,OAAyDmhB,GAAzD,OACED,EAAe,YAAc,IAD/B,OAEGD,EAAM/gB,UAFT,OAEoBihB,GAFpB,OAEgCD,EAAe,YAAc,IAF7D,OAGED,EAAMj2B,UAHR,OAIGm2B,GAJH,OAIeD,EAAe,aAAe,IAJ7C,OAKED,EAAM/1B,WALR,OAMGi2B,GANH,OAMeD,EAAe,OAAS,IANvC,OAM4CD,EAAMrhB,KANlD,OAMwDuhB,GANxD,OAOED,EAAe,QAAU,IAP3B,OAQGD,EAAMzD,MART,OASElnB,GAAe,UACZ6qB,EADY,YACC1e,KAAKkR,UAAUsN,EAAMljB,SAASqjB,UAAUvwB,WACtD,IACA,MAHa,MAMnB,KAAKqrB,GACH,MAAM,GAAN,OAAUgF,EAAe,gBAAkB,IAA3C,OACED,EAAM5C,aADR,OAEG8C,GAFH,OAEeD,EAAe,kBAAoB,IAFlD,OAGED,EAAM3C,eAHR,OAIG6C,GAJH,OAIeD,EAAe,aAAe,IAJ7C,OAKED,EAAM1C,UALR,OAMG4C,GANH,OAMeD,EAAe,kBAAoB,IANlD,OAOED,EAAM9D,eAPR,OAQGgE,GARH,OAQeD,EAAe,mBAAqB,IARnD,OASED,EAAM7D,gBATR,OAUG+D,GAVH,OAUeD,EAAe,cAAgB,IAV9C,OAWED,EAAMzC,WAXR,OAYG2C,GAZH,OAYeD,EAAe,gBAAkB,IAZhD,OAaED,EAAMxC,aAbR,OAcG0C,GAdH,OAceD,EAAe,WAAa,IAd3C,OAeED,EAAMvC,QAfR,OAgBGyC,GAhBH,OAgBeD,EAAe,gBAAkB,IAhBhD,OAiBED,EAAMpD,aAjBR,OAkBGsD,GAlBH,OAkBeD,EAAe,iBAAmB,IAlBjD,OAmBED,EAAMnD,cAnBR,OAoBGqD,GApBH,OAoBeD,EAAe,QAAU,IApBxC,OAoB6CD,EAAMzD,MApBnD,OAoB0D2D,GApB1D,OAqBED,EAAe,YAAc,IArB/B,OAsBGD,EAAMjC,kBAAkBzxB,QAAQ,GAtBnC,YAuBE+I,GAAe,UACZ6qB,EADY,YACC1e,KAAKkR,UAAUsN,EAAMljB,SAASqjB,UAAUvwB,WACtD,IACA,MAHa,MAMnB,QACE,MAAM,IAAI1b,MAAM,+BAGtB,MAAmCuB,KAAK+C,MAAMmkC,iBAAiB9tB,QAC7D,WAA4BmxB,GAAW,IAApCI,EAAmC,EAAnCA,cAAe14B,EAAoB,EAApBA,OAMhB,OALIm4B,GAASO,IAAkBJ,EAAM/kC,MACnCyM,EAAO/Q,KAAKmpC,EAAgBE,EAAM/kC,OAEhC4kC,EAAOn4B,EAAO/Q,KAAKopC,EAAcC,IAChCt4B,EAAO/Q,KAAKopC,EAAcC,GAAO,EAAM,KAAK,IAC1C,CAAEI,cAAeJ,EAAM/kC,KAAMyM,YAEtC,CAAE04B,cAAe,KAAM14B,OAAQ,KATjB24B,EAAhB,EAAQ34B,OAYF9P,EAAO,IAAImZ,KAAK,CAACsvB,EAAe1wB,KAAK,OAAQ,CACjD1U,KAAM,aACN+V,QAAS,WAEXjJ,GACES,IAAIyI,gBAAgBrZ,GADV,2BAEUioC,EAAQ,MAAQ,U,8BAIxC,SAAiBnoC,GACf,IAAM4oC,EAAW5D,GAAoBC,iBACrC2D,EAASvpC,OAAOW,EAAO,GACvBglC,GAAoBC,iBAAmB2D,I,oBAGzC,WAAU,IAAD,OACDC,EACJ,qCACE,yBACEplC,UAAU,QACVK,MAAM,kBACNP,KAAK,SACLC,QAASzF,KAAK6pC,oBAJhB,6BAMkB,cAAC,kBAAD,CAAiB3hC,KAAM6iC,gBAEzC,uBACEvlC,KAAK,OACLoY,OAAO,OACP3X,SAAUjG,KAAK8pC,gBACf98B,MAAO,CAAE8Q,QAAS,QAClBC,IAAK/d,KAAKq6B,eAKhB,OACE,qBAAK30B,UAAU,kBAAf,SACG1F,KAAK+C,MAAMmkC,iBAAiBlmC,OAAS,EACpC,qCACE,sBAAK0E,UAAU,SAAf,UAWGolC,EACD,yBACEplC,UAAU,QACVK,MAAM,gBACNP,KAAK,SACLC,QAASzF,KAAK4pC,gBAJhB,2BAMgB,cAAC,kBAAD,CAAiB1hC,KAAM8iC,qBAGxChrC,KAAK+C,MAAMmkC,iBAAiBjpC,KAAI,SAACssC,EAAOlpC,GAAR,OAC/B,sBAAKqE,UAAU,gBAAf,UACE,wBACEK,MAAM,OACNP,KAAK,SACLE,UAAU,eACVD,QAAS,kBAAM,EAAKkvB,eAAe4V,EAAMljB,WAJ3C,SAME,cAAC,kBAAD,CAAiBnf,KAAM+iC,uBAEzB,cAACtC,GAAD,CAAY7pB,MAAOyrB,IACnB,cAAC3B,GAAD,CACEzpB,KAAMorB,EACN1B,WAAY0B,EAAM3C,gBAAkB2C,EAAMxC,YAC1Ce,OAAQyB,EAAM1C,UAAY0C,EAAMvC,SAElC,uBACExiC,KAAK,OACL,aAAYnE,EACZqE,UAAU,OACVL,MAAOklC,EAAMzD,KACb7gC,SAAU,EAAKwjC,mBAEjB,wBACE1jC,MAAM,SACNP,KAAK,SACLE,UAAU,SACVD,QAAS,kBAAM,EAAK+jC,iBAAiBnoC,IAJvC,SAME,cAAC,kBAAD,CAAiB6G,KAAMgjC,gBA5BS7pC,SAkCxC,qCACE,qBAAKqE,UAAU,SAAf,SAAyBolC,IACzB,uE,GA9RgC3kC,IAAMC,W,mBC1E7B+kC,I,yDACnB,WAAYroC,GAAQ,IAAD,8BACjB,cAAMA,IACDC,MAAQ,CACXi3B,gBAAiB,IAGnB,EAAKoR,gBAAkB,EAAKA,gBAAgBzqC,KAArB,gBACvB,EAAK0qC,kBAAoB,EAAKA,kBAAkB1qC,KAAvB,gBACzB,EAAK2qC,qBAAuB,EAAKA,qBAAqB3qC,KAA1B,gBARX,E,qDAWnB,WACMX,KAAK8C,MAAMrD,eACbO,KAAK8C,MAAMrD,cAAcqiB,sBACvB9hB,KAAK+hB,mBAAmBphB,KAAKX,S,gCAKnC,SAAmBoD,GAEfpD,KAAK8C,MAAMrD,gBAAkB2D,EAAU3D,eACvCO,KAAK8C,MAAMrD,eAEXO,KAAK8C,MAAMrD,cAAcqiB,sBACvB9hB,KAAK+hB,mBAAmBphB,KAAKX,S,gCAKnC,SAAmB+C,GACjB/C,KAAKuE,SAAS,CAAEy1B,gBAAiBj3B,EAAMxC,wBACnCP,KAAKurC,YAEPvrC,KAAKurC,WAAY,EACjBvrC,KAAK8C,MAAMrD,cAAciB,iB,6BAI7B,SAAgBuR,GACd,GAAKA,EAAOu5B,aAAev5B,EAAOmpB,OAAOn5B,QAAUgQ,EAAOu5B,YAAYvpC,MAAtE,CAEA,IAAM8I,EAAK,YAAO/K,KAAK+C,MAAMi3B,iBACvByR,EAAc1gC,EAAM/K,KAAK8C,MAAMrD,cAAce,eACnD,EAAuBuK,EAAMzJ,OAAO2Q,EAAOmpB,OAAOn5B,MAAO,GAAlDypC,EAAP,oBACA3gC,EAAMzJ,OAAO2Q,EAAOu5B,YAAYvpC,MAAO,EAAGypC,GAE1C1rC,KAAKuE,SAAS,CAAEy1B,gBAAiBjvB,IACjC/K,KAAK8C,MAAMrD,cAAc6jB,eACvBvY,EACAA,EAAM3G,QAAQqnC,IACd,M,+BAIJ,SAAkBjtC,GAChBwB,KAAK8C,MAAMrD,cAAc0jB,iBACvB7X,SAAS9M,EAAE+M,cAAcC,QAAQpN,KAEnC4B,KAAKurC,WAAY,I,kCAGnB,WACEvrC,KAAK8C,MAAMrD,cAAcQ,QACrBD,KAAK8C,MAAMrD,cAAcmB,eACzBZ,KAAK8C,MAAMrD,cAAciB,gB,oBAG/B,WAAU,IAAD,OACP,OACE,qBAAKgF,UAAU,oBAAf,SACG1F,KAAK+C,MAAMi3B,gBAAgBh5B,OAAS,EACnC,cAAC,mBAAD,CAAiB2qC,UAAW3rC,KAAKorC,gBAAjC,SACE,cAAC,aAAD,CAAWQ,YAAY,kBAAvB,SACG,SAACC,GAAD,OACC,6CACEnmC,UAAU,uBACNmmC,EAASC,gBAFf,IAGE/tB,IAAK8tB,EAASE,SAHhB,UAKG,EAAKhpC,MAAMi3B,gBAAgB/7B,KAAI,WAAiBgE,GAAW,IAAzB4B,EAAwB,EAAxBA,MAAOI,EAAiB,EAAjBA,IACxC,OACE,cAAC,aAAD,CAAuB+nC,YAAanoC,EAAO5B,MAAOA,EAAlD,SACG,SAAC4pC,GAAD,OACC,yDACE9tB,IAAK8tB,EAASE,UACVF,EAASI,gBACTJ,EAASK,iBAHf,IAIExmC,UACEzD,IAAU,EAAKa,MAAMrD,cAAce,cAC/B,UACA,KAPR,UAUE,gCACE,8CAAeqD,EAAf,OACA,4CAAaI,EAAb,UAEDhC,IACD,EAAKa,MAAMrD,cAAce,cACvB,wBACEkF,UAAU,eACVF,KAAK,SACL,UAASvD,EACTwD,QAAS,EAAK4lC,kBAJhB,SAME,cAAC,kBAAD,CAAiBnjC,KAAMgd,SAAQxgB,KAAK,SAGtC,wBACEgB,UAAU,eACVF,KAAK,SACLC,QAAS,EAAK6lC,qBAHhB,SAKE,cAAC,kBAAD,CACEpjC,KACE,EAAKpF,MAAMrD,cAAcQ,QACrBglB,UACAC,SAENxgB,KAAK,eAtCDb,MA+CnBgoC,EAASr7B,qBAMlB,gE,GAxI4BrK,IAAMC,YCAvB+lC,I,yDACnB,WAAYrpC,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CAAEqpC,eAAe,GAE9B,EAAKC,eAAiB,EAAKA,eAAe1rC,KAApB,gBALL,E,qDAQnB,WACMX,KAAK8C,MAAMrD,eACbO,KAAK8C,MAAMrD,cAAcqiB,sBACvB9hB,KAAK+hB,mBAAmBphB,KAAKX,S,gCAKnC,SAAmBoD,GAEfpD,KAAK8C,MAAMrD,gBAAkB2D,EAAU3D,eACvCO,KAAK8C,MAAMrD,eAEXO,KAAK8C,MAAMrD,cAAcqiB,sBACvB9hB,KAAK+hB,mBAAmBphB,KAAKX,S,gCAKnC,SAAmB+C,GACjB/C,KAAKuE,SAAS,CAAE6nC,eAAgBrpC,EAAM9C,Y,4BAGxC,WACE,IAAM4D,EAAQ7D,KAAK8C,MAAMwpC,SAASjsC,QAC5BZ,EAAgBO,KAAK8C,MAAMrD,cACjC,GAAKoE,GAAUpE,EAAf,CAEA,IAAM8sC,EAAS/5B,SAASC,cAAc,UACtC85B,EAAOt/B,MAAQpJ,EAAM2oC,WACrBD,EAAO/a,OAAS3tB,EAAM4oC,YACVF,EAAOG,WAAW,MAC1BC,UAAU9oC,EAAO,EAAG,GAExByO,GACEi6B,EACGK,UAAU,cACV/oB,QAAQ,aAAc,sBAHf,UAIPpkB,EAAcgB,YAJP,Y,oBAQd,WAIE,OAAKT,KAAK8C,MAAMrD,eAAkBO,KAAK8C,MAAMrD,cAAcmqB,QAIzD,qBAAKlkB,UAAU,iBAAf,SACE,qBACEF,KAAK,SACLkE,UAAW1J,KAAK+C,MAAMqpC,cACtB1mC,UACE1F,KAAK+C,MAAMqpC,cAXC,sBACQ,4CAYtBrmC,MAAM,gBACNN,QAASzF,KAAKqsC,eAPhB,SASE,cAAC,kBAAD,CAAiBnkC,KAAM2kC,WAAUnoC,KAAK,WAbnC,S,GAxD+ByB,IAAMC,Y,4BCmClD0mC,6BAAkB,CAAEC,QAAS,SAC7BC,uBAAax6B,SAASy6B,eAAe,e,IAE/BC,G,kDAEJ,WAAYpqC,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACXoqC,eAAgB,KAChB1tC,cAAe,KACfyrB,YAAa,KACb1kB,YAAa,KAEb4mC,aAAc,CACZ3mC,gBAAgB,EAChBD,aAAa,GAEfvG,SAAS,EACTotC,iBAAiB,GAGnB,EAAKrtB,QAAU,IAAIA,GACnB,EAAKstB,eAAL,UAAyB5b,GAAzB,6BACA,EAAK6b,cAAgB,EAAKA,cAAc5sC,KAAnB,gBACrB,EAAK6sC,uBAAyB,EAAKA,uBAAuB7sC,KAA5B,gBAC9B,EAAK8F,eAAiB,EAAKA,eAAe9F,KAApB,gBAEtB,EAAK8sC,UAAYtnC,IAAMoW,YACvB,EAAK+vB,SAAWnmC,IAAMoW,YAxBL,E,4FA+BnB,kCAAAtV,EAAA,sEACiCmL,MAAM,GAAD,OAC/Bsf,GAD+B,sBADtC,cACQgc,EADR,gBAI4BA,EAAiBC,OAJ7C,cAIQziB,EAJR,OAKElrB,KAAKuE,SAAS,CAAE2mB,gBALlB,cAQyBhkB,IARzB,KAQmCgkB,EAAY0iB,eAR/C,yBAUuCljB,GAC7B1qB,KAAKsP,QAAQib,UACbW,EAAY2iB,sBAZtB,kEAUQvmC,cAVR,YASMD,QATN,qBAQ+BF,IAR/B,kCAQU2mC,EARV,QAkBapmC,KAAK/C,MACV,SAACsnB,GAAD,OAAWA,EAAMnkB,cAAgBojB,EAAY6iB,iBAnBrD,iBAsBYvnC,EAGC,MAFLsnC,EAAOpmC,KAAK/C,MACV,SAACsnB,GAAD,OAAWA,EAAMnkB,cAAgBojB,EAAY8iB,kBAEjDhuC,KAAKuE,SAAS,CACZ4oC,gBAAgB,EAChB3mC,cACA4mC,aAAa,2BACRptC,KAAK+C,MAAMqqC,cADJ,IAEV5mC,kBAIAA,GACF8jB,GAAWH,WAAW,CACpBK,0BAA0B,GAAD,OAAKU,EAAYU,gBAAjB,6BACzBrB,UAAWvqB,KAAKsP,QAAQib,YAtClC,+BA0CMvqB,KAAKuE,SAAS,CACZ4oC,gBAAgB,EAChBc,oBAAqB,+CA5C7B,oFAiDIjuC,KAAKuE,SAAS,CACZ4oC,gBAAgB,EAChBc,oBAAqB,kDAnD3B,2BA0DEjuC,KAAKkuC,UAAY17B,SAASC,cAAc,SACxCD,SAASI,KAAKC,YAAY7S,KAAKkuC,WAC/Bh2B,OAAOi2B,iBAAiB,SAAUnuC,KAAKouC,gBAAgBztC,KAAKX,OA5D9D,0D,sFA+DA,WACEA,KAAKouC,oB,6BAGP,WACOpuC,KAAKytC,UAAUptC,SAAYL,KAAKkuC,YACrCluC,KAAKkuC,UAAUG,UAAf,2CAA+DruC,KAAKytC,UAAUptC,QAAQiuC,aAAtF,Y,oCAGF,SAAuB7uC,GAAgB,IAAD,OACpCA,EAAcqiB,uBAAsB,SAACxS,GAAD,OAClC,EAAK/K,SAAS,CAAEtE,QAASqP,EAAQrP,aAEnCD,KAAKuE,SAAS,CAAE9E,oB,2BAGlB,WACE,IAAM8uC,EAAWvuC,KAAK+C,MAAMsqC,gBAC5BrtC,KAAKuE,SAAS,CAAE8oC,iBAAkBkB,M,4BAGpC,WACEvuC,KAAKuE,SAAS,CACZ6oC,aAAa,2BAAMptC,KAAK+C,MAAMqqC,cAAlB,IAAgC3mC,gBAAgB,Q,oBAIhE,WAAU,IAAD,OACP,IAAKzG,KAAK+C,MAAMoqC,eACd,OACE,gCACE,sBAAMngC,MAAO,CAAEwhC,YAAa,OAA5B,SACGxuC,KAAK+C,MAAMkrC,qBAAuB,iCAErC,wBACEzoC,KAAK,SACLE,UAAU,sBACVD,QAASzF,KAAK8C,MAAM2rC,QACpB1oC,MAAM,wBAJR,SAME,cAAC,kBAAD,CAAiBmC,KAAMwmC,sBAM/B,IAAMC,EAAe7oB,KAAW,CAC9B8oB,SAAS,EACTC,SAAU7uC,KAAK+C,MAAMsqC,kBAGjByB,EAAY,WAChB,OAAQ,EAAK/rC,MAAMyD,aACjB,KAAK,EACH,MAAO,eACT,KAAK,EACH,MAAO,aACT,QACE,MAAO,yBAPK,GAWlB,OACE,cAACD,EAAawoC,SAAd,CACE1pC,MAAK,2BAAOrF,KAAKsP,SAAYtP,KAAK+C,MAAMqqC,cAD1C,SAGE,sBAAK1nC,UAAU,0BAAf,UACE,sBAAKA,UAAU,SAASqY,IAAK/d,KAAKytC,UAAlC,UACE,qBAAK/nC,UAAU,UAAf,SACE,cAAC,GAAD,CAAMA,UAAU,WAElB,sBAAKA,UAAU,QAAf,UACE,2CACA,sBAAMA,UAAU,UAAhB,SACG1F,KAAK+C,MAAMmoB,aAAX,mBACalrB,KAAK+C,MAAMmoB,YAAY6hB,cAGzC,qBAAKrnC,UAAU,YAAf,SACE,gCACE,sBAAMA,UAAU,WAAhB,yBACY1F,KAAKsP,QAAQE,YAEzB,+BAAOs/B,SAGX,cAAC,GAAD,CACE9uB,QAAShgB,KAAKggB,QACdvgB,cAAeO,KAAK+C,MAAMtD,gBAE5B,cAAC,GAAD,CACEA,cAAeO,KAAK+C,MAAMtD,cAC1BgnB,oBACEzmB,KAAK+C,MAAMmoB,aAAelrB,KAAK+C,MAAMmoB,YAAY8jB,gBAGrD,sBAAKtpC,UAAU,gBAAf,UACE,cAAC,GAAD,CAAYjG,cAAeO,KAAK+C,MAAMtD,gBACtC,cAAC,GAAD,CAAcA,cAAeO,KAAK+C,MAAMtD,mBAE1C,sBAAKiG,UAAU,YAAf,UACE,wBACEF,KAAK,SACLE,UAAU,sBACVD,QAASzF,KAAK8C,MAAM2rC,QACpB1oC,MAAM,wBAJR,SAME,cAAC,kBAAD,CAAiBmC,KAAMwmC,mBAEzB,mBACEhpC,UAAU,wBACVgN,KAAM1S,KAAKstC,eACXnoC,OAAO,SACP8pC,IAAI,sBACJlpC,MAAM,aALR,SAOE,cAAC,kBAAD,CAAiBmC,KAAMgnC,uBAI7B,qBAAKxpC,UAAU,OAAf,SACE,eAAC,KAAD,CACEypC,YAAY,EACZC,qBAAsB,GACtBC,iBAAkB,GAClBC,eAAgB,GAJlB,UAME,qBAAK5pC,UAAU,uBAAf,SACE,cAAC,GAAD,CACEjG,cAAeO,KAAK+C,MAAMtD,cAC1ByrB,YAAalrB,KAAK+C,MAAMmoB,YACxBjrB,QAASD,KAAK+C,MAAM9C,QACpBwG,eAAgBzG,KAAKyG,mBAGzB,sBAAKf,UAAU,4BAAf,UACE,sBAAKA,UAAU,eAAf,UACE,cAAC,GAAD,CACE4mC,SAAUtsC,KAAKssC,SACf7sC,cAAeO,KAAK+C,MAAMtD,gBAE5B,cAAC,GAAD,CACEA,cAAeO,KAAK+C,MAAMtD,cAC1BgnB,oBACEzmB,KAAK+C,MAAMmoB,aACXlrB,KAAK+C,MAAMmoB,YAAY8jB,mBAI7B,cAAC,GAAD,CACEhtB,iBAAkBhiB,KAAKwtC,uBACvBxtB,QAAShgB,KAAKggB,QACd5Y,YACEpH,KAAK+C,MAAMmoB,aAAelrB,KAAK+C,MAAMmoB,YAAY9jB,YAEnD2W,IAAK/d,KAAKssC,WAEZ,sBAAK5mC,UAAWipC,EAAhB,UACE,qBACEjpC,UAAU,wBACVD,QAASzF,KAAKutC,cACdxnC,MAAK,UACH/F,KAAK+C,MAAMsqC,gBAAkB,WAAa,SADvC,YAHP,SAOE,cAAC,kBAAD,CACEnlC,KAAMlI,KAAK+C,MAAMsqC,gBAAkBkC,eAAeC,SAClD/L,UAAU,iBAGd,sBAAK/9B,UAAU,UAAf,UACE,2BAAUA,UAAU,eAApB,UACE,iCACE,+BACE,cAAC,kBAAD,CAAiBwC,KAAMwgC,WAAUhkC,KAAK,OAAQ,IADhD,uBAKF,cAAC,GAAD,CACEjF,cAAeO,KAAK+C,MAAMtD,mBAG9B,2BAAUiG,UAAU,eAApB,UACE,iCACE,+BACE,cAAC,kBAAD,CAAiBwC,KAAMunC,WAAU/qC,KAAK,OADxC,iBAIF,cAAC,GAAD,CAAUjF,cAAeO,KAAK+C,MAAMtD,yBAI1C,sBAAKiG,UAAU,oBAAf,UACE,8BACE,cAAC,GAAD,CACEjG,cAAeO,KAAK+C,MAAMtD,cAC1BgnB,oBACEzmB,KAAK+C,MAAMmoB,aACXlrB,KAAK+C,MAAMmoB,YAAY8jB,cAEzBzP,sBACEv/B,KAAK+C,MAAMmoB,aACXlrB,KAAK+C,MAAMmoB,YAAYwkB,gBAEzBhU,uBACE17B,KAAK+C,MAAMmoB,aACXlrB,KAAK+C,MAAMmoB,YAAYykB,iBAEzB5P,2BACE//B,KAAK+C,MAAMmoB,aACXlrB,KAAK+C,MAAMmoB,YAAY0kB,qBAEzBrP,gCACEvgC,KAAK+C,MAAMmoB,aACXlrB,KAAK+C,MAAMmoB,YAAY2kB,0BAEzB3O,6BACElhC,KAAK+C,MAAMmoB,aACXlrB,KAAK+C,MAAMmoB,YAAY4kB,2BAI7B,8BACE,cAAC,GAAD,CACErwC,cAAeO,KAAK+C,MAAMtD,cAC1B0lC,eACEnlC,KAAK+C,MAAMmoB,aACXlrB,KAAK+C,MAAMmoB,YAAY6kB,oCAQrC,cAACjrC,EAAA,wBAAD,IACCkrC,a,GA5UO7pC,IAAMC,WAAlB8mC,GACGt8B,YAAcvK,EAkVR6mC,U,6BC3XT+C,GAAS,CACbC,IAAK,GACLC,KAAM,I,SAqHOC,G,iFAAf,WAA6BC,GAA7B,iBAAAppC,EAAA,yDACOgpC,GAAOC,IAAII,QADlB,sBACiC,IAAI7xC,MAAM,mCAD3C,uBAOQwxC,GAAOC,IAAII,QAAQC,wBAP3B,uBAUQN,GAAOE,KAAKG,QAAQC,wBAV5B,aAYQC,EAAkBP,GAAOC,IAAII,QAAQG,kBACvBzvC,OAAS,GAb/B,wBAcI0vC,KAdJ,2BAgBaF,EAAgBxvC,OAAS,GAO5B2vC,EAAWH,EAAgBnsC,QAC/B,SAACusC,GAAD,OACEA,EAAQC,cACL1lC,cACAO,SAASukC,GAAOC,IAAIY,SAASC,MAAML,OAAOvlC,gBAC7CylC,EAAQI,cAAcC,IACnB9lC,cACAO,SAASukC,GAAOC,IAAIY,SAASI,gBAAgB/lC,gBAChDylC,EAAQI,cAAcG,MAAQlB,GAAOC,IAAIkB,WAAWC,KAAKC,aAGhDtwC,OAAS,EAGlB2vC,EAAS/V,OACP,SAACgW,GAAD,OAAaA,EAAQW,iBAAmBZ,EAAS,GAAGY,kBAItDlB,EAAWM,EAAS,IAGpBlC,KAE2B,IAApBkC,EAAS3vC,QAClBqvC,EAAWM,EAAS,IAEc,IAA3BH,EAAgBxvC,QACzBqvC,EAAWG,EAAgB,IAnD/B,6C,sBAuDA,SAASE,KACP,IAAKT,GAAOC,IAAII,QAAS,MAAM,IAAI7xC,MAAM,mCAMzCwxC,GAAOC,IAAII,QAAQkB,cAAcvB,GAAOC,IAAIuB,cAG9C,SAAShD,KACP,IAAKwB,GAAOC,IAAII,QAAS,MAAM,IAAI7xC,MAAM,mCAMzC,IAAMizC,EAAgB,CACpBC,sBAAuB1B,GAAOC,IAAIkB,WAAWC,KAAKO,aAGpD3B,GAAOC,IAAII,QAAQuB,eAAeH,GAI7B,SAAehnB,GAAtB,mC,8CAAO,WAA4BH,GAA5B,+BAAAtjB,EAAA,yDAAuC6qC,EAAvC,+BAAgD,KAChD7B,GAAOC,IAAII,QADX,sBAC0B,IAAI7xC,MAAM,mCADpC,cAMCszC,EAND,2BAOA9B,GAAOC,IAAI8B,cAPX,IAQHF,OAAM,OAAEA,QAAF,IAAEA,IAAU7B,GAAOC,IAAI8B,aAAaF,OAC1ClB,QAASX,GAAOC,IAAII,QAAQ2B,mBAAmB1nB,KAT5C,kBAaoB0lB,GAAOC,IAAII,QAAQ4B,mBAAmBH,GAb1D,WAaGvqC,EAbH,QAgBW2qC,aAAwC,KAAzB3qC,EAAS2qC,YAhBnC,uBAiBK,IAAIC,KAjBT,eAmBDnwB,QAAQC,IAAI,kCAAmC,IAAI9V,MAAOuQ,YAnBzD,kBAoBMnV,EAAS2qC,aApBf,6DAuBHlwB,QAAQC,IACN,kEADF,QAII,gBAAiBkwB,MA3BlB,0CA6BMnC,GAAOC,IAAII,QAAQ+B,qBAAqBN,IA7B9C,QA+BD9vB,QAAQC,IAAR,MA/BC,0D,yBAoCA,SAAe3S,GAAtB,mC,8CAAO,WAAgCC,GAAhC,mCAAAvI,EAAA,yDAA0C0I,EAA1C,gCACAsgC,GAAOE,KAAKG,QADZ,sBAC2B,IAAI7xC,MAAM,mCADrC,cAICkyC,EAAWV,GAAOE,KAAKG,QAAQG,iBAC/BsB,EALD,2BAMA9B,GAAOE,KAAK6B,cANZ,IAOHF,OAAQ7B,GAAOE,KAAK6B,aAAaF,OACjClB,QAAO,UACLD,EAAShsC,MACP,SAACisC,GAAD,MAC0B,sBAAxBA,EAAQ0B,aACR1B,EAAQphC,WAAaA,YAJpB,QAKAmhC,EAAShsC,MAAK,SAACisC,GAAD,OAAaA,EAAQphC,WAAaA,OAbpD,kBAiBoBygC,GAAOE,KAAKG,QAAQ4B,mBAAmBH,GAjB3D,WAiBGvqC,EAjBH,QAkBW2qC,aAAwC,KAAzB3qC,EAAS2qC,YAlBnC,uBAmBK,IAAIC,KAnBT,iCAqBM5qC,EAAS2qC,aArBf,6DAwBHlwB,QAAQC,IAAR,gEAEIvS,EAAkB,WAAa,QAFnC,QAKI,gBAAiByiC,MA7BlB,qBA8BGziC,EA9BH,0CA8B2B4iC,GAAyBR,IA9BpD,yBA+BiBS,GAAsBT,GA/BvC,yEAiCD9vB,QAAQwwB,KAAR,MAjCC,0D,kCAsCQD,G,iFAAf,WAAqCT,GAArC,eAAA9qC,EAAA,+EAGgCgpC,GAAOE,KAAKG,QAAQoC,kBAAkBX,GAHtE,cAGUY,EAHV,OAII1wB,QAAQC,IAAI,mCAAoC,IAAI9V,MAAOuQ,YAJ/D,kBAMyC,KAA9Bg2B,EAAcR,YAAqB,KAAOQ,EAAcR,aANnE,uCAQIlwB,QAAQwwB,KAAR,MARJ,kBASWF,GAAyBR,IATpC,0D,sBAaA,SAASQ,GAAyBR,GAChC,IACE,OAAO9B,GAAOE,KAAKG,QAAQ+B,qBAAqBN,GAChD,MAAOa,GACP3wB,QAAQwwB,KAAKG,I,IAIIC,G,kDACnB,WAAY/vC,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CAAE+vC,YAAY,EAAOlC,QAAS,MAC3C,EAAKnC,QAAU,EAAKA,QAAQ9tC,KAAb,gBAJE,E,4FAOnB,8BAAAsG,EAAA,sEACiCmL,MAAM,GAAD,OAC/Bsf,GAD+B,sBADtC,cACQgc,EADR,gBAI4BA,EAAiBC,OAJ7C,OAIQziB,EAJR,OAzSA6nB,EA+SI7nB,EAAY6nB,UA9ShBC,EA+SI9nB,EAAY8nB,YA9ShBC,EA+SI/nB,EAAY+nB,WA9ShBC,EA+SIhoB,EAAYgoB,aAxShBjD,GAAOC,IAAIY,SAAW,CACpBC,MAAO,CACLL,OAAQ,yBAEVyC,YAAa,CACXzC,OAAQ,CACN0C,UACE,yFAGNlC,gBAAiB,6BAWnBjB,GAAOC,IAAIkB,WAAa,CACtBC,KAAM,CACJC,SAAU0B,EACVI,UAAWnD,GAAOC,IAAIY,SAASqC,YAAYzC,OAAO0C,UAClDC,iBAAkB,CAACpD,GAAOC,IAAIY,SAASI,kBAEzCoC,MAAO,CACLC,cAAe,iBACfC,wBAAwB,GAE1BC,OAAQ,CACNC,cAAe,CACbC,eAAgB,SAACC,EAAO/uC,EAASgvC,GAC/B,IAAIA,EAGJ,OAAQD,GACN,KAAKxB,KAAc3zC,MAEjB,YADAwjB,QAAQyB,MAAM7e,GAEhB,KAAKutC,KAAcrtC,KAEjB,YADAkd,QAAQvgB,KAAKmD,GAEf,KAAKutC,KAAc0B,QAEjB,YADA7xB,QAAQ8xB,MAAMlvC,GAEhB,KAAKutC,KAAc4B,QAEjB,YADA/xB,QAAQwwB,KAAK5tC,GAEf,QACE,YAOZorC,GAAOE,KAAKiB,WAAa,CACvBC,KAAM,CACJC,SAAU4B,EACVE,UACE,0EAEJE,MAAO,CACLC,cAAe,iBACfC,wBAAwB,IAU5BvD,GAAOC,IAAIuB,aAAe,CACxBK,OAAO,CAAE,UAAH,mBAAgBiB,KAExB9C,GAAOE,KAAKsB,aAAe,CACzBK,OAAQ,CAAC,SAAU,YAQrB7B,GAAOC,IAAI8B,aAAe,CACxBF,OAAO,YAAKiB,GACZkB,cAAc,GAEhBhE,GAAOE,KAAK6B,aAAe,CACzBF,OAAO,YAAKmB,GACZgB,cAAc,GAIhBhE,GAAOC,IAAII,QAAU,IAAI8B,KAA6BnC,GAAOC,IAAIkB,YACjEnB,GAAOE,KAAKG,QAAU,IAAI8B,KACxBnC,GAAOE,KAAKiB,YAsMZhB,GAAcpwC,KAAK0wC,OAAO/vC,KAAKX,OAXjC,iCA1SF,IACE+yC,EACAC,EACAC,EACAC,IAsSA,Y,0EAcA,SAAOtC,GACL,IAAuBrmB,EAAwBqmB,EAAvCC,cAA0BrhC,EAAaohC,EAAbphC,SAClCxP,KAAKuE,SAAS,CACZuuC,YAAY,EACZlC,QAAS,CACPrmB,YACA/a,WACA8N,OAAqC,MAA7BszB,EAAQI,cAAckD,S,4DAKpC,sBAAAjtC,EAAA,sDACEjH,KAAKuE,SAAS,CAAEuuC,YAAY,EAAOlC,QAAS,OAC5CnC,KAFF,gD,0EAKA,WACE,OAAOzuC,KAAK+C,MAAM+vC,WAChB,cAACzsC,EAAY0oC,SAAb,CAAsB1pC,MAAOrF,KAAK+C,MAAM6tC,QAAxC,SACE,cAAC,GAAD,2BAAS5wC,KAAK8C,OAAd,IAAqB2rC,QAASzuC,KAAKyuC,aAGrC,qD,GA7C4BtoC,IAAMC,WCrSxC+tC,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,GAAD,MAEF7hC,SAASy6B,eAAe,SAM1BjuC,M","file":"static/js/main.e31c4600.chunk.js","sourcesContent":["var map = {\n\t\"./1.jpg\": 691,\n\t\"./10.jpg\": 692,\n\t\"./11EN.jpg\": 693,\n\t\"./11ES.jpg\": 694,\n\t\"./11NE.jpg\": 695,\n\t\"./11NW.jpg\": 696,\n\t\"./11SE.jpg\": 697,\n\t\"./11SW.jpg\": 698,\n\t\"./11WN.jpg\": 699,\n\t\"./11WS.jpg\": 700,\n\t\"./12.jpg\": 701,\n\t\"./13.jpg\": 702,\n\t\"./14.jpg\": 703,\n\t\"./15.jpg\": 704,\n\t\"./16.jpg\": 705,\n\t\"./17.jpg\": 706,\n\t\"./18.jpg\": 707,\n\t\"./19.jpg\": 708,\n\t\"./2.jpg\": 709,\n\t\"./20.jpg\": 710,\n\t\"./21.jpg\": 711,\n\t\"./22.jpg\": 712,\n\t\"./23.jpg\": 713,\n\t\"./24.jpg\": 714,\n\t\"./25.jpg\": 715,\n\t\"./26.jpg\": 716,\n\t\"./27.jpg\": 717,\n\t\"./3.jpg\": 718,\n\t\"./30.jpg\": 719,\n\t\"./31.jpg\": 720,\n\t\"./32.jpg\": 721,\n\t\"./33.jpg\": 722,\n\t\"./34.jpg\": 723,\n\t\"./35.jpg\": 724,\n\t\"./36.jpg\": 725,\n\t\"./37.jpg\": 726,\n\t\"./38.jpg\": 727,\n\t\"./39.jpg\": 728,\n\t\"./4.jpg\": 729,\n\t\"./40.jpg\": 730,\n\t\"./42.jpg\": 731,\n\t\"./43.jpg\": 732,\n\t\"./44.jpg\": 733,\n\t\"./45.jpg\": 734,\n\t\"./46.jpg\": 735,\n\t\"./47.jpg\": 736,\n\t\"./48.jpg\": 737,\n\t\"./49.jpg\": 738,\n\t\"./5.jpg\": 739,\n\t\"./50.jpg\": 740,\n\t\"./51.jpg\": 741,\n\t\"./52.jpg\": 742,\n\t\"./53.jpg\": 743,\n\t\"./54.jpg\": 744,\n\t\"./55.jpg\": 745,\n\t\"./56.jpg\": 746,\n\t\"./6.jpg\": 747,\n\t\"./60.jpg\": 748,\n\t\"./61.jpg\": 749,\n\t\"./62.jpg\": 750,\n\t\"./63.jpg\": 751,\n\t\"./64.jpg\": 752,\n\t\"./65.jpg\": 753,\n\t\"./66.jpg\": 754,\n\t\"./67.jpg\": 755,\n\t\"./69.jpg\": 756,\n\t\"./69E.jpg\": 757,\n\t\"./7.jpg\": 758,\n\t\"./70.jpg\": 759,\n\t\"./71.jpg\": 760,\n\t\"./72.jpg\": 761,\n\t\"./73.jpg\": 762,\n\t\"./74.jpg\": 763,\n\t\"./75.jpg\": 764,\n\t\"./76.jpg\": 765,\n\t\"./77.jpg\": 766,\n\t\"./8.jpg\": 767,\n\t\"./80.jpg\": 768,\n\t\"./81.jpg\": 769,\n\t\"./82.jpg\": 770,\n\t\"./83.jpg\": 771,\n\t\"./84.jpg\": 772,\n\t\"./85.jpg\": 773,\n\t\"./9.jpg\": 774,\n\t\"./90.jpg\": 775,\n\t\"./91.jpg\": 776,\n\t\"./91E.jpg\": 777,\n\t\"./92.jpg\": 778,\n\t\"./93.jpg\": 779,\n\t\"./94.jpg\": 780,\n\t\"./95E.jpg\": 781,\n\t\"./95N.jpg\": 782,\n\t\"./95S.jpg\": 783,\n\t\"./95W.jpg\": 784,\n\t\"./96.jpg\": 785,\n\t\"./97.jpg\": 786,\n\t\"./98.jpg\": 787\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 690;","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","export default class playerContext {\r\n #play;\r\n #pause;\r\n #setTime;\r\n #setPlaybackRate;\r\n #openFiles;\r\n #requestRefresh;\r\n #contextStateChangedCallbacks = [];\r\n #gpsDataChangedCallbacks = [];\r\n #gpsFileChangedCallbacks = [];\r\n #newPlaylistCallbacks = [];\r\n\r\n constructor(\r\n play,\r\n pause,\r\n setTime,\r\n setPlaybackRate,\r\n openFiles,\r\n requestRefresh\r\n ) {\r\n this.#play = play;\r\n this.#pause = pause;\r\n this.#setTime = setTime;\r\n this.#setPlaybackRate = setPlaybackRate;\r\n this.#openFiles = openFiles;\r\n this.#requestRefresh = requestRefresh;\r\n\r\n this.playing = false;\r\n this.playbackRate = 1.0;\r\n this.videoInformation = {};\r\n this.gpsInformation = { current: {}, allData: [] };\r\n this.videoToGpsFileMapping = [];\r\n this.playlistIndex = 0;\r\n this.playingName = \"\";\r\n\r\n this.requestPlay = this.requestPlay.bind(this);\r\n this.requestPause = this.requestPause.bind(this);\r\n this.requestTime = this.requestTime.bind(this);\r\n this.requestPlaybackRate = this.requestPlaybackRate.bind(this);\r\n this.requestOpenFiles = this.requestOpenFiles.bind(this);\r\n }\r\n\r\n get hasData() {\r\n return this.gpsInformation && this.gpsInformation.allData.length > 0;\r\n }\r\n\r\n onContextStateChanged(callback) {\r\n this.#contextStateChangedCallbacks.push(callback);\r\n }\r\n\r\n notifyStateSubscribers() {\r\n this.#contextStateChangedCallbacks.forEach((callback) => callback(this));\r\n }\r\n\r\n onNewPlaylist(callback) {\r\n this.#newPlaylistCallbacks.push(callback);\r\n }\r\n\r\n notifyNewPlaylistSubscribers() {\r\n this.#newPlaylistCallbacks.forEach((callback) => callback(this));\r\n }\r\n\r\n onGpsDataChanged(callback) {\r\n this.#gpsDataChangedCallbacks.push(callback);\r\n }\r\n\r\n removeOnGpsDataChanged(callback) {\r\n this.#gpsDataChangedCallbacks.forEach((func, i) => {\r\n if (func === callback) {\r\n this.#gpsDataChangedCallbacks.splice(i, 1);\r\n }\r\n });\r\n }\r\n\r\n notifyGpsDataSubscribers() {\r\n this.#gpsDataChangedCallbacks.forEach((callback) =>\r\n callback(this.gpsInformation.current)\r\n );\r\n }\r\n\r\n onGpsFileChanged(callback) {\r\n this.#gpsFileChangedCallbacks.push(callback);\r\n }\r\n\r\n notifyGpsFileSubscribers() {\r\n this.#gpsFileChangedCallbacks.forEach((callback) =>\r\n callback(this.gpsInformation)\r\n );\r\n }\r\n\r\n requestPlay() {\r\n this.#play && this.#play();\r\n this.playing = true;\r\n this.notifyStateSubscribers();\r\n }\r\n\r\n requestPause() {\r\n this.#pause && this.#pause();\r\n this.playing = false;\r\n this.notifyStateSubscribers();\r\n }\r\n\r\n requestOpenFiles() {\r\n this.#openFiles && this.#openFiles();\r\n }\r\n\r\n requestTime(seconds) {\r\n this.#setTime && this.#setTime(seconds);\r\n }\r\n\r\n requestPlaybackRate(rate) {\r\n if (this.videoToGpsFileMapping.length === 0) return;\r\n this.playbackRate = rate;\r\n this.#setPlaybackRate && this.#setPlaybackRate(rate);\r\n this.notifyStateSubscribers();\r\n }\r\n\r\n requestRefresh() {\r\n this.#requestRefresh && this.#requestRefresh();\r\n }\r\n\r\n setVideoInformation(info) {\r\n this.videoInformation = {\r\n ...(this.videoInformation || {}),\r\n ...info,\r\n };\r\n this.notifyStateSubscribers();\r\n }\r\n\r\n setGpsInformation(info, gpsFileUpdated = false) {\r\n const oldGpsData = this.gpsInformation.current;\r\n this.gpsInformation = {\r\n ...(this.gpsInformation || {}),\r\n ...info,\r\n };\r\n if (oldGpsData !== this.gpsInformation.current) {\r\n this.notifyGpsDataSubscribers();\r\n }\r\n if (gpsFileUpdated) {\r\n this.notifyGpsFileSubscribers();\r\n }\r\n }\r\n\r\n setPlayerFiles(videoToGpsFileMapping, playlistIndex, isNew) {\r\n this.videoToGpsFileMapping = videoToGpsFileMapping;\r\n this.playlistIndex = playlistIndex ?? this.playlistIndex;\r\n this.notifyStateSubscribers();\r\n if (isNew) this.notifyNewPlaylistSubscribers();\r\n }\r\n\r\n setPlaylistIndex(index) {\r\n this.playlistIndex = index;\r\n this.notifyStateSubscribers();\r\n }\r\n}\r\n","import { construct } from \"@mrwa/rime-replacement/esriControls/unions\";\r\n\r\nexport const FileType = {\r\n FileSystem: (file) => construct(\"FileSystem\", [file]),\r\n Url: (url, name) => construct(\"Url\", [url, name]),\r\n};\r\n\r\nexport function getFileName(fileUnion) {\r\n return fileUnion.case({\r\n FileSystem: (file) => file.name,\r\n Url: (_, name) => name,\r\n });\r\n}\r\n","import React from \"react\";\r\nimport { Modal } from \"@mrwa/rime-replacement/esriControls/general/Dialog\";\r\nimport {\r\n ApplicationMessage,\r\n messageState,\r\n} from \"@mrwa/rime-replacement/esriControls/general/ApplicationMessage\";\r\nimport { getFileName } from \"../data/fileType\";\r\n\r\nexport default class VideoToGpsMatchDialog extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = { selections: [] };\r\n\r\n this.handleSelect = this.handleSelect.bind(this);\r\n this.handleAccept = this.handleAccept.bind(this);\r\n this.handleMappings = this.handleMappings.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps === this.props) return;\r\n\r\n this.handleMappings();\r\n }\r\n\r\n handleMappings() {\r\n const videosArray = Array.from(\r\n (this.props.videoFiles ?? []).map((item) => getFileName(item))\r\n );\r\n const gpsArray = Array.from(\r\n (this.props.gpsFiles ?? []).map((item) => getFileName(item))\r\n );\r\n const videoNames = videosArray.map((video) =>\r\n video.slice(0, video.lastIndexOf(\".\"))\r\n );\r\n const gpsNames = gpsArray.map((gps) => gps.slice(0, gps.lastIndexOf(\".\")));\r\n\r\n const selections = videoNames\r\n .map((videoName, i) => {\r\n const gpsIndex = gpsNames.indexOf(videoName);\r\n if (gpsIndex >= 0)\r\n return { video: videosArray[i], gps: gpsArray[gpsIndex] };\r\n return null;\r\n })\r\n .filter((x) => x);\r\n this.setState({ selections });\r\n }\r\n\r\n handleAccept() {\r\n //ensure selected data files are unique\r\n const selectionsSet = new Set(\r\n this.state.selections.map((item) => item.gps)\r\n );\r\n const hasDuplicates = selectionsSet.size !== this.state.selections.length;\r\n\r\n //ensure items have been selceted for each video\r\n const hasDefaultSelected = this.state.selections.find(\r\n (item) => item.gps === \"\"\r\n );\r\n\r\n if (\r\n hasDefaultSelected ||\r\n this.state.selections.length !== this.props.videoFiles.length\r\n ) {\r\n messageState.message = ApplicationMessage.Error(\r\n \"All videos must have a GPS metadata file selection\"\r\n );\r\n return;\r\n }\r\n if (hasDuplicates) {\r\n messageState.message = ApplicationMessage.Info(\r\n \"All videos must have a unique GPS metadata file selected\"\r\n );\r\n return;\r\n }\r\n\r\n this.props.onAccept(this.state.selections);\r\n }\r\n\r\n handleSelect(e) {\r\n const foundIndex = this.state.selections.findIndex(\r\n (item) => item.video === e.target.name\r\n );\r\n if (foundIndex >= 0) {\r\n const previousState = [...this.state.selections];\r\n previousState[foundIndex].gps = e.target.value;\r\n this.setState({\r\n selections: previousState,\r\n });\r\n } else {\r\n this.setState({\r\n selections: [\r\n ...this.state.selections,\r\n { video: e.target.name, gps: e.target.value },\r\n ],\r\n });\r\n }\r\n }\r\n\r\n gpsToVideoMatch(videoName) {\r\n const selection =\r\n this.state.selections &&\r\n this.state.selections.find(({ video }) => video === videoName);\r\n return selection ? selection.gps : \"\";\r\n }\r\n\r\n render() {\r\n const footerContents = (\r\n <>\r\n \r\n \r\n \r\n );\r\n const modalProps = {\r\n show: !this.props.showVideoToGpsMatchDialog,\r\n onReject: this.props.onReject,\r\n title: \"Match Files\",\r\n footerContents,\r\n };\r\n\r\n return (\r\n !this.props.hidden && (\r\n \r\n
\r\n {this.props.videoFiles && this.props.gpsFiles\r\n ? this.props.videoFiles.map((video, i) => (\r\n
\r\n \r\n \r\n \r\n {this.props.gpsFiles.map((gps, i) => (\r\n \r\n ))}\r\n \r\n
\r\n ))\r\n : null}\r\n
\r\n
\r\n )\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\nexport const AuthContext = React.createContext({});\r\nexport const CrashContext = React.createContext({\r\n isCrashUser: false,\r\n mapInitialised: false,\r\n});\r\n","import { faArrowLeft } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport axios from \"axios\";\r\nimport React from \"react\";\r\n\r\nexport default class NomadBreadcrumbs extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = { crumbs: [], currentLocation: \"\", loading: false };\r\n }\r\n\r\n componentDidMount() {\r\n this.refreshCrumbs();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (\r\n this.props.folderId !== prevProps.folderId ||\r\n this.props.searchTerm !== prevProps.searchTerm\r\n ) {\r\n this.refreshCrumbs();\r\n }\r\n }\r\n\r\n async refreshCrumbs() {\r\n if (!this.props.folderId) return;\r\n if (this.props.searchTerm) {\r\n this.setState({\r\n crumbs: [],\r\n currentLocation: `Search results for \"${this.props.searchTerm}\"`,\r\n });\r\n return;\r\n }\r\n\r\n this.setState({ loading: true });\r\n\r\n const response = await axios.get(\r\n `${this.props.nomadApiUrl}/api/asset/${this.props.folderId}/detail`,\r\n {\r\n headers: {\r\n Authorization: `Bearer ${this.props.token}`,\r\n },\r\n }\r\n );\r\n\r\n const detail = response && response.data;\r\n if (detail) {\r\n this.setState({\r\n crumbs:\r\n detail.parents &&\r\n detail.parents.filter(\r\n (parent) => parent.assetType === 1 && parent.displayName != null\r\n ),\r\n currentLocation: detail.properties.displayName,\r\n });\r\n }\r\n this.setState({ loading: false });\r\n }\r\n\r\n render() {\r\n const { crumbs: breadcrumbs, currentLocation } = this.state;\r\n return this.state.loading ? (\r\n
Loading...
\r\n ) : (\r\n
\r\n {this.props.searchTerm && (\r\n \r\n \r\n
\r\n )}\r\n {breadcrumbs &&\r\n breadcrumbs.map((breadcrumb) => (\r\n \r\n {breadcrumb.displayName}\r\n \r\n ))}\r\n {currentLocation && (\r\n
{currentLocation}
\r\n )}\r\n \r\n );\r\n }\r\n}\r\n","import { faFileAlt, faFileVideo } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport axios from \"axios\";\r\nimport React from \"react\";\r\nimport { assetTypes, contentDefinitionId } from \"./NomadSelect\";\r\nimport { AcceptedGPSTypes } from \"./OpenOrExtractFileDialog\";\r\n\r\nexport const mediaType = {\r\n video: 2,\r\n text: 4,\r\n};\r\n\r\nconst columns = {\r\n name: 1,\r\n duration: 2,\r\n author: 3,\r\n created: 4,\r\n};\r\n\r\nexport async function findAssociatedGps(detail) {\r\n const gpsAsset =\r\n detail.relatedAssets &&\r\n detail.relatedAssets.find((related) => related.metadataType === 88);\r\n return (\r\n gpsAsset && {\r\n url: gpsAsset.fullUrl,\r\n name: gpsAsset.url.substring(gpsAsset.url.lastIndexOf(\"/\") + 1),\r\n }\r\n );\r\n}\r\n\r\nexport default class NomadFileList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n files: [],\r\n selectedFiles: [],\r\n loading: false,\r\n sort: { column: columns.name, ascending: true },\r\n };\r\n\r\n this.toggleColumnSort = this.toggleColumnSort.bind(this);\r\n this.selectFile = this.selectFile.bind(this);\r\n this.selectAll = this.selectAll.bind(this);\r\n this.acceptSelection = this.acceptSelection.bind(this);\r\n\r\n this.disabledActionButton = (\r\n \r\n );\r\n this.actionButton = (\r\n \r\n );\r\n }\r\n\r\n componentDidMount() {\r\n this.refreshFileList();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (\r\n this.props.folderId !== prevProps.folderId ||\r\n this.props.searchTerm !== prevProps.searchTerm ||\r\n this.props.mediaType !== prevProps.mediaType\r\n ) {\r\n this.refreshFileList();\r\n }\r\n }\r\n\r\n setActionButton() {\r\n if (!this.props.multiSelect) {\r\n this.props.setActionButton(null);\r\n } else {\r\n this.props.setActionButton(\r\n this.state.selectedFiles.length > 0\r\n ? this.actionButton\r\n : this.disabledActionButton\r\n );\r\n }\r\n }\r\n\r\n async refreshFileList() {\r\n if (!this.props.folderId) return;\r\n\r\n this.setState({ loading: true, files: [], loadedFileCount: 0 });\r\n await this.getFilesPage(0);\r\n }\r\n\r\n async getFilesPage(pageOffset) {\r\n const filters = [\r\n {\r\n fieldName: \"contentDefinitionId\",\r\n operator: \"Equals\",\r\n values: contentDefinitionId,\r\n },\r\n {\r\n fieldName: \"assetType\",\r\n operator: \"Equals\",\r\n values: assetTypes.file,\r\n },\r\n {\r\n fieldName: \"mediaType\",\r\n operator: \"Equals\",\r\n values: this.props.mediaType ?? mediaType.video,\r\n },\r\n ];\r\n if (!this.props.searchTerm) {\r\n filters.push({\r\n fieldName: \"parentId\",\r\n operator: \"Equals\",\r\n values: this.props.folderId,\r\n });\r\n }\r\n\r\n const postData = {\r\n filters,\r\n returnedFieldNames: [\r\n \"identifiers.createdDate\",\r\n \"identifiers.videoDuration\",\r\n \"identifiers.videoDurationDisplay\",\r\n \"identifiers.ownerName\",\r\n \"identifiers.ownerUsername\",\r\n \"identifiers.url\",\r\n \"identifiers.previewVideoFullUrl\",\r\n \"identifiers.parentId\",\r\n \"identifiers.displayPath\",\r\n ],\r\n pageOffset,\r\n pageSize: 50,\r\n };\r\n if (this.props.searchTerm) {\r\n postData.searchQuery = this.props.searchTerm;\r\n }\r\n\r\n const response = await axios.post(\r\n //\"https://app-api.nomad.mainroads.wa.gov.au/api/portal/search\",\r\n `${this.props.nomadApiUrl}/api/portal/search`,\r\n postData,\r\n {\r\n headers: {\r\n Authorization: `Bearer ${this.props.token}`,\r\n },\r\n }\r\n );\r\n\r\n const fileInfo = response && response.data;\r\n if (fileInfo) {\r\n var validItems =\r\n this.props.mediaType === mediaType.text\r\n ? fileInfo.items.filter((item) =>\r\n AcceptedGPSTypes.some((extension) =>\r\n item.title.toUpperCase().endsWith(extension)\r\n )\r\n )\r\n : fileInfo.items;\r\n this.setState(\r\n {\r\n files: [...this.state.files, ...validItems],\r\n loadedFileCount: this.state.loadedFileCount + fileInfo.items.length,\r\n },\r\n () => {\r\n if (fileInfo.totalItemCount > this.state.loadedFileCount)\r\n this.getFilesPage(pageOffset + 1);\r\n else this.setState({ loading: false });\r\n }\r\n );\r\n } else this.setState({ loading: false });\r\n }\r\n\r\n toggleColumnSort(e) {\r\n const column = parseInt(e.currentTarget.dataset.id);\r\n const ascending =\r\n this.state.sort.column === column ? !this.state.sort.ascending : true;\r\n this.setState({ sort: { column, ascending } });\r\n }\r\n\r\n headingClass(column, sortColumn) {\r\n return sortColumn === column\r\n ? this.state.sort.ascending\r\n ? \"sortAscending\"\r\n : \"sortDescending\"\r\n : null;\r\n }\r\n\r\n selectFile(e) {\r\n const { id, url, name } = e.currentTarget.dataset;\r\n if (this.props.multiSelect) {\r\n if (this.state.selectedFiles.includes(id)) {\r\n this.setState(\r\n {\r\n selectedFiles: this.state.selectedFiles.filter(\r\n (fileId) => fileId !== id\r\n ),\r\n },\r\n () => this.setActionButton()\r\n );\r\n } else {\r\n this.setState(\r\n { selectedFiles: [...this.state.selectedFiles, id] },\r\n () => this.setActionButton()\r\n );\r\n }\r\n } else {\r\n this.props.loadFiles([{ gps: { url, name } }]);\r\n }\r\n }\r\n\r\n selectAll() {\r\n if (this.state.files.length === this.state.selectedFiles.length) {\r\n this.setState({ selectedFiles: [] }, () => this.setActionButton());\r\n } else {\r\n this.setState(\r\n { selectedFiles: this.state.files.map((file) => file.id) },\r\n () => this.setActionButton()\r\n );\r\n }\r\n }\r\n\r\n async findAssociatedGps(fileId) {\r\n const response = await axios.get(\r\n `${this.props.nomadApiUrl}/api/asset/${fileId}/detail`,\r\n {\r\n headers: {\r\n Authorization: `Bearer ${this.props.token}`,\r\n },\r\n }\r\n );\r\n\r\n const detail = response && response.data;\r\n if (detail) {\r\n return findAssociatedGps(detail);\r\n }\r\n }\r\n\r\n async acceptSelection() {\r\n const forVideo =\r\n (this.props.mediaType ?? mediaType.video) === mediaType.video;\r\n if (!forVideo) return;\r\n\r\n const selectedFiles = this.state.files.filter((file) =>\r\n this.state.selectedFiles.includes(file.id)\r\n );\r\n\r\n this.setState({ loading: true, selectedFiles: [] }, () =>\r\n this.setActionButton()\r\n );\r\n const withAttachedGps = await Promise.all(\r\n selectedFiles.map(async (file) => ({\r\n video: {\r\n id: file.id,\r\n url: file.identifiers.previewVideoFullUrl,\r\n name: file.title,\r\n },\r\n gps: await this.findAssociatedGps(file.id),\r\n }))\r\n );\r\n this.setState({ loading: false });\r\n this.props.loadFiles(withAttachedGps);\r\n }\r\n\r\n render() {\r\n const forVideo =\r\n (this.props.mediaType ?? mediaType.video) === mediaType.video;\r\n const sortColumn =\r\n this.state.sort.column === columns.duration && !forVideo\r\n ? columns.name\r\n : this.state.sort.column;\r\n const files = [...this.state.files].map((file) => ({\r\n ...file,\r\n createdDate: new Date(file.identifiers.createdDate),\r\n }));\r\n function textSort(a, b) {\r\n const itemA = (a ?? \"\").toUpperCase();\r\n const itemB = (b ?? \"\").toUpperCase();\r\n if (itemA < itemB) return -1;\r\n if (itemA > itemB) return 1;\r\n return 0;\r\n }\r\n function dateSort(a, b) {\r\n return a - b;\r\n }\r\n files.sort((file1, file2) => {\r\n const f1 = this.state.sort.ascending ? file1 : file2;\r\n const f2 = this.state.sort.ascending ? file2 : file1;\r\n switch (sortColumn) {\r\n case columns.duration:\r\n return textSort(\r\n f1.identifiers.videoDuration,\r\n f2.identifiers.videoDuration\r\n );\r\n case columns.author:\r\n return textSort(\r\n f1.identifiers.ownerName ?? f1.identifiers.ownerUsername,\r\n f2.identifiers.ownerName ?? f2.identifiers.ownerUsername\r\n );\r\n case columns.created:\r\n return dateSort(f1.createdDate, f2.createdDate);\r\n default:\r\n return textSort(f1.title, f2.title);\r\n }\r\n });\r\n\r\n return (\r\n
\r\n
\r\n {this.state.loading ? (\r\n
Loading...
\r\n ) : (\r\n \r\n \r\n \r\n {this.props.multiSelect && this.state.files.length > 0 && (\r\n \r\n )}\r\n \r\n Name\r\n \r\n {forVideo && (\r\n \r\n Duration\r\n \r\n )}\r\n \r\n Author\r\n \r\n \r\n Created Date\r\n \r\n {this.props.searchTerm && }\r\n \r\n \r\n \r\n {files.map((file) => (\r\n \r\n {this.props.multiSelect && (\r\n \r\n )}\r\n \r\n {forVideo && (\r\n \r\n )}\r\n \r\n \r\n {this.props.searchTerm && (\r\n \r\n {file.identifiers.displayPath.substring(\r\n file.identifiers.displayPath.indexOf(\"/\") + 1,\r\n file.identifiers.displayPath.lastIndexOf(\"/\")\r\n )}\r\n \r\n )}\r\n \r\n ))}\r\n \r\n
\r\n \r\n Location
\r\n \r\n \r\n \r\n {file.title}\r\n {file.identifiers.videoDurationDisplay}\r\n {file.identifiers.ownerName ??\r\n file.identifiers.ownerUsername}\r\n {file.createdDate.toLocaleString()}
\r\n )}\r\n
\r\n {!this.state.loading && this.state.files.length > 0 ? (\r\n
\r\n {this.props.multiSelect\r\n ? `${this.state.selectedFiles.length} selected of ${this.state.files.length} files`\r\n : `${this.state.files.length} files`}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n","import { faFolder } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport axios from \"axios\";\r\nimport React from \"react\";\r\nimport { assetTypes, contentDefinitionId } from \"./NomadSelect\";\r\n\r\nexport default class NomadFolderList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = { folders: [], loading: false };\r\n }\r\n\r\n componentDidMount() {\r\n this.refreshFolderList();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.folderId !== prevProps.folderId) {\r\n this.refreshFolderList();\r\n }\r\n }\r\n\r\n async refreshFolderList() {\r\n if (!this.props.folderId) return;\r\n\r\n this.setState({ loading: true, folders: [] });\r\n await this.getFolderPage(0);\r\n }\r\n\r\n async getFolderPage(pageOffset) {\r\n const response = await axios.post(\r\n //\"https://app-api.nomad.mainroads.wa.gov.au/api/portal/search\",\r\n `${this.props.nomadApiUrl}/api/portal/search`,\r\n {\r\n filters: [\r\n {\r\n fieldName: \"contentDefinitionId\",\r\n operator: \"Equals\",\r\n values: contentDefinitionId,\r\n },\r\n {\r\n fieldName: \"assetType\",\r\n operator: \"Equals\",\r\n values: assetTypes.folder,\r\n },\r\n {\r\n fieldName: \"parentId\",\r\n operator: \"Equals\",\r\n values: this.props.folderId,\r\n },\r\n ],\r\n pageOffset,\r\n pageSize: 50,\r\n },\r\n {\r\n headers: {\r\n Authorization: `Bearer ${this.props.token}`,\r\n },\r\n }\r\n );\r\n\r\n const folderInfo = response && response.data;\r\n if (folderInfo) {\r\n this.setState(\r\n { folders: [...this.state.folders, ...folderInfo.items] },\r\n () => {\r\n if (folderInfo.totalItemCount > this.state.folders.length)\r\n this.getFolderPage(pageOffset + 1);\r\n else this.setState({ loading: false });\r\n }\r\n );\r\n } else this.setState({ loading: false });\r\n }\r\n\r\n render() {\r\n return (\r\n (this.state.loading || this.state.folders.length > 0) && (\r\n
\r\n {this.state.loading ? (\r\n
Loading...
\r\n ) : (\r\n this.state.folders.map((folder) => (\r\n \r\n \r\n {folder.title}\r\n
\r\n ))\r\n )}\r\n \r\n )\r\n );\r\n }\r\n}\r\n","import { faSearch } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n ApplicationMessage,\r\n messageState,\r\n} from \"@mrwa/rime-replacement/esriControls/general/ApplicationMessage\";\r\nimport axios from \"axios\";\r\nimport React from \"react\";\r\nimport { getCorpAuthToken } from \"../Auth\";\r\nimport { CrashContext } from \"../context\";\r\nimport NomadBreadcrumbs from \"./NomadBreadcrumbs\";\r\nimport NomadFileList, { mediaType, findAssociatedGps } from \"./NomadFileList\";\r\nimport NomadFolderList from \"./NomadFolderList\";\r\n\r\nimport \"./nomadSelect.css\";\r\n\r\nexport const contentDefinitionId = \"3ff29f61-bd0b-4c17-b855-49db5a292aeb\";\r\nconst startParentId = \"9dd7145a-7968-4a29-94bb-4e1dc5d8f83c\";\r\nexport const assetTypes = {\r\n folder: 1,\r\n file: 2,\r\n};\r\n\r\nfunction ensureUniqueName(name, existingNames, i = 0, originalName = null) {\r\n if (existingNames.indexOf(name) > -1) {\r\n const workingName = originalName ?? name;\r\n const left = workingName.substring(0, workingName.lastIndexOf(\".\"));\r\n const right = workingName.substring(workingName.lastIndexOf(\".\"));\r\n return ensureUniqueName(\r\n `${left}_${++i}${right}`,\r\n existingNames,\r\n i,\r\n workingName\r\n );\r\n }\r\n return name;\r\n}\r\n\r\nexport default class NomadSelect extends React.Component {\r\n static contextType = CrashContext;\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n mediaType: mediaType.video,\r\n multiSelect: true,\r\n searchValue: \"\", //search box text, as typing\r\n searchTerm: null, //accepted search text\r\n cancelButton: null,\r\n };\r\n\r\n this.props.setTitle(\r\n this.props.loadNomad\r\n ? \"Loading Nomad Video, Please Wait...\"\r\n : \"Select Nomad Video(s)\"\r\n );\r\n\r\n this.cancelFileSelectButton = (\r\n \r\n Cancel\r\n \r\n );\r\n\r\n this.navigateToFolder = this.navigateToFolder.bind(this);\r\n this.loadFiles = this.loadFiles.bind(this);\r\n this.searchValueChanged = this.searchValueChanged.bind(this);\r\n this.handleSearchKeyPress = this.handleSearchKeyPress.bind(this);\r\n this.performSearch = this.performSearch.bind(this);\r\n this.clearSearch = this.clearSearch.bind(this);\r\n this.setActionButton = this.setActionButton.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.props.loadNomad) {\r\n this.setState({ folderId: startParentId });\r\n await this.loadVideo(this.props.loadNomad, true);\r\n } else await this.loadFolder(startParentId);\r\n }\r\n\r\n async componentDidUpdate() {\r\n if (\r\n this.props.loadNomad &&\r\n this.state.awaitingMapInitialisation &&\r\n this.context.mapInitialised\r\n ) {\r\n await this.loadVideo(this.props.loadNomad, true);\r\n }\r\n }\r\n\r\n async loadFolder(folderId) {\r\n this.setState({ loading: true });\r\n const token = await getCorpAuthToken(this.context.username);\r\n\r\n this.setState({\r\n currentToken: token,\r\n folderId,\r\n loading: false,\r\n });\r\n }\r\n\r\n async loadVideo(assetId, defaultRedirect = false) {\r\n if (!this.context.mapInitialised) {\r\n this.setState({ awaitingMapInitialisation: true });\r\n return;\r\n }\r\n\r\n this.setState({ loading: true, awaitingMapInitialisation: false });\r\n const token = await getCorpAuthToken(\r\n this.context.username,\r\n defaultRedirect\r\n );\r\n\r\n try {\r\n const response = await axios.get(\r\n `${this.props.nomadApiUrl}/api/asset/${assetId}/detail`,\r\n {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n }\r\n );\r\n\r\n const detail = response && response.data;\r\n if (detail) {\r\n this.setState({ folderId: detail.properties.parentId });\r\n this.loadFiles([\r\n {\r\n video: {\r\n url: detail.properties.previewVideoFullUrl,\r\n name: detail.properties.displayName,\r\n },\r\n gps: await findAssociatedGps(detail),\r\n },\r\n ]);\r\n }\r\n } catch {\r\n messageState.message = ApplicationMessage.Error(\r\n \"Unable to load requested video\"\r\n );\r\n this.props.setTitle(\"Select Nomad Video(s)\");\r\n }\r\n\r\n this.setState({\r\n currentToken: token,\r\n loading: false,\r\n });\r\n }\r\n\r\n async navigateToFolder(e) {\r\n e.stopPropagation();\r\n const folderId = e.currentTarget.dataset.id;\r\n this.setState({ searchTerm: null });\r\n await this.loadFolder(folderId);\r\n }\r\n\r\n // this function is called with an array of {video: {url, name}, gps: {url, name}} objects.\r\n // When mediaType is video, we expect 1+ objects with or without gps already set\r\n // When mediaType is text, expect 1 object with only gps set\r\n loadFiles(files) {\r\n if (this.state.mediaType === mediaType.video) {\r\n this.setState(\r\n {\r\n files,\r\n mediaType: mediaType.text,\r\n multiSelect: false,\r\n },\r\n this.checkForGPS\r\n );\r\n } else {\r\n if (files.length !== 1)\r\n throw new Error(\"Unexpected files selection: expecting one file\");\r\n\r\n const updateIndex = this.state.files.findIndex((file) => !file.gps);\r\n const updatedFiles = [...this.state.files];\r\n const gps = files[0].gps;\r\n //can't have identical names for GPS files\r\n gps.name = ensureUniqueName(\r\n gps.name,\r\n this.state.files.filter((file) => file.gps).map((file) => file.gps.name)\r\n );\r\n updatedFiles[updateIndex] = { ...this.state.files[updateIndex], gps };\r\n this.setState({ files: updatedFiles }, this.checkForGPS);\r\n }\r\n }\r\n\r\n checkForGPS() {\r\n if (!this.state.files) return;\r\n\r\n const missingGpsFile = this.state.files.find((file) => !file.gps);\r\n if (missingGpsFile) {\r\n this.setState({ cancelButton: this.cancelFileSelectButton });\r\n this.props.setTitle(`Select GPS file for ${missingGpsFile.video.name}`);\r\n } else {\r\n this.props.filesSelected(this.state.files);\r\n }\r\n }\r\n\r\n searchValueChanged(ev) {\r\n this.setState({ searchValue: ev.target.value });\r\n }\r\n\r\n handleSearchKeyPress(ev) {\r\n if (ev.key === \"Enter\") this.performSearch();\r\n }\r\n\r\n performSearch() {\r\n this.setState({ searchTerm: this.state.searchValue });\r\n }\r\n\r\n clearSearch() {\r\n this.setState({ searchTerm: null });\r\n }\r\n\r\n setActionButton(actionButton) {\r\n this.props.setButtonOverrides({\r\n action: actionButton,\r\n cancel: this.state.cancelButton,\r\n });\r\n }\r\n\r\n cancelFileSelect() {\r\n const removeIndex = this.state.files.findIndex((file) => !file.gps);\r\n const files = [...this.state.files];\r\n files.splice(removeIndex, 1);\r\n this.setState({ files }, this.checkForGPS);\r\n }\r\n\r\n render() {\r\n return this.state.loading ? (\r\n
Loading...
\r\n ) : this.state.awaitingMapInitialisation ? (\r\n
Awaiting Map Initialisation...
\r\n ) : (\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n {!this.state.searchTerm && (\r\n \r\n )}\r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n","export const formatterDate = new Intl.DateTimeFormat(\"en-au\", {\r\n year: \"2-digit\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n});\r\n\r\nexport const formatterDay = new Intl.DateTimeFormat(\"en-au\", {\r\n weekday: \"short\",\r\n});\r\n\r\nexport const formatterTime = new Intl.DateTimeFormat(\"en-au\", {\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n second: \"2-digit\",\r\n hour12: true,\r\n});\r\n\r\nexport const formatterTime24 = new Intl.DateTimeFormat(\"en-au\", {\r\n hourCycle: \"h23\",\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n});\r\n\r\nexport const getSeverityColour = (\r\n displaySettings,\r\n value,\r\n defaultColour = \"transparent\"\r\n) => {\r\n const severitySetting = getSeveritySetting(displaySettings, value);\r\n return (severitySetting && severitySetting.colour) || defaultColour;\r\n};\r\n\r\nconst getSeveritySetting = (displaySettings, value) =>\r\n displaySettings && displaySettings.find((d) => d.value === value);\r\n\r\nexport async function loadFileAsText(fileUnion) {\r\n return new Promise((resolve, reject) => {\r\n fileUnion.case({\r\n FileSystem: (file) => {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n resolve(reader.result);\r\n };\r\n reader.onerror = reject;\r\n\r\n reader.readAsText(file);\r\n },\r\n Url: async (url) => {\r\n try {\r\n const response = await fetch(url);\r\n const data = await response.text();\r\n resolve(data);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n },\r\n });\r\n });\r\n}\r\n\r\nexport const downloadFile = (data, name) => {\r\n //download file\r\n const element = document.createElement(\"a\");\r\n element.href = data;\r\n element.download = name;\r\n document.body.appendChild(element); // Required for this to work in FireFox\r\n element.click();\r\n URL.revokeObjectURL(element);\r\n document.body.removeChild(element);\r\n};\r\n","import { formatterDate, formatterTime } from \"./misc\";\r\n\r\nexport function formatDate(date) {\r\n return formatterDate.format(date);\r\n}\r\n\r\nexport function formatTime(date) {\r\n return formatterTime.format(date).toUpperCase();\r\n}\r\n\r\n//converts from degrees to radians.\r\nfunction toRadians(degrees) {\r\n return (degrees * Math.PI) / 180;\r\n}\r\n\r\n//converts from radians to degrees.\r\nfunction toDegrees(radians) {\r\n return (radians * 180) / Math.PI;\r\n}\r\n\r\n//adds bearing data to an array\r\nexport function addBearing(gpsArray) {\r\n if (gpsArray.length === 1) return gpsArray;\r\n\r\n for (let i = 0; i < gpsArray.length - 1; i++) {\r\n gpsArray[i].bearingValue = calculateBearing(gpsArray[i], gpsArray[i + 1]);\r\n gpsArray[i].direction = calculateDirection(gpsArray[i]);\r\n }\r\n //setting direction and row of last index to the previous known direction\r\n gpsArray[gpsArray.length - 1].bearingValue =\r\n gpsArray[gpsArray.length - 2].bearingValue;\r\n gpsArray[gpsArray.length - 1].direction =\r\n gpsArray[gpsArray.length - 2].direction;\r\n //if vehicle is not moving then get last bearingValue & direction from when vehicle was moving and cascade through non traveling rows\r\n gpsArray.forEach((row, i) => {\r\n if (i === 0) return; //dont want to set if first index in array is 0 km/h\r\n if (row.speed === \"0 km/h\") {\r\n row.bearingValue = gpsArray[i - 1].bearingValue;\r\n row.direction = gpsArray[i - 1].direction;\r\n }\r\n });\r\n return gpsArray;\r\n}\r\n\r\n//calculates bearing based on a start/end latitude and longitude\r\nfunction calculateBearing(startPoint, endPoint) {\r\n const startLat = toRadians(startPoint.latitude);\r\n const startLng = toRadians(startPoint.longitude);\r\n const destLat = toRadians(endPoint.latitude);\r\n const destLng = toRadians(endPoint.longitude);\r\n\r\n const y = Math.sin(destLng - startLng) * Math.cos(destLat);\r\n const x =\r\n Math.cos(startLat) * Math.sin(destLat) -\r\n Math.sin(startLat) * Math.cos(destLat) * Math.cos(destLng - startLng);\r\n const bearing = toDegrees(Math.atan2(y, x));\r\n\r\n return (bearing + 360) % 360;\r\n}\r\n\r\nfunction calculateDirection(row) {\r\n if (row.bearingValue >= 0 && row.bearingValue <= 360) {\r\n const bearingSlice = 360 / 16;\r\n const slices = [\r\n \"N\",\r\n \"NNE\",\r\n \"NE\",\r\n \"ENE\",\r\n \"E\",\r\n \"ESE\",\r\n \"SE\",\r\n \"SSE\",\r\n \"S\",\r\n \"SSW\",\r\n \"SW\",\r\n \"WSW\",\r\n \"W\",\r\n \"WNW\",\r\n \"NW\",\r\n \"NNW\",\r\n \"N\",\r\n ];\r\n let sliceStart = 0 - bearingSlice / 2;\r\n let index = 0;\r\n while (sliceStart < row.bearingValue) {\r\n if (row.bearingValue <= sliceStart + bearingSlice) return slices[index];\r\n sliceStart += bearingSlice;\r\n index++;\r\n }\r\n } else {\r\n return \"\";\r\n }\r\n}\r\n\r\nexport const exportedForTesting = {\r\n toRadians,\r\n toDegrees,\r\n calculateBearing,\r\n calculateDirection,\r\n};\r\n","import { addBearing, formatDate, formatTime } from \"./baseParser\";\r\n\r\n/**\r\n * $RMC & GGA Rows have been extracted - indexes of arrays correspond to field numbers specified in following link\r\n * https://gpsd.gitlab.io/gpsd/NMEA.html#_rmc_recommended_minimum_navigation_information\r\n *\r\n * returns a time sorted unique array of GPS records\r\n */\r\nexport function parseRawData(fileData) {\r\n const row = fileData.split(\"\\n\");\r\n const splitRows = row.map((x) => x.split(\",\"));\r\n const dataRMC = splitRows.filter((x) => x[0].endsWith(\"RMC\"));\r\n const dataGGA = splitRows.filter((x) => x[0].endsWith(\"GGA\"));\r\n\r\n const rmcArray = dataRMC.map((rmc) => {\r\n const dateTime = new Date(convertGpsDate(rmc[9]) + convertGpsTime(rmc[1]));\r\n const sortingKey = new Date(\"1970-01-01\" + convertGpsTime(rmc[1]));\r\n return {\r\n sortingKey,\r\n dateTime,\r\n latitude: coordinateConvert(rmc[3], true),\r\n longitude: coordinateConvert(rmc[5], false),\r\n date: convertGpsDate(rmc[9]),\r\n speed: convertSpeed(rmc[7]),\r\n time: convertGpsTime(rmc[1]),\r\n dateDisplay: formatDate(dateTime),\r\n timeDisplay: formatTime(dateTime),\r\n dateSet: true,\r\n };\r\n });\r\n const ggaArray = dataGGA.map((gga) => {\r\n const dateString =\r\n rmcArray.length > 0\r\n ? rmcArray[0].dateTime.toISOString().substring(0, 10)\r\n : \"1970-01-01\";\r\n const dateTime = new Date(dateString + convertGpsTime(gga[1]));\r\n const sortingKey = new Date(\"1970-01-01\" + convertGpsTime(gga[1]));\r\n return {\r\n sortingKey,\r\n dateTime,\r\n latitude: coordinateConvert(gga[2], true),\r\n longitude: coordinateConvert(gga[4], false),\r\n speed: \"Unknown\",\r\n time: convertGpsTime(gga[1]),\r\n dateDisplay: formatDate(dateTime),\r\n timeDisplay: formatTime(dateTime),\r\n dateSet: rmcArray.length > 0,\r\n };\r\n });\r\n\r\n const mergedData = [...rmcArray, ...ggaArray];\r\n const uniqueRows = Array.from(new Set(mergedData.map((a) => a.time))).map(\r\n (time) => {\r\n return mergedData.find((a) => a.time === time);\r\n }\r\n );\r\n const sortedRows = uniqueRows.sort((a, b) => a.sortingKey - b.sortingKey);\r\n\r\n return addBearing(sortedRows);\r\n}\r\n\r\n//converting latitude/longitude from the given geometry string\r\nfunction coordinateConvert(geom, latitude) {\r\n const wholepart = latitude ? geom.slice(0, 2) : geom.slice(0, 3);\r\n const fractional = latitude\r\n ? geom.slice(2, 4) + geom.slice(4, 10)\r\n : geom.slice(3, 5) + geom.slice(5, 11);\r\n\r\n const combinedResult = parseInt(wholepart) + parseFloat(fractional) / 60;\r\n const result = latitude ? \"-\" + combinedResult : combinedResult;\r\n\r\n return parseFloat(result).toFixed(6);\r\n}\r\n\r\n//converts speed into a whole number and converts from knots to km/h\r\nfunction convertSpeed(speed) {\r\n return `${(speed = parseInt(speed * 1.852))} km/h`;\r\n}\r\n\r\n//creates a string that can be used to create a date object\r\nfunction convertGpsTime(time) {\r\n const convertHr = time.slice(0, 2) + \":\" + time.slice(2);\r\n const convertMin = convertHr.slice(0, 5) + \":\" + convertHr.slice(5);\r\n const finalTime = \"T\" + convertMin + \"Z\";\r\n\r\n return finalTime;\r\n}\r\n\r\n//creates a date string that can be used to create a date object - appends year with '20' as data row only gives us last two digits\r\nfunction convertGpsDate(date) {\r\n const day = date.slice(0, 2);\r\n const month = date.slice(2, 4);\r\n const year = date.slice(4, 6);\r\n const finalDate = \"20\" + year + \"-\" + month + \"-\" + day;\r\n\r\n return finalDate;\r\n}\r\n\r\nexport const exportedForTesting = {\r\n convertGpsTime,\r\n convertGpsDate,\r\n coordinateConvert,\r\n};\r\n","import goproTelemetry from \"gopro-telemetry\";\r\nimport gpmfExtract from \"gpmf-extract\";\r\nimport { XMLBuilder } from \"fast-xml-parser\";\r\nimport { downloadFile } from \"../data/misc\";\r\nimport { parseRawData as parseRawNmeaData } from \"../data/nmeaParser\";\r\n\r\nconst BlackVueH265StartPoint = 82246;\r\nconst BlackVueH264StartPoint = 82189;\r\n\r\nexport async function extractGoPro(file, onProgress, cancellationToken) {\r\n onProgress({\r\n extractionState: \"Extracting Telemetry\",\r\n extractionPercent: 0,\r\n });\r\n const progress = (percent) => onProgress({ extractionPercent: percent });\r\n let extracted;\r\n try {\r\n extracted = await gpmfExtract(file, {\r\n browserMode: true,\r\n progress,\r\n //if there is an error in extracting while using webworkers that doesn't kill the extraction process, the process can't be cancelled without refreshing the page.\r\n //using the standard thread rather than webWorker enables the error thrown by the extractor to hit the exception handler below\r\n useWorker: false,\r\n cancellationToken,\r\n });\r\n } catch (e) {\r\n if (!(e.startsWith && e.startsWith(\"Canceled\"))) {\r\n throw new Error(e.message ?? e);\r\n }\r\n //extraction process was cancelled\r\n return;\r\n }\r\n\r\n const endDate = new Date(extracted.timing.start);\r\n endDate.setSeconds(endDate.getSeconds() + extracted.timing.videoDuration);\r\n\r\n onProgress({\r\n extractionState: \"Processing Telemetry\",\r\n extractionPercent: 0,\r\n });\r\n //goproTelemetry function expects node's setImmediate function to be defined, which it isn't in the browser. setTimeout 0 is equivalent\r\n if (!window.setImmediate) window.setImmediate = (x) => setTimeout(x, 0);\r\n const telemetry = await goproTelemetry(extracted, {\r\n //see https://github.com/JuanIrache/gopro-telemetry for options\r\n groupTimes: 1, //Sample at 1Hz\r\n disableMerging: true,\r\n disableInterpolaltion: true,\r\n stream: [\"GPS5\"],\r\n GPS5Precision: 625, //using default values from https://goprotelemetryextractor.com/free/\r\n GPS5Fix: 2,\r\n WrongSpeed: 563, //m/s\r\n progress: (percent) => onProgress({ extractionPercent: percent * 100 }),\r\n });\r\n\r\n const samples = telemetry[\"1\"].streams.GPS5.samples;\r\n const recordedPath = samples\r\n .filter((x) => new Date(x.date) < endDate)\r\n .sort((x1, x2) => new Date(x1.date) - new Date(x2.date))\r\n //was sampled at 1Hz above in order to ensure all values were retrieved, now reduce to 1 record per second\r\n .reduce(\r\n (result, item) =>\r\n !result.length ||\r\n item.date.getSeconds() !== result[result.length - 1].date.getSeconds()\r\n ? [...result, item]\r\n : result,\r\n []\r\n )\r\n .map((x) => ({\r\n //see https://www.topografix.com/gpx_manual.asp#trkpt for valid fields\r\n \"@_lat\": x.value[0],\r\n \"@_lon\": x.value[1],\r\n time: x.date.toISOString(),\r\n ele: x.value[2].toFixed(2),\r\n speed: x.value[3].toFixed(2),\r\n }));\r\n\r\n downloadAsGpx(recordedPath, file.name, telemetry[\"1\"][\"device name\"]);\r\n}\r\n\r\nexport async function extractBlackVue(\r\n file,\r\n onProgress,\r\n cancellationToken,\r\n isHEVC = false\r\n) {\r\n const startLocation = isHEVC\r\n ? BlackVueH265StartPoint\r\n : BlackVueH264StartPoint;\r\n\r\n //extracts the NMEA lines from the video file, given startLocation\r\n function getNMEA(progress) {\r\n return new Promise((resolve, _) => {\r\n const reader = new FileReader();\r\n const decoder = new TextDecoder();\r\n const fileSize = file.size;\r\n //not accurate, but from testing should give some semblence of progress\r\n const likelyChunkCount = fileSize / 4925000;\r\n let location = startLocation;\r\n let i = 0;\r\n const results = [];\r\n reader.onload = () => {\r\n progress((++i / likelyChunkCount) * 100);\r\n const textResult = decoder.decode(reader.result);\r\n results.push(textResult);\r\n if (location > fileSize || new Uint8Array(reader.result).includes(0))\r\n resolve(results.join(\"\").replaceAll(\"\\n\\n\", \"\\n\"));\r\n else {\r\n if (cancellationToken && cancellationToken.cancelled) resolve(null);\r\n else {\r\n location += 1000;\r\n reader.readAsArrayBuffer(file.slice(location, location + 1000));\r\n }\r\n }\r\n };\r\n reader.readAsArrayBuffer(file.slice(location, location + 1000));\r\n });\r\n }\r\n\r\n onProgress({\r\n extractionState: \"Extracting GPS Data\",\r\n extractionPercent: 0,\r\n });\r\n\r\n const nmea = await getNMEA((extractionPercent) =>\r\n onProgress({ extractionPercent })\r\n );\r\n if (!nmea)\r\n //cancelled\r\n return;\r\n const recordedPath = parseRawNmeaData(nmea).map((x) => {\r\n const speed = parseInt(x.speed) / 3.6;\r\n return {\r\n //see https://www.topografix.com/gpx_manual.asp#trkpt for valid fields\r\n \"@_lat\": x.latitude,\r\n \"@_lon\": x.longitude,\r\n time: x.dateTime.toISOString(),\r\n speed: isNaN(speed) ? undefined : speed,\r\n };\r\n });\r\n\r\n downloadAsGpx(\r\n recordedPath,\r\n file.name,\r\n isHEVC ? \"BlackVue HEVC\" : \"BlackVue AVC\"\r\n );\r\n}\r\n\r\nfunction downloadAsGpx(recordedPath, fileName, name) {\r\n const xmlAsJson = {\r\n gpx: {\r\n \"@_xmlns\": \"http://www.topografix.com/GPX/1/0\",\r\n \"@_xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\r\n trk: {\r\n name,\r\n trkseg: {\r\n trkpt: recordedPath,\r\n },\r\n },\r\n },\r\n };\r\n const xmlBuilder = new XMLBuilder({\r\n ignoreAttributes: false,\r\n });\r\n const xml = xmlBuilder.build(xmlAsJson);\r\n\r\n //download file\r\n const gpx = new Blob([xml], {\r\n type: \"application/gpx+xml\",\r\n endings: \"native\",\r\n });\r\n downloadFile(\r\n URL.createObjectURL(gpx),\r\n `${fileName.substr(0, fileName.lastIndexOf(\".\"))}.GPX`\r\n );\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHdUExURS0tLS4uLjIyMp2dnaCgoHR0dDMzM0FBQVlZWV9fX2ZmZmtra2pqamhoaFxcXDU1NT8/P9fX18/Pz87OzpOTk0NDQ5aWluDg4OHh4d3d3dPT09DQ0GlpaePj48zMzLy8vLS0tJKSkj09PTQ0NIyMjMPDw9/f3+vr6/Dw8PHx8fX19X9/f9bW1tTU1OXl5aGhoURERC8vL6SkpPLy8u7u7unp6dzc3MLCwrm5uXd3d9LS0tra2t7e3ra2tk9PT9jY2OLi4vT09Pn5+T4+Pu/v79HR0cDAwLq6usvLy11dXaampvr6+vb29ujo6MTExLu7u/Pz8+3t7cXFxVpaWr6+vvv7+/39/YCAgOfn59XV1X19fdvb23p6evf398fHx7Gxsbi4uMrKytnZ2ebm5n5+fuzs7Pz8/Jqamjc3N/7+/vj4+M3NzUBAQI6OjsjIyDw8PMHBwf///+Tk5ElJSampqerq6js7O1ZWVpSUlMbGxsnJyb29vaqqqkpKSoeHh4aGhjk5OaioqJGRkXh4eJWVlTo6OrOzszAwMGdnZ7+/v3l5eXV1dVVVVWBgYFRUVDg4OE1NTaOjo0xMTKenp62tra+vr56enjY2NoGBgYSEhLW1tXx8fIqKijExMVFRUbh5t3IAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANuSURBVEhL7ZTrX9JQGMc3MrsnaHk5RKaLbRJQOkBaFDAoqIGQydoiTDDIqWGjpIwuVmL37H6vv7WzcWjWeNGL3tX3DZzf55w9v99zng3718HR759h2tC2sd14ZNPmLVu3bd+xswOtdcyWzq5du38/Yeru6e2zAGDdgwQds21v/76BQbRqQuy3W0mKHnIcQAI03gAzO11uynbw0DASGhAjjMfr6xz1H/65sYmZZIHrSODosWEkaBDdwBUMUWFOr9AkEg0dPxGzs/GT63MQp/hE0jKWSh1Ggk7EGg9E08xp2/gZE5IgxP7YRBdJZ4SzSNCJiBbAskDyibZz7UhTK2QEjnZnpfNI0ENHRG80nOPp7KT/woGfyYmB0amJfGHac9EQepChyK6JqfFgkS9xl2aQSrQxGUGWM7PG0IOkRFIJgafdBcDOdc83VOIUk+yTWAB0S00G+VKazKdS+YIYTScSY2ZNJS6XJdtpmkkYKyywsSuSd1ZQBD7BFCvSyFX1QohrsqLIJc54AF9wCLKQowISgMBe0XMnoUyMLJKwey0s4dVicMx/xdpD0WFOUCC88zqOETcAuQgdccZ7qB7x0SVYv28pzETF4M1abHxuo6njFpRUT8YMVV6WeU/IcuH2nTIoVKJwKSfvLt9LewNOAFzGLlVD+VgtnvWOzXfcz6mWZI6y9D9YWQK9RTqdM4au2hYz6r7Oecy0Irqdk/2xctaTyylqmxTFkAGvqx5yxZ5V+A49fLQ0zWTgWlYTCA4qVDBaqnuyS/7HXYET6o2ZntDqToEvZuO1mN3qS15s7FpH3VKIluAjoSUI/rS3Ik2mUuXCIgfLyLKxrcucWl4R8o0pwp9NiWnNlaq2yIDVeYHzSnb/wYXGevi5TdsJm033Hh/V3zg05vhysJbKk2mhcx4J+Iss7ak4y7XUuOQOnzW8D2v0rFa/kUHj5SvgE9VutbS0BjPIsDEogwr+2ooStDwAR8jtsvvbUAaNyM0MHPdceIg2tnWtj3VlxXBpnSXIoWvqtMN5N3wE8BlHRquvh9aovqHTCV6AlpCAjmHYjHYPcin+SwUMa3+rjaIxwwxXciR9gH0XQUKT+vtEywMfWL/dVfEMTf5WAaZbERT5I1roDH9a/QxZ/bLuQ9nkq3t6B/r7Z3w79v2Xb/p//jIY9gNjo+5PRTGDKgAAAABJRU5ErkJggg==\"","import React from \"react\";\r\nimport { Modal } from \"@mrwa/rime-replacement/esriControls/general/Dialog\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faFolderOpen,\r\n faMapMarkerAlt,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {\r\n ApplicationMessage,\r\n messageState,\r\n} from \"@mrwa/rime-replacement/esriControls/general/ApplicationMessage\";\r\nimport NomadSelect from \"./NomadSelect\";\r\nimport { extractGoPro, extractBlackVue } from \"./extractions\";\r\nimport nomadImage from \"./Nomad.png\";\r\nimport { FileType } from \"../data/fileType\";\r\nimport { AuthContext } from \"../context\";\r\n\r\nimport \"./openFileDialog.css\";\r\n\r\n// Every manufacturer appears to have an identifying signature in the first few bytes of a video.\r\n// These have been taken from the method used in VideoTripper\r\n// Update the rendered instructions if this list changes\r\nconst ManufacturerSignatures = {\r\n GoPro: \"47 50 52 4f\", //bytes 28 to 31\r\n BlackVue: \"6D 70 34 32 6D 70 34 32 00 04 B1 25 66 72 65 65\", //h.264\r\n};\r\n\r\nconst UnsupportedSignatures = {\r\n BlackVue: \"6d 70 34 32 6d 70 34 32 00 04 b1 25 66 72 65 65\", //h.265\r\n};\r\n\r\n// Update the rendered instructions if this list changes\r\nexport const AcceptedGPSTypes = [\"NMEA\", \"GPX\", \"LOG\"];\r\n\r\nexport default class OpenOrExtractFileDialog extends React.Component {\r\n static contextType = AuthContext;\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n extracting: false,\r\n nomadSelect: props.loadNomad != null,\r\n extractionState: \"\",\r\n extractionPercent: 0,\r\n };\r\n\r\n this.mainFileInputClicked = this.mainFileInputClicked.bind(this);\r\n this.filesSelected = this.filesSelected.bind(this);\r\n this.nomadFilesSelected = this.nomadFilesSelected.bind(this);\r\n\r\n this.extractFileInputClicked = this.extractFileInputClicked.bind(this);\r\n this.validateExtractFile = this.validateExtractFile.bind(this);\r\n this.nomadSelectClicked = this.nomadSelectClicked.bind(this);\r\n\r\n this.mainFileInput = React.createRef();\r\n this.extractFileInput = React.createRef();\r\n }\r\n\r\n mainFileInputClicked() {\r\n this.mainFileInput.current.click();\r\n }\r\n\r\n extractFileInputClicked() {\r\n this.extractFileInput.current.click();\r\n }\r\n\r\n nomadSelectClicked() {\r\n this.setState({ nomadSelect: true });\r\n }\r\n\r\n filesSelected(e) {\r\n const isGps = (type) => {\r\n const result = AcceptedGPSTypes.some((extension) =>\r\n type.toUpperCase().endsWith(extension)\r\n );\r\n return result;\r\n };\r\n const files = Array.from(e.target.files);\r\n const videoFiles = files\r\n .filter((file) => !isGps(file.name))\r\n .map((file) => FileType.FileSystem(file));\r\n const gpsFiles = files\r\n .filter((file) => isGps(file.name))\r\n .map((file) => FileType.FileSystem(file));\r\n\r\n if (gpsFiles.length !== videoFiles.length) {\r\n messageState.message = ApplicationMessage.Error(\r\n \"Video and GPS file counts do not match\"\r\n );\r\n } else {\r\n this.props.filesSelected(videoFiles, gpsFiles);\r\n this.mainFileInput.current.value = null;\r\n }\r\n }\r\n\r\n nomadFilesSelected(files) {\r\n if (files.length > 0) {\r\n this.props.filesSelected(\r\n files.map(({ video }) => FileType.Url(video.url, video.name)),\r\n files.map(({ gps }) => FileType.Url(gps.url, gps.name)),\r\n files.map(({ video, gps }) => ({ video: video.name, gps: gps.name }))\r\n );\r\n }\r\n this.setState({ nomadSelect: false });\r\n }\r\n\r\n validateExtractFile(e) {\r\n if (e.target.files.length !== 1) return;\r\n\r\n const file = e.target.files[0];\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const fileSignature = [...new Uint8Array(reader.result)]\r\n .map((x) => x.toString(16).padStart(2, \"0\"))\r\n .join(\" \");\r\n const match = Object.entries(ManufacturerSignatures)\r\n .filter(([_, value]) => fileSignature.includes(value))\r\n .map(([_, value]) => value)[0];\r\n\r\n switch (match) {\r\n case ManufacturerSignatures.GoPro:\r\n this.processGoPro(file);\r\n break;\r\n case ManufacturerSignatures.BlackVue:\r\n this.processBlackVue(file);\r\n break;\r\n default:\r\n const matchUnsupported = Object.entries(UnsupportedSignatures)\r\n .filter(([_, value]) => fileSignature.includes(value))\r\n .map(([_, value]) => value)[0];\r\n switch (matchUnsupported) {\r\n case UnsupportedSignatures.BlackVue:\r\n messageState.message = ApplicationMessage.Confirm(\r\n \"The video you have selected is from a BlackVue camera with H.265 (HEVC) enabled. Browsers supported by Road View currently do not support the H.265 (HEVC) codec. Road View can extract GPS data for this video, but the video itself will not be able to be viewed in Road View. If your camera supports recording to H.264 (AVC), enable this codec instead.\",\r\n () => this.processBlackVue(file, true),\r\n \"Invalid Codec Detected\"\r\n );\r\n break;\r\n default:\r\n const validVideoManufactuers = Object.keys(\r\n ManufacturerSignatures\r\n ).join(\"/\");\r\n messageState.message = ApplicationMessage.Error(\r\n `Unrecognised video type. This tool can only extract from ${validVideoManufactuers} videos`\r\n );\r\n break;\r\n }\r\n }\r\n };\r\n reader.readAsArrayBuffer(file.slice(8, 32));\r\n }\r\n\r\n async processGoPro(file) {\r\n this.setState({ extracting: true });\r\n this.cancellationToken = { cancelled: false };\r\n try {\r\n await extractGoPro(\r\n file,\r\n (progress) => this.setState(progress),\r\n this.cancellationToken\r\n );\r\n } catch (e) {\r\n messageState.message = ApplicationMessage.Error(e.message);\r\n } finally {\r\n this.setState({ extracting: false });\r\n }\r\n }\r\n\r\n async processBlackVue(file, isHEVC = false) {\r\n this.setState({ extracting: true });\r\n this.cancellationToken = { cancelled: false };\r\n try {\r\n await extractBlackVue(\r\n file,\r\n (progress) => this.setState(progress),\r\n this.cancellationToken,\r\n isHEVC\r\n );\r\n } catch (e) {\r\n messageState.message = ApplicationMessage.Error(e.message);\r\n } finally {\r\n this.setState({ extracting: false });\r\n }\r\n }\r\n\r\n close() {\r\n if (this.cancellationToken) this.cancellationToken.cancelled = true;\r\n this.setState({ extracting: false, nomadSelect: false });\r\n this.props.onReject();\r\n }\r\n\r\n renderExtract() {\r\n const footerContents = (\r\n <>\r\n (this.cancellationToken.cancelled = true)}\r\n >\r\n Cancel\r\n \r\n \r\n );\r\n\r\n const modalProps = {\r\n show: this.props.show,\r\n onReject: this.close.bind(this),\r\n panelClass: \"openFileDialog\",\r\n contentsClass: \"contents\",\r\n title: this.state.extractionState,\r\n footerContents,\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n {this.state.extractionPercent}%\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n renderNomadSelect() {\r\n if (!this.context.isCorp) return this.renderStandard();\r\n\r\n const footerContents = (\r\n <>\r\n {(!this.props.loadNomad &&\r\n this.state.buttonOverrides &&\r\n this.state.buttonOverrides.cancel) || (\r\n {\r\n if (this.props.loadNomad) this.close();\r\n else this.setState({ nomadSelect: false, buttonOverrides: null });\r\n }}\r\n >\r\n Cancel\r\n \r\n )}\r\n {this.state.buttonOverrides && this.state.buttonOverrides.action}\r\n \r\n );\r\n\r\n const modalProps = {\r\n show: this.props.show,\r\n onReject: this.close.bind(this),\r\n panelClass: \"openFileDialog\",\r\n contentsClass: \"contents\",\r\n title: this.state.nomadSelectTitle,\r\n footerContents,\r\n };\r\n\r\n return (\r\n \r\n this.setState({ nomadSelectTitle: title })}\r\n filesSelected={this.nomadFilesSelected}\r\n setButtonOverrides={(buttons) =>\r\n this.setState({ buttonOverrides: buttons })\r\n }\r\n loadNomad={this.props.loadNomad}\r\n nomadApiUrl={this.props.nomadApiUrl}\r\n />\r\n \r\n );\r\n }\r\n\r\n renderStandard() {\r\n const footerContents = (\r\n <>\r\n \r\n Load\r\n \r\n \r\n `.${x}`)].join(\r\n \", \"\r\n )}\r\n multiple\r\n onChange={this.filesSelected}\r\n style={{ display: \"none\" }}\r\n ref={this.mainFileInput}\r\n >\r\n \r\n Extract\r\n \r\n \r\n {this.context.isCorp && (\r\n \r\n Nomad\r\n \"\"\r\n \r\n )}\r\n \r\n \r\n );\r\n\r\n const modalProps = {\r\n show: this.props.show,\r\n onReject: this.props.onReject,\r\n panelClass: \"openFileDialog\",\r\n contentsClass: \"contents\",\r\n title: \"Select Files\",\r\n footerContents,\r\n };\r\n\r\n return (\r\n \r\n
\r\n

\r\n Road View can load one or many video files with associated GPS\r\n metadata files. GPS file types that are supported are:\r\n

\r\n
    \r\n
  • \r\n .NMEA e.g. from Navman cameras\r\n
  • \r\n
  • \r\n .GPX e.g. from Garmin cameras\r\n
  • \r\n
  • \r\n .LOG containing NMEA data, e.g. from select Sony\r\n cameras\r\n
  • \r\n
\r\n

\r\n In addition, Road View can extract GPS metadata into a .GPX file\r\n from videos by the following manufacturers:\r\n

\r\n
    \r\n
  • \r\n GoPro (Hero5 and later)\r\n
  • \r\n
  • \r\n BlackVue (Models that support embedding GPS data\r\n and H.264 video encoding)\r\n
  • \r\n
\r\n

\r\n The .GPX file will be downloaded automatically by your browser once\r\n extraction is complete.\r\n

\r\n

\r\n \r\n It is strongly suggested that files for extraction are stored on a\r\n local drive, rather than a network location, for faster processing\r\n speed.\r\n \r\n

\r\n
\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n if (this.state.extracting) return this.renderExtract();\r\n if (this.state.nomadSelect) return this.renderNomadSelect();\r\n return this.renderStandard();\r\n }\r\n}\r\n","import { XMLParser } from \"fast-xml-parser\";\r\nimport { addBearing, formatDate, formatTime } from \"./baseParser\";\r\n\r\n/**\r\n * format specification (for v1.0, no change to v1.1 for the sections we care about) https://www.topografix.com/gpx_manual.asp#trkpt\r\n *\r\n * @returns a time sorted unique array of GPS records\r\n */\r\nexport function parseRawData(fileData) {\r\n const parser = new XMLParser({ ignoreAttributes: false });\r\n const json = parser.parse(fileData);\r\n\r\n const rows = json.gpx.trk.trkseg.trkpt.map((trkpt) => {\r\n const date = new Date(Date.parse(trkpt.time));\r\n return {\r\n sortingKey: date,\r\n dateTime: date,\r\n latitude: coordinateConvert(trkpt[\"@_lat\"]),\r\n longitude: coordinateConvert(trkpt[\"@_lon\"]),\r\n speed: convertSpeed(trkpt.speed) ?? \"Unknown\",\r\n dateDisplay: formatDate(date),\r\n timeDisplay: formatTime(date),\r\n dateSet: true,\r\n };\r\n });\r\n\r\n const sortedRows = rows.sort((a, b) => a.sortingKey - b.sortingKey);\r\n\r\n return addBearing(sortedRows);\r\n}\r\n\r\n//converting latitude/longitude from the given geometry string\r\nfunction coordinateConvert(geom) {\r\n return parseFloat(geom).toFixed(6);\r\n}\r\n\r\n//converts speed from m/s to km/h\r\nfunction convertSpeed(speed) {\r\n return speed != null ? `${(speed * 3.6).toFixed(0)} km/h` : null;\r\n}\r\n","import { parseRawData as parseNmeaData } from \"./nmeaParser\";\r\nimport { parseRawData as parseGpxData } from \"./gpxParser\";\r\nimport mapHelper from \"@mrwa/rime-replacement/infrastructure/mapHelper\";\r\nimport requestEsriModules from \"@mrwa/rime-replacement/infrastructure/esriModules\";\r\n\r\nexport const bufferDistanceMetres = 50;\r\n\r\n/**\r\n * parses the incoming gps data for the lat/long points and generates a buffered line that encompasses the route\r\n */\r\nasync function calculateBufferedLine(dataRows) {\r\n const { GeometryUtils, GeometryEngine } = await requestEsriModules({\r\n GeometryUtils: \"esri/geometry/support/jsonUtils\",\r\n GeometryEngine: \"esri/geometry/geometryEngineAsync\",\r\n });\r\n\r\n const pathGeo = dataRows\r\n .map(\r\n (row) =>\r\n !(isNaN(row.longitude) || isNaN(row.latitude)) && [\r\n row.longitude,\r\n row.latitude,\r\n ]\r\n )\r\n .filter((point) => point);\r\n const line = await mapHelper.projectToView(\r\n GeometryUtils.fromJSON({\r\n paths: [pathGeo],\r\n })\r\n );\r\n //50 metres allows for the gps data to not align perfectly with the road -\r\n //could potentially be made smaller if too many close roads are being picked up and performance becomes an issue\r\n return await GeometryEngine.buffer(line, bufferDistanceMetres, \"meters\");\r\n}\r\n\r\nasync function gpsToPoint(gpsRow) {\r\n const { Point } = await requestEsriModules({\r\n Point: \"esri/geometry/Point\",\r\n });\r\n\r\n const { latitude, longitude } = gpsRow;\r\n return await mapHelper.projectToView(\r\n new Point({\r\n latitude,\r\n longitude,\r\n spatialReference: { wkid: 4326 }, //4326 is WGS84, spatial reference used by GPS systems\r\n })\r\n );\r\n}\r\n\r\nexport function parseGpsData(data, fileType, includeGeometry = false) {\r\n switch (fileType) {\r\n case \"NMEA\":\r\n case \"LOG\":\r\n return parseNmeaData(data).map((gpsRow) => ({\r\n ...gpsRow,\r\n projectedGeometry: includeGeometry && gpsToPoint(gpsRow),\r\n }));\r\n case \"GPX\":\r\n return parseGpxData(data).map((gpsRow) => ({\r\n ...gpsRow,\r\n projectedGeometry: includeGeometry && gpsToPoint(gpsRow),\r\n }));\r\n default:\r\n throw new Error(`Unknown GPS file type: ${fileType}`);\r\n }\r\n}\r\n\r\nexport default class gpsData {\r\n #dataRows;\r\n #bufferedLine;\r\n #offsetSeconds;\r\n\r\n get bufferedGeometry() {\r\n return this.#bufferedLine;\r\n }\r\n\r\n readGpsFile(fileUnion, onReadComplete) {\r\n this.#dataRows = null;\r\n fileUnion.case({\r\n FileSystem: (file) => {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const data = reader.result;\r\n const fileType =\r\n file.type.toUpperCase() ||\r\n file.name.substring(file.name.lastIndexOf(\".\") + 1).toUpperCase();\r\n\r\n this.#dataRows = parseGpsData(data, fileType, true);\r\n this.#bufferedLine = calculateBufferedLine(this.#dataRows);\r\n\r\n onReadComplete &&\r\n onReadComplete(this.#dataRows, this.bufferedGeometry);\r\n };\r\n\r\n reader.readAsText(file);\r\n },\r\n Url: async (url, name) => {\r\n const gpsDataResponse = await fetch(url);\r\n const data = await gpsDataResponse.text();\r\n this.#dataRows = parseGpsData(\r\n data,\r\n name.substring(name.lastIndexOf(\".\") + 1).toUpperCase(),\r\n true\r\n );\r\n this.#bufferedLine = calculateBufferedLine(this.#dataRows);\r\n\r\n onReadComplete && onReadComplete(this.#dataRows, this.bufferedGeometry);\r\n },\r\n });\r\n }\r\n\r\n setTimeOffset(offsetSeconds) {\r\n this.#offsetSeconds = offsetSeconds;\r\n }\r\n\r\n /**\r\n * given a specified time the function will return the data of the nearest point before that time in the timeline\r\n */\r\n getDataAtTime(time) {\r\n if (!this.#dataRows) return null;\r\n\r\n //creating a timeline in milliseconds\r\n //have to start timeline at 1970 as some rows don't have dates set\r\n const timeline = this.#dataRows.map((data) =>\r\n data.dateSet\r\n ? data.dateTime.getTime()\r\n : Date.parse(\"1970-01-01\" + data.time)\r\n );\r\n const firstTime = timeline[0];\r\n const gpsDesiredTime =\r\n firstTime + (time + (this.#offsetSeconds ?? 0)) * 1000;\r\n const cutTimeline = timeline.filter((time) => time <= gpsDesiredTime);\r\n\r\n const result = this.#dataRows[cutTimeline.length - 1];\r\n return {\r\n ...result,\r\n isValidGeometry:\r\n result && !isNaN(result.latitude) && !isNaN(result.longitude),\r\n };\r\n }\r\n}\r\n","import React from \"react\";\r\nimport playerContext from \"../data/playerContext\";\r\nimport VideoToGpsMatchDialog from \"../playlist/VideoToGpsMatchDialog\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faFolderOpen } from \"@fortawesome/free-regular-svg-icons\";\r\nimport OpenOrExtractFileDialog from \"../fileSelection/OpenOrExtractFileDialog\";\r\nimport { getFileName } from \"../data/fileType\";\r\nimport { loadFileAsText } from \"../data/misc\";\r\nimport { parseGpsData } from \"../data/gpsData\";\r\n\r\nimport \"./videoPlayer.css\";\r\n\r\nexport default React.forwardRef((props, ref) => (\r\n \r\n));\r\n\r\nclass VideoPlayer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const url = new URLSearchParams(window.location.search);\r\n const loadNomad = url.has(\"nomadId\") ? url.get(\"nomadId\") : null;\r\n this.state = {\r\n gpsRows: [],\r\n videoUrl: null,\r\n playingName: null,\r\n showVideoToGpsMatchDialog: false,\r\n showOpenFileDialog: loadNomad != null,\r\n loadNomad,\r\n };\r\n this.videoPlayer = props.forwardedRef ?? React.createRef();\r\n this.closeVideoToGpsMatchDialog =\r\n this.closeVideoToGpsMatchDialog.bind(this);\r\n this.videoTimeUpdate = this.videoTimeUpdate.bind(this);\r\n this.metadataLoaded = this.metadataLoaded.bind(this);\r\n this.acceptVideoToGpsMatchDialog =\r\n this.acceptVideoToGpsMatchDialog.bind(this);\r\n\r\n this.handleSelectFiles = this.handleSelectFiles.bind(this);\r\n this.hideOpenFileDialog = this.hideOpenFileDialog.bind(this);\r\n this.filesSelected = this.filesSelected.bind(this);\r\n this.playEnded = this.playEnded.bind(this);\r\n\r\n this.playerContext = new playerContext(\r\n this.videoPlay.bind(this),\r\n this.videoPause.bind(this),\r\n this.setTime.bind(this),\r\n this.setPlaybackRate.bind(this),\r\n this.handleSelectFiles,\r\n this.refreshTime.bind(this)\r\n );\r\n this.playerContext.onContextStateChanged(\r\n this.playerStateChanged.bind(this)\r\n );\r\n props.setPlayerContext(this.playerContext);\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.state.loadNomad) console.log(this.state.loadNomad);\r\n }\r\n\r\n playerStateChanged(state) {\r\n if (\r\n this.videoSequence !== state.videoToGpsFileMapping ||\r\n this.playlistIndex !== state.playlistIndex\r\n ) {\r\n this.handlePlaylistUpdates(\r\n state.videoToGpsFileMapping,\r\n state.playlistIndex\r\n );\r\n }\r\n }\r\n\r\n handlePlaylistUpdates(videoSequence, playlistIndex) {\r\n const videoFiles = Array.from(this.videoFiles);\r\n const gpsFiles = Array.from(this.gpsFiles);\r\n const videoIndex = videoFiles\r\n .map((item) => getFileName(item))\r\n .indexOf(videoSequence[playlistIndex].video);\r\n const dataIndex = gpsFiles\r\n .map((item) => getFileName(item))\r\n .indexOf(videoSequence[playlistIndex].gps);\r\n\r\n if (videoIndex !== this.currentPlayingIndex) {\r\n this.gpsFileInputChanged(this.gpsFiles[dataIndex]);\r\n this.videoFileInputChanged(this.videoFiles[videoIndex]);\r\n }\r\n this.videoSequence = videoSequence;\r\n this.playlistIndex = playlistIndex;\r\n this.currentPlayingIndex = videoIndex;\r\n }\r\n\r\n metadataLoaded(e) {\r\n this.videoPlayer.current.playbackRate = this.playerContext.playbackRate;\r\n\r\n this.setPlayerContextForTime(0, e.target.duration);\r\n }\r\n\r\n handleSelectFiles() {\r\n this.setState({ showOpenFileDialog: true });\r\n }\r\n\r\n refreshTime() {\r\n if (!this.videoPlayer.current) return;\r\n this.setPlayerContextForTime(this.videoPlayer.current.currentTime);\r\n }\r\n\r\n videoTimeUpdate(e) {\r\n const time = e.target.currentTime;\r\n\r\n this.setPlayerContextForTime(time, e.target.duration);\r\n }\r\n\r\n setPlayerContextForTime(time, duration) {\r\n const gpsData = this.props.gpsData.getDataAtTime(time);\r\n\r\n if (this.playerContext.gpsInformation.current !== gpsData) {\r\n this.playerContext.setGpsInformation({\r\n current: gpsData,\r\n });\r\n }\r\n this.playerContext.setVideoInformation({\r\n videoPosition: time,\r\n videoLength: duration,\r\n });\r\n }\r\n\r\n videoPlay() {\r\n if (!this.state.videoUrl) return;\r\n if (this.videoPlayer.current.paused) this.videoPlayer.current.play();\r\n }\r\n\r\n videoPause() {\r\n if (!this.state.videoUrl) return;\r\n if (!this.videoPlayer.current.paused) this.videoPlayer.current.pause();\r\n }\r\n\r\n playEnded() {\r\n if (this.playlistIndex === this.videoFiles.length - 1) {\r\n this.playerContext.playing = false;\r\n this.playerContext.notifyStateSubscribers();\r\n return;\r\n }\r\n\r\n this.playerContext.setPlaylistIndex(this.playlistIndex + 1);\r\n }\r\n\r\n closeVideoToGpsMatchDialog() {\r\n this.setState({ showVideoToGpsMatchDialog: false });\r\n }\r\n\r\n async acceptVideoToGpsMatchDialog(selections) {\r\n this.closeVideoToGpsMatchDialog();\r\n const sortedSelections = await this.setDefaultOrder(selections);\r\n this.playerContext.setPlayerFiles(sortedSelections, 0, true);\r\n }\r\n\r\n hideOpenFileDialog() {\r\n this.setState({ showOpenFileDialog: false, loadNomad: null });\r\n }\r\n\r\n async filesSelected(videoFiles, gpsFiles, selections = null) {\r\n this.setState({ showOpenFileDialog: false, loadNomad: null });\r\n\r\n this.videoFiles = videoFiles;\r\n this.gpsFiles = gpsFiles;\r\n this.currentPlayingIndex = -1;\r\n if (videoFiles.length === 1) {\r\n //don't show file matching dialog, just set the single item\r\n await this.acceptVideoToGpsMatchDialog([\r\n { video: getFileName(videoFiles[0]), gps: getFileName(gpsFiles[0]) },\r\n ]);\r\n } else if (selections) {\r\n await this.acceptVideoToGpsMatchDialog(selections);\r\n } else {\r\n this.setState({ showVideoToGpsMatchDialog: true });\r\n }\r\n }\r\n\r\n async setDefaultOrder(selections) {\r\n const selectionsWithTimes = await Promise.all(\r\n Array.from(this.gpsFiles).map(async (file, i) => {\r\n const fileName = getFileName(file);\r\n const selection = selections.find((x) => x.gps === fileName);\r\n const fileContents = await loadFileAsText(file);\r\n const fileType = fileName\r\n .substring(fileName.lastIndexOf(\".\") + 1)\r\n .toUpperCase();\r\n try {\r\n const parseFile = [...parseGpsData(fileContents, fileType)];\r\n let findValidRow = parseFile.find((item) => item.sortingKey);\r\n return { ...selection, sortingKey: findValidRow.sortingKey };\r\n } catch {\r\n console.error(\r\n `${fileName}: unable to parse GPS metadata, skipping file`\r\n );\r\n return null;\r\n }\r\n })\r\n );\r\n\r\n return selectionsWithTimes\r\n .filter((x) => x)\r\n .sort((a, b) => a.sortingKey - b.sortingKey);\r\n }\r\n\r\n //handles * video file uploads\r\n videoFileInputChanged(fileUnion) {\r\n fileUnion.case({\r\n FileSystem: (file) => {\r\n const fileUrl = URL.createObjectURL(file);\r\n\r\n const playingName = file.name.replace(/\\.[^/.]+$/, \"\"); //remove file extension\r\n this.setState({\r\n videoUrl: fileUrl,\r\n playingName,\r\n });\r\n this.playerContext.playing = false;\r\n this.playerContext.playingName = playingName;\r\n },\r\n Url: (url, name) => {\r\n const playingName = name.replace(/\\.[^/.]+$/, \"\"); //remove file extension\r\n this.setState({\r\n videoUrl: url,\r\n playingName,\r\n });\r\n this.playerContext.playing = false;\r\n this.playerContext.playingName = playingName;\r\n },\r\n });\r\n }\r\n\r\n gpsFileInputChanged(fileUnion) {\r\n this.props.gpsData &&\r\n this.props.gpsData.readGpsFile(fileUnion, (gpsRows, bufferedGeometry) =>\r\n this.playerContext.setGpsInformation(\r\n { allData: gpsRows, bufferedGeometry },\r\n true\r\n )\r\n );\r\n }\r\n\r\n setTime(seconds) {\r\n if (!this.state.videoUrl) return;\r\n\r\n if (seconds <= this.videoPlayer.current.duration)\r\n this.videoPlayer.current.currentTime = seconds;\r\n }\r\n\r\n setPlaybackRate(rate) {\r\n if (!this.videoPlayer.current) return;\r\n this.videoPlayer.current.playbackRate = rate;\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
\r\n
\r\n {/*\r\n Note: \r\n playsInline - allows mobile clients to play the video without going fullscreen\r\n pointerEvents: none - disables the context menu which would allow the user to bring back the controls\r\n controls - absent to remove the default video transport controls\r\n */}\r\n {this.state.videoUrl ? (\r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n {this.state.playingName && (\r\n
{this.state.playingName}
\r\n )}\r\n
\r\n
\r\n