{"version":3,"sources":["../node_modules/devextreme/viz/series/points/label.js","../node_modules/devextreme/viz/sparklines/base_sparkline.js","../node_modules/devextreme/viz/series/points/pie_point.js","../node_modules/devextreme/viz/series/points/range_symbol_point.js","../node_modules/devextreme/viz/series/points/candlestick_point.js","../node_modules/devextreme/viz/sparklines/bullet.js","../node_modules/devextreme/viz/series/points/base_point.js","../node_modules/devextreme/viz/series/points/bubble_point.js","../node_modules/devextreme/viz/series/points/range_bar_point.js","../node_modules/devextreme/viz/series/points/stock_point.js","../node_modules/devextreme/viz/series/points/polar_point.js","../node_modules/devextreme/viz/series/range_series.js","../node_modules/devextreme/viz/series/pie_series.js","../node_modules/devextreme/viz/series/stacked_series.js","../node_modules/devextreme/viz/sparkline.js","../node_modules/devextreme/viz/sparklines/sparkline.js","../node_modules/devextreme/viz/themes.js","../node_modules/devextreme/viz/series/scatter_series.js","../node_modules/devextreme/viz/series/points/symbol_point.js","../node_modules/devextreme/viz/series/points/bar_point.js","../node_modules/devextreme/viz/series/line_series.js"],"names":["exports","Label","obj","_format_helper","require","__esModule","_utils","_iterator","_extend","_format","default","format","_math","Math","_round","round","_floor","floor","_abs","abs","getClosestCoord","point","coords","closestCoord","closestDistance","each","_","coord","x","y","distance","getCrossCoord","rect","indexOffset","barPointStrategy","isLabelInside","labelPoint","figure","xc","width","yc","height","prepareLabelPoints","bBox","rotatedBBox","isHorizontal","angle","figureCenter","x1","x2","y1","y2","isRectangular","getFigureCenter","findFigurePoint","adjustPoints","points","lineIsVertical","symbolPointStrategy","r","atan2","cos","sin","piePointStrategy","_0","_1","isOutside","xl","xr","yt","yb","cosSin","getCosAndSin","map","pair","reduce","point1x","point1y","point2x","point2y","push","labelX","tan","degreesToRadians","selectStrategy","disposeItem","field","dispose","checkBackground","background","fill","stroke","checkConnector","connector","renderSettings","this","_renderer","renderer","_container","labelsGroup","_point","_strategy","strategy","_rowCount","prototype","constructor","setColor","color","_color","setOptions","options","_options","setData","data","_data","setDataField","fieldName","fieldValue","getData","setFigureToDrawConnector","_figure","_textContent","_visible","_insideGroup","_text","_background","_connector","_setVisibility","value","state","_group","attr","visibility","isVisible","hide","holdInvisible","_holdVisibility","_hide","show","holdVisible","correctPosition","_drawn","hasValue","_show","correctLabelPosition","container","text","valueText","argumentText","argument","argumentFormat","percent","percentText","type","precision","percentPrecision","total","totalText","openValue","openValueText","closeValue","closeValueText","lowValue","lowValueText","highValue","highValueText","reductionValue","reductionValueText","customizeText","call","formatText","g","append","css","attributes","patchFontOptions","font","toBackground","path","sharp","align","textAlignment","cssClass","_updateBackground","getBBox","_getLabelVisibility","draw","_bBoxWithoutRotation","extend","rotationAngle","rotate","rotateBBox","_bBox","_getConnectorPoints","_shiftBBox","getBoundingRect","position","concat","fit","maxWidth","padding","rowCountChanged","result","setMaxSize","rowCount","textIsEmpty","resetEllipsis","restoreText","setTrackerData","hideInsideLabel","getPoint","shift","translateX","_x","translateY","_y","getLayoutOptions","alignment","horizontalOffset","verticalOffset","radialOffset","connectorOffset","_events_engine","_interopRequireDefault","_dom_adapter","_type","_base_widget","_extend2","_index","_pointer","_translator2d","_common","_tooltip","_export","_initTooltip","EVENT_NS","POINTER_ACTION","addNamespace","down","move","pointerHandler","_ref2","that","widget","_enableOutHandler","_showTooltip","generateCustomizeTooltipCallback","customizeTooltip","fontOptions","rtlEnabled","defaultCustomizeTooltip","lineSpacing","lineHeight","size","customizeObject","html","vt","i","length","generateDefaultCustomizeTooltipCallback","isFunction","res","createAxis","translator","Translator2D","shiftZeroValue","getTranslator","update","range","canvas","getVisibleArea","visibleArea","getCanvasVisibleArea","min","max","visualRange","noop","calculateInterval","getMarginOptions","BaseSparkline","inherit","_getLayoutItems","_useLinks","_themeDependentChanges","_initCore","_tooltipTracker","root","_createHtmlElements","_initTooltipEvents","_argumentAxis","_valueAxis","_getDefaultSize","_defaultSize","_disposeCore","_disposeWidgetElements","_disposeTooltipEvents","_ranges","_optionChangesOrder","_change_OPTIONS","_prepareOptions","_change","_customChangesOrder","_change_UPDATE","_update","_tooltipShown","_cleanWidgetElements","_updateWidgetElements","_drawWidgetElements","_getCorrectCanvas","_updateRange","arg","_getStick","val","_applySize","_allOptions","_setupResizeHandler","_themeManager","theme","option","_getTooltipCoords","_canvas","rootOffset","getRootOffset","left","top","off","on","_getTooltip","isEnabled","_getTooltipData","_hideTooltip","_stopCurrentHandling","_outHandler","handler","_ref3","pageX","pageY","_that$_renderer$getRo","_ref","bottom","right","pointInCanvas","inCanvas","_disableOutHandler","getDocument","apply","arguments","_setTooltipRendererOptions","_tooltipRendererOptions","_setTooltipOptions","_default","addPlugin","plugin","_disposeTooltip","_getRendererOptions","setRendererOptions","tooltip","_getOption","enabled","_isTooltipEnabled","exportPlugin","init","customize","members","_getExportMenuOptions","module","_symbol_point","_consts","_sqrt","sqrt","_acos","acos","DEG","PI","RADIAL_LABEL_INDENT","radialLabelIndent","_updateData","argumentChanged","isDefined","minValue","initialMinValue","originalMinValue","animate","complete","duration","delay","graphic","centerX","centerY","outerRadius","radiusOuter","innerRadius","radiusInner","startAngle","toAngle","endAngle","fromAngle","partitionDuration","correction","correctRadius","correctLabelRadius","radiusLabels","correctValue","base","normalInitialValue","_label","_updateLabelData","_getLabelFormatObject","_getShiftLabelCoords","_getLabelCoords","_getVisibleArea","_isLabelDrawingWithoutPoints","_checkLabelPosition","_getLabelExtraCoord","_checkVerticalLabelPosition","_getLabelPosition","getAnnotationCoords","location","_getElementCoords","elementRadius","rad","angleFunctions","middleAngle","columnsPosition","label","_correctLabelCoord","moveLabelsFromCenter","labelWidth","rightBorderX","maxX","leftBorderX","minX","angleOfPoint","normalizeAngle","drawLabel","translate","_drawLabel","updateLabelCoord","_checkHorizontalLabelPosition","box","maxY","minY","shiftCoord","getVerticallyShiftedAngularCoords","applyWordWrap","series","index","setLabelTrackerData","_getLabelConnector","seriesStyle","styles","normal","strokeWidthBy2","borderWidth","getOptions","containerBackgroundColor","_drawMarker","group","animationEnabled","firstDrawing","shiftedAngle","arc","smartAttr","_getStyle","getTooltipParams","offset","_translate","_getValTranslator","getMarkerVisibility","_updateMarker","style","callback","getLegendStyles","_styles","legendStyles","isInVisibleArea","hideTooltip","visibilityChanged","setInvisibility","_getFormatObject","formatObject","formatValue","getColor","coordsIn","lx","ly","_min","_max","deleteLabel","_topLabel","_bottomLabel","hideMarker","marker","clearVisibility","topMarker","bottomMarker","clearMarker","emptySettings","_emptySettings","markerType","labelsInside","rotated","_getLabelMinFormatObject","initialArgument","seriesName","name","originalValue","originalArgument","maxFormatObject","_updateLabelOptions","_createLabel","_labelsGroup","_getGraphicBBox","images","_getImage","image","_checkImage","_getPositionFromLocation","visible","_getImageBBox","_getSymbolBBox","isTop","_checkOverlay","bottomCoord","topCoord","topValue","_getOverlayCorrections","topCoords","bottomCoords","coordSelector","valueSelector","getValueAxis","minBound","maxBound","delta","coord1","coord2","_checkLabelsOverlay","topLocation","corrections","labels","notInverted","customVisibility","_getCustomLabelVisibility","topLabel","bottomLabel","pointPosition","getLabelVisibility","visibleTopMarker","visibleBottomMarker","imageOption","url","rangeMaxPoint","rangeMinPoint","_checkSymbol","oldOptions","newOptions","oldSymbol","symbol","newSymbol","symbolChanged","oldImages","newImages","topImageChanged","bottomImageChanged","_getSettingsForTwoMarkers","settings","radius","_populatePointShape","_hasGraphic","_drawOneMarker","imageSettings","_updateOneMarker","_createMarker","_getImageSettings","_getSettingsForTracker","tmp","maxValue","visibleRangeArea","visibleArgArea","getArgumentAxis","visibleValArea","notVisibleByArg","notVisibleByVal","side","minVisible","maxVisible","hasCoords","href","toString","getCrosshairData","vx","vy","axis","yValue","xValue","initialValue","rangeValue1Text","rangeValue2Text","rangeValue1","rangeValue2","getLabel","getLabels","trackerRadius","_storeTrackerR","xCond","yCond","getMaxValue","valueAxisType","getMinValue","_bar_point","_getContinuousPoints","openCoord","closeCoord","createPoint","highCoord","highY","lowY","closeY","_getCrockPoints","_getPoints","openY","_isReduction","reduction","_drawMarkerInGroup","_fillStyle","_isPositive","reductionPositive","positive","_getMinTrackerWidth","correctCoordinates","correctOptions","minWidth","xCorrection","_getMarkerGroup","reductionPositiveMarkersGroup","reductionMarkersGroup","defaultPositiveMarkersGroup","defaultMarkersGroup","valVisibleArea","_truncateCoord","centerCoord","getCenterCoord","center","valTranslator","_getArgTranslator","centerValue","_calculateVisibility","origY","reductionColor","originalLowValue","originalHighValue","originalOpenValue","originalCloseValue","isReduction","_base_sparkline","_component_registrator","_Number","Number","_isFinite","isFinite","dxBullet","_rootClassPrefix","_rootClass","_themeSection","_zeroLevelPath","_targetPath","_barValuePath","remove","_drawBullet","startScaleValue","endScaleValue","level","target","callBase","isValueUndefined","isTargetUndefined","_tooltipEnabled","inverted","invert","axisType","dataType","isValidBounds","isValidMin","isValidMax","isValidValue","isValidTarget","_drawBarValue","_drawTarget","_drawZeroLevel","_getTargetParams","translatorY","targetColor","targetWidth","_getBarValueParams","translatorX","startLevel","endLevel","_getZeroLevelParams","showZeroLevel","showTarget","targetText","originalTarget","_optionChangesMap","Point","_bubble_point","_pie_point","_range_symbol_point","_range_bar_point","_candlestick_point","_stock_point","_polar_point","mixins","statesConsts","states","SELECTED_STATE","selectedMark","HOVER_STATE","hoverMark","NORMAL_STATE","normalMark","HOVER","hover","NORMAL","SELECTION","selection","pointTypes","chart","scatter","line","spline","stepline","stackedline","fullstackedline","stackedspline","fullstackedspline","stackedsplinearea","fullstackedsplinearea","area","splinearea","steparea","stackedarea","fullstackedarea","rangearea","bar","stackedbar","fullstackedbar","rangebar","bubble","stock","candlestick","pie","doughnut","donut","polar","isNoneMode","mode","normalizeEnum","dataItem","fullState","_viewCounters","dashStyle","symbolPoint","barPoint","bubblePoint","piePoint","rangeSymbolPoint","rangeBarPoint","candlestickPoint","stockPoint","polarSymbolPoint","polarBarPoint","usePointCustomOptions","customizePoint","_dataItem","_currentStyle","updateOptions","updateData","argumentWasChanged","tag","lowError","highError","aggregationInfo","deleteMarker","groups","_needDeletingOnDraw","autoHidePointMarkers","isSelected","_needClearingOnDraw","markers","_drawErrorBar","errorBars","_getViewStyle","selectionMode","hoverMode","applyView","legendCallback","getRenderer","getMarkersGroup","toForeground","setView","resetView","viewCounters","releaseHoverState","select","selectPoint","clearSelection","deselectPoint","hoverPoint","clearHover","clearPointHover","showTooltip","showPointTooltip","hidePointTooltip","_checkLabelsChanging","oldType","newType","isNewRange","indexOf","isOldRange","widgetType","newPointTypeMixin","_resetType","_setType","_checkCustomize","translated","useLabelCustomOptions","methods","methodName","inVisibleArea","isHovered","getCoords","getDefaultCoords","defaultX","defaultY","setDefaultCoords","isArgumentCorrect","_argumentChecker","isValueCorrect","valueChecker","_valueChecker","getPointRadius","getMarkerCoords","resetCorrection","resetValue","setPercentValue","_errorBar","getTooltipFormatObject","stackPoints","tooltipFormatObject","sharedTooltipValuesArray","tooltipStackPointsFormatObject","forEach","join","stackName","getStackName","rangeText","formatRange","intervalStart","intervalEnd","aggregationInterval","setHole","holeValue","leftHole","minLeftHole","rightHole","minRightHole","resetHoles","diameter","bubbleSize","circle","initialSize","sizeText","_getLabelCoordOfPosition","edgeLocation","_isNumeric","isNumeric","openYExist","closeYExist","_moveLabelOnCanvas","labelBBox","_getCoords","getAngles","convertPolarToXY","getCenter","maxRadius","isInverted","normalizedRadius","_translateErrorBars","_checkRadiusForVisibleArea","_lowErrorCoord","_highErrorCoord","_errorBarPos","_baseErrorBarPos","_getTranslates","_addLabelAlignmentAndOffset","graphicBBox","_isPointInVisibleArea","_getErrorBarSettings","errorBarOptions","rotateX","rotateY","businessRange","getBusinessRange","defaultRadius","middleAngleCorrection","_getErrorBarBaseEdgeLength","interval","start","convertXYToPolar","isBetweenAngles","phi","_scatter_series","_bar_series","_area_series","_defineProperty","key","Object","defineProperty","enumerable","configurable","writable","barSeries","areaSeries","baseRangeSeries","areErrorBarsVisible","_createErrorBarGroup","_checkData","skippedFields","valueFields","getValueFields","getValueRangeInitialValue","_getPointDataSelector","_this","val1Field","val2Field","tagField","getTagField","argumentField","getArgumentField","_processEmptyValue","_defaultAggregator","_aggregators","_data$reduce","item","val1","val2","filter","rangeValue1Field","rangeValue2Field","getSeriesPairCoord","isArgument","oppositeCoord","isOpposite","coordName","minCoordName","oppositeCoordName","getPoints","p","tmpCoord","_checkAxisVisibleAreaCoord","_drawPoint","_drawnPoints","_prepareSegment","processedPoints","_processSinglePointsAreaSegment","processedMinPointsCoords","pt","bottomLine","slice","reverse","singlePointSegment","_getDefaultSegment","segment","defaultSegment","_removeElement","element","_drawElement","drawnElement","_bordersGroup","_createBorderElement","border","_applyStyle","elementsGroup","_elementsGroup","bordersGroup","elements","_graphics","_updateElement","bottomLineParams","bottomBorderElement","chartScatterSeries","_each","_noop","_map","_setGroupsSettings","_legendCallback","_getOldPoint","oldPointsByArgument","_points","valueOf","adjustLabels","_applyElementsClipRect","drawLabelsWOPoints","_extGroups","getPointsCount","d","setMaxPointsCount","count","_pointsCount","_getCreatingPointOptions","dataIndex","_getPointOptions","_updateOptions","labelSpace","paintNullPoints","_createGroups","_setMarkerGroupSettings","_markersGroup","_getMainColor","pointsByArg","getPointsByArg","argumentIndex","mainSeriesColor","_parsePointOptions","_preparePointOptions","_getRangeData","_rangeData","_createPointStyles","pointOptions","mainColor","_parsePointStyle","hoverStyle","selectionStyle","_createLegendState","_getArrangeMinShownValue","minSegmentSize","totalMinSegmentSize","totalNotMinValues","_applyArrangeCorrection","minShownValue","isClockWise","segmentsDirection","zeroTotalCorrection","el","updatedZeroValue","_removePoint","splice","arrangePoints","originalPoints","isAllPointsNegative","len","setVisibleArea","labelRadius","_visibleArea","_applyVisibleArea","_animate","animatePoint","pointsCount","completeFunc","_animateComplete","getVisiblePoints","getPointsByKeys","_line_series","_object","chartAreaSeries","chartBarSeries","baseStackedSeries","_calculateErrorBars","_stackName","stackedBar","stack","clonePoint","clone","preparePointsForStackedAreaSegment","array","_appendInGroup","seriesGroup","areaSegment","_prevSeries","forwardPoints","_calculateBezierPoints","backwardPoints","prevSeriesForwardPoints","pointByArg","_segments","_segmentByArg","prevSeriesPoints","prevSeries","getPointsByArgFromPrevSeries","_areaPointsToSplineAreaPoints","_data_validator","_base_series","_data_source","ALLOWED_TYPES","winloss","_String","String","selectPointColor","pointIndexes","first","last","firstLastColor","minColor","maxColor","dxSparkline","_createSeries","_initialChanges","_dataSourceChangedHandler","_requestChange","_updateSeries","_series","_seriesGroup","_seriesLabelGroup","clear","_dataIsLoaded","_drawSeries","halfPointSize","pointSize","ceil","showFirstLast","showMinMax","Series","argumentAxis","valueAxis","singleSeries","_prepareDataSource","seriesOptions","_prepareSeriesOptions","groupsData","argumentOptions","_simpleDataSource","validateData","_incidentOccurred","checkTypeForAllData","convertToAxisDataType","sortingMethod","_getCustomizeFunction","createPoints","_groupsDataCategories","categories","dataSource","_change_DATA_SOURCE","_updateDataSource","argField","valField","valueField","ignoreEmptyPoints","isDataNumber","parseNumericDataSource","_dataSourceItems","_winlossDataSource","parseWinlossDataSource","winlossThreshold","lineColor","lineWidth","opacity","areaOpacity","pointSymbol","pointColor","drawnPointIndexes","_getExtremumPointsIndexes","winlossData","isWinloss","positiveColor","winColor","barPositiveColor","negativeColor","lossColor","barNegativeColor","createBarCustomizeFunction","createLineCustomizeFunction","lastIndex","indexes","_minMaxIndexes","firstValue","minIndexes","maxIndexes","dataLength","findMinMax","stick","argCoef","isBarType","isWinlossType","rangeData","getRangeData","hasMinY","hasMaxY","valCoef","_getBarWidth","intervalWidth","rangeWidth","_correctPoints","barWidth","seriesType","seriesPoints","pointsLength","minMax","formattedFirst","formattedLast","formattedMin","formattedMax","lastValue","originalFirstValue","originalLastValue","originalMaxValue","originalThresholdValue","thresholdValue","addCacheItem","cacheUid","nextCacheUid","_cache","widgetsCache","currentTheme","getTheme","refreshTheme","refresh","registerTheme","baseThemeName","themeName","isDefault","defaultTheme","targetThemeName","themeInfo","splitter","k","substring","scheme","getThemeInfo","themesMapping","registerThemeName","themes","mergeScalar","loadingIndicator","legend","title","grid","minorGrid","tick","minorTick","commonSeriesSettings","gauge","scale","barGauge","funnel","sankey","treeMap","tile","rangeSelector","sparkline","bullet","backgroundColor","primaryTitleColor","mergeObject","secondaryTitleColor","gridColor","commonAxisSettings","axisColor","patchAxes","section","layer","patchMapLayers","patchTheme","registerThemeSchemeAlias","from","to","themesSchemeMapping","removeCacheItem","_themes","currentThemeName","findThemeNameByName","findThemeNameByPlatform","platform","version","colorScheme","current","source","sourceValue","_value","_extend3","_array","_range_data_calculator","math","sum","variance","expectedValue","getMinMaxAggregator","compare","targetData","baseScatterMethods","_defaultDuration","_defaultTrackerWidth","_parseStyle","_drawSegment","styleOptions","defaultColor","hatching","direction","_paneClipRectID","_applyMarkerClipRect","_forceClipping","_createGroup","groupName","parent","_applyClearingSettings","_getMarkerGroupOptions","class","valueErrorBar","_errorBarsEnabled","displayMode","inArray","lowValueField","highValueField","groupPointsByCoords","cat","pointCoord","parseInt","Array","isArray","_widePaneClipRectID","_setLabelGroupSettings","defaultPointOptions","normalStyle","creatingPointOptions","_predefinedPointOptions","_getOptionsForPoint","defaultBorderColor","defaultSize","sizeValue","mainPointColor","containerColor","fieldsToCheck","allFieldsIsValid","selector","checkFields","pointData","valueType","hasAnimation","animationSettings","_errorBarGroup","lastPointIndex","avg","_calculateAvgErrorBar","aggregationResult","errorBarsOptions","fusionData","calculateAvgErrorBars","_calculateSumErrorBar","calculateSumErrorBars","_ref4","_ref5","a","b","_endUpdateData","isString","valueArray","valueArrayLength","meanValue","processDataItem","errorBarType","floatErrorValue","parseFloat","addSubError","_i","error","_patchMarginOptions","maxSize","sizePointNormalState","usePointsToDefineAutoHiding","drawTrackers","trackers","trackersGroup","segments","_trackers","_trackersGroup","_updateTrackerElement","_drawTrackerElement","_trackersTranslator","checkSeriesViewportCoord","_getNearestPoints","nextPoint","_getBezierPoints","_getNearestPointsByCoord","allPoints","bezierPoints","nearestPoints","getNeighborPoint","minDistance","pCoord","nCoord","visibleX","visibleY","getPointCenterByArg","category","pos","getCanvas","params","paramName","tmpPoint","_window","window","getWindow","_ceil","imageChanged","getSquareMarkerCoords","getPolygonMarkerCoords","getTriangleDownMarkerCoords","getTriangleUpMarkerCoords","floorHalfRadius","ceilHalfRadius","getCrossMarkerCoords","properValue","validateUnit","_createImageMarker","_createSymbolMarker","pointSettings","_showForZeroValues","w2","h2","fullGraphicBBox","isInside","labelOptions","translates","high","low","isHighDisplayMode","isLowDisplayMode","highErrorOnly","lowErrorOnly","edgeLength","absTotal","leftHoleTotal","rightHoleTotal","valuePercent","minValuePercent","isFullStackedSeries","navigator","minTrackerSize","hasProperty","msPointerEnabled","msMaxTouchPoints","pointerEnabled","maxTouchPoints","trackerR","argTranslator","isSquare","isTriangle","lowErrorValue","highErrorValue","labelFormatObject","noErrorBar","getLabelOrientation","isDiscreteValue","isFullStacked","yCorrection","resolveLabelsOverlapping","showForZeroValues","cornerRadius","_that$getMarkerCoords","rx","ry","getGraphicSettings","_getEdgeTooltipParams","xCoord","yCoord","isPositive","invertedBusinessRange","bounds","argVisibleArea","minVal","valAxis","argAxis","valIntervalName","argIntervalName","toUpperCase","getAxisPosition","axisOptions","edgeOffset","argAxisPosition","isStartFromAxis","getAxisShift","pow","newX","newY","newAngle","getTangentPoint","prevPoint","centerPoint","nextStepAngle","correctAngle","lineMethods","autoHidePointMarkersEnabled","_applyGroupSettings","_areBordersVisible","_parseLineOptions","_createMainElement","animationComplete","lineElement","elem","_sortPoints","sort","p1","p2","segmentCount","lastSegment","_getTrackerSettings","defaultTrackerWidth","strokeWidthFromElements","_getMainPointsFromSegment","isArgumentAxis","getArgumentRange","getViewport","lineSeries","needValueCoord","_calculateStepLinePoints","step","src","pointsCopy","checkExtremum","otherPointCoord","controlCoord","curPoint","leftControlX","leftControlY","rightControlX","rightControlY","c","xCur","yCur","leftPoint","rightPoint","bezierCoordName","bezierOppositeCoordName","_loop","p0","p3","solveCubicEquation","obtainCubicBezierTCoef","t","seg","preparedPoints","_closeSegment","argumentAxisType","_getTangentPoints","_getRemainingAngle","normAngle","_modifyReflectedPoint","lastPoint","differenceAngle","tangentPoints","betweenAngle","coordParam","isInsideInterval","getRadius","neighborPoints","getNeighborPoints","stepAngle","k1","b1","k2","quarter","trunc","y0","param","closed","firstPointCopy","lastPointCopy","rearwardRefPoint","forwardRefPoint","unshift"],"mappings":"6GASAA,EAAQC,MAAQA,EAChB,IAKgCC,EAL5BC,GAK4BD,EALYE,EAAQ,OAMlCF,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GANfI,EAASF,EAAQ,IACjBG,EAAYH,EAAQ,IACpBI,EAAUJ,EAAQ,IAOtB,IAAIK,EAAUN,EAAeO,QAAQC,OACjCC,EAAQC,KACRC,EAASF,EAAMG,MACfC,EAASJ,EAAMK,MACfC,EAAON,EAAMO,IAKjB,SAASC,EAAgBC,EAAOC,GAC5B,IACIC,EADAC,EAAkB,IAWtB,OATA,EAAIjB,EAAUkB,MAAMH,GAAQ,SAASI,EAAGC,GACpC,IAAIC,EAAIP,EAAM,GAAKM,EAAM,GACrBE,EAAIR,EAAM,GAAKM,EAAM,GACrBG,EAAWF,EAAIA,EAAIC,EAAIA,EACvBC,EAAWN,IACXA,EAAkBM,EAClBP,EAAeI,MAGhB,CAACX,EAAOO,EAAa,IAAKP,EAAOO,EAAa,KAGzD,SAASQ,EAAcC,EAAML,EAAOM,GAChC,OAAQN,EAAQK,EAAK,EAAIC,KAAiBD,EAAK,EAAIC,GAAeD,EAAK,EAAIC,KAAiBD,EAAK,EAAIC,GAAeD,EAAK,EAAIC,IAAgBD,EAAK,EAAIC,GAE1J,IAAIC,EAAmB,CACnBC,cAAe,SAASC,EAAYC,GAChC,IAAIC,EAAKF,EAAWR,EAAIQ,EAAWG,MAAQ,EACvCC,EAAKJ,EAAWP,EAAIO,EAAWK,OAAS,EAC5C,OAAOJ,EAAOT,GAAKU,GAAMA,GAAMD,EAAOT,EAAIS,EAAOE,OAASF,EAAOR,GAAKW,GAAMA,GAAMH,EAAOR,EAAIQ,EAAOI,QAExGC,mBAAoB,SAASC,EAAMC,EAAaC,EAAcC,EAAOC,GACjE,IAAIC,EAAKJ,EAAYhB,EACjBU,EAAKU,EAAKJ,EAAYL,MAAQ,EAC9BU,EAAKD,EAAKJ,EAAYL,MAAQ,EAC9BW,EAAKN,EAAYf,EACjBW,EAAKU,EAAKN,EAAYH,OAAS,EAC/BU,EAAKD,EAAKN,EAAYH,OAAS,EAE/BW,EAAgBlC,EAAK4B,GAAS,KAAO,EAuCzC,OAtCIC,EAAa,GAAKC,GAAMD,EAAa,GAAKE,EACtCG,EACc,CACV,CAACL,EAAa,GAAI7B,EAAK6B,EAAa,GAAKG,GAAMhC,EAAK6B,EAAa,GAAKI,GAAMD,EAAKC,IAGvE,CACV,CAACJ,EAAa,GAAIhB,EAAc,CAACiB,EAAIE,EAAID,EAAIE,GAAKJ,EAAa,GAAI,KAIvEA,EAAa,GAAKG,GAAMH,EAAa,GAAKI,EACtCC,EACc,CACV,CAAClC,EAAK6B,EAAa,GAAKC,GAAM9B,EAAK6B,EAAa,GAAKE,GAAMD,EAAKC,EAAIF,EAAa,KAGvE,CACV,CAAChB,EAAc,CAACiB,EAAIE,EAAID,EAAIE,GAAKJ,EAAa,GAAI,GAAIA,EAAa,KAIvEK,EACc,CACV,CAACJ,EAAIE,GACL,CAACL,EAAeG,EAAKV,EAAIO,EAAeL,EAAKU,GAC7C,CAACD,EAAIC,GACL,CAACF,EAAIG,GACL,CAACN,EAAeI,EAAKX,EAAIO,EAAeL,EAAKW,GAC7C,CAACF,EAAIE,IAGK,CACV,CAACb,EAAIE,KAOzBK,aAAc,SAASF,EAAMN,GACzB,OAAOM,EAAKf,EAAIS,EAAOT,EAAIS,EAAOE,OAASI,EAAKf,EAAIe,EAAKJ,MAAQF,EAAOT,GAE5EyB,gBAAiB,SAAShB,GACtB,MAAO,CAACrB,EAAOqB,EAAOT,EAAIS,EAAOE,MAAQ,GAAIvB,EAAOqB,EAAOR,EAAIQ,EAAOI,OAAS,KAEnFa,gBAAiB,SAASjB,EAAQD,GAC9B,IAAIW,EAAeb,EAAiBmB,gBAAgBhB,GAOpD,OANYjB,EAAgBgB,EAAY,CACpC,CAACC,EAAOT,EAAGmB,EAAa,IACxB,CAACA,EAAa,GAAIV,EAAOR,EAAIQ,EAAOI,QACpC,CAACJ,EAAOT,EAAIS,EAAOE,MAAOQ,EAAa,IACvC,CAACA,EAAa,GAAIV,EAAOR,MAIjC0B,aAAc,SAASC,GACnB,IAAIC,EAAiBvC,EAAKsC,EAAO,GAAKA,EAAO,KAAO,EAQpD,OAPuBtC,EAAKsC,EAAO,GAAKA,EAAO,KAAO,IAElDA,EAAO,GAAKA,EAAO,IAEnBC,IACAD,EAAO,GAAKA,EAAO,IAEhBA,IAGXE,EAAsB,CACtBvB,cAAe,WACX,OAAO,GAEXO,mBAAoBR,EAAiBQ,mBACrCG,aAAc,SAASF,EAAMN,GACzB,OAAOM,EAAKf,EAAIS,EAAOT,EAAIS,EAAOsB,GAAKhB,EAAKf,EAAIe,EAAKJ,MAAQF,EAAOT,EAAIS,EAAOsB,GAEnFN,gBAAiB,SAAShB,GACtB,MAAO,CAACA,EAAOT,EAAGS,EAAOR,IAE7ByB,gBAAiB,SAASjB,EAAQD,GAC9B,IAAIU,EAAQjC,KAAK+C,MAAMvB,EAAOR,EAAIO,EAAW,GAAIA,EAAW,GAAKC,EAAOT,GACxE,MAAO,CAACd,EAAOuB,EAAOT,EAAIS,EAAOsB,EAAI9C,KAAKgD,IAAIf,IAAShC,EAAOuB,EAAOR,EAAIQ,EAAOsB,EAAI9C,KAAKiD,IAAIhB,MAEjGS,aAAcrB,EAAiBqB,cAE/BQ,EAAmB,CACnB5B,cAAe,SAAS6B,EAAIC,EAAIC,GAC5B,OAAQA,GAEZxB,mBAAoB,SAASC,EAAMC,EAAaC,EAAcC,GAC1D,IAAIqB,EAAKxB,EAAKf,EACVwC,EAAKD,EAAKxB,EAAKJ,MACfD,EAAK6B,EAAKrD,EAAO6B,EAAKJ,MAAQ,GAC9B8B,EAAK1B,EAAKd,EACVyC,EAAKD,EAAK1B,EAAKF,OACfD,EAAK6B,EAAKvD,EAAO6B,EAAKF,OAAS,GAC/Be,EAAS,CACT,CACI,CAACW,EAAIE,GACL,CAACD,EAAIC,IAET,CACI,CAACD,EAAIC,GACL,CAACD,EAAIE,IAET,CACI,CAACF,EAAIE,GACL,CAACH,EAAIG,IAET,CACI,CAACH,EAAIG,GACL,CAACH,EAAIE,KAGTE,GAAS,EAAIjE,EAAOkE,cAAc1B,GA+BtC,OA7BIU,EADA,IAAMV,EACGD,EAAe,CACpB,CAACsB,EAAI3B,GACL,CAAC4B,EAAI5B,IACL,CACA,CAACF,EAAI+B,GACL,CAAC/B,EAAIgC,IAGAd,EAAOiB,KAAI,SAASC,GACzB,OAAOA,EAAKD,KAAI,SAASpD,GACrB,MAAO,CAACP,GAAQO,EAAM,GAAKiB,GAAMiC,EAAOV,KAAOxC,EAAM,GAAKmB,GAAM+B,EAAOT,IAAMxB,GAAKxB,IAASO,EAAM,GAAKiB,GAAMiC,EAAOT,KAAOzC,EAAM,GAAKmB,GAAM+B,EAAOV,IAAMrB,UAE7JmC,QAAO,SAAShB,EAAGe,GAClB,IAAIE,EAAUF,EAAK,GAAG,GAClBG,EAAUH,EAAK,GAAG,GAClBI,EAAUJ,EAAK,GAAG,GAClBK,EAAUL,EAAK,GAAG,GAUtB,OATI7B,GACIgC,GAAWrC,GAAMA,GAAMuC,GAAWF,GAAWrC,GAAMA,GAAMuC,IACzDpB,EAAEqB,KAAK,EAAExC,EAAKqC,IAAYC,EAAUF,IAAYG,EAAUF,GAAWD,EAASpC,KAG9EoC,GAAWtC,GAAMA,GAAMwC,GAAWF,GAAWtC,GAAMA,GAAMwC,IACzDnB,EAAEqB,KAAK,CAAC1C,GAAKA,EAAKsC,IAAYG,EAAUF,IAAYC,EAAUF,GAAWC,IAG1ElB,IACR,KAIXd,aAAc,SAASF,EAAMN,GACzB,OAAOM,EAAKf,EAAIS,EAAOT,GAAKS,EAAOT,EAAIe,EAAKf,EAAIe,EAAKJ,OAEzDc,gBAAiBK,EAAoBL,gBACrCC,gBAAiB,SAASjB,EAAQD,EAAYS,GAC1C,IAAKA,EACD,MAAO,CAACR,EAAOT,EAAGS,EAAOR,GAE7B,IAAIoD,EAAS7C,EAAW,GACpBR,EAAId,EAAOuB,EAAOT,GAAKS,EAAOR,EAAIO,EAAW,IAAMvB,KAAKqE,KAAI,EAAI5E,EAAO6E,kBAAkB9C,EAAOS,SAChGU,EAAS,CAACnB,EAAOT,EAAGS,EAAOR,EAAGD,EAAGQ,EAAW,IAYhD,OAXMC,EAAOT,GAAKA,GAAKA,GAAKqD,GAAaA,GAAUrD,GAAKA,GAAKS,EAAOT,IAC5DV,EAAKmB,EAAOT,EAAIqD,GApMT,GAqMPzB,EAAS,CAACnB,EAAOT,EAAGS,EAAOR,GAEvBQ,EAAOT,GAAKqD,EACZzB,EAAO,GAAKnB,EAAOT,EAxMhB,GA0MH4B,EAAO,GAAKnB,EAAOT,EA1MhB,IA8MR4B,GAEXD,aAAc,SAASC,GACnB,OAAOA,IAIf,SAAS4B,EAAe/C,GACpB,YAAO,IAAWA,EAAOS,OAASiB,QAAoB,IAAW1B,EAAOsB,GAAKD,GAAuBxB,EAGxG,SAASmD,EAAYnF,EAAKoF,GACtBpF,EAAIoF,IAAUpF,EAAIoF,GAAOC,UACzBrF,EAAIoF,GAAS,KAGjB,SAASE,EAAgBC,GACrB,OAAOA,IAAeA,EAAWC,MAAQ,SAAWD,EAAWC,MAAQD,EAAW,gBAAkB,GAAKA,EAAWE,QAAU,SAAWF,EAAWE,QAGxJ,SAASC,EAAeC,GACpB,OAAOA,GAAaA,EAAU,gBAAkB,GAAKA,EAAUF,QAAU,SAAWE,EAAUF,OAkClG,SAAS1F,EAAM6F,GACXC,KAAKC,UAAYF,EAAeG,SAChCF,KAAKG,WAAaJ,EAAeK,YACjCJ,KAAKK,OAASN,EAAezE,MAC7B0E,KAAKM,UAAYP,EAAeQ,SAChCP,KAAKQ,UAAY,EAErBtG,EAAMuG,UAAY,CACdC,YAAaxG,EACbyG,SAAU,SAASC,GACfZ,KAAKa,OAASD,GAElBE,WAAY,SAASC,GACjBf,KAAKgB,SAAWD,GAEpBE,QAAS,SAASC,GACdlB,KAAKmB,MAAQD,GAEjBE,aAAc,SAASC,EAAWC,GAC9BtB,KAAKmB,MAAQnB,KAAKmB,OAAS,GAC3BnB,KAAKmB,MAAME,GAAaC,GAE5BC,QAAS,WACL,OAAOvB,KAAKmB,OAEhBK,yBAA0B,SAASlF,GAC/B0D,KAAKyB,QAAUnF,GAEnBkD,QAAS,WAELF,EADWU,KACO,UADPA,KAENmB,MAFMnB,KAEOgB,SAFPhB,KAEuB0B,aAFvB1B,KAE2C2B,SAF3C3B,KAE2D4B,aAF3D5B,KAE+E6B,MAF/E7B,KAE4F8B,YAF5F9B,KAE+G+B,WAF/G/B,KAEiIyB,QAAU,MAE1JO,eAAgB,SAASC,EAAOC,GAC5BlC,KAAKmC,QAAUnC,KAAKmC,OAAOC,KAAK,CAC5BC,WAAYJ,IAEhBjC,KAAK2B,SAAWO,GAEpBI,UAAW,WACP,OAAOtC,KAAK2B,UAEhBY,KAAM,SAASC,GACXxC,KAAKyC,kBAAoBD,EACzBxC,KAAK0C,SAETA,MAAO,WACH1C,KAAKgC,eAAe,UAAU,IAElCW,KAAM,SAASC,GACX,IAAIC,GAAmB7C,KAAK8C,OACxB9C,KAAKK,OAAO0C,aACZ/C,KAAKyC,kBAAoBG,EACzB5C,KAAKgD,QACLH,GAAmB7C,KAAKK,OAAO4C,qBAAqBjD,QAG5DgD,MAAO,WACH,IACI9C,EADOF,KACSC,UAChBiD,EAFOlD,KAEUG,WACjBY,EAHOf,KAGQgB,UAAY,GAC3BmC,EAJOnD,KAIK0B,aA7FxB,SAAoBR,EAAMH,GACtB,IAAInG,EAASmG,EAAQnG,OA2BrB,OA1BAsG,EAAKkC,UAAY1I,EAAQwG,EAAKe,MAAOrH,GACrCsG,EAAKmC,aAAe3I,EAAQwG,EAAKoC,SAAUvC,EAAQwC,qBAC/C,IAAWrC,EAAKsC,UAChBtC,EAAKuC,YAAc/I,EAAQwG,EAAKsC,QAAS,CACrCE,KAAM,UACNC,UAAW/I,GAAUA,EAAOgJ,yBAGhC,IAAW1C,EAAK2C,QAChB3C,EAAK4C,UAAYpJ,EAAQwG,EAAK2C,MAAOjJ,SAErC,IAAWsG,EAAK6C,YAChB7C,EAAK8C,cAAgBtJ,EAAQwG,EAAK6C,UAAWnJ,SAE7C,IAAWsG,EAAK+C,aAChB/C,EAAKgD,eAAiBxJ,EAAQwG,EAAK+C,WAAYrJ,SAE/C,IAAWsG,EAAKiD,WAChBjD,EAAKkD,aAAe1J,EAAQwG,EAAKiD,SAAUvJ,SAE3C,IAAWsG,EAAKmD,YAChBnD,EAAKoD,cAAgB5J,EAAQwG,EAAKmD,UAAWzJ,SAE7C,IAAWsG,EAAKqD,iBAChBrD,EAAKsD,mBAAqB9J,EAAQwG,EAAKqD,eAAgB3J,IAEpDmG,EAAQ0D,cAAgB1D,EAAQ0D,cAAcC,KAAKxD,EAAMA,GAAQA,EAAKkC,UAiE1CuB,CAJpB3E,KAIoCmB,MAJpCnB,KAIgDgB,WAAa,KACpEmC,GALOnD,KAMGmC,SANHnC,KAOEmC,OAASjC,EAAS0E,IAAIC,OAAO3B,GAP/BlD,KAQE4B,aAAe1B,EAAS0E,IAAIC,OAR9B7E,KAQ0CmC,QAR1CnC,KASE6B,MAAQ3B,EAASiD,KAAK,GAAI,EAAG,GAAG0B,OATlC7E,KAS8C4B,eAT9C5B,KAWF6B,MAAMiD,IAAI/D,EAAQgE,YAAa,EAAIxK,EAAOyK,kBAAkBjE,EAAQgE,WAAWE,MAAQ,IACxFxF,EAAgBsB,EAAQrB,aAZrBM,KAaE8B,YAbF9B,KAaqB8B,aAAe5B,EAASjE,OAAO4I,OAbpD7E,KAagE4B,cAAcsD,eAb9ElF,KAcE8B,YAAYM,KAAKrB,EAAQrB,YAd3BM,KAeEa,QAfFb,KAeiB8B,YAAYM,KAAK,CACjCzC,KAhBDK,KAgBYa,UAGfvB,EAnBGU,KAmBe,eAElBH,EAAekB,EAAQjB,YArBpBE,KAsBE+B,WAtBF/B,KAsBoB+B,YAAc7B,EAASiF,KAAK,GAAI,QAAQC,QAAQP,OAtBpE7E,KAsBgFmC,QAAQ+C,eAtBxFlF,KAuBE+B,WAAWK,KAAKrB,EAAQjB,WAvB1BE,KAwBEa,QAxBFb,KAwBiB+B,WAAWK,KAAK,CAChCxC,OAzBDI,KAyBca,UAGjBvB,EA5BGU,KA4Be,cA5BfA,KA8BF6B,MAAMO,KAAK,CACZe,KAAMA,EACNkC,MAAOtE,EAAQuE,cACf,MAASvE,EAAQwE,WAjCdvF,KAmCFwF,kBAnCExF,KAmCqB6B,MAAM4D,WAnC3BzF,KAoCFgC,eAAe,WAAW,GApCxBhC,KAqCF8C,QAAS,GArCP9C,KAuCF0C,SAGbgD,oBAAqB,SAASpD,GAC1B,OAAOtC,KAAKyC,gBAAkBzC,KAAKsC,YAAcA,GAErDqD,KAAM,SAASrD,GAQX,OAPItC,KAAK0F,oBAAoBpD,IACzBtC,KAAKgD,QACLhD,KAAKK,QAAUL,KAAKK,OAAO4C,qBAAqBjD,QAEhDA,KAAK8C,QAAS,EACd9C,KAAK0C,SAEF1C,MAEXwF,kBAAmB,SAAS5I,GACboD,KACF8B,cACLlF,EAAKf,GAxXgB,EAyXrBe,EAAKd,GAxXgB,EAyXrBc,EAAKJ,OAAS,GACdI,EAAKF,QAAU,EALRsD,KAMF8B,YAAYM,KAAKxF,IANfoD,KAQN4F,sBAAuB,EAAInL,EAAQoL,QAAQ,GAAIjJ,GACpD,IAAIkJ,EATO9F,KAScgB,SAAS8E,eAAiB,EATxC9F,KAUN4B,aAAamE,OAAOD,EAAelJ,EAAKf,EAAIe,EAAKJ,MAAQ,EAAGI,EAAKd,EAAIc,EAAKF,OAAS,GACxFE,GAAO,EAAIrC,EAAOyL,YAAYpJ,EAAM,CAACA,EAAKf,EAAIe,EAAKJ,MAAQ,EAAGI,EAAKd,EAAIc,EAAKF,OAAS,IAAKoJ,GAX/E9F,KAYNiG,MAAQrJ,GAEjBU,gBAAiB,WACb,IAAIhB,EAAS0D,KAAKyB,QAElB,OADezB,KAAKM,WAAajB,EAAe/C,IAChCgB,gBAAgBhB,IAEpC4J,oBAAqB,WACjB,IAMI7J,EAEAS,EAPAR,EADO0D,KACOyB,QACdV,EAFOf,KAEQgB,SACfT,EAHOP,KAGSM,WAAajB,EAAe/C,GAC5CM,EAJOoD,KAIKmG,WAJLnG,KAIqB4F,sBAC5B/I,EALOmD,KAKYoG,kBAEnB3I,EAAS,GAEb,IAAK8C,EAASnE,cAAcQ,EAAMN,EAAQ,WAAayE,EAAQsF,UAAW,CACtEvJ,EAAeyD,EAASzD,aAAaF,EAAMN,GAC3C,IAAIU,EAXGgD,KAWiB1C,kBAExBjB,EAAahB,EAAgB2B,EAD7BS,EAAS8C,EAAS5D,mBAAmBC,EAAMC,EAAaC,GAAeiE,EAAQ+E,eAAiB,EAAG9I,IAGnGS,GADAA,EAAS8C,EAAShD,gBAAgBjB,EAAQD,EAAYS,IACtCwJ,OAAOjK,GAE3B,OAAOkE,EAAS/C,aAAaC,IAEjC8I,IAAK,SAASC,GACV,IAAIC,EAAUzG,KAAK8B,YAAc,GAAiC,EAC9D4E,GAAkB,EACtB,GAAI1G,KAAK6B,MAAO,CACZ,IAAI8E,EAAS3G,KAAK6B,MAAM+E,WAAWJ,EAAWC,OAAS,EAAQzG,KAAKgB,UAChE6F,EAAWF,EAAOE,SAClB,IAAMA,IACNA,EAAW,GAEXA,IAAa7G,KAAKQ,YAClBkG,GAAkB,EAClB1G,KAAKQ,UAAYqG,GAErBF,EAAOG,aAAexH,EAAYU,KAAM,eAG5C,OADAA,KAAKwF,kBAAkBxF,KAAK6B,MAAM4D,WAC3BiB,GAEXK,cAAe,WACX/G,KAAK6B,OAAS7B,KAAK6B,MAAMmF,cACzBhH,KAAKwF,kBAAkBxF,KAAK6B,MAAM4D,YAEtCwB,eAAgB,SAAS3L,GACrB0E,KAAK6B,MAAMX,KAAK,CACZ,mBAAoB5F,IAExB0E,KAAK8B,aAAe9B,KAAK8B,YAAYZ,KAAK,CACtC,mBAAoB5F,KAG5B4L,gBAAiB,SAAS3L,GACtB,OAAOyE,KAAKK,OAAO6G,gBAAgBlH,KAAMzE,IAE7C4L,SAAU,WACN,OAAOnH,KAAKK,QAEhB+G,MAAO,SAASvL,EAAGC,GAaf,OAZWkE,KACF0B,eADE1B,KAEF4B,aAAaQ,KAAK,CACnBiF,WAHGrH,KAGcsH,GAAKvM,EAAOc,EAH1BmE,KAGmCiG,MAAMpK,GAC5C0L,WAJGvH,KAIcwH,GAAKzM,EAAOe,EAJ1BkE,KAImCiG,MAAMnK,KAJzCkE,KAME+B,YANF/B,KAOE+B,WAAWK,KAAK,CACjB3E,OARDuC,KAQckG,yBARdlG,MAcfoG,gBAAiB,WACb,OAAOpG,KAAKmG,WAAWnG,KAAKiG,QAEhCE,WAAY,SAASvJ,GACjB,OAAOoD,KAAK0B,aAAe,CACvB7F,EAAGe,EAAKf,EAAImE,KAAKsH,GACjBxL,EAAGc,EAAKd,EAAIkE,KAAKwH,GACjBhL,MAAOI,EAAKJ,MACZE,OAAQE,EAAKF,QACb,IAER+K,iBAAkB,WACd,IAAI1G,EAAUf,KAAKgB,SACnB,MAAO,CACH0G,UAAW3G,EAAQ2G,UACnBhI,WAAYD,EAAgBsB,EAAQrB,YACpCiI,iBAAkB5G,EAAQ4G,iBAC1BC,eAAgB7G,EAAQ6G,eACxBC,aAAc9G,EAAQ8G,aACtBxB,SAAUtF,EAAQsF,SAClByB,iBAAkBjI,EAAekB,EAAQjB,WAre9B,GAqe8D,IAAML,EAAgBsB,EAAQrB,YApelF,EAoe6H,O,kCCrf9JzF,EAAQU,aAAU,EAClB,IAAIoN,EAAiBC,EAAuB3N,EAAQ,KAChD4N,EAAeD,EAAuB3N,EAAQ,KAC9C6N,EAAQ7N,EAAQ,IAChB8N,EAAeH,EAAuB3N,EAAQ,MAC9C+N,EAAW/N,EAAQ,IACnBgO,EAAShO,EAAQ,IACjBiO,EAAWN,EAAuB3N,EAAQ,MAC1CE,EAASF,EAAQ,IACjBkO,EAAgBlO,EAAQ,MACxBmO,EAAUnO,EAAQ,IAClBoO,EAAWpO,EAAQ,KACnBqO,EAAUrO,EAAQ,KAEtB,SAAS2N,EAAuB7N,GAC5B,OAAOA,GAAOA,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAGnB,IAmFIwO,EAlFAC,EAAW,oBACXC,GAAiB,EAAIR,EAAOS,cAAc,CAACR,EAAS3N,QAAQoO,KAAMT,EAAS3N,QAAQqO,MAAOJ,GAC1FnO,EAAU2N,EAASvC,OACnB5K,EAASH,KAAKI,MAmBlB,SAAS+N,EAAeC,GACpB,IACIC,EADOD,EAAMhI,KACDkI,OAChBD,EAAKE,oBACLF,EAAKG,eAkBT,SAASC,EAAiCC,EAAkBC,EAAaC,GACrE,IAAIC,EAhBR,SAAiDF,EAAaC,GAC1D,IAAIE,EAAcH,EAAYG,YAC1BC,QAAc,IAAWD,GAAe,OAASA,EAAcA,EAhC5C,GAgCkFH,EAAYK,KACrH,OAAO,SAASC,GAGZ,IAFA,IAAIC,EAAO,GACPC,EAAKF,EAAgB3G,UAChB8G,EAAI,EAAGA,EAAID,EAAGE,OAAQD,GAAK,EAChCF,GAAQ,WAAaC,EAAGC,GAAK,6DAA+DR,EAAa,OAAS,SAAW,KAAOO,EAAGC,EAAI,GAAK,aAEpJ,MAAO,CACHF,KAAM,kDAAoDH,EAAa,OAASG,EAAO,aAMjEI,CAAwCX,EAAaC,GACnF,OAAI,EAAIxB,EAAMmC,YAAYb,GACf,SAASO,GACZ,IAAIO,EAAMd,EAAiB9E,KAAKqF,EAAiBA,GAIjD,MAHM,SAAUO,GAAU,SAAUA,GAChC7P,EAAQ6P,EAAKX,EAAwBjF,KAAKqF,EAAiBA,IAExDO,GAGJX,EAIf,SAASY,EAAWzN,GAChB,IAAI0N,EAAa,IAAIjC,EAAckC,aAAa,GAAI,GAAI,CACpDC,gBAAiB5N,EACjBA,eAAgBA,IAEpB,MAAO,CACH6N,cAAe,WACX,OAAOH,GAEXI,OAAQ,SAASC,EAAOC,EAAQ/J,GAC5ByJ,EAAWI,OAAOC,EAAOC,EAAQ/J,IAErCgK,eAAgB,WACZ,IAAIC,EAAcR,EAAWS,uBAC7B,MAAO,CAACD,EAAYE,IAAKF,EAAYG,MAEzCC,YAAa5C,EAAQ6C,KACrBC,kBAAmB9C,EAAQ6C,KAC3BE,iBAAkB,WACd,MAAO,KAKnB,IAAIC,EAAgBrD,EAAaxN,QAAQ8Q,QAAQ,CAC7CC,gBAAiBlD,EAAQ6C,KACzBM,WAAW,EACXC,uBAAwB,CAAC,WACzBC,UAAW,WACI7L,KACN8L,gBADM9L,KACiBC,UAAU8L,KAD3B/L,KAEN8L,gBAAgB1J,KAAK,CACtB,iBAAkB,YAHXpC,KAKNgM,sBALMhM,KAMNiM,qBANMjM,KAONkM,cAAgB3B,GAAW,GAPrBvK,KAQNmM,WAAa5B,KAEtB6B,gBAAiB,WACb,OAAOpM,KAAKqM,cAEhBC,aAAc,WACVtM,KAAKuM,yBACLvM,KAAKwM,wBACLxM,KAAKyM,QAAU,MAEnBC,oBAAqB,CAAC,WACtBC,gBAAiB,WACb3M,KAAK4M,kBACL5M,KAAK6M,QAAQ,CAAC,YAElBC,oBAAqB,CAAC,UACtBC,eAAgB,WACZ/M,KAAKgN,WAETA,QAAS,WACMhN,KACFiN,gBADEjN,KAEFiN,eAAgB,EAFdjN,KAGFyI,SAASlG,QAHPvC,KAKNkN,uBALMlN,KAMNmN,wBANMnN,KAONoN,uBAETD,sBAAuB,WACnB,IAAIrC,EAAS9K,KAAKqN,oBAClBrN,KAAKsN,eACLtN,KAAKkM,cAActB,OAAO5K,KAAKyM,QAAQc,IAAKzC,EAAQ9K,KAAKwN,aACzDxN,KAAKmM,WAAWvB,OAAO5K,KAAKyM,QAAQgB,IAAK3C,IAE7C0C,UAAW,aACXE,WAAY,SAASzR,GACjB+D,KAAK2N,YAAY7D,KAAO,CACpBtN,MAAOP,EAAK,GAAKA,EAAK,GACtBS,OAAQT,EAAK,GAAKA,EAAK,IAE3B+D,KAAK6M,QAAQ,CAAC,YAElBe,oBAAqBpF,EAAQ6C,KAC7BuB,gBAAiB,WACb,OAAOnS,GAAQ,EAAM,GAAIuF,KAAK6N,cAAcC,QAAS9N,KAAK+N,WAE9DC,kBAAmB,WACf,IAAIlD,EAAS9K,KAAKiO,QACdC,EAAalO,KAAKC,UAAUkO,gBAChC,MAAO,CACHtS,EAAGiP,EAAOtO,MAAQ,EAAI0R,EAAWE,KACjCtS,EAAGgP,EAAOpO,OAAS,EAAIwR,EAAWG,MAG1CpC,mBAAoB,WAChB,IAAI/K,EAAO,CACPkI,OAAQpJ,MAEZA,KAAKC,UAAU8L,KAAKuC,IAAI,IAAM1F,GAAU2F,GAAG1F,EAAgB3H,EAAM+H,IAErEK,aAAc,WACCtJ,KAEDiN,gBAFCjN,KAGFiN,eAAgB,EAHdjN,KAIQwO,cACPC,aALDzO,KAKqByI,SAAS9F,KAL9B3C,KAKwC0O,kBALxC1O,KAKgEgO,oBAAqB,MAGpGW,aAAc,WACN3O,KAAKiN,gBACLjN,KAAKiN,eAAgB,EACrBjN,KAAKyI,SAASlG,SAGtBqM,qBAAsB,WAClB5O,KAAK2O,gBAETtF,kBAAmB,WACf,IAAIF,EAAOnJ,KACX,IAAImJ,EAAK0F,YAAT,CAGA,IAAIC,EAAU,SAASC,GACnB,IAAIC,EAAQD,EAAMC,MACdC,EAAQF,EAAME,MACdC,EAAwB/F,EAAKlJ,UAAUkO,gBACvCC,EAAOc,EAAsBd,KAC7BC,EAAMa,EAAsBb,IAC5BxS,EAAIZ,EAAO+T,EAAQZ,GACnBtS,EAAIb,EAAOgU,EAAQZ,IAtLnC,SAAkBc,EAAMtT,EAAGC,GACvB,IAAIsS,EAAOe,EAAKf,KACZC,EAAMc,EAAKd,IACXe,EAASD,EAAKC,OACdC,EAAQF,EAAKE,MACb7S,EAAQ2S,EAAK3S,MACbE,EAASyS,EAAKzS,OAClB,OAAO,EAAInC,EAAO+U,eAAe,CAC7BlB,KAAMA,EACNC,IAAKA,EACLgB,MAAO7S,EAAQ6S,EACfD,OAAQ1S,EAAS0S,EACjB5S,MAAOA,EACPE,OAAQA,GACTb,EAAGC,IAyKOyT,CAASpG,EAAK8E,QAASpS,EAAGC,KAC3BqN,EAAKwF,eACLxF,EAAKqG,uBAGbzH,EAAepN,QAAQ4T,GAAGtG,EAAatN,QAAQ8U,cAAe5G,EAAgBiG,GAC9E9O,KAAK6O,YAAcC,IAEvBU,mBAAoB,WAChBxP,KAAK6O,aAAe9G,EAAepN,QAAQ2T,IAAIrG,EAAatN,QAAQ8U,cAAe5G,EAAgB7I,KAAK6O,aACxG7O,KAAK6O,YAAc,MAEvBrC,sBAAuB,WACnBxM,KAAK8L,gBAAgBwC,MACrBtO,KAAKwP,qBACLxP,KAAKC,UAAU8L,KAAKuC,IAAI,IAAM1F,IAElC4F,YAAa,WACT,IAAIrF,EAAOnJ,KAOX,OANKmJ,EAAKV,WACNE,EAAa+G,MAAM1P,KAAM2P,WACzBxG,EAAKyG,2BAA2BzG,EAAK0G,yBACrC1G,EAAK0G,wBAA0B,KAC/B1G,EAAK2G,sBAEF3G,EAAKV,YAGhBsH,EAAWvE,EACfvR,EAAQU,QAAUoV,EAClBvE,EAAcwE,UAAUvH,EAASwH,QACjCtH,EAAe6C,EAAc/K,UAAUkI,aACvC6C,EAAc/K,UAAUkI,aAAeH,EAAQ6C,KAC/C,IAAI6E,EAAkB1E,EAAc/K,UAAUyP,gBAC9C1E,EAAc/K,UAAUyP,gBAAkB,WAClClQ,KAAKyI,UACLyH,EAAgBR,MAAM1P,KAAM2P,YAGpCnE,EAAc/K,UAAUmP,2BAA6B,WACjD,IAAI7O,EAAUf,KAAKmQ,sBACfnQ,KAAKyI,SACLzI,KAAKyI,SAAS2H,mBAAmBrP,GAEjCf,KAAK6P,wBAA0B9O,GAGvCyK,EAAc/K,UAAUqP,mBAAqB,WACzC,IAAIO,EAAUrQ,KAAKyI,SACf1H,EAAUsP,GAAWrQ,KAAKsQ,WAAW,WACzCD,GAAWA,EAAQzF,OAAOnQ,EAAQ,GAAIsG,EAAS,CAC3CyI,iBAAkBD,EAAiCxI,EAAQyI,iBAAkBzI,EAAQkE,KAAMjF,KAAK+N,OAAO,eACvGwC,QAASxP,EAAQwP,SAAWvQ,KAAKwQ,wBAGzC,IAAIC,GAAe,EAAIrI,EAASvC,SAAQ,EAAM,GAAI6C,EAAQuH,OAAQ,CAC9DS,KAAMlI,EAAQ6C,KACd7L,QAASgJ,EAAQ6C,KACjBsF,UAAW,KACXC,QAAS,CACLC,sBAAuB,QAG/BrF,EAAcwE,UAAUS,GACxBK,EAAO7W,QAAUA,EAAQU,S,kCChRzBV,EAAQU,aAAU,EAClB,IAAIyN,EAAW/N,EAAQ,IACnB0W,EAAgB/I,EAAuB3N,EAAQ,MAC/CE,EAASF,EAAQ,IACjB6N,EAAQ7N,EAAQ,IAChB2W,EAAUhJ,EAAuB3N,EAAQ,MAE7C,SAAS2N,EAAuB7N,GAC5B,OAAOA,GAAOA,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAGnB,IAAIM,EAAU2N,EAASvC,OACnB9K,EAASD,KAAKE,MACdiW,EAAQnW,KAAKoW,KACbC,EAAQrW,KAAKsW,KACbC,EAAM,IAAMvW,KAAKwW,GACjBnW,EAAOL,KAAKM,IACZmW,EAAsBP,EAAQrW,QAAQ6W,kBACtCzB,EAAWtV,EAAQ,GAAIsW,EAAcpW,QAAS,CAC9C8W,YAAa,SAASvQ,EAAMwQ,GAExBX,EAAcpW,QAAQ8W,YAAY/M,KAAK1E,KAAMkB,IACzCwQ,IAAoB,EAAIxJ,EAAMyJ,WAFvB3R,KAEuC2B,YAFvC3B,KAGF2B,UAAW,GAHT3B,KAKN4R,SALM5R,KAKU6R,gBALV7R,KAKiC8R,kBAAmB,EAAI5J,EAAMyJ,WAAWzQ,EAAK0Q,UAAY1Q,EAAK0Q,SAAW,GAEzHG,QAAS,SAASC,EAAUC,EAAUC,GACvBlS,KACNmS,QAAQJ,QAAQ,CACjBlW,EAFOmE,KAECoS,QACRtW,EAHOkE,KAGCqS,QACRC,YAJOtS,KAIWuS,YAClBC,YALOxS,KAKWyS,YAClBC,WANO1S,KAMU2S,QACjBC,SAPO5S,KAOQ6S,WAChB,CACCX,MAAOA,EACPY,kBAAmBb,GACpBD,IAEPnP,gBAAiB,SAASkQ,GACX/S,KACNgT,cAAcD,GADR/S,KAENiT,mBAAmBF,EAAWR,YAAchB,GAFtCvR,KAGNoS,QAAUW,EAAWX,QAHfpS,KAINqS,QAAUU,EAAWV,SAE9BW,cAAe,SAASD,GACpB/S,KAAKyS,YAAcM,EAAWN,YAC9BzS,KAAKuS,YAAcQ,EAAWR,aAElCU,mBAAoB,SAASC,GACzBlT,KAAKkT,aAAeA,GAExBC,aAAc,SAASJ,EAAYvP,EAAS4P,GAC7BpT,KACNiC,OAASmR,GADHpT,KACgBqT,oBAAsBN,EADtC/S,KAEN4R,SAAWmB,EAFL/S,KAGNwD,QAAUA,EAHJxD,KAINsT,OAAOlS,aAAa,UAAWoC,IAExC+P,iBAAkB,WACdvT,KAAKsT,OAAOrS,QAAQjB,KAAKwT,0BAE7BC,qBAAsB,WAClB,IACI7W,EADOoD,KACKsT,OAAOlN,kBACnBxK,EAFOoE,KAEM0T,gBAFN1T,KAE2BsT,QAClCtI,EAHOhL,KAGY2T,kBACvB,OAJW3T,KAIF4T,6BAJE5T,KAKK6T,oBAAoBjY,EAAOgB,EAAMoO,GALtChL,KAOK8T,oBAAoBlY,EAPzBoE,KAOqC+T,4BAA4BnY,EAAOgB,EAAMoO,GAAcpO,IAG3GoX,kBAAmB,SAASjT,GACxB,OAAOA,EAAQsF,UAEnB4N,oBAAqB,SAASC,GAC1B,OAAOlU,KAAKmU,kBAAkB,SAAWD,EAAW,SAAW,UAAWlU,KAAKuS,YAAa,IAEhG4B,kBAAmB,SAAS9N,EAAU+N,EAAevM,GACjD,IAWIwM,EACAxY,EAZAe,EAAO+S,UAAUxF,OAAS,QAAK,IAAWwF,UAAU,GAAKA,UAAU,GAAK,CACxE9T,EAAG,EACHC,EAAG,EACHU,MAAO,EACPE,OAAQ,GAERyM,EAAOnJ,KACPsU,GAAiB,EAAI/Z,EAAOkE,cAAc0K,EAAKoL,aAC/C9B,EAActJ,EAAKsJ,YACnBF,EAAcpJ,EAAKoJ,YACnBiC,EAAkB,YAAcnO,EAkBpC,MAfI,WAAaA,GACbgO,EAAM5B,GAAeF,EAAcE,GAAe,EAAI5K,EACtDhM,EAAIsN,EAAKiJ,QAAUiC,EAAMC,EAAexW,IAAMlB,EAAKJ,MAAQ,IAE3D6X,EAAMD,EAAgBvM,EAElBhM,EADAyY,EAAexW,IAAM,IAAM0W,GAAmBF,EAAexW,KAAO,EAChEqL,EAAKiJ,QAAUiC,EAAMC,EAAexW,IAEpCwW,EAAexW,KAAO,IAAM0W,GAAmBF,EAAexW,IAAM,EAChEqL,EAAKiJ,QAAUiC,EAAMC,EAAexW,IAAMlB,EAAKJ,MAE/C2M,EAAKiJ,QAAUiC,EAAMC,EAAexW,IAAMlB,EAAKJ,MAAQ,GAIhE,CACHX,EAAGA,EACHC,EAAGf,EAAOoO,EAAKkJ,QAAUgC,EAAMC,EAAevW,IAAMnB,EAAKF,OAAS,KAG1EgX,gBAAiB,SAASe,GACtB,IACI7X,EAAO6X,EAAMrO,kBACbrF,EAAU0T,EAAMhN,mBAChBpB,EAHOrG,KAGSgU,kBAAkBjT,GACtC,OAJWf,KAICmU,kBAAkB9N,EAJnBrG,KAIkCkT,aAAcnS,EAAQ8G,aAAcjL,IAErF8X,mBAAoB,SAAS9Y,EAAO+Y,GAChC,IACIF,EADOzU,KACMsT,OAEbsB,EADOH,EAAMrO,kBACK5J,MAClBuE,EAAU0T,EAAMhN,mBAChBuD,EALOhL,KAKY2T,kBACnBkB,EAAe7J,EAAY8J,KAAOF,EAClCG,EAAc/J,EAAYgK,KAC1BC,GAAe,EAAI1a,EAAO2a,gBARnBlV,KAQwCuU,aAC/CnC,EATOpS,KASQoS,QACftK,EAAkB/G,EAAQ+G,gBAC1BjM,EAAID,EAAMC,EAsBd,MArBI,YAAckF,EAAQsF,UAElBxK,EADAoZ,GAAgB,IAAMA,GAAgB,IAClCJ,EAEAE,EAERnZ,EAAMC,EAAIA,GAEN,WAAakF,EAAQsF,UAAYsO,IAC7BM,GAAgB,IAAMA,GAAgB,IAClCpZ,EAAIiM,EAAkBsK,IACtBvW,EAAIuW,EAAUtK,GAGdjM,EAAI+Y,EAAa9M,EAAkBsK,IACnCvW,EAAIuW,EAAUwC,EAAa9M,GAGnClM,EAAMC,EAAIA,GAGXD,GAEXuZ,UAAW,WACPnV,KAAKoV,YACLpV,KAAK4T,8BAA+B,EACpC5T,KAAKqV,aACLrV,KAAK4T,8BAA+B,GAExC0B,iBAAkB,SAASX,GACvB,IACI/X,EADOoD,KACKsT,OAAOlN,kBACnBxK,EAFOoE,KAEM0U,mBAAmB9X,EAAM+X,GAC1C/Y,EAHWoE,KAGEuV,8BAA8B3Z,EAAOgB,EAHvCoD,KAGkD2T,mBAHlD3T,KAINsT,OAAOlM,MAAMrM,EAAOa,EAAMC,GAAId,EAAO6B,EAAKd,KAEnDiY,4BAA6B,SAASnY,EAAO4Z,EAAKxK,GAC9C,IAAInP,EAAID,EAAMC,EACVC,EAAIF,EAAME,EAQd,OAPIF,EAAME,EAAI0Z,EAAI9Y,OAASsO,EAAYyK,KACnC3Z,EAAIkP,EAAYyK,KAAOD,EAAI9Y,OAEvBd,EAAME,EAAIkP,EAAY0K,OACtB5Z,EAAIkP,EAAY0K,MAGjB,CACH7Z,EAAGA,EACHC,EAAGA,IAGXgY,oBAAqB,SAASlY,EAAO+Z,EAAYH,GAC7C,OAAO5Z,EAAME,IAAM6Z,EAAW7Z,GAAI,EAAIvB,EAAOqb,mCAAmC,CAC5E/Z,EAAGD,EAAMC,EACTC,EAAGF,EAAME,EACTU,MAAOgZ,EAAIhZ,MACXE,OAAQ8Y,EAAI9Y,QACbiZ,EAAW7Z,EAAIF,EAAME,EAAG,CACvBD,EAAGmE,KAAKoS,QACRtW,EAAGkE,KAAKqS,UACPzW,GAET2Z,8BAA+B,SAAS3Z,EAAO4Z,EAAKxK,GAChD,IAAInP,EAAID,EAAMC,EACVC,EAAIF,EAAME,EAQd,OAPIF,EAAMC,EAAI2Z,EAAIhZ,MAAQwO,EAAY8J,KAClCjZ,EAAImP,EAAY8J,KAAOU,EAAIhZ,MAEvBZ,EAAMC,EAAImP,EAAYgK,OACtBnZ,EAAImP,EAAYgK,MAGjB,CACHnZ,EAAGA,EACHC,EAAGA,IAGX+Z,cAAe,SAASlB,GACpB,IACIF,EADOzU,KACMsT,OACbkC,EAAMf,EAAMrO,kBACZ4E,EAHOhL,KAGY2T,kBACnBtN,EAAWoO,EAAMhN,mBAAmBpB,SACpC7J,EAAQgZ,EAAIhZ,MACZkK,GAAkB,EAyBtB,MAxBI,YAAcL,GAPPrG,KAOwB8V,OAAOC,MAAQ,EAC9CvZ,EAAQwO,EAAY8J,KARb9U,KAQyBoS,QARzBpS,KAQwCkT,aAE3C,WAAa7M,EACT7J,EAAQwO,EAAY8J,KAAO9J,EAAYgK,OACvCxY,EAAQwO,EAAY8J,KAAO9J,EAAYgK,MAGvCL,GAAwBa,EAAI3Z,EAf7BmE,KAesCoS,SAAWoD,EAAIhZ,MAAQgZ,EAAI3Z,EAfjEmE,KAe0EoS,QACzE5V,EAAQ1B,KAAKI,OAAO8P,EAAY8J,KAAO9J,EAAYgK,MAAQ,GAEvDQ,EAAI3Z,EAAIW,EAAQwO,EAAY8J,KAC5BtY,EAAQwO,EAAY8J,KAAOU,EAAI3Z,EAE3B2Z,EAAI3Z,EAAImP,EAAYgK,OACpBxY,EAAQgZ,EAAI3Z,EAAIW,EAAQwO,EAAYgK,MAMpDxY,EAAQgZ,EAAIhZ,QACZkK,EAAkB+N,EAAMlO,IAAI/J,IAEzBkK,GAEXsP,oBAAqB,WACjBhW,KAAKsT,OAAOrM,eAAejH,OAE/B6T,oBAAqB,SAASjY,EAAOgB,EAAMoO,GAEvC,OADApP,EAAQoE,KAAKuV,8BAA8B3Z,EAAOgB,EAAMoO,GACjDhL,KAAK+T,4BAA4BnY,EAAOgB,EAAMoO,IAEzDiL,mBAAoB,WAChB,IACI5B,EADOrU,KACIuS,YACX2D,EAFOlW,KAEYgB,SAASmV,OAAOC,OACnCC,EAAiBH,EAAY,gBAAkB,EAC/CI,EAJOtW,KAIY8V,OAAOS,aAAaC,2BAA6BN,EAAYtW,OAAS7E,EAAOsb,GAAkBtb,GAAQsb,GAC1H/B,GAAiB,EAAI/Z,EAAOkE,cAAc1D,EALnCiF,KAK+CuU,cAC1D,MAAO,CACH1Y,EAAGd,EAPIiF,KAOQoS,SAAWiC,EAAMiC,GAAehC,EAAexW,KAC9DhC,EAAGf,EARIiF,KAQQqS,SAAWgC,EAAMiC,GAAehC,EAAevW,KAC9DhB,MATOiD,KASKuU,cAGpBkC,YAAa,SAASvW,EAAUwW,EAAOC,EAAkBC,GACrD,IACIrE,EADOvS,KACYuS,YACnBE,EAFOzS,KAEYyS,YACnBI,EAHO7S,KAGU6S,UACjBF,EAJO3S,KAIQ2S,QACfgE,IACAlE,EAAcF,EAAc,EACvBqE,IACD/D,EAAYF,EART3S,KAQwB6W,eARxB7W,KAWNmS,QAAUjS,EAAS4W,IAXb9W,KAWsBoS,QAXtBpS,KAWoCqS,QAASI,EAAaF,EAAaI,EAASE,GAAWzQ,KAAK,CACvG,kBAAmB,UACpB2U,UAbQ/W,KAaOgX,aAAa9V,KAAK,CAChC,mBAdOlB,OAeRoF,QAAQP,OAAO6R,IAEtBO,iBAAkB,WACd,IACI3C,GAAiB,EAAI/Z,EAAOkE,cADrBuB,KACwCuU,aAC/C9B,EAFOzS,KAEYyS,YACnBF,EAHOvS,KAGYuS,YACvB,MAAO,CACH1W,EALOmE,KAKCoS,SAAWK,GAAeF,EAAcE,GAAe,GAAK6B,EAAexW,IACnFhC,EANOkE,KAMCqS,SAAWI,GAAeF,EAAcE,GAAe,GAAK6B,EAAevW,IACnFmZ,OAAQ,IAGhBC,WAAY,WACR,IACIpa,EADOiD,KACM6W,cAAgB,EAC7B5U,EAFOjC,KAEMiC,MACb2P,EAHO5R,KAGS4R,SAChBpH,EAJOxK,KAIWoX,oBAJXpX,KAKN6S,UAAYrI,EAAW4K,UAAUxD,GAAY7U,EALvCiD,KAMN2S,QAAUnI,EAAW4K,UAAUnT,GAASlF,EANlCiD,KAONuU,YAAc/J,EAAW4K,WAAWnT,EAAQ2P,GAAY,EAAIA,GAAY7U,EAPlEiD,KAQDsC,cARCtC,KASFuU,YATEvU,KASiB2S,QATjB3S,KASgC6S,UAThC7S,KASiD6S,WAAa9V,IAG7Esa,oBAAqB,WACjB,OAAO,GAEXC,cAAe,SAASX,EAAkBY,EAAO5b,EAAG6b,GAE3Cb,IACDY,EAAQ9c,EAAQ,CACZoB,EAHGmE,KAGKoS,QACRtW,EAJGkE,KAIKqS,QACRC,YALGtS,KAKeuS,YAClBC,YANGxS,KAMeyS,YAClBC,WAPG1S,KAOc2S,QACjBC,SARG5S,KAQY6S,WAChB0E,IATIvX,KAWNmS,QAAQ4E,UAAUQ,GAAOnS,QAC9BoS,GAAYA,KAEhBC,gBAAiB,WACb,OAAOzX,KAAK0X,QAAQC,cAExBC,gBAAiB,WACb,OAAO,GAEXrV,KAAM,WACSvC,KACF2B,WADE3B,KAEF2B,UAAW,EAFT3B,KAGF6X,cAHE7X,KAIFgB,SAAS8W,sBAGtBnV,KAAM,WACS3C,KACD2B,WADC3B,KAEF2B,UAAW,EAFT3B,KAGFgB,SAAS8W,sBAGtBC,gBAAiB,WACb/X,KAAKsT,OAAO3N,MAAK,IAErBrD,UAAW,WACP,OAAOtC,KAAK2B,UAEhBqW,iBAAkB,SAAS3H,GACvB,IAAI4H,EAAelH,EAAcpW,QAAQqd,iBAAiBtT,KAAK1E,KAAMqQ,GACjE7M,EAAUxD,KAAKwD,QAGnB,OAFAyU,EAAazU,QAAUA,EACvByU,EAAaxU,YAAc4M,EAAQ6H,YAAY1U,EAAS,WACjDyU,GAEXE,SAAU,WACN,OAAOnY,KAAK0X,QAAQtB,OAAOzW,MAE/ByY,SAAU,SAASvc,EAAGC,GAClB,IAMIiB,EALAsb,EAAKxc,EADEmE,KACOoS,QACdkG,EAAKxc,EAFEkE,KAEOqS,QACdzU,EAAIqT,EAAMoH,EAAKA,EAAKC,EAAKA,GACzBzF,EAJO7S,KAIU6S,UAAY,IAC7BF,EALO3S,KAKQ2S,QAAU,IAE7B,QAAI/U,EAPOoC,KAOEyS,aAAe7U,EAPjBoC,KAO0BuS,aAAe,IAAM3U,MAG1Db,EAAQoU,EAAMkH,EAAKza,GAAKyT,GAAOiH,EAAK,GAAK,EAAI,IACjC,IACRvb,GAAS,KAET8V,IAAcF,GAAWxX,EAdlB6E,KAc4B2S,QAd5B3S,KAc2C6S,WAAa,OAGxDA,GAAaF,EAAU5V,GAAS8V,GAAa9V,GAAS4V,IAAY5V,GAAS8V,GAAa9V,GAAS4V,QAIpH1Y,EAAQU,QAAUoV,EAClBe,EAAO7W,QAAUA,EAAQU,S,kCCpYzBV,EAAQU,aAAU,EAClB,IAOgCR,EAP5BK,EAAYH,EAAQ,IACpB+N,EAAW/N,EAAQ,IACnBmO,EAAUnO,EAAQ,IAClBiZ,EAASjZ,EAAQ,MACjB0W,GAG4B5W,EAHWE,EAAQ,OAIjCF,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAJf+N,EAAQ7N,EAAQ,IAOpB,IAAII,EAAU2N,EAASvC,OACnBhL,EAAQC,KACRK,EAAON,EAAMO,IACbmd,EAAO1d,EAAMqQ,IACbsN,EAAO3d,EAAMsQ,IACbpQ,EAASF,EAAMG,MAGf+U,EAAWtV,EAAQ,GAAIsW,EAAcpW,QAAS,CAC9C8d,YAAa,WACEzY,KACN0Y,UAAUlZ,UADJQ,KAEN0Y,UAAY,KAFN1Y,KAGN2Y,aAAanZ,UAHPQ,KAIN2Y,aAAe,MAExBC,WAAY,SAASlV,GACjB,IAAIyO,EAAUnS,KAAKmS,QACf0G,EAAS1G,GAAWA,EAAQzO,EAAO,UACnC+Q,EAAQzU,KAAK,IAAM0D,EAAO,SAC1BmV,GAAU,WAAaA,EAAOzW,KAAK,eACnCyW,EAAOzW,KAAK,CACRC,WAAY,WAGpBoS,EAAM9O,MAAK,IAEfoS,gBAAiB,WACb/X,KAAK4Y,WAAW,OAChB5Y,KAAK4Y,WAAW,WAEpBE,gBAAiB,WACb,IACI3G,EADOnS,KACQmS,QACf4G,EAAY5G,GAAWA,EAAQ4G,UAC/BC,EAAe7G,GAAWA,EAAQ6G,aAClCD,GAAaA,EAAU3W,KAAK,eAC5B2W,EAAU3W,KAAK,CACXC,WAAY,OAGhB2W,GAAgBA,EAAa5W,KAAK,eAClC4W,EAAa5W,KAAK,CACdC,WAAY,QAIxB4W,YAAa,WACT,IACI9G,EADOnS,KACQmS,QACf4G,EAAY5G,GAAWA,EAAQ4G,UAC/BC,EAAe7G,GAAWA,EAAQ6G,aAClCE,EAJOlZ,KAIcmZ,eACzBJ,GAAaA,EAAU3W,KAAK8W,GAC5BF,GAAgBA,EAAa5W,KAAK8W,IAEtClF,kBAAmB,SAASoF,GACxB,IACIC,EAAe,WAAarZ,KAAKgB,SAASyT,MAAMpO,SAMpD,OALKrG,KAAKgB,SAASsY,QAGJ,QAAUF,EAAaC,EAAe,QAAU,OAFhD,QAAUD,EAAaC,EAAe,MAAQ,UAMjEE,yBAA0B,WAEtB,MAAO,CACHxD,MAAO,EACPzS,SAHOtD,KAGQwZ,gBACfvX,MAJOjC,KAIK6R,gBACZ4H,WALOzZ,KAKU8V,OAAO4D,KACxBC,cANO3Z,KAMa8R,iBACpB8H,iBAPO5Z,KAOgB4Z,iBACvBte,MARO0E,OAWfuT,iBAAkB,WACd,IAAIsG,EAAkB7Z,KAAKwT,wBAC3BqG,EAAgB9D,MAAQ,EACxB/V,KAAK0Y,UAAUzX,QAAQ4Y,GACvB7Z,KAAK2Y,aAAa1X,QAAQjB,KAAKuZ,6BAEnCO,oBAAqB,WACjB,IACI/Y,EAAUf,KAAKgB,SAASyT,QADjBzU,KAEJ0Y,YAFI1Y,KAEe2Y,eAFf3Y,KAEqC+Z,eAFrC/Z,KAGN0Y,UAAU5X,WAAWC,GAHff,KAIN2Y,aAAa7X,WAAWC,IAEjCgZ,aAAc,WACV,IAAIhZ,EAAU,CACVb,SAAUF,KAAK8V,OAAO7V,UACtBG,YAAaJ,KAAK8V,OAAOkE,aACzB1e,MAAO0E,MAEXA,KAAK0Y,UAAY,IAAIpF,EAAOpZ,MAAM6G,GAClCf,KAAK2Y,aAAe,IAAIrF,EAAOpZ,MAAM6G,IAEzCkZ,gBAAiB,SAAS/F,GACtB,IAAInT,EAAUf,KAAKgB,SACfkZ,EAASla,KAAKma,UAAUpZ,EAAQqZ,OAChCA,EAAQ,QAAUlG,EAAWlU,KAAKqa,YAAYH,EAAO7L,KAAOrO,KAAKqa,YAAYH,EAAO9K,QAEpFxT,EAAQoE,KAAKsa,yBAAyBpG,GAW1C,OAVInT,EAAQwZ,QACDH,EAAQpa,KAAKwa,cAAc5e,EAAMC,EAAGD,EAAME,GAAKkE,KAAKya,eAAe7e,EAAMC,EAAGD,EAAME,EAAGiF,EAAQoV,OAAOC,OAAOxY,GAE3G,CACH/B,EAAGD,EAAMC,EACTC,EAAGF,EAAME,EACTU,MAAO,EACPE,OAAQ,IAKpB4d,yBAA0B,SAASpG,GAC/B,IAAIrY,EACAC,EACA4e,EAAQ,QAAUxG,EAQtB,OAPKlU,KAAKgB,SAASsY,SAIfzd,EAAI6e,EAAQlC,EAAKxY,KAAKnE,EAAGmE,KAAKgV,MAAQuD,EAAKvY,KAAKnE,EAAGmE,KAAKgV,MACxDlZ,EAAIkE,KAAKlE,IAJTD,EAAImE,KAAKnE,EACTC,EAAI4e,EAAQnC,EAAKvY,KAAKlE,EAAGkE,KAAK0V,MAAQ8C,EAAKxY,KAAKlE,EAAGkE,KAAK0V,OAKrD,CACH7Z,EAAGA,EACHC,EAAGA,IAGX6e,cAAe,SAASC,EAAaC,EAAUC,GAC3C,OAAOF,EAAcC,EAAWC,GAEpCC,uBAAwB,SAASC,EAAWC,GACxC,IAAI3B,EAAUtZ,KAAKgB,SAASsY,QACxB4B,EAAiB5B,EAAgB,IAAN,IAC3B6B,EAAiB7B,EAAqB,QAAX,SAC3BtO,EAAchL,KAAK8V,OAAOsF,eAAerQ,iBACzCsQ,EAAWrQ,EAAY,GACvBsQ,EAAWtQ,EAAY,GACvBuQ,EAAQxgB,GAAQigB,EAAUE,GAAiBF,EAAUG,GAAiBF,EAAaC,IAAkB,GACrGM,EAASR,EAAUE,GAAiBK,EACpCE,EAASR,EAAaC,GAAiBK,EAY3C,OAXIC,EAASH,GAETG,GADAD,EAAQF,EAAWG,EAEnBC,GAAUF,GAENE,EAASR,EAAaE,GAAiBG,IAEvCE,GADAD,EAAQD,EAAWG,EAASR,EAAaE,GAEzCM,GAAUF,GAGX,CACHC,OAAQA,EACRC,OAAQA,IAGhBC,oBAAqB,SAASC,GAC1B,IACIX,EADOhb,KACU0Y,UAAUtS,kBAC3B6U,EAFOjb,KAEa2Y,aAAavS,kBACjCwV,EAAc,GAHP5b,KAIDgB,SAASsY,QAeX,QAAUqC,EACN3b,KAAK2a,cAAcK,EAAUnf,EAAGof,EAAapf,EAAGof,EAAaze,SAC7Dof,EAAc5b,KAAK+a,uBAAuBE,EAAcD,GArBzDhb,KAsBM0Y,UAAUtR,MAAMwU,EAAYH,OAAQT,EAAUlf,GAtBpDkE,KAuBM2Y,aAAavR,MAAMwU,EAAYJ,OAAQP,EAAanf,IAGzDkE,KAAK2a,cAAcM,EAAapf,EAAGmf,EAAUnf,EAAGmf,EAAUxe,SAC1Dof,EAAc5b,KAAK+a,uBAAuBC,EAAWC,GA3BtDjb,KA4BM0Y,UAAUtR,MAAMwU,EAAYJ,OAAQR,EAAUlf,GA5BpDkE,KA6BM2Y,aAAavR,MAAMwU,EAAYH,OAAQR,EAAanf,IAxB7D,QAAU6f,EACN3b,KAAK2a,cAAcM,EAAanf,EAAGkf,EAAUlf,EAAGkf,EAAUte,UAC1Dkf,EAAc5b,KAAK+a,uBAAuBC,EAAWC,GAPtDjb,KAQM0Y,UAAUtR,MAAM4T,EAAUnf,EAAG+f,EAAYJ,QAR/Cxb,KASM2Y,aAAavR,MAAM6T,EAAapf,EAAG+f,EAAYH,SAGpDzb,KAAK2a,cAAcK,EAAUlf,EAAGmf,EAAanf,EAAGmf,EAAave,UAC7Dkf,EAAc5b,KAAK+a,uBAAuBE,EAAcD,GAbzDhb,KAcM0Y,UAAUtR,MAAM4T,EAAUnf,EAAG+f,EAAYH,QAd/Czb,KAeM2Y,aAAavR,MAAM6T,EAAapf,EAAG+f,EAAYJ,UAmBpEnG,WAAY,WACR,IACIwG,EAAS,GACTC,EAFO9b,KAEYgB,SAASsY,QAFrBtZ,KAEoCnE,GAFpCmE,KAE8CgV,KAF9ChV,KAE0DlE,EAF1DkE,KAEmE0V,KAC1EqG,EAHO/b,KAGiBgc,4BACxBC,EAJOjc,KAIS0Y,UAChBwD,EALOlc,KAKY2Y,aACvBsD,EAASE,cAAgBL,EAAc,MAAQ,SAC/CI,EAAYC,cAAgBL,EAAc,SAAW,OAP1C9b,KAQD8V,OAAOsG,sBAAwBL,IAR9B/b,KAQwD+C,aAAc,IAAUgZ,IACvF,IATO/b,KASQqc,kBAAoBR,EAAO5c,KAAKgd,IAC/C,IAVOjc,KAUQsc,qBAAuBT,EAAO5c,KAAKid,IAClD,EAAI1hB,EAAUkB,MAAMmgB,GAAQ,SAASlgB,EAAG8Y,GACpCA,EAAM9O,MAAK,MAZR3F,KAcF0b,oBAdE1b,KAcuB0Y,UAAUyD,iBAExCF,EAAStW,MAAK,GACduW,EAAYvW,MAAK,KAGzBwU,UAAW,SAASoC,GAChB,IAAInC,EAAQ,GAiBZ,OAhBI,EAAIlS,EAAMyJ,WAAW4K,KACjB,kBAAoBA,EACpBnC,EAAM/L,IAAM+L,EAAMhL,OAASmN,GAE3BnC,EAAM/L,IAAM,CACRmO,IAAK,kBAAoBD,EAAYC,IAAMD,EAAYC,IAAMD,EAAYC,KAAOD,EAAYC,IAAIC,cAChGjgB,MAAO,kBAAoB+f,EAAY/f,MAAQ+f,EAAY/f,MAAQ+f,EAAY/f,OAAS+f,EAAY/f,MAAMigB,cAC1G/f,OAAQ,kBAAoB6f,EAAY7f,OAAS6f,EAAY7f,OAAS6f,EAAY7f,QAAU6f,EAAY7f,OAAO+f,eAEnHrC,EAAMhL,OAAS,CACXoN,IAAK,kBAAoBD,EAAYC,IAAMD,EAAYC,IAAMD,EAAYC,KAAOD,EAAYC,IAAIE,cAChGlgB,MAAO,kBAAoB+f,EAAY/f,MAAQ+f,EAAY/f,MAAQ+f,EAAY/f,OAAS+f,EAAY/f,MAAMkgB,cAC1GhgB,OAAQ,kBAAoB6f,EAAY7f,OAAS6f,EAAY7f,OAAS6f,EAAY7f,QAAU6f,EAAY7f,OAAOggB,iBAIpHtC,GAEXuC,aAAc,SAASC,EAAYC,GAC/B,IACIC,EAAYF,EAAWG,OACvBC,EAAYH,EAAWE,OACvBE,EAAgB,WAAaH,GAAa,WAAaE,GAAa,WAAaF,GAAa,WAAaE,EAC3GE,EAJOld,KAIUma,UAAUyC,EAAWxC,OACtC+C,EALOnd,KAKUma,UAAU0C,EAAWzC,OACtCgD,EANOpd,KAMgBqa,YAAY6C,EAAU7O,OANtCrO,KAMoDqa,YAAY8C,EAAU9O,KACjFgP,EAPOrd,KAOmBqa,YAAY6C,EAAU9N,UAPzCpP,KAO0Dqa,YAAY8C,EAAU/N,QAC3F,OAAO6N,GAAiBG,GAAmBC,GAE/CC,0BAA2B,SAAS/F,GAChC,IACIxW,EADOf,KACQgB,SACfuc,EAAW,GACX1hB,EAAIkF,EAAQuY,QAAUf,EAHfvY,KAGyBnE,EAHzBmE,KAGiCgV,MAHjChV,KAG8CnE,EACrDC,EAAIiF,EAAQuY,QAJLtZ,KAIoBlE,EAAIyc,EAJxBvY,KAIkClE,EAJlCkE,KAI0C0V,MACjD8H,EAASjG,EAAM3Z,EACfH,EANOuC,KAMOyd,oBAAoB1c,EAAQgc,OAAQS,GActD,OAbAD,EAASlP,IAAM5T,EAAQ,CACnB4M,WAAYxL,EARLmE,KAQcxD,MACrB+K,WAAYzL,EACZ8B,EAAG4f,GACJjG,GACHgG,EAASnO,OAAS3U,EAAQ,CACtB4M,WAAYxL,EACZ0L,WAAYzL,EAdLkE,KAcctD,OACrBkB,EAAG4f,GACJjG,GACC9Z,IACA8f,EAASlP,IAAI5Q,OAAS8f,EAASnO,OAAO3R,OAASA,GAE5C8f,GAEXG,YAAa,WACT,OAAO1d,KAAKmS,SAAWnS,KAAKmS,QAAQ4G,WAAa/Y,KAAKmS,QAAQ6G,cAElE2E,eAAgB,SAASzd,EAAUkZ,EAAYwE,EAAeL,GAC1D,IACIpL,EADOnS,KACQmS,QACfA,EAAQiH,GAFDpZ,KAGF6d,iBAAiBzE,EAAYmE,GAElCpL,EAAQiH,GALDpZ,KAKoB8d,cAAc5d,EAAUiS,EAASyL,EAAeL,IAGnF9G,YAAa,SAASvW,EAAUwW,EAAOC,EAAkBC,EAAcW,GACnE,IACIgG,EADOvd,KACSsd,0BAA0B/F,GADnCvX,KACiDgX,aACxDoD,EAFOpa,KAEMma,UAFNna,KAEqBgB,SAASoZ,OAF9Bpa,KAGFqa,YAAYD,EAAM/L,OACvBkP,EAASlP,IAJFrO,KAIa+d,kBAAkBR,EAASlP,IAAK+L,EAAM/L,MAJnDrO,KAMFqa,YAAYD,EAAMhL,UACvBmO,EAASnO,OAPFpP,KAOgB+d,kBAAkBR,EAASnO,OAAQgL,EAAMhL,SAPzDpP,KASNmS,QATMnS,KASSmS,SAAWjS,EAAS0E,IAAIC,OAAO6R,GATxC1W,KAUNqc,kBAVMrc,KAUmB2d,eAAezd,EAAU,YAAaka,EAAM/L,IAAKkP,EAASlP,KAV7ErO,KAWNsc,qBAXMtc,KAWsB2d,eAAezd,EAAU,eAAgBka,EAAMhL,OAAQmO,EAASnO,SAErG4O,uBAAwB,SAASR,GAC7B,IACIlE,EADOtZ,KACQgB,SAASsY,QAC5B,MAAO,CACHjS,WAAYiS,EAAUf,EAHfvY,KAGyBnE,EAHzBmE,KAGiCgV,MAAQwI,EAHzCxd,KAGuDnE,EAAI2hB,EAClEjW,WAAY+R,EAJLtZ,KAIoBlE,EAAI0hB,EAASjF,EAJjCvY,KAI2ClE,EAJ3CkE,KAImD0V,MAAQ8H,EAClEhhB,MALOwD,KAKKxD,MAAQ,EAAIghB,EACxB9gB,OANOsD,KAMMtD,OAAS,EAAI8gB,IAGlC5F,gBAAiB,WACb,IAKIqG,EACA5B,EACAC,EANAhD,EADOtZ,KACQgB,SAASsY,QACxBhW,EAAYgW,EAFLtZ,KAE6BlE,EAF7BkE,KAEoBnE,EAC3BqiB,EAAY5E,EAAoCd,EAHzCxY,KAGmDgV,KAHnDhV,KAG8DnE,GAA/C2c,EAHfxY,KAGyB0V,KAHzB1V,KAGoClE,GAC3C8V,EAAY0H,EAAoCf,EAJzCvY,KAImDgV,KAJnDhV,KAI8DnE,GAA/C0c,EAJfvY,KAIyB0V,KAJzB1V,KAIoClE,GAI3CqiB,GAAmB,EACnBC,EATOpe,KASe8V,OAAOuI,kBAAkBtT,iBAC/CuT,EAVOte,KAUe8V,OAAOsF,eAAerQ,iBAC5CwT,EAAkBH,EAAe,GAAK9a,GAAY8a,EAAe,GAAK9a,EACtEkb,EAAkBF,EAAe,GAAK1M,GAAY0M,EAAe,GAAKJ,GAAYI,EAAe,GAAK1M,GAAY0M,EAAe,GAAKJ,EAc1I,OAbIK,GAAmBC,EACnBnC,EAAmBC,EAAsB6B,GAAmB,GAE5D9B,EAAmBiC,EAAe,IAAM1M,GAAY0M,EAAe,GAAK1M,EACxE0K,EAAsBgC,EAAe,GAAKJ,GAAYI,EAAe,IAAMJ,EACvE5E,IACA2E,EAAM5B,EACNA,EAAmBC,EACnBA,EAAsB2B,IArBnBje,KAwBNqc,iBAAmBA,EAxBbrc,KAyBNsc,oBAAsBA,EACpB6B,GAEXlH,iBAAkB,WACd,IACIpb,EACAC,EACAwd,EAHOtZ,KAGQgB,SAASsY,QACxB1H,EAAY0H,EAAoCf,EAJzCvY,KAImDnE,EAJnDmE,KAI2DgV,MAA5CuD,EAJfvY,KAIyBlE,EAJzBkE,KAIiC0V,MACxC+I,EAAQnF,EAAqB,QAAX,SAClBtO,EANOhL,KAMY2T,kBACnB+K,EAAapF,EAAUtO,EAAYgK,KAAOhK,EAAY0K,KACtDiJ,EAAarF,EAAUtO,EAAY8J,KAAO9J,EAAYyK,KACtDvK,EAAMsN,EAAKkG,EAAY9M,GACvBzG,EAAMoN,EAAKoG,EAAY/M,EAVhB5R,KAUgCye,IAQ3C,OAPKnF,GAIDxd,EAfOkE,KAeElE,EACTD,EAAIqP,GAAOC,EAAMD,GAAO,IAJxBrP,EAZOmE,KAYEnE,EACTC,EAAIoP,GAAOC,EAAMD,GAAO,GAKrB,CACHrP,EAAGA,EACHC,EAAGA,EACHob,OAAQ,IAGhBC,WAAY,WACR,IACImC,EADOtZ,KACQgB,SAASsY,QAC5BvI,EAAcpW,QAAQwc,WAAWzS,KAFtB1E,WAGNtD,OAAS4c,EAAU,EAAIne,EAHjB6E,KAG2B0V,KAH3B1V,KAGuClE,GAHvCkE,KAINxD,MAAQ8c,EAAUne,EAJZ6E,KAIsBnE,EAJtBmE,KAI+BgV,MAAQ,GAEtD4J,UAAW,WACP,OAAO7N,EAAcpW,QAAQikB,UAAUla,KAAK1E,SAAW,OAASA,KAAKgV,MAAQ,OAAShV,KAAK0V,OAE/FjE,YAAa,SAASvQ,GAElB6P,EAAcpW,QAAQ8W,YAAY/M,KADvB1E,KACkCkB,GADlClB,KAEN4R,SAFM5R,KAEU6R,gBAFV7R,KAEiC8R,iBAAmB5Q,EAAK0Q,UAExEmM,kBAAmB,SAASR,EAAUnD,GAClC,MAAO,CACHyE,KAAMzE,EAAMoC,KAAOpC,EAAM0E,WACzBtiB,MAAO4d,EAAM5d,OAvXC,GAwXdE,OAAQ0d,EAAM1d,QAvXC,GAwXf2K,WAAYkW,EAASlW,WACrBE,WAAYgW,EAAShW,aAG7BwX,iBAAkB,SAASljB,EAAGC,GAC1B,IACIwd,EADOtZ,KACQgB,SAASsY,QACxBtE,EAFOhV,KAEKgV,KACZU,EAHO1V,KAGK0V,KACZsJ,EAJOhf,KAIGgf,GACVC,EALOjf,KAKGif,GACVhd,EANOjC,KAMMiC,MACb2P,EAPO5R,KAOS4R,SAChBtO,EAROtD,KAQSsD,SAChB/H,EAAS,CACT2jB,KAVOlf,KAUI8V,OAAOoJ,KAClBrjB,EAAGmjB,EACHljB,EAAGmjB,EACHE,OAAQld,EACRmd,OAAQ9b,GAgBZ,OAdIgW,GACA/d,EAAO4jB,OAAS7b,EACZnI,EAAK6jB,EAAKnjB,GAAKV,EAAK6Z,EAAOnZ,GAC3BN,EAAO6jB,OAASnd,GAEhB1G,EAAOM,EAAImZ,EACXzZ,EAAO6jB,OAASxN,IAGhBzW,EAAK8jB,EAAKnjB,IAAMX,EAAKua,EAAO5Z,KAC5BP,EAAOO,EAAI4Z,EACXna,EAAO4jB,OAASvN,GAGjBrW,GAEXsiB,iBAAkB,SAASzE,EAAYmE,GACnCvd,KAAKmS,SAAWnS,KAAKmS,QAAQiH,IAAepZ,KAAKmS,QAAQiH,GAAYhX,KAAKmb,IAE9EjG,cAAe,SAASX,EAAkBY,GACtCvX,KAAKyW,iBAAY,OAAQ,GAAQ,GAAO,EAAOc,IAEnDS,iBAAkB,SAAS3H,GACvB,IACIwB,EADO7R,KACgB6R,gBACvBwN,EAFOrf,KAEaqf,aACpB7F,EAHOxZ,KAGgBwZ,gBACvB5H,EAAWvB,EAAQ6H,YAAYrG,GAC/B5P,EAAQoO,EAAQ6H,YAAYmH,GAChC,MAAO,CACH/b,SAAUkW,EACVnW,aAAcgN,EAAQ6H,YAAYsB,EAAiB,YACnDpW,UAAWwO,EAAW,MAAQ3P,EAC9Bqd,gBAAiB1N,EACjB2N,gBAAiBtd,EACjBud,YAAa3N,EACb4N,YAAaJ,EACb5F,WAdOzZ,KAcU8V,OAAO4D,KACxBpe,MAfO0E,KAgBP8R,iBAhBO9R,KAgBgB8R,iBACvB6H,cAjBO3Z,KAiBa2Z,cACpBC,iBAlBO5Z,KAkBgB4Z,mBAG/B8F,SAAU,WACN,MAAO,CAAC1f,KAAK0Y,UAAW1Y,KAAK2Y,eAEjCgH,UAAW,WACP,MAAO,CAAC3f,KAAK0Y,UAAW1Y,KAAK2Y,eAEjCvS,gBAAiBoC,EAAQ6C,KACzB+M,SAAU,SAASvc,EAAGC,GAClB,IAAI8jB,EAAgB5f,KAAK6f,iBACrBC,EAAQjkB,GAAKmE,KAAKnE,EAAI+jB,GAAiB/jB,GAAKmE,KAAKnE,EAAI+jB,EACrDG,EAAQjkB,GAAKkE,KAAKlE,EAAI8jB,GAAiB9jB,GAAKkE,KAAKlE,EAAI8jB,EACzD,OAAI5f,KAAKgB,SAASsY,QACPyG,IAAUD,GAASjkB,GAAKmE,KAAKgV,KAAO4K,GAAiB/jB,GAAKmE,KAAKgV,KAAO4K,GAEtEE,IAAUC,GAASjkB,GAAKkE,KAAK0V,KAAOkK,GAAiB9jB,GAAKkE,KAAK0V,KAAOkK,IAGrFI,YAAa,WACT,MAAI,aAAehgB,KAAK8V,OAAOmK,eACpBjgB,KAAK4R,SAAW5R,KAAKiC,MAAQjC,KAAK4R,SAEtC5R,KAAKiC,OAEhBie,YAAa,WACT,MAAI,aAAelgB,KAAK8V,OAAOmK,cACpBjgB,KAAK4R,SAAW5R,KAAKiC,MAAQjC,KAAK4R,SAAW5R,KAAKiC,MAEtDjC,KAAK4R,YAGpB3X,EAAQU,QAAUoV,EAClBe,EAAO7W,QAAUA,EAAQU,S,kCC5ezBV,EAAQU,aAAU,EAClB,IAAIyN,EAAW/N,EAAQ,IACnB0W,EAAgB/I,EAAuB3N,EAAQ,MAC/C8lB,EAAanY,EAAuB3N,EAAQ,MAEhD,SAAS2N,EAAuB7N,GAC5B,OAAOA,GAAOA,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAGnB,IAAIU,EAAQC,KACRK,EAAON,EAAMO,IACbmd,EAAO1d,EAAMqQ,IACbsN,EAAO3d,EAAMsQ,IACbpQ,EAASF,EAAMG,MAEf+U,GAAW,EAAI3H,EAASvC,QAAQ,GAAIsa,EAAWxlB,QAAS,CACxDylB,qBAAsB,SAASC,EAAWC,GACtC,IACIzkB,EADOmE,KACEnE,EACT0kB,EAFOvgB,KAEYgB,SAASsY,QAAU,SAASzd,EAAGC,GAClD,MAAO,CAACA,EAAGD,IACX,SAASA,EAAGC,GACZ,MAAO,CAACD,EAAGC,IAEXU,EAPOwD,KAOMxD,MACbgkB,EAROxgB,KAQUygB,MACjBtV,EAAMhQ,EAAKqlB,EAAYH,GAAallB,EAAKqlB,EAAYF,GAAcD,EAAYC,EAC/EpV,EAAMC,IAAQmV,EAAaD,EAAYC,EAO3C,OALIpV,IAAQC,EACC,GAAG7E,OAAOia,EAAY1kB,EAbxBmE,KAagCygB,QAAQna,OAAOia,EAAY1kB,EAb3DmE,KAamE0gB,OAAOpa,OAAOia,EAAY1kB,EAb7FmE,KAaqG2gB,SAASra,OAAOia,EAAY1kB,EAAIW,EAAQ,EAb7IwD,KAaqJ2gB,SAASra,OAAOia,EAAY1kB,EAAIW,EAAQ,EAb7LwD,KAaqM2gB,SAASra,OAAOia,EAAY1kB,EAbjOmE,KAayO2gB,SAEvO,GAAGra,OAAOia,EAAY1kB,EAfxBmE,KAegCygB,QAAQna,OAAOia,EAAY1kB,EAAGsP,IAAM7E,OAAOia,EAAY1kB,EAAIW,EAAQ,EAAG2O,IAAM7E,OAAOia,EAAY1kB,EAAIW,EAAQ,EAAG0O,IAAM5E,OAAOia,EAAY1kB,EAAGqP,IAAM5E,OAAOia,EAAY1kB,EAfnMmE,KAe2M0gB,OAAOpa,OAAOia,EAAY1kB,EAAGqP,IAAM5E,OAAOia,EAAY1kB,EAAIW,EAAQ,EAAG0O,IAAM5E,OAAOia,EAAY1kB,EAAIW,EAAQ,EAAG2O,IAAM7E,OAAOia,EAAY1kB,EAAGsP,KAInWyV,gBAAiB,SAAS9kB,GACtB,IACID,EADOmE,KACEnE,EACT0kB,EAFOvgB,KAEYgB,SAASsY,QAAU,SAASzd,EAAGC,GAClD,MAAO,CAACA,EAAGD,IACX,SAASA,EAAGC,GACZ,MAAO,CAACD,EAAGC,IAEf,MAAO,GAAGwK,OAAOia,EAAY1kB,EAPlBmE,KAO0BygB,QAAQna,OAAOia,EAAY1kB,EAPrDmE,KAO6D0gB,OAAOpa,OAAOia,EAAY1kB,EAAGC,IAAIwK,OAAOia,EAAY1kB,EAPjHmE,KAO0HxD,MAAQ,EAAGV,IAAIwK,OAAOia,EAAY1kB,EAP5JmE,KAOqKxD,MAAQ,EAAGV,IAAIwK,OAAOia,EAAY1kB,EAAGC,KAEzN+kB,WAAY,WACR,IAEIP,EAFOtgB,KAEW2gB,OAClBN,EAHOrgB,KAGU8gB,MAUrB,OATI,OAASR,GAAc,OAASD,EAJzBrgB,KAKOogB,qBAAqBC,EAAWC,GAE1CD,IAAcC,EACL,CARNtgB,KAQYnE,EARZmE,KAQoBygB,MARpBzgB,KAQgCnE,EARhCmE,KAQwC0gB,MARxC1gB,KAUW4gB,gBAAgB,OAASP,EAAYA,EAAYC,IAK3EnI,SAAU,WAEN,OADWnY,KACC+gB,aADD/gB,KACqBgB,SAASggB,UAAUpgB,MADxCZ,KACqD0X,QAAQtB,OAAOxW,QADpEI,KACmF8V,OAAOqC,YAEzG8I,mBAAoB,SAASvK,EAAO3R,EAAY7E,GACjCF,KACNmS,QAAUjS,EAASiF,KADbnF,KACuB6gB,aAAc,QAAQze,KAAK,CACzD,iBAAkB,WACnBA,KAAK2C,GAAY7D,KAAK,CACrB,mBAJOlB,OAKRoF,QAAQP,OAAO6R,IAEtBwK,WAAY,WACR,IACI/K,EADOnW,KACOgB,SAASmV,OADhBnW,KAEF+gB,cAFE/gB,KAEmBmhB,YAFnBnhB,KAGF0X,QAAUvB,EAAOiL,kBAHfphB,KAKE+gB,aALF/gB,KAME0X,QAAUvB,EAAO6K,UANnBhhB,KAQMmhB,YARNnhB,KASM0X,QAAUvB,EAAOkL,SATvBrhB,KAWM0X,QAAUvB,GAK/BmL,oBAAqB,WACjB,OAAO,EAAI,EAAIthB,KAAK0X,QAAQtB,OAAO,iBAEvCmL,mBAAoB,SAASC,GACzB,IAAIC,EAAWzhB,KAAKshB,sBAEhB9kB,EAAQglB,EAAehlB,MAC3BA,EAAQA,EAAQilB,EAAWA,EAAWjlB,EAFvB,MAEqDA,EACpEwD,KAAKxD,MAAQA,EAAQA,EAAQ,EAC7BwD,KAAK0hB,YAAcF,EAAetK,QAEtCyK,gBAAiB,SAASjL,GAgBtB,OAfW1W,KAEF+gB,cAFE/gB,KAEmBmhB,YACZzK,EAAMkL,8BAHb5hB,KAKE+gB,aACSrK,EAAMmL,sBANjB7hB,KAQMmhB,YACSzK,EAAMoL,4BAENpL,EAAMqL,qBAMpCtL,YAAa,SAASvW,EAAUwW,GAC5B1W,KAAKihB,mBAAmBjhB,KAAK2hB,gBAAgBjL,GAAQ1W,KAAKgX,YAAa9W,IAE3E8d,uBAAwB,WACpB,IAIIniB,EACAC,EACAU,EACAE,EANA+jB,EADOzgB,KACMygB,MACbC,EAFO1gB,KAEK0gB,KACZpH,EAHOtZ,KAGQgB,SAASsY,QAoB5B,OAfImH,IAAUC,IACVD,EAAQnH,EAAUmH,EAvHS,EAuHkCA,EAvHlC,EAwH3BC,EAAOpH,EAAUoH,EAxHU,EAwHgCA,EAxHhC,GA0H3BpH,GACAzd,EAAI0c,EAAKmI,EAAMD,GACf3kB,EAdOkE,KAcEnE,EAdFmE,KAcWxD,MAAQ,EAC1BA,EAAQrB,EAAKulB,EAAOD,GACpB/jB,EAhBOsD,KAgBOxD,QAEdX,EAlBOmE,KAkBEnE,EAlBFmE,KAkBWxD,MAAQ,EAC1BV,EAAIyc,EAAKmI,EAAMD,GACfjkB,EApBOwD,KAoBMxD,MACbE,EAASvB,EAAKulB,EAAOD,IAElB,CACH5kB,EAAGA,EACHC,EAAGA,EACHU,MAAOA,EACPE,OAAQA,IAGhBud,gBAAiB,SAAS/F,GACtB,IACIoF,EADOtZ,KACQgB,SAASsY,QACxBzd,EAFOmE,KAEEnE,EACTW,EAHOwD,KAGMxD,MACbkkB,EAJO1gB,KAIK0gB,KACZD,EALOzgB,KAKMygB,MACjB,GAAIvM,EAAU,CACV,IAAI8N,EAPGhiB,KAOmB8V,OAAOsF,eAAerQ,iBAChD0V,EAROzgB,KAQMiiB,eAAexB,EAAOuB,GACnCtB,EATO1gB,KASKiiB,eAAevB,EAAMsB,GAErC,IAAIplB,EAAO,CACPf,EAAIyd,EAAkCoH,EAAxB7kB,EAAId,EAAOyB,EAAQ,GACjCV,EAAIwd,EAAkBzd,EAAId,EAAOyB,EAAQ,GAA3BikB,EACdjkB,MAAQ8c,EAAkBmH,EAAQC,EAAhBlkB,EAClBE,OAAS4c,EAAyB9c,EAAfkkB,EAAOD,GAE9B,GAAIvM,EAAU,CACV,IAAIwG,EAAQ,QAAUxG,EACjBlU,KAAKgB,SAASsY,SAIf1c,EAAKf,EAAI6e,EAAQ9d,EAAKf,EAAIe,EAAKJ,MAAQI,EAAKf,EAC5Ce,EAAKJ,MAAQ,IAJbI,EAAKd,EAAI4e,EAAQ9d,EAAKd,EAAIc,EAAKd,EAAIc,EAAKF,OACxCE,EAAKF,OAAS,GAMtB,OAAOE,GAEXqa,iBAAkB,SAAS/C,GAEvB,GADWlU,KACFmS,QAAS,CACd,IAAIP,EAAW2G,EAFRvY,KAEkB0gB,KAFlB1gB,KAE6BygB,OAChCvC,EAAW1F,EAHRxY,KAGkB0gB,KAHlB1gB,KAG6BygB,OAChCzV,EAJGhL,KAIgB2T,kBACnB2F,EALGtZ,KAKYgB,SAASsY,QACxBoF,EAAapF,EAAUtO,EAAYgK,KAAOhK,EAAY0K,KACtDiJ,EAAarF,EAAUtO,EAAY8J,KAAO9J,EAAYyK,KACtDvK,EAAMsN,EAAKkG,EAAY9M,GACvBzG,EAAMoN,EAAKoG,EAAYT,GACvBgE,EAVGliB,KAUgBmiB,iBAKvB,MAJI,SAAWjO,IACXgO,EAAY5I,EAAU,IAAM,KAAOA,EAAUnO,EAAMD,GAEvDgX,EAAYhL,OAAS,EACdgL,IAGfC,eAAgB,WACZ,GAAIniB,KAAKmS,QAAS,CACd,IACItW,EACAC,EACA8V,EAAW2G,EAHJvY,KAGc0gB,KAHd1gB,KAGyBygB,OAChCvC,EAAW1F,EAJJxY,KAIc0gB,KAJd1gB,KAIyBygB,OAChCzV,EALOhL,KAKY2T,kBACnB2F,EANOtZ,KAMQgB,SAASsY,QACxBoF,EAAapF,EAAUtO,EAAYgK,KAAOhK,EAAY0K,KACtDiJ,EAAarF,EAAUtO,EAAY8J,KAAO9J,EAAYyK,KACtDvK,EAAMsN,EAAKkG,EAAY9M,GAEvBwQ,EAASlX,GADHqN,EAAKoG,EAAYT,GACDhT,GAAO,EAQjC,OAPIoO,GACAxd,EAbOkE,KAaEnE,EACTA,EAAIumB,IAEJvmB,EAhBOmE,KAgBEnE,EACTC,EAAIsmB,GAED,CACHvmB,EAAGA,EACHC,EAAGA,KAIfiH,SAAU,WACN,OAAO,OAAS/C,KAAKqE,WAAa,OAASrE,KAAKmE,UAEpDya,UAAW,WACP,OAAO,OAAS5e,KAAKnE,GAAK,OAASmE,KAAK0gB,MAAQ,OAAS1gB,KAAKygB,OAElEtJ,WAAY,WACR,IACImC,EADOtZ,KACQgB,SAASsY,QACxB+I,EAFOriB,KAEcoX,oBACrBvb,EAHOmE,KAGEsiB,oBAAoBlN,UAHtBpV,KAGqCsD,UAHrCtD,KAINgf,GAJMhf,KAIIif,GAJJjf,KAIcnE,EAAI,OAASA,EAAIA,EAAIA,GAJnCmE,KAI6C0hB,aAAe,GAJ5D1hB,KAKN8gB,MAAQ,OALF9gB,KAKgB+D,UAAYse,EAAcjN,UAL1CpV,KAKyD+D,WAAa,KALtE/D,KAMNygB,MAAQ4B,EAAcjN,UANhBpV,KAM+BqE,WAN/BrE,KAON0gB,KAAO2B,EAAcjN,UAPfpV,KAO8BmE,UAP9BnE,KAQN2gB,OAAS,OARH3gB,KAQiBiE,WAAaoe,EAAcjN,UAR5CpV,KAQ2DiE,YAAc,KACpF,IAAIse,EAAchK,EATPvY,KASiB0gB,KATjB1gB,KAS4BygB,OAAStlB,EATrC6E,KAS+C0gB,KAT/C1gB,KAS2DygB,OAAS,EATpEzgB,KAUNwiB,qBAAsBlJ,EAAmBiJ,EAVnCviB,KAU+BnE,EAAkByd,EAVjDtZ,KAU8EnE,EAAnB0mB,IAE1ExD,iBAAkB,SAASljB,EAAGC,GAC1B,IAGIqjB,EAEA5jB,EAJA+d,EADOtZ,KACQgB,SAASsY,QACxBmJ,EAAQnJ,EAAUzd,EAAIC,EAEtBwH,EAJOtD,KAISsD,SAEhB1H,EAAQ,MA+BZ,OA9BIT,EAPO6E,KAOG0gB,KAAO+B,GAAStnB,EAPnB6E,KAO6B2gB,OAAS8B,GAC7CtD,EAROnf,KAQO0gB,MAEdvB,EAVOnf,KAUO2gB,OACd/kB,EAAQ,SAERT,EAAKgkB,EAASsD,IAAUtnB,EAbjB6E,KAa2B8gB,MAAQ2B,KAC1CtD,EAdOnf,KAcO8gB,MACdllB,EAAQ,QAERT,EAAKgkB,EAASsD,IAAUtnB,EAjBjB6E,KAiB2BygB,MAAQgC,KAC1CtD,EAlBOnf,KAkBOygB,MACd7kB,EAAQ,SAGRL,EADA+d,EACS,CACLxd,EAvBGkE,KAuBKif,GACRpjB,EAAGsjB,EACHC,OAzBGpf,KAyBUpE,EAAQ,SACrBujB,OAAQ7b,GAGH,CACLzH,EA9BGmE,KA8BKgf,GACRljB,EAAGqjB,EACHC,OAAQ9b,EACR6b,OAjCGnf,KAiCUpE,EAAQ,WAGtBsjB,KApCIlf,KAoCQ8V,OAAOoJ,KACnB3jB,GAEXkW,YAAa,SAASvQ,GAClB,IACIuT,EADOzU,KACMsT,OACboP,EAAiB1iB,KAAKgB,SAASggB,UAAUpgB,MAFlCZ,KAGNiC,MAHMjC,KAGOqf,aAAene,EAAKqD,eAH3BvE,KAIN2Z,cAAgBzY,EAAKe,MAJfjC,KAKNmE,SALMnE,KAKU2iB,iBAAmBzhB,EAAKiD,SALlCnE,KAMNqE,UANMrE,KAMW4iB,kBAAoB1hB,EAAKmD,UANpCrE,KAON+D,UAPM/D,KAOW6iB,kBAAoB3hB,EAAK6C,UAPpC/D,KAQNiE,WARMjE,KAQY8iB,mBAAqB5hB,EAAK+C,WARtCjE,KASNmhB,YAAcjgB,EAAK6C,UAAY7C,EAAK+C,WAT9BjE,KAUN+gB,aAAe7f,EAAK6hB,YAVd/iB,KAWF+gB,cACLtM,EAAM9T,SAAS+hB,IAGvBpL,cAAe,SAASX,EAAkBY,EAAOb,GAC7C,IACIvE,EADOnS,KACQmS,QACnBA,EAAQ/P,KAAK,CACT3E,OAHOuC,KAGM6gB,eACd9J,UAAUQ,GAAOnS,QACpBsR,GAASvE,EAAQtN,OALN7E,KAKkB2hB,gBAAgBjL,KAEjDlD,sBAAuB,WAEnB,MAAO,CACHzP,UAFO/D,KAES+D,UAChBM,UAHOrE,KAGSqE,UAChBF,SAJOnE,KAIQmE,SACfF,WALOjE,KAKUiE,WACjBM,eANOvE,KAMcqf,aACrB/b,SAPOtD,KAOQwZ,gBACfvX,MAROjC,KAQKqf,aACZ5F,WATOzZ,KASU8V,OAAO4D,KACxBmJ,kBAVO7iB,KAUiB6iB,kBACxBC,mBAXO9iB,KAWkB8iB,mBACzBH,iBAZO3iB,KAYgB2iB,iBACvBC,kBAbO5iB,KAaiB4iB,kBACxBhJ,iBAdO5Z,KAcgB4Z,iBACvBte,MAfO0E,OAkBfgY,iBAAkB,SAAS3H,GACvB,IACIhM,EAAYgM,EAAQ6H,YADblY,KAC8BqE,WACrCN,EAAYsM,EAAQ6H,YAFblY,KAE8B+D,WACrCE,EAAaoM,EAAQ6H,YAHdlY,KAG+BiE,YACtCE,EAAWkM,EAAQ6H,YAJZlY,KAI6BmE,UAEpC8T,EADgBlH,EAAcpW,QACDqd,iBAAiBtT,KANvC1E,KAMkDqQ,GAC7D,OAAO,EAAIjI,EAASvC,QAAQ,GAAIoS,EAAc,CAC1C7U,UAAW,MAAQiB,GAAa,KAAON,EAAY,OAASA,EAAY,KAAO,KAAOE,EAAa,OAASA,EAAa,IAAM,OAASE,EACxIG,cAAeD,EACfL,cAAeD,EACfG,eAAgBD,EAChBG,aAAcD,KAGtB6b,YAAa,WACT,OAAOhgB,KAAKqE,WAEhB6b,YAAa,WACT,OAAOlgB,KAAKmE,YAGpBlK,EAAQU,QAAUoV,EAClBe,EAAO7W,QAAUA,EAAQU,S,kCCrWzBV,EAAQU,aAAU,EAClB,IAAIH,EAAYH,EAAQ,IACpB2oB,EAAkBhb,EAAuB3N,EAAQ,OACjD4oB,EAAyBjb,EAAuB3N,EAAQ,KAE5D,SAAS2N,EAAuB7N,GAC5B,OAAOA,GAAOA,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAGnB,IAQI+oB,EAAUC,OACVC,EAAYC,SACZC,EAAWN,EAAgBroB,QAAQ8Q,QAAQ,CAC3C8X,iBAAkB,MAClBC,WAAY,aACZC,cAAe,SACfpX,aAAc,CACV7P,MAXmB,IAYnBE,OAXoB,GAYpB0R,KAXwB,EAYxBiB,MAZwB,EAaxBhB,IAZsB,EAatBe,OAbsB,GAe1B7C,uBAAwB,kBACbvM,KAAK0jB,sBACL1jB,KAAK2jB,mBACL3jB,KAAK4jB,eAEhB1W,qBAAsB,WAClBlN,KAAK0jB,eAAeG,SACpB7jB,KAAK2jB,YAAYE,SACjB7jB,KAAK4jB,cAAcC,UAEvBzW,oBAAqB,WACjBpN,KAAK8jB,cACL9jB,KAAK8C,UAETkJ,oBAAqB,WACjB,IAAI9L,EAAWF,KAAKC,UACpBD,KAAK0jB,eAAiBxjB,EAASiF,UAAK,EAAQ,QAAQ/C,KAAK,CACrD,MAAS,iBACT,iBAAkB,WAEtBpC,KAAK2jB,YAAczjB,EAASiF,UAAK,EAAQ,QAAQ/C,KAAK,CAClD,MAAS,aACT,iBAAkB,WAEtBpC,KAAK4jB,cAAgB1jB,EAASiF,UAAK,EAAQ,QAAQ/C,KAAK,CACpD,MAAS,gBACT,iBAAkB,YAG1BwK,gBAAiB,WACb,IACI7L,EACAgjB,EACAC,EACAC,EACAhiB,EACAiiB,EANOlkB,KAON2N,YAAc5M,EAPRf,KAOuBmkB,WAClC,IAAIC,OAAmB,IARZpkB,KAQ4B2N,YAAY1L,MAC/CoiB,OAAoB,IATbrkB,KAS6B2N,YAAYuW,OATzClkB,KAUNskB,kBAAoBF,GAAoBC,GACzCD,IAXOpkB,KAYF2N,YAAY1L,MAAQ,GAEzBoiB,IAdOrkB,KAeF2N,YAAYuW,OAAS,GAE9BnjB,EAAQkB,MAAQA,EAAQihB,EAAQniB,EAAQkB,OACxClB,EAAQmjB,OAASA,EAAShB,EAAQniB,EAAQmjB,aACtC,IAnBOlkB,KAmBS2N,YAAYoW,kBAnBrB/jB,KAoBF2N,YAAYoW,gBAAkBG,EAASjiB,EAAQiiB,EAASjiB,EApBtDjC,KAqBF2N,YAAYoW,gBArBV/jB,KAqBiC2N,YAAYoW,gBAAkB,EArB/D/jB,KAqBwE2N,YAAYoW,gBAAkB,QAE7G,IAvBO/jB,KAuBS2N,YAAYqW,gBAvBrBhkB,KAwBF2N,YAAYqW,cAAgBE,EAASjiB,EAAQiiB,EAASjiB,GAE/DlB,EAAQgjB,gBAAkBA,EAAkBb,EAAQniB,EAAQgjB,iBAC5DhjB,EAAQijB,cAAgBA,EAAgBd,EAAQniB,EAAQijB,eACpDA,EAAgBD,IAChBE,EAAQD,EA7BDhkB,KA8BF2N,YAAYqW,cAAgBD,EA9B1B/jB,KA+BF2N,YAAYoW,gBAAkBE,EA/B5BjkB,KAgCF2N,YAAY4W,UAAW,IAGpCjX,aAAc,WACV,IACIvM,EADOf,KACQ2N,YADR3N,KAENyM,QAAU,CACXc,IAAK,CACDiX,OAAQzjB,EAAQ2I,YAAc3I,EAAQwjB,SAAWxjB,EAAQwjB,SACzDrZ,IAAKnK,EAAQgjB,gBACb5Y,IAAKpK,EAAQijB,cACbS,SAAU,aACVC,SAAU,WAEdjX,IAAK,CACDvC,IAAK,EACLC,IAAK,EACLsZ,SAAU,aACVC,SAAU,aAItBZ,YAAa,WACT,IACI/iB,EADOf,KACQ2N,YACfgX,EAAgB5jB,EAAQgjB,kBAAoBhjB,EAAQijB,cACpDY,EAAaxB,EAAUriB,EAAQgjB,iBAC/Bc,EAAazB,EAAUriB,EAAQijB,eAC/Bc,EAAe1B,EAAUriB,EAAQkB,OACjC8iB,EAAgB3B,EAAUriB,EAAQmjB,QAClCS,GAAiBE,GAAcD,GAAcG,GAAiBD,IAC9D9kB,KAAKglB,gBACLhlB,KAAKilB,cACLjlB,KAAKklB,mBAGbC,iBAAkB,WACd,IACIpkB,EADOf,KACQ2N,YACfyX,EAFOplB,KAEYmM,WAAWxB,gBAC9B9O,EAHOmE,KAGEkM,cAAcvB,gBAAgByK,UAAUrU,EAAQmjB,QAC7D,MAAO,CACHzmB,OAAQ,CAAC5B,EAAGupB,EAAYhQ,UA9HjB,KA8H0CvZ,EAAGupB,EAAYhQ,UA7HzD,MA8HPxV,OAAQmB,EAAQskB,YAChB,eAAgBtkB,EAAQukB,cAGhCC,mBAAoB,WAChB,IASItoB,EACAC,EATA6D,EADOf,KACQ2N,YACf6X,EAFOxlB,KAEYkM,cAAcvB,gBACjCya,EAHOplB,KAGYmM,WAAWxB,gBAC9B8a,EAAa1kB,EAAQgjB,gBACrB2B,EAAW3kB,EAAQijB,cACnB/hB,EAAQlB,EAAQkB,MAChB7E,EAAKgoB,EAAYhQ,UAzIP,IA0IVjY,EAAKioB,EAAYhQ,UAzIP,IAqJd,OATInT,EAAQ,GACRhF,EAAKwoB,GAAc,EAAI,EAAIA,EAC3BvoB,EAAK+E,GAASyjB,EAAWA,EAAWzjB,EAAQhF,EAAKA,EAAKgF,IAEtDhF,EAAKyoB,GAAY,EAAI,EAAIA,EACzBxoB,EAAK+E,EAAQwjB,EAAaA,EAAaxjB,EAAQhF,EAAKA,EAAKgF,GAItD,CACHxE,OAAQ,CAHZR,EAAKuoB,EAAYpQ,UAAUnY,GAGVE,EAFjBD,EAAKsoB,EAAYpQ,UAAUlY,GAEFC,EAAID,EAAIE,EAAIH,EAAIG,GACrCuC,KAAMoB,EAAQH,QAGtByM,kBAAmB,WACf,OAAOrN,KAAKiO,SAEhB0X,oBAAqB,WACjB,IACIP,EADOplB,KACYmM,WAAWxB,gBAC9B9O,EAFOmE,KAEEkM,cAAcvB,gBAAgByK,UAAU,GACrD,MAAO,CACH3X,OAAQ,CAAC5B,EAAGupB,EAAYhQ,UArKjB,KAqK0CvZ,EAAGupB,EAAYhQ,UApKzD,MAqKPxV,OALOI,KAKM2N,YAAY0X,YACzB,eAAgB,IAGxBH,eAAgB,WACZ,IACInkB,EADOf,KACQ2N,YACf,EAAI5M,EAAQijB,eAAiB,EAAIjjB,EAAQgjB,kBAAoBhjB,EAAQ6kB,eAF9D5lB,KAKN0jB,eAAethB,KALTpC,KAKmB2lB,uBAAuBvgB,QAAQP,OALlD7E,KAK8DC,UAAU8L,OAEvFkZ,YAAa,WACT,IACIlkB,EADOf,KACQ2N,YACfuW,EAASnjB,EAAQmjB,OACjBA,EAASnjB,EAAQijB,eAAiBE,EAASnjB,EAAQgjB,kBAAoBhjB,EAAQ8kB,YAHxE7lB,KAMN2jB,YAAYvhB,KANNpC,KAMgBmlB,oBAAoB/f,QAAQP,OAN5C7E,KAMwDC,UAAU8L,OAEjFiZ,cAAe,WACXhlB,KAAK4jB,cAAcxhB,KAAKpC,KAAKulB,sBAAsB1gB,OAAO7E,KAAKC,UAAU8L,OAE7EiC,kBAAmB,WACf,IAAIlD,EAAS9K,KAAKiO,QACdC,EAAalO,KAAKC,UAAUkO,gBAC5BvR,EAAOoD,KAAK4jB,cAAcne,UAC9B,MAAO,CACH5J,EAAGe,EAAKf,EAAIe,EAAKJ,MAAQ,EAAI0R,EAAWE,KACxCtS,EAAGgP,EAAOpO,OAAS,EAAIwR,EAAWG,MAG1CK,gBAAiB,WACb,IACI2B,EADOrQ,KACQyI,SACf1H,EAFOf,KAEQ2N,YACf1L,EAAQlB,EAAQkB,MAChBiiB,EAASnjB,EAAQmjB,OACjB9gB,EAAYiN,EAAQ6H,YAAYjW,GAChC6jB,EAAazV,EAAQ6H,YAAYgM,GACrC,MAAO,CACHvK,cAAe1X,EACf8jB,eAAgB7B,EAChBjiB,MAAOmB,EACP8gB,OAAQ4B,EACR1iB,UAAW,CAAC,gBAAiBA,EAAW,gBAAiB0iB,KAGjEtV,kBAAmB,WACf,OAAOxQ,KAAKskB,oBAGpB,EAAI9pB,EAAUkB,MAAM,CAAC,QAAS,cAAe,cAAe,aAAc,gBAAiB,QAAS,SAAU,kBAAmB,kBAAkB,SAASC,EAAG+d,GAC3J4J,EAAS7iB,UAAUulB,kBAAkBtM,GAAQ,cAEjD,EAAIuJ,EAAuBtoB,SAAS,WAAY2oB,GAChD,IAAIvT,EAAWuT,EACfrpB,EAAQU,QAAUoV,EAClBe,EAAO7W,QAAUA,EAAQU,S,kCC3OzBV,EAAQgsB,MAAQA,EAChB,IAAIjV,EAAUhJ,EAAuB3N,EAAQ,MACzC0W,EAAgB/I,EAAuB3N,EAAQ,MAC/C8lB,EAAanY,EAAuB3N,EAAQ,MAC5C6rB,EAAgBle,EAAuB3N,EAAQ,OAC/C8rB,EAAane,EAAuB3N,EAAQ,OAC5C+rB,EAAsBpe,EAAuB3N,EAAQ,OACrDgsB,EAAmBre,EAAuB3N,EAAQ,OAClDisB,EAAqBte,EAAuB3N,EAAQ,OACpDksB,EAAeve,EAAuB3N,EAAQ,OAC9CmsB,EAAensB,EAAQ,MACvBE,EAASF,EAAQ,IACjB+N,EAAW/N,EAAQ,IACnB6N,EAAQ7N,EAAQ,IAChBmO,EAAUnO,EAAQ,IAEtB,SAAS2N,EAAuB7N,GAC5B,OAAOA,GAAOA,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAGnB,IAAIssB,EAAS,GACThsB,EAAU2N,EAASvC,OACnB6gB,EAAe1V,EAAQrW,QAAQgsB,OAM/BC,EAAiBF,EAAaG,aAC9BC,EAAcJ,EAAaK,UAC3BC,EAAeN,EAAaO,WAC5BC,EAAQR,EAAaS,MACrBC,EAASV,EAAatQ,OACtBiR,EAAYX,EAAaY,UACzBC,EAAa,CACbC,MAAO,CACHC,QAbW,cAcXC,KAdW,cAeXC,OAfW,cAgBXC,SAhBW,cAiBXC,YAjBW,cAkBXC,gBAlBW,cAmBXC,cAnBW,cAoBXC,kBApBW,cAqBXC,kBArBW,cAsBXC,sBAtBW,cAuBXC,KAvBW,cAwBXC,WAxBW,cAyBXC,SAzBW,cA0BXC,YA1BW,cA2BXC,gBA3BW,cA4BXC,UAAW,mBACXC,IA3BQ,WA4BRC,WA5BQ,WA6BRC,eA7BQ,WA8BRC,SAAU,gBACVC,OAAQ,cACRC,MAAO,aACPC,YAAa,oBAEjBC,IAAK,CACDA,IAlCQ,WAmCRC,SAnCQ,WAoCRC,MApCQ,YAsCZC,MAAO,CACH1B,QA1CiB,mBA2CjBC,KA3CiB,mBA4CjBS,KA5CiB,mBA6CjBM,IA3Cc,gBA4CdC,WA5Cc,kBAgDtB,SAASU,EAAWC,GAChB,MAAO,UAAW,EAAI9uB,EAAO+uB,eAAeD,GAGhD,SAASpD,EAAMnQ,EAAQyT,EAAUxoB,GAC7Bf,KAAKwpB,UAAYxC,EACjBhnB,KAAK8V,OAASA,EACd9V,KAAK4K,OAAO2e,EAAUxoB,GACtBf,KAAKypB,cAAgB,CACjBtC,MAAO,EACPG,UAAW,GAEftnB,KAAKmZ,eAAiB,CAClBxZ,KAAM,KACNC,OAAQ,KACR8pB,UAAW,MAGnBjD,EAAOkD,YAAc5Y,EAAcpW,QACnC8rB,EAAOmD,SAAWzJ,EAAWxlB,QAC7B8rB,EAAOoD,YAAc3D,EAAcvrB,QACnC8rB,EAAOqD,SAAW3D,EAAWxrB,QAC7B8rB,EAAOsD,iBAAmB3D,EAAoBzrB,QAC9C8rB,EAAOuD,cAAgB3D,EAAiB1rB,QACxC8rB,EAAOwD,iBAAmB3D,EAAmB3rB,QAC7C8rB,EAAOyD,WAAa3D,EAAa5rB,QACjC8rB,EAAO0D,iBAAmB3D,EAAa2D,iBACvC1D,EAAO2D,cAAgB5D,EAAa4D,cACpCnE,EAAMxlB,UAAY,CACdC,YAAaulB,EACb9N,SAAU,WAIN,OAHKnY,KAAK+C,YAAe/C,KAAK0X,QAAQ2S,uBAClCrqB,KAAK8V,OAAOwU,eAAetqB,KAAMA,KAAKuqB,WAEnCvqB,KAAK0X,QAAQtB,OAAOzW,MAAQK,KAAK8V,OAAOqC,YAEnDnB,UAAW,WACP,OAAOhX,KAAK0X,QAAQ1X,KAAKwqB,eAAiB,WAE9C5f,OAAQ,SAAS2e,EAAUxoB,GACvBf,KAAKyqB,cAAc1pB,GACnBf,KAAK0qB,WAAWnB,IAEpBmB,WAAY,SAASnB,GACjB,IACIoB,EADO3qB,KACmBsD,WAAaimB,EAASjmB,SADzCtD,KAENsD,SAFMtD,KAEUwZ,gBAFVxZ,KAEiC4Z,iBAAmB2P,EAASjmB,SAF7DtD,KAGN4qB,IAAMrB,EAASqB,IAHT5qB,KAIN+V,MAAQwT,EAASxT,MAJX/V,KAKNuqB,UAAYhB,EALNvpB,KAMNkB,KAAOqoB,EAASroB,KANVlB,KAON6qB,SAAWtB,EAASsB,SAPd7qB,KAQN8qB,UAAYvB,EAASuB,UARf9qB,KASN+qB,gBAAkBxB,EAASwB,gBATrB/qB,KAUNyR,YAAY8X,EAAUoB,IAVhB3qB,KAWL+C,YAXK/C,KAWc+X,kBAXd/X,KAYNkhB,aAZMlhB,KAaNuT,oBAETyX,aAAc,WACChrB,KACFmS,SADEnS,KAEFmS,QAAQ3S,UAFNQ,KAINmS,QAAU,MAEnBxM,KAAM,SAASzF,EAAU+qB,EAAQtU,EAAkBC,GAiB/C,OAhBW5W,KACFkrB,qBADElrB,KAC0B8V,OAAOqV,uBADjCnrB,KAC+DorB,gBAD/DprB,KAEFgrB,eAFEhrB,KAGFkrB,qBAAsB,GAHpBlrB,KAKFqrB,sBALErrB,KAMFiZ,cANEjZ,KAOFqrB,qBAAsB,GAPpBrrB,KASD0d,cATC1d,KAYFsX,cAAcX,EAAkB3W,KAAKgX,YAAaiU,EAAOK,SAZvDtrB,KAUFqX,wBAVErX,KAU6B8V,OAAOqV,sBAVpCnrB,KAUiEyW,YAAYvW,EAAU+qB,EAAOK,QAAS3U,EAAkBC,GAVzH5W,KAcNqV,aAdMrV,KAeNurB,cAAcrrB,EAAU+qB,EAAOO,UAAW7U,GAfpC3W,MAkBfyrB,cAAe,WACX,IAAIvpB,EAAQ8kB,EACRwC,EAAYxpB,KAAKwpB,UACjBrT,EAAS,CAACiR,EAAQF,EAAOG,EAAWA,GAcxC,OAbIrnB,KAAKypB,cAActC,QACnBjlB,GAAS4kB,GAET9mB,KAAKypB,cAAcnC,YACnBplB,GAAS0kB,GAETwC,EAAWppB,KAAKuW,aAAamV,iBAC7BlC,IAAc5C,GAEdwC,EAAWppB,KAAKuW,aAAaoV,aAC7BnC,IAAc1C,GAGX3Q,EADPjU,GAASsnB,IAGboC,UAAW,SAASC,GAChB,IAAItU,EAAQvX,KAAKyrB,gBACNzrB,KACNwqB,cAAgBjT,EADVvX,KAEDmS,UAFCnS,KAEe8V,OAAOqV,sBAAyB5T,IAAU8P,GAAa9P,IAAU2P,GAFhFlnB,KAGFyW,YAHEzW,KAGe8V,OAAOgW,cAHtB9rB,KAG0C8V,OAAOiW,mBAHjD/rB,KAKFmS,UALEnS,KAME8V,OAAOqV,sBAAwB5T,IAAU8P,GAAa9P,IAAU2P,EANlElnB,KAOEgrB,gBAED,WAAazT,EATdvX,KAUMiZ,cAVNjZ,KAYMmS,QAAQ6Z,eAZdhsB,KAcEsX,eAAc,EAdhBtX,KAc2B0X,QAAQH,QAAQ,EAAQsU,MAIlEI,QAAS,SAAS1U,GACdvX,KAAKypB,cAAclS,KACnBvX,KAAK4rB,aAETM,UAAW,SAAS3U,GAChB,IAAI4U,EAAensB,KAAKypB,gBACtB0C,EAAa5U,GACX4U,EAAa5U,GAAS,IACtB4U,EAAa5U,GAAS,GAE1BvX,KAAK4rB,aAETQ,kBAAmB,WACJpsB,KACFmS,UADEnS,KACeorB,cADfprB,KAEFmS,QAAQjN,gBAGrBmnB,OAAQ,WACJrsB,KAAK8V,OAAOwW,YAAYtsB,OAE5BusB,eAAgB,WACZvsB,KAAK8V,OAAO0W,cAAcxsB,OAE9BmnB,MAAO,WACHnnB,KAAK8V,OAAO2W,WAAWzsB,OAE3B0sB,WAAY,WACR1sB,KAAK8V,OAAO6W,mBAEhBC,YAAa,WACT5sB,KAAK8V,OAAO+W,iBAAiB7sB,OAEjC6X,YAAa,WACT7X,KAAK8V,OAAOgX,iBAAiB9sB,OAEjC+sB,qBAAsB,SAASC,EAASC,GACpC,IAAIC,GAAcD,EAAQE,QAAQ,SAC9BC,GAAcJ,EAAQG,QAAQ,SAClC,OAAOC,IAAeF,IAAeE,GAAcF,GAEvDzC,cAAe,SAAS5N,GACpB,GAAKA,EAAL,CAGA,IACID,EADO5c,KACWgB,SAClBqsB,EAAaxQ,EAAWwQ,WACxBL,EAAUpQ,GAAcA,EAAWlZ,KACnCupB,EAAUpQ,EAAWnZ,KACrB4pB,EAAoB/F,EAAW8F,GAAYJ,GAC3CD,IAAYC,GANLjtB,KAOFkrB,qBAAsB,EAPpBlrB,KAQFqrB,qBAAsB,EACvB2B,IATGhtB,KAUE+sB,qBAAqBC,EAASC,IAVhCjtB,KAUiDyY,cAVjDzY,KAWEutB,WAAW9G,EAAOc,EAAWyF,MAX/BhtB,KAaFwtB,SAAS/G,EAAO6G,MAbdttB,KAeFkrB,oBAfElrB,KAeyB2c,aAAaC,EAAYC,GAflD7c,KAgBFqrB,oBAhBErrB,KAgByBytB,gBAAgB7Q,EAAYC,IAhBrD7c,KAkBNgB,SAAW6b,EAlBL7c,KAmBNkhB,aAnBMlhB,KAoBN8Z,oBAAoBwT,KAE7BlY,UAAW,WACHpV,KAAK+C,aACL/C,KAAKmX,aACLnX,KAAK0tB,YAAa,IAG1BD,gBAAiB,SAAS7Q,EAAYC,GAClC,OAAOD,EAAWzG,OAAOkU,wBAA0BxN,EAAW1G,OAAOkU,uBAEzErO,0BAA2B,WACvB,OAAOhc,KAAK0X,QAAQiW,wBAA0B3tB,KAAKgB,SAASyT,MAAM8F,QAAU,MAEhFnU,gBAAiB,WACb,OAAOpG,KAAKia,mBAEhBsT,WAAY,SAASK,GACjB,IAAK,IAAIC,KAAcD,SACZ5tB,KAAK6tB,IAGpBL,SAAU,SAASI,GACf,IAAK,IAAIC,KAAcD,EACnB5tB,KAAK6tB,GAAcD,EAAQC,IAGnCjW,gBAAiB,WACb,OAAO5X,KAAK8tB,eAEhB1C,WAAY,WACR,SAAUprB,KAAKwpB,UAAY5C,IAE/BmH,UAAW,WACP,SAAU/tB,KAAKwpB,UAAY1C,IAE/BvQ,WAAY,WACR,OAAOvW,KAAKgB,UAEhB+Q,QAAS,SAASC,EAAUuL,EAAUzK,GAC7B9S,KAAKmS,QAIVnS,KAAKmS,QAAQJ,QAAQwL,EAAU,CAC3BzK,kBAAmBA,GACpBd,GALCA,GAAYA,KAOpBgc,UAAW,SAAS9iB,GAEhB,OAAKA,EADMlL,KAODgB,SAASsY,QAMZ,CACHzd,EAdOmE,KAcCgV,MAdDhV,KAccnE,EAddmE,KAcuBgV,KAAO,EAAI,GACzClZ,EAfOkE,KAeClE,GAPD,CACHD,EATGmE,KASKnE,EACRC,EAVGkE,KAUK0V,MAVL1V,KAUkBlE,EAVlBkE,KAU2B0V,KAAO,EAAI,IARtC,CACH7Z,EAHGmE,KAGKnE,EACRC,EAJGkE,KAIKlE,IAcpBmyB,iBAAkB,WAEd,OADWjuB,KACEgB,SAASsY,QAGlB,CACAzd,EALOmE,KAKCkuB,SACRpyB,EANOkE,KAMClE,GALoB,CAC5BD,EAFOmE,KAECnE,EACRC,EAHOkE,KAGCmuB,WAMhBC,iBAAkB,WACd,IAAI7yB,EAASyE,KAAKiuB,mBAClBjuB,KAAKnE,EAAIN,EAAOM,EAChBmE,KAAKlE,EAAIP,EAAOO,GAEpB6X,gBAAiB,WACb,OAAO3T,KAAK8V,OAAO/K,kBAEvBuX,kBAAmB,WACf,OAAOtiB,KAAK8V,OAAOuI,kBAAkB1T,iBAEzCyM,kBAAmB,WACf,OAAOpX,KAAK8V,OAAOsF,eAAezQ,iBAEtC6X,qBAAsB,SAAS3mB,EAAGC,EAAGU,EAAOE,GACxC,IACIsO,EADOhL,KACY2T,kBACnB2F,EAFOtZ,KAEQgB,SAASsY,QACxBtO,EAAYgK,KAAOnZ,GAAKW,GAAS,IAAMwO,EAAY8J,KAAOjZ,GAAKmP,EAAY0K,KAAO5Z,GAAKY,GAAU,IAAMsO,EAAYyK,KAAO3Z,GAAKwd,IAAW,EAAIpR,EAAMyJ,WAAWnV,IAAU,IAAMA,IAAUwO,EAAYgK,OAASnZ,EAAIW,GAASwO,EAAY8J,OAASjZ,KAAOyd,IAAW,EAAIpR,EAAMyJ,WAAWjV,IAAW,IAAMA,IAAWsO,EAAY0K,OAAS5Z,EAAIY,GAAUsO,EAAYyK,OAAS3Z,GAHpWkE,KAIF8tB,eAAgB,EAJd9tB,KAMF8tB,eAAgB,GAG7BO,kBAAmB,WACf,OAAOruB,KAAK8V,OAAOwY,iBAAiBtuB,KAAKsD,WAE7CirB,eAAgB,WACZ,IAAIC,EAAexuB,KAAK8V,OAAO2Y,cAC/B,OAAOD,EAAaxuB,KAAKkgB,gBAAkBsO,EAAaxuB,KAAKggB,gBAEjEjd,SAAU,WACN,OAAO,OAAS/C,KAAKiC,OAAS,OAASjC,KAAK4R,UAAY5R,KAAKquB,qBAAuBruB,KAAKuuB,kBAE7F3P,UAAWpW,EAAQ6C,KACnBxI,gBAAiB2F,EAAQ6C,KACzB2H,cAAexK,EAAQ6C,KACvB4H,mBAAoBzK,EAAQ6C,KAC5B0T,iBAAkBvW,EAAQ6C,KAC1BqjB,eAAgBlmB,EAAQ6C,KACxBoS,oBAAqBjV,EAAQ6C,KAC7BsR,aAAcnU,EAAQ6C,KACtBsjB,gBAAiBnmB,EAAQ6C,KACzB9I,KAAMiG,EAAQ6C,KACd1I,KAAM6F,EAAQ6C,KACduN,WAAYpQ,EAAQ6C,KACpB0M,gBAAiBvP,EAAQ6C,KACzByN,gBAAiBtQ,EAAQ6C,KACzB/I,UAAWkG,EAAQ6C,KACnBujB,gBAAiBpmB,EAAQ6C,KACzB8H,aAAc3K,EAAQ6C,KACtBwjB,WAAYrmB,EAAQ6C,KACpByjB,gBAAiBtmB,EAAQ6C,KACzBkW,mBAAoB/Y,EAAQ6C,KAC5B+M,SAAU5P,EAAQ6C,KAClB4L,iBAAkBzO,EAAQ6C,KAC1BwK,cAAerN,EAAQ6C,KACvB2K,oBAAqBxN,EAAQ6C,KAC7BiK,iBAAkB9M,EAAQ6C,KAC1B8J,UAAW3M,EAAQ6C,KACnBpI,qBAAsBuF,EAAQ6C,KAC9B6U,YAAa1X,EAAQ6C,KACrB2U,YAAaxX,EAAQ6C,KACrBkgB,cAAe/iB,EAAQ6C,KACvBgM,oBAAqB7O,EAAQ6C,KAC7B7L,QAAS,WACMQ,KACNgrB,eADMhrB,KAENyY,cAFMzY,KAGN+uB,WAAa/uB,KAAK+uB,UAAUvvB,UAHtBQ,KAINgB,SAJMhB,KAIU0X,QAJV1X,KAIyB8V,OAJzB9V,KAIuC+uB,UAAY,MAElEC,uBAAwB,SAAS3e,EAAS4e,GACtC,IACIC,EADOlvB,KACoBgY,iBAAiB3H,GAC5C8e,EAA2B,GAC3BC,EAAiC,GACjCH,IACAA,EAAYI,SAAQ,SAAS/zB,GACzB,GAAKA,EAAMgH,YAAX,CAGA,IAAI2V,EAAe3c,EAAM0c,iBAAiB3H,GAC1C+e,EAA+BnwB,KAAKgZ,GACpCkX,EAAyBlwB,KAAKgZ,EAAawB,WAAa,KAAOxB,EAAa7U,eAEhF3I,EAAQy0B,EAAqB,CACzBzxB,OAAQ2xB,EACRhsB,UAAW+rB,EAAyBG,KAAK,MACzCC,UAhBGvvB,KAgBa8V,OAAO0Z,gBAAkB,QAGjD,IAAIzE,EAnBO/qB,KAmBgB+qB,gBAC3B,GAAIA,EAAiB,CACjB,IACI0E,EAtBGzvB,KAqBS8V,OAAOuI,kBACFqR,YAAY3E,EAAgB4E,cAAe5E,EAAgB6E,YAAa7E,EAAgB8E,qBACzGJ,IACAP,EAAoB9rB,WAAa,KAAKkD,OAAOmpB,IAGrD,OAAOP,GAEXY,QAAS,SAASC,EAAW1pB,GACzB,IACIuL,EAAWyR,SADJrjB,KACkB4R,UADlB5R,KACmC4R,SAAW,GACrD,EAAI1J,EAAMyJ,WAAWoe,KACjB,SAAW1pB,GAHRrG,KAIEgwB,SAJFhwB,KAIkBiC,MAAQ8tB,EAJ1B/vB,KAKEiwB,YAAcre,EAAWme,IAL3B/vB,KAOEkwB,UAPFlwB,KAOmBiC,MAAQ8tB,EAP3B/vB,KAQEmwB,aAAeve,EAAWme,KAI3CK,WAAY,WACRpwB,KAAKgwB,SAAW,KAChBhwB,KAAKiwB,YAAc,KACnBjwB,KAAKkwB,UAAY,KACjBlwB,KAAKmwB,aAAe,MAExBzQ,SAAU,WACN,OAAO1f,KAAKsT,QAEhBqM,UAAW,WACP,MAAO,CAAC3f,KAAKsT,SAEjB6O,eAAgB,WACZ,MAAO,CACHtmB,EAAGmE,KAAKnE,EACRC,EAAGkE,KAAKlE,M,kCCvdpB7B,EAAQU,aAAU,EAClB,IAGgCR,EAH5BiO,EAAW/N,EAAQ,IACnB0W,GAE4B5W,EAFWE,EAAQ,OAGjCF,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAGnB,IAAIM,EAAU2N,EAASvC,OAEnBkK,EAAWtV,EAAQ,GAAIsW,EAAcpW,QAAS,CAC9C4mB,mBAAoB,SAAS8O,GACzBrwB,KAAKswB,WAAaD,EAAW,GAEjC5Z,YAAa,SAASvW,EAAUwW,EAAOC,GACnC,IACIvU,EAAO3H,EAAQ,CACf4M,WAFOrH,KAEUnE,EACjB0L,WAHOvH,KAGUlE,GAHVkE,KAIHgX,aAJGhX,KAKNmS,QAAUjS,EAASqwB,OAAO,EAAG,EAAG5Z,EAAmB,EAL7C3W,KAKsDswB,YAAYvZ,UAAU3U,GAAMlB,KAAK,CAC9F,mBANOlB,OAOR6E,OAAO6R,IAEdO,iBAAkB,SAAS/C,GACvB,IACI/B,EADOnS,KACQmS,QACnB,GAAKA,EAAL,CAGA,IAAIzV,EAASyV,EAAQ1M,UAAU/I,OAC/B,MAAO,CACHb,EAPOmE,KAOCnE,EACRC,EAROkE,KAQClE,EACRob,OAAQxa,EAzBI,IAyB0B,SAAWwX,EAAWxX,EAAS,EAAI,KAGjF8W,sBAAuB,WACnB,IAAIyE,EAAelH,EAAcpW,QAAQ6Y,sBAAsB9O,KAAK1E,MAEpE,OADAiY,EAAanO,KAAO9J,KAAKwwB,YAClBvY,GAEXxG,YAAa,SAASvQ,GAClB6P,EAAcpW,QAAQ8W,YAAY/M,KAAK1E,KAAMkB,GAC7ClB,KAAK8J,KAAO9J,KAAKwwB,YAActvB,EAAK4I,MAExCmQ,gBAAiB,WAEb,OADWja,KACCya,eADDza,KACqBnE,EADrBmE,KAC6BlE,EAD7BkE,KACqCswB,aAEpDhZ,cAAe,SAASX,EAAkBY,GAEjCZ,IACDY,EAAQ9c,EAAQ,CACZmD,EAHGoC,KAGKswB,WACRjpB,WAJGrH,KAIcnE,EACjB0L,WALGvH,KAKclE,GAClByb,IANIvX,KAQNmS,QAAQ4E,UAAUQ,IAE3BS,iBAAkB,SAAS3H,GACvB,IAAI4H,EAAelH,EAAcpW,QAAQqd,iBAAiBtT,KAAK1E,KAAMqQ,GAErE,OADA4H,EAAawY,SAAWpgB,EAAQ6H,YAAYlY,KAAKwwB,aAC1CvY,GAEX4H,eAAgB,WACZ,OAAO7f,KAAKswB,YAEhB5c,gBAAiB,SAASe,GAOtB,MALI,WAAaA,EAAMhN,mBAAmBpB,SAC7BrG,KAAK0wB,yBAAyBjc,EAAO,UAErC1D,EAAcpW,QAAQ+Y,gBAAgBhP,KAAK1E,KAAMyU,MAKtExa,EAAQU,QAAUoV,EAClBe,EAAO7W,QAAUA,EAAQU,S,kCCjFzBV,EAAQU,aAAU,EAClB,IAAI6N,EAAUnO,EAAQ,IAClB+N,EAAW/N,EAAQ,IACnB8lB,EAAanY,EAAuB3N,EAAQ,MAC5C+rB,EAAsBpe,EAAuB3N,EAAQ,OAEzD,SAAS2N,EAAuB7N,GAC5B,OAAOA,GAAOA,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAGnB,IACI4V,GAAWtV,EADD2N,EAASvC,QACA,GAAIsa,EAAWxlB,QAAS,CAC3C8d,YAAa2N,EAAoBzrB,QAAQ8d,YACzCT,iBAAkBoO,EAAoBzrB,QAAQqd,iBAC9Cc,gBAAiB,WACb,IAAI3G,EAAUnS,KAAKmS,QACfA,GAAWA,EAAQ/P,KAAK,eACxB+P,EAAQ/P,KAAK,CACTC,WAAY,QAIxB0V,gBAAiB,WACb,IAAI5F,EAAUnS,KAAKmS,QACfA,GAAW,WAAaA,EAAQ/P,KAAK,eACrC+P,EAAQ/P,KAAK,CACTC,WAAY,WAGpBrC,KAAK0Y,UAAU/S,MAAK,GACpB3F,KAAK2Y,aAAahT,MAAK,IAE3BsR,iBAAkB,SAAS/C,GACvB,IAEIrY,EACAC,EAFA60B,EAAe,SAAWzc,EAU9B,OAXWlU,KAIFgB,SAASsY,SACdzd,EAAI80B,EALG3wB,KAKiBnE,EALjBmE,KAK0BxD,MAL1BwD,KAKuCnE,EALvCmE,KAKgDxD,MAAQ,EAC/DV,EANOkE,KAMElE,EANFkE,KAMWtD,OAAS,IAE3Bb,EAROmE,KAQEnE,EARFmE,KAQWxD,MAAQ,EAC1BV,EAAI60B,EATG3wB,KASiBlE,EATjBkE,KAS0BlE,EAT1BkE,KASmCtD,OAAS,GAEhD,CACHb,EAAGA,EACHC,EAAGA,EACHob,OAAQ,IAGhBC,WAAY,WAESgJ,EAAWxlB,QACjBwc,WAAWzS,KAFX1E,WAGFgB,SAASsY,QAHPtZ,KAIFxD,MAJEwD,KAIWxD,OAAS,EAJpBwD,KAMFtD,OANEsD,KAMYtD,QAAU,GAGrCkiB,UAAWwH,EAAoBzrB,QAAQikB,UACvCnN,YAAa2U,EAAoBzrB,QAAQ8W,YACzCuC,kBAAmBoS,EAAoBzrB,QAAQqZ,kBAC/CuF,yBAA0B6M,EAAoBzrB,QAAQ4e,yBACtDhG,iBAAkB6S,EAAoBzrB,QAAQ4Y,iBAC9CuG,oBAAqBsM,EAAoBzrB,QAAQmf,oBACjDiF,iBAAkBqH,EAAoBzrB,QAAQokB,iBAC9ChF,aAAcqM,EAAoBzrB,QAAQof,aAC1CY,cAAeyL,EAAoBzrB,QAAQggB,cAC3Ce,oBAAqB0K,EAAoBzrB,QAAQ+gB,oBACjDX,uBAAwBqL,EAAoBzrB,QAAQogB,uBACpD1F,WAAY+Q,EAAoBzrB,QAAQ0a,WACxC3B,gBAAiB0S,EAAoBzrB,QAAQ+Y,gBAC7CgM,SAAU0G,EAAoBzrB,QAAQ+kB,SACtCC,UAAWyG,EAAoBzrB,QAAQglB,UACvCvZ,gBAAiBoC,EAAQ6C,KACzB6U,YAAakG,EAAoBzrB,QAAQulB,YACzCF,YAAaoG,EAAoBzrB,QAAQqlB,cAE7C/lB,EAAQU,QAAUoV,EAClBe,EAAO7W,QAAUA,EAAQU,S,kCCjFzBV,EAAQU,aAAU,EAClB,IAIgCR,EAJ5BiO,EAAW/N,EAAQ,IACnB6N,EAAQ7N,EAAQ,IAChBisB,GAE4BnsB,EAFgBE,EAAQ,QAGtCF,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAGnB,IAAIM,EAAU2N,EAASvC,OACnB+qB,EAAa1oB,EAAM2oB,UACnB9gB,EAAWtV,EAAQ,GAAI6rB,EAAmB3rB,QAAS,CACnDkmB,WAAY,WACR,IACIN,EADOvgB,KACYgB,SAASsY,QAAU,SAASzd,EAAGC,GAClD,MAAO,CAACA,EAAGD,IACX,SAASA,EAAGC,GACZ,MAAO,CAACD,EAAGC,IAEXg1B,EAAaF,EANN5wB,KAMsB8gB,OAC7BiQ,EAAcH,EAPP5wB,KAOuB2gB,QAC9B9kB,EAROmE,KAQEnE,EACTW,EATOwD,KASMxD,MACbiB,EAAS,GAAG6I,OAAOia,EAAY1kB,EAVxBmE,KAUgCygB,QAQ3C,OAPAqQ,IAAerzB,EAASA,EAAO6I,OAAOia,EAAY1kB,EAXvCmE,KAW+C8gB,SAC1DgQ,IAAerzB,EAASA,EAAO6I,OAAOia,EAAY1kB,EAAIW,EAAQ,EAZnDwD,KAY2D8gB,SACtEgQ,IAAerzB,EAASA,EAAO6I,OAAOia,EAAY1kB,EAbvCmE,KAa+C8gB,SAC1DiQ,IAAgBtzB,EAASA,EAAO6I,OAAOia,EAAY1kB,EAdxCmE,KAcgD2gB,UAC3DoQ,IAAgBtzB,EAASA,EAAO6I,OAAOia,EAAY1kB,EAAIW,EAAQ,EAfpDwD,KAe4D2gB,UACvEoQ,IAAgBtzB,EAASA,EAAO6I,OAAOia,EAAY1kB,EAhBxCmE,KAgBgD2gB,UAC3DljB,EAASA,EAAO6I,OAAOia,EAAY1kB,EAjBxBmE,KAiBgC0gB,QAG/CO,mBAAoB,SAASvK,EAAO3R,EAAY7E,GAC5CF,KAAKmS,QAAUjS,EAASiF,KAAKnF,KAAK6gB,aAAc,QAAQze,KAAK,CACzD,iBAAkB,WACnBA,KAAK2C,GAAY7D,KAAK,CACrB,mBAAoBlB,OACrBoF,QAAQP,OAAO6R,IAEtB4K,oBAAqB,WACjB,IAAI9kB,EAAQ,EAAIwD,KAAK0X,QAAQtB,OAAO,gBACpC,OAAO5Z,EAAQA,EAAQ,KAG/BvC,EAAQU,QAAUoV,EAClBe,EAAO7W,QAAUA,EAAQU,S,kCC/CzBV,EAAQkwB,iBAAmBlwB,EAAQmwB,mBAAgB,EACnD,IAAIhiB,EAAW/N,EAAQ,IACnB0W,EAAgB/I,EAAuB3N,EAAQ,MAC/C8lB,EAAanY,EAAuB3N,EAAQ,MAC5C8rB,EAAane,EAAuB3N,EAAQ,OAC5C6N,EAAQ7N,EAAQ,IAChBE,EAASF,EAAQ,IACjB2W,EAAUhJ,EAAuB3N,EAAQ,MAE7C,SAAS2N,EAAuB7N,GAC5B,OAAOA,GAAOA,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAGnB,IAAIM,EAAU2N,EAASvC,OACnBhL,EAAQC,KACR0d,EAAO3d,EAAMsQ,IACboG,EAAsBP,EAAQrW,QAAQ6W,kBAKtC2Y,EAAmB1vB,EAAQ,GAAIsW,EAAcpW,QAAS,CACtD+Y,gBAAiByS,EAAWxrB,QAAQ+Y,gBACpCS,kBAAmBgS,EAAWxrB,QAAQwZ,kBACtC6c,mBAAoB,SAASp1B,EAAOoP,EAAaimB,GAC7C,IAAIp1B,EAAID,EAAMC,EACVC,EAAIF,EAAME,EAad,OAZIkP,EAAYgK,KAAOnZ,IACnBA,EAAImP,EAAYgK,MAEhBhK,EAAY8J,KAAOjZ,EAAIo1B,EAAUz0B,QACjCX,EAAImP,EAAY8J,KAAOmc,EAAUz0B,OAEjCwO,EAAY0K,KAAO5Z,IACnBA,EAAIkP,EAAY0K,MAEhB1K,EAAYyK,KAAO3Z,EAAIm1B,EAAUv0B,SACjCZ,EAAIkP,EAAYyK,KAAOwb,EAAUv0B,QAE9B,CACHb,EAAGA,EACHC,EAAGA,IAGXkY,kBAAmB,WACf,MAAO,WAEXkd,WAAY,SAAS5tB,EAAUrB,GAC3B,IAAIid,EAAOlf,KAAK8V,OAAOsF,eACnB1I,EAAawM,EAAKiS,YAAY,GAC9Bp0B,EAAQiD,KAAKsiB,oBAAoBlN,UAAU9R,GAC3Cka,EAASxd,KAAKoX,oBAAoBhC,UAAUnT,GAC5C1G,GAAS,EAAIhB,EAAO62B,kBAAkBlS,EAAKmS,YAAanS,EAAKiS,YAAY,GAAIp0B,EAAOygB,GAExF,OADAjiB,EAAOwB,MAAQA,EAAQ2V,EAAa,GAAInX,EAAOiiB,OAASA,EACjDjiB,GAEX4b,WAAY,WACR,IACIiL,EADOpiB,KACO8V,OAAOsF,eAAeiW,YACpCz1B,EAFOoE,KAEMkxB,WAFNlxB,KAEsBsD,SAFtBtD,KAEqCiC,OAC5CuI,EAHOxK,KAGWoX,oBAClBka,EAAY9mB,EAAW+mB,aAAe/mB,EAAW4K,UA3CjC,yBA2CoE5K,EAAW4K,UA1CjF,uBA2Cdoc,GAAmB,EAAItpB,EAAMyJ,WAAW/V,EAAM4hB,SAAW5hB,EAAM4hB,QAAU,EAAI5hB,EAAM4hB,OAAS,KALrFxd,KAMNgf,IAAK,EAAIzkB,EAAO2a,gBAAgBtZ,EAAMmB,OANhCiD,KAONif,GAPMjf,KAOIuS,YAPJvS,KAOuBkT,aAAese,EAPtCxxB,KAQNkT,cAAgB3B,EARVvR,KASNwd,OAASgU,EATHxxB,KAUNuU,aAAe3Y,EAAMmB,MAVfiD,KAWNjD,OAASnB,EAAMmB,MAXTiD,KAYNnE,EAAID,EAAMC,EAZJmE,KAaNlE,EAAIF,EAAME,EAbJkE,KAcNkuB,SAdMluB,KAcUoS,QAAUgQ,EAAOvmB,EAd3BmE,KAeNmuB,SAfMnuB,KAeUqS,QAAU+P,EAAOtmB,EAf3BkE,KAgBNyxB,sBAhBMzxB,KAiBN8tB,cAjBM9tB,KAiBe0xB,2BAA2BF,EAAkBF,IAE3EI,2BAA4B,SAASlU,EAAQ8T,GACzC,OAAO,EAAIppB,EAAMyJ,WAAW6L,IAAWA,GAAU8T,GAErDG,oBAAqB,WACjB,IACIjG,EADOxrB,KACUgB,SAASwqB,UAC1BhhB,EAFOxK,KAEWoX,oBACjBoU,KAEJ,EAAItjB,EAAMyJ,WALA3R,KAKgB6qB,YALhB7qB,KAKmC2xB,eALnC3xB,KAKyDqS,QAAU7H,EAAW4K,UAL9EpV,KAK6F6qB,YACxG,EAAI3iB,EAAMyJ,WANC3R,KAMe8qB,aANf9qB,KAMmC4xB,gBANnC5xB,KAM0DqS,QAAU7H,EAAW4K,UAN/EpV,KAM8F8qB,YAN9F9qB,KAON6xB,aAPM7xB,KAOcoS,QAPdpS,KAQN8xB,iBAAmB,iBAAmBtG,EAAU9nB,KAR1C1D,KAQsD2xB,gBARtD3xB,KAQ6E4xB,gBAR7E5xB,KAQoG2xB,gBAAkB,EARtH3xB,KAQ+HqS,QAR/HrS,KAQ8Iwd,SAE7JuU,eAAgB,SAASpb,GACrB,OAAOA,EAAmB3W,KAAKiuB,mBAAqB,CAChDpyB,EAAGmE,KAAKnE,EACRC,EAAGkE,KAAKlE,IAGhBmyB,iBAAkB,WACd,IAAIzvB,GAAS,EAAIjE,EAAOkE,eAAeuB,KAAKjD,OACxCygB,EAASxd,KAAKoX,oBAAoBhC,UA9EhB,2BAiFtB,MAAO,CACHvZ,EAHImE,KAAKkuB,SAAW1Q,EAAShf,EAAOV,IAIpChC,EAHIkE,KAAKmuB,SAAW3Q,EAAShf,EAAOT,MAM5Ci0B,4BAA6B,SAASvd,EAAO7Y,GACzC,OAAOA,GAEXiY,oBAAqB,SAASY,EAAO7Y,GACjC,IACIoP,EADOhL,KACY2T,kBACnBse,EAFOjyB,KAEYia,kBAIvB,OANWja,KAGFkyB,sBAAsBlnB,EAAainB,KACxCr2B,EAJOoE,KAIMgxB,mBAAmBp1B,EAAOoP,EAAayJ,EAAMrO,oBAEvDxK,GAEXu2B,qBAAsB,SAASC,EAAiBzb,GAC5C,IAAI4G,EAAWxM,EAAcpW,QAAQw3B,qBAAqBztB,KAAK1E,KAAMoyB,EAAiBzb,GAItF,OAHA4G,EAASxX,OAvGa,GAuGsB/F,KAAKjD,MACjDwgB,EAAS8U,QAAUryB,KAAKoS,QACxBmL,EAAS+U,QAAUtyB,KAAKqS,QACjBkL,GAEXyQ,UAAW,SAAS9iB,GAChB,OAAOA,EAAMlL,KAAKiuB,mBAAqB,CACnCpyB,EAAGmE,KAAKnE,EACRC,EAAGkE,KAAKlE,MAIpB7B,EAAQkwB,iBAAmBA,EAC3B,IAAIC,EAAgB3vB,EAAQ,GAAI0lB,EAAWxlB,QAAS,CAChD82B,oBAAqBtH,EAAiBsH,oBACtCU,qBAAsBhI,EAAiBgI,qBACvCnB,mBAAoB7G,EAAiB6G,mBACrCtd,gBAAiByS,EAAWxrB,QAAQ+Y,gBACpCS,kBAAmBgS,EAAWxrB,QAAQwZ,kBACtC8B,mBAAoBkQ,EAAWxrB,QAAQsb,mBACvCgB,iBAAkBkP,EAAWxrB,QAAQsc,iBACrCjD,kBAAmBmS,EAAWxrB,QAAQqZ,kBACtCkd,WAAY/G,EAAiB+G,WAC7B/Z,WAAY,WACR,IACI3M,EADOxK,KACWoX,oBAClBmb,EAAgB/nB,EAAWgoB,mBAC3BlB,EAAY9mB,EAAW+mB,aAAe/mB,EAAW4K,UAjIjC,yBAiIoE5K,EAAW4K,UAhIjF,uBA6HPpV,KAINyS,YAAcjI,EAAW4K,UAJnBpV,KAIkC4R,UAC7CuY,EAAiBhT,WAAWzS,KALjB1E,MAMP,OANOA,KAMOyS,YANPzS,KAOFyS,YAPEzS,KAOiBwd,OAAS8T,EAE7B,OATGtxB,KASWwd,OATXxd,KAUEwd,OAVFxd,KAUgBiC,OAASswB,EAAc7T,WAAa4S,EAAY,EAVhEtxB,KAYMwd,OAAS8T,IAZftxB,KAaMwd,OAAS8T,GAbftxB,KAiBNuS,YAjBMvS,KAiBakT,aAAesF,EAjB5BxY,KAiBsCyS,YAjBtCzS,KAiBwDwd,QAjBxDxd,KAkBNkT,cAAgB3B,EAlBVvR,KAmBNyS,YAnBMzS,KAmBayyB,cAAgB53B,EAAMqQ,IAnBnClL,KAmB4CyS,YAnB5CzS,KAmB8Dwd,QAnB9Dxd,KAoBNuU,YApBMvU,KAoBajD,QAAS,EAAIxC,EAAO2a,gBApBjClV,KAoBsD0yB,sBApBtD1yB,KAoBmFjD,QAElG20B,2BAA4B,SAASlU,GACjC,OAAO,EAAItV,EAAMyJ,WAAW6L,IAAWxd,KAAKoX,oBAAoBhC,UAAUpV,KAAK4R,UAAY,GAE/F+gB,2BAA4B,WACxB,IAAI/2B,EAAQoE,KAAK2uB,kBACjB,OAAO9zB,EAAMyW,GAAK1V,EAAM0W,YAAczX,EAAMO,IAAIQ,EAAM8W,WAAa9W,EAAMgX,UAAY,KAEzF+b,gBAAiB,WACb,MAAO,CACH9yB,EAAGmE,KAAKoS,QACRtW,EAAGkE,KAAKqS,QACRC,YAAatS,KAAKuS,YAClBC,YAAaxS,KAAKyyB,cAClB/f,WAAY1S,KAAKuU,YAAcvU,KAAK4yB,SAAW,EAC/ChgB,SAAU5S,KAAKuU,YAAcvU,KAAK4yB,SAAW,IAGrDnc,YAAa,SAASvW,EAAUwW,EAAOC,GACnC,IACIR,EADOnW,KACOgX,YACdzb,EAFOyE,KAEO2uB,kBACdnc,EAAcjX,EAAOiX,YACrBF,EAAc/W,EAAO+W,YACrBugB,EALO7yB,KAKMkxB,WALNlxB,KAKsBsD,SAzKX,2BA0KlBzH,EAAIN,EAAOM,EACXC,EAAIP,EAAOO,EACX6a,IACAnE,EAAc,EACdF,EAAc,EACdzW,EAAIg3B,EAAMh3B,EACVC,EAAI+2B,EAAM/2B,GAZHkE,KAcNmS,QAAUjS,EAAS4W,IAAIjb,EAAGC,EAAG0W,EAAaF,EAAa/W,EAAOmX,WAAYnX,EAAOqX,UAAUxQ,KAAK+T,GAAQjV,KAAK,CAC9G,mBAfOlB,OAgBR6E,OAAO6R,IAEd7C,oBAAqB,SAASY,EAAO7Y,GACjC,IACIoP,EADOhL,KACY2T,kBACnBW,GAAiB,EAAI/Z,EAAOkE,cAFrBuB,KAEwCuU,aAC/C1Y,EAHOmE,KAGEoS,QAHFpS,KAGiByyB,cAAgBne,EAAexW,IACvDhC,EAJOkE,KAIEqS,QAJFrS,KAIiByyB,cAAgBne,EAAevW,IAI3D,OAHIlC,EAAImP,EAAYgK,MAAQnZ,EAAImP,EAAY8J,MAAQhZ,EAAIkP,EAAY0K,MAAQ5Z,EAAIkP,EAAYyK,OACxF7Z,EANOoE,KAMMgxB,mBAAmBp1B,EAAOoP,EAAayJ,EAAMrO,oBAEvDxK,GAEXo2B,4BAA6B,SAASvd,EAAO7Y,GACzC,OAAOA,GAEX2lB,mBAAoB,SAASC,GACzBxhB,KAAK0yB,sBAAwBlR,EAAetK,OAC5ClX,KAAK4yB,SAAWpR,EAAehlB,OAEnC4b,SAAU,SAASvc,EAAGC,GAClB,IAAI2R,GAAM,EAAIlT,EAAOu4B,kBAAkB9yB,KAAK8V,OAAOsF,eAAeiW,YAAax1B,EAAGC,GAC9EP,EAASyE,KAAK2uB,kBACdoE,EAAkBx3B,EAAOmX,WAAanX,EAAOqX,UAAYnF,EAAIulB,KAAOz3B,EAAOmX,aAAejF,EAAIulB,KAAOz3B,EAAOqX,UAAYnF,EAAIulB,KAAOz3B,EAAOmX,aAAejF,EAAIulB,KAAOz3B,EAAOqX,SAC/K,OAAOnF,EAAI7P,GAAKrC,EAAOiX,aAAe/E,EAAI7P,GAAKrC,EAAO+W,aAAeygB,KAG7E94B,EAAQmwB,cAAgBA,G,kCCpOxBnwB,EAAQutB,WAAQ,EAChB,IAAIpf,EAAW/N,EAAQ,IACnB6N,EAAQ7N,EAAQ,IAChBE,EAASF,EAAQ,IACjBmO,EAAUnO,EAAQ,IAClB44B,EAAkB54B,EAAQ,KAC1B64B,EAAc74B,EAAQ,KACtB84B,EAAe94B,EAAQ,KAE3B,SAAS+4B,EAAgBj5B,EAAKk5B,EAAKpxB,GAW/B,OAVIoxB,KAAOl5B,EACPm5B,OAAOC,eAAep5B,EAAKk5B,EAAK,CAC5BpxB,MAAOA,EACPuxB,YAAY,EACZC,cAAc,EACdC,UAAU,IAGdv5B,EAAIk5B,GAAOpxB,EAER9H,EAEX,IAAIM,EAAU2N,EAASvC,OACnB8tB,EAAYT,EAAY1L,MAAMiB,IAC9BmL,EAAaT,EAAa3L,MAAMW,KAChCX,EAAQ,GACZvtB,EAAQutB,MAAQA,EAChB,IAAIqM,EAAkB,CAClBC,oBAAqBtrB,EAAQ6C,KAC7B0oB,qBAAsBvrB,EAAQ6C,KAC9B2oB,WAAY,SAAS9yB,EAAM+yB,GACvB,IAAIC,EAAcl0B,KAAKm0B,iBACvB,OAAOlB,EAAgBzL,MAAMwM,WAAWtvB,KAAK1E,KAAMkB,EAAM+yB,EAAe,CACpEriB,SAAUsiB,EAAY,GACtBjyB,MAAOiyB,EAAY,MACjBhzB,EAAK0Q,WAAa1Q,EAAK0Q,UAEjCwiB,0BAA2BnB,EAAgBzL,MAAM4M,0BACjDC,sBAAuB,SAASnzB,GAC5B,IAAIozB,EAAQt0B,KACRk0B,EAAcl0B,KAAKm0B,iBACnBI,EAAYL,EAAY,GACxBM,EAAYN,EAAY,GACxBO,EAAWz0B,KAAK00B,cAChBC,EAAgB30B,KAAK40B,mBACzB,OAAO,SAAS1zB,GACZ,MAAO,CACH0pB,IAAK1pB,EAAKuzB,GACV7iB,SAAU0iB,EAAMO,mBAAmB3zB,EAAKqzB,IACxCtyB,MAAOqyB,EAAMO,mBAAmB3zB,EAAKszB,IACrClxB,SAAUpC,EAAKyzB,GACfzzB,KAAMA,KAIlB4zB,mBAAoB,QACpBC,aAAc,CACVlqB,MAAO,SAASsE,EAAM2G,GAClB,IAAIkf,EACArF,EAAgBxgB,EAAKwgB,cACrBzuB,EAAOiO,EAAKjO,KAChB,GAAKA,EAAKiJ,OAAV,CAGA,IAAI+pB,EAAcpe,EAAOqe,iBACrBI,EAAYL,EAAY,GACxBM,EAAYN,EAAY,GACxBvtB,EAASzF,EAAKtC,QAAO,SAAS+H,EAAQsuB,GACtC,IAAIC,EAAOD,EAAKV,GACZY,EAAOF,EAAKT,GAChB,OAAK,EAAItsB,EAAMyJ,WAAWujB,KAAU,EAAIhtB,EAAMyJ,WAAWwjB,IAGzDxuB,EAAO4tB,GAAaz5B,KAAKoQ,IAAIvE,EAAO4tB,GAAYz5B,KAAKoQ,IAAIgqB,EAAMC,IAC/DxuB,EAAO6tB,GAAa15B,KAAKqQ,IAAIxE,EAAO6tB,GAAY15B,KAAKqQ,IAAI+pB,EAAMC,IACxDxuB,GAJIA,KAKQysB,EAAnB4B,EAAe,GAAkCT,EAAW,KAAQnB,EAAgB4B,EAAcR,GAAY,KAAUpB,EAAgB4B,EAAclf,EAAO8e,mBAAoBjF,GAAgBqF,IACrM,IAAK3R,SAAS1c,EAAO4tB,MAAgBlR,SAAS1c,EAAO6tB,IAAa,CAC9D,GAAItzB,EAAKk0B,QAAO,SAASlrB,GACjB,OAAO,OAASA,EAAEqqB,IAAc,OAASrqB,EAAEsqB,MAC5CrqB,SAAWjJ,EAAKiJ,OAGnB,OAFAxD,EAAO4tB,GAAa5tB,EAAO6tB,GAAa,KAKhD,OAAO7tB,KAGfwtB,eAAgB,WACZ,MAAO,CAACn0B,KAAKgB,SAASq0B,kBAAoB,OAAQr1B,KAAKgB,SAASs0B,kBAAoB,SAExFC,mBAAoB,SAAS35B,EAAO45B,GAQhC,IAPA,IAAIC,EAAgB,KAChBnc,EAAUtZ,KAAKgB,SAASsY,QACxBoc,GAAcF,IAAelc,GAAWkc,GAAclc,EACtDqc,EAAYD,EAAa,KAAO,KAChCE,EAAetc,EAAU,OAAS,OAClCuc,EAAoBH,EAAa,KAAO,KACxCj4B,EAASuC,KAAK81B,YACT5rB,EAAI,EAAGA,EAAIzM,EAAO0M,OAAQD,IAAK,CACpC,IAAI6rB,EAAIt4B,EAAOyM,GACX8rB,OAAW,EACf,GAAIR,EACAQ,EAAWD,EAAE5T,iBAAiBwT,EAAU,MAAQ/5B,EAAQm6B,EAAEF,QAAqB,MAC5E,CACH,IAAIt6B,EAAS,CAACT,KAAKoQ,IAAI6qB,EAAEJ,GAAYI,EAAEH,IAAgB96B,KAAKqQ,IAAI4qB,EAAEJ,GAAYI,EAAEH,KAChFI,EAAWp6B,GAASL,EAAO,IAAMK,GAASL,EAAO,GAAKw6B,EAAEF,QAAqB,EAEjF,GAAI71B,KAAKi2B,4BAA4BT,EAAYQ,GAAW,CACxDP,EAAgBO,EAChB,OAGR,OAAOP,IAGfjO,EAAMoB,SAAWnuB,EAAQ,GAAIk5B,EAAWE,GACxCrM,EAAMgB,UAAY/tB,EAAQ,GAAIm5B,EAAY,CACtCsC,WAAY,SAASn1B,GACjB,IAAIzF,EAAQyF,EAAQzF,MAChBA,EAAMsc,mBACNtc,EAAMwd,kBACNxd,EAAMqK,KAAK3F,KAAKC,UAAWc,EAAQkqB,QACnCjrB,KAAKm2B,aAAal3B,KAAK3D,GAClBA,EAAM+gB,kBACP/gB,EAAMsd,WAAW,OAEhBtd,EAAMghB,qBACPhhB,EAAMsd,WAAW,WAGrBtd,EAAMyc,mBAGdqe,gBAAiB,SAAS34B,EAAQ6b,GAC9B,IAAI+c,EAAkBr2B,KAAKs2B,gCAAgC74B,EAAQ6b,GAC/Did,GAA2B,EAAIh8B,EAAOmE,KAAK23B,GAAiB,SAASG,GACrE,OAAOA,EAAGxI,WAAU,MAExB,MAAO,CACHtG,KAAM2O,EACNI,WAAYF,EACZpO,MAAM,EAAI5tB,EAAOmE,KAAK23B,GAAiB,SAASG,GAC5C,OAAOA,EAAGxI,eACX1nB,OAAOiwB,EAAyBG,QAAQC,WAC3CC,mBAAoBP,IAAoB54B,IAGhDo5B,mBAAoB,SAASC,GACzB,IAAIC,EAAiBnD,EAAWiD,mBAAmBnyB,KAAK1E,KAAM82B,GAE9D,OADAC,EAAeN,WAAaM,EAAerP,KACpCqP,GAEXC,eAAgB,SAASC,GACrBrD,EAAWoD,eAAetyB,KAAK1E,KAAMi3B,GACrCA,EAAQR,YAAcQ,EAAQR,WAAW5S,UAE7CqT,aAAc,SAASJ,EAASpgB,GAC5B,IACIygB,EAAevD,EAAWsD,aAAaxyB,KADhC1E,KAC2C82B,EAASpgB,GAI/D,OAHAygB,EAAaV,WAFFz2B,KAEoBo3B,eAFpBp3B,KAE0Cq3B,qBAAqBP,EAAQL,WAAY,CAC1F,eAHOz2B,KAGc0X,QAAQtB,OAAOkhB,OAAO,kBAC5CzyB,OAJQ7E,KAIIo3B,eACRD,GAEXI,YAAa,SAAShgB,GAClB,IACIigB,EADOx3B,KACcy3B,eACrBC,EAFO13B,KAEao3B,cACxBI,GAAiBA,EAAczgB,UAAUQ,EAAMogB,UAC/CD,GAAgBA,EAAat1B,KAAKmV,EAAM+f,SAJ7Bt3B,KAKL43B,WAAa,IAAIvI,SAAQ,SAASld,GACpCA,EAAQuV,MAAQvV,EAAQuV,KAAKtlB,KAAK,CAC9B,eAAgBmV,EAAM+f,OAAO,kBAEjCnlB,EAAQskB,YAActkB,EAAQskB,WAAWr0B,KAAK,CAC1C,eAAgBmV,EAAM+f,OAAO,sBAIzCO,eAAgB,SAASZ,EAASH,EAAS/kB,EAASC,GAChD,IAAI8lB,EAAmB,CACnBr6B,OAAQq5B,EAAQL,YAEhBsB,EAAsBd,EAAQR,WAClC7C,EAAWiE,eAAenoB,MAAM1P,KAAM2P,WAClCooB,IACAhmB,EAAUgmB,EAAoBhmB,QAAQ+lB,GAAoBC,EAAoB31B,KAAK01B,MAG5FjE,I,kCC/LH55B,EAAQ+uB,IAAM/uB,EAAQgvB,SAAWhvB,EAAQivB,WAAQ,EACjD,IAAI1gB,EAAUnO,EAAQ,IAClBG,EAAYH,EAAQ,IACpB44B,EAAkB54B,EAAQ,KAC1BE,EAASF,EAAQ,IACjB+N,EAAW/N,EAAQ,IACnB64B,EAAc74B,EAAQ,KACtB29B,EAAqB/E,EAAgBzL,MACrCmM,EAAYT,EAAY1L,MAAMiB,IAC9BhuB,EAAU2N,EAASvC,OACnBoyB,EAAQz9B,EAAUkB,KAClBw8B,EAAQ1vB,EAAQ6C,KAChB8sB,EAAO59B,EAAOmE,IACd0kB,EAAYC,SACZ7K,EAAO1d,KAAKqQ,IAGZ6d,EAAMvuB,EAAQ,GAAIk5B,EAAW,CAC7ByE,mBAAoB,WAChBJ,EAAmBI,mBAAmB1oB,MAAM1P,KAAM2P,WAClD3P,KAAKga,aAAa5X,KAAK,CACnB,iBAAkB,QAG1B2xB,qBAAsBmE,EACtBhC,WAAY,SAASn1B,GACjB,IAAIzF,EAAQyF,EAAQzF,MAChBuwB,EAAiB7rB,KAAKq4B,gBAC1BL,EAAmB9B,WAAWxxB,KAAK1E,KAAMe,IACxCzF,EAAMgH,aAAehH,EAAMyc,kBAC5Bzc,EAAM8vB,cAAgBS,KAE1ByM,aAAc,SAASp3B,EAAMq3B,EAAqBxiB,GAC9C,IAAIza,GAAS0E,KAAKw4B,SAAW,IAAIziB,GAMjC,OALIza,IACAi9B,EAAoBj9B,EAAMgI,SAASm1B,WAAaF,EAAoBj9B,EAAMgI,SAASm1B,WAAWrD,QAAO,SAASW,GAC1G,OAAOA,IAAMz6B,MAGdA,GAEXo9B,aAAc,SAAS/jB,GACnB,OAAQ3U,KAAKw4B,SAAW,IAAI55B,QAAO,SAAShB,EAAGm4B,GAC3C,GAAIA,EAAEziB,OAAOhR,YAIT,OAHAyzB,EAAE/f,sBACFpY,EAAIm4B,EAAElgB,cAAclB,IAAyB/W,EAC7Cm4B,EAAEzgB,iBAAiBX,GACZ/W,KAEZ,IAEP+6B,uBAAwBT,EACxB/f,SAAU+f,EACVpE,oBAAqBoE,EACrBU,mBAAoB,WAEhB,MAxCK,WAuCM54B,KACFgB,SAASyT,MAAMpO,WADbrG,KAINga,aAAanV,OAJP7E,KAImB64B,WAAWz4B,cAJ9BJ,KAKLw4B,SAAW,IAAInJ,SAAQ,SAAS/zB,GAClCA,EAAM6Z,gBAEH,IAEX2jB,eAAgB,WACZ,IAAIxE,EAAQt0B,KACZ,OAAOA,KAAKmB,MAAMi0B,QAAO,SAAS2D,GAC9B,OAAOzE,EAAMN,WAAW+E,MACzB5uB,QAEP6uB,kBAAmB,SAASC,GACxBj5B,KAAKk5B,aAAeD,GAExBE,yBAA0B,SAASj4B,EAAMk4B,GACrC,OAAOp5B,KAAKq5B,iBAAiBn4B,EAAMk4B,IAEvCE,eAAgB,SAASv4B,GACrBf,KAAKu5B,WAAa,EAClBv5B,KAAKwS,YAAc,QAAUxS,KAAK0D,KAAO,EAAI3C,EAAQyR,aAEzDwhB,WAAY,SAAS9yB,EAAM+yB,GACvB,IAAI7gB,EAAOugB,EAAUK,WAAWtvB,KAAK1E,KAAMkB,EAAM+yB,EAAe,CAC5DhyB,MAAOjC,KAAKm0B,iBAAiB,KAEjC,OAAOn0B,KAAKgB,SAASw4B,gBAAkBpmB,EAAOA,GAAQ,OAASlS,EAAKe,OAExEw3B,cAAezB,EAAmByB,cAClCC,wBAAyB,WACrB15B,KAAK25B,cAAcv3B,KAAK,CACpB,MAAS,iBAGjBw3B,cAAe,SAAS14B,EAAM5F,GAC1B,IAAIu+B,EAAc75B,KAAK85B,eAAe54B,EAAKoC,UACvCy2B,EAAgBz+B,EAAQu+B,EAAY1M,QAAQ7xB,GAASu+B,EAAY1vB,OACrE,OAAOnK,KAAKgB,SAASg5B,gBAAgB94B,EAAKoC,SAAUy2B,EAAe/5B,KAAKk5B,eAE5EG,iBAAkB,SAASn4B,GACvB,OAAOlB,KAAKi6B,mBAAmBj6B,KAAKk6B,uBAAwBl6B,KAAKgB,SAASyT,MAAOvT,IAErFi5B,cAAe,WACX,OAAOn6B,KAAKo6B,YAEhBC,mBAAoB,SAASC,EAAcp5B,EAAM5F,GAC7C,IACIi/B,EAAYD,EAAa15B,OADlBZ,KACgC45B,cAAc14B,EAAM5F,GAC/D,MAAO,CACH8a,OAHOpW,KAGMw6B,iBAAiBF,EAAcC,EAAWA,GACvDpT,MAJOnnB,KAIKw6B,iBAAiBF,EAAaG,WAAYF,EAAWA,GACjEjT,UALOtnB,KAKSw6B,iBAAiBF,EAAaI,eAAgBH,EAAWA,GACzE5iB,aAAc,CACVvB,OAPGpW,KAOU26B,mBAAmBL,EAAcC,GAC9CpT,MARGnnB,KAQS26B,mBAAmBL,EAAaG,WAAYF,GACxDjT,UATGtnB,KASa26B,mBAAmBL,EAAaI,eAAgBH,MAI5EK,yBAA0B,SAASn9B,EAAQoG,GACvC,IAAIg3B,EAAiB76B,KAAKgB,SAAS65B,eAC/BC,EAAsB,EACtBC,EAAoB,EAWxB,OAVAl3B,EAAQA,GAASpG,EAAO0M,OACxB8tB,EAAMx6B,GAAQ,SAAS9B,EAAGL,GAClBA,EAAMgH,cACFhH,EAAM+X,mBAAqBwnB,EAAiBh3B,EAAQ,IACpDi3B,GAAuBD,EAEvBE,GAAqBz/B,EAAM+X,uBAIhCynB,EAAsB,IAAMD,EAAiBE,GAAqB,IAAMD,GAAuB,GAE1GE,wBAAyB,SAASv9B,EAAQw9B,EAAep3B,GACrD,IAIIL,EAJAzC,EAAUf,KAAKgB,SACfk6B,EAAc,kBAAoBn6B,EAAQo6B,kBAC1CtkB,EAAeuM,EAAUriB,EAAQ2R,aAAc,EAAInY,EAAO2a,gBAAgBnU,EAAQ2R,YAAc,EAChGmoB,EAAiB95B,EAAQ85B,eAEzB9nB,EAAa,EACbqoB,EAAsB,EACtB,IAAMv3B,IACNA,EAAQpG,EAAO23B,QAAO,SAASiG,GAC3B,OAAOA,EAAG/4B,eACX6H,OACHixB,EAAsB,GAE1BnD,EAAMiD,EAAcz9B,EAASA,EAAO6I,OAAO,IAAIqwB,WAAW,SAASh7B,EAAGL,GAClE,IACIggC,EADA7tB,EAAMnS,EAAMgH,YAAc84B,GAAuB9/B,EAAM+X,mBAAqB,EAE5EwnB,GAAkBv/B,EAAMgH,aAAemL,EAAMwtB,IAC7CK,EAAmBL,GAEvBz3B,EAAUiK,EAAM5J,EAChBvI,EAAM6X,aAAaJ,EAAYvP,EAAS43B,GAAuBE,GAAoB,IACnFhgC,EAAMub,aAAeA,EACrB9D,GAAcuoB,GAAoB7tB,KAEtCzN,KAAKo6B,WAAa,CACd3sB,IAAK,CACDvC,IAAK,EACLC,IAAK4H,KAIjBwoB,aAAc,SAASjgC,GACnB,IAAImC,EAASuC,KAAK85B,eAAex+B,EAAMgI,UACvC7F,EAAO+9B,OAAO/9B,EAAO0vB,QAAQ7xB,GAAQ,GACrCA,EAAMkE,WAEVi8B,cAAe,WAQX,IAPA,IAGIR,EAHA9xB,EAAOnJ,KACP07B,EAAiBvyB,EAAKqvB,SAAW,GACjCqC,EAAiB1xB,EAAKnI,SAAS65B,eAE/Bc,GAAsB,EACtBzxB,EAAI,EACJ0xB,EAAMF,EAAevxB,OAClBD,EAAI0xB,GAAOD,GACdA,EAAsBD,EAAexxB,GAAGjI,OAAS,EACjDiI,IAEJ,IAAIzM,EAAS0L,EAAKqvB,QAAUL,EAAKuD,GAAgB,SAASpgC,GACtD,OAAI,OAASA,EAAM2G,QAAU05B,GAAuBrgC,EAAM2G,MAAQ,GAC9DkH,EAAKoyB,aAAajgC,GACX,MAEAA,KAGX4iB,EAAWzgB,EAAOmB,QAAO,SAASuM,EAAK4qB,GACvC,OAAOvd,EAAKrN,EAAKrQ,KAAKM,IAAI26B,EAAE1W,iBAC7B,GACH5hB,EAAO4xB,SAAQ,SAAS0G,GACpBA,EAAE1iB,mBAAqB0iB,EAAE1W,cAAgB,IAAMnB,EAAWA,EAAW,MAEzE,IAAIra,EAAQpG,EAAOmB,QAAO,SAASiF,EAAOvI,GACtC,OAAOuI,GAASvI,EAAMgH,YAAchH,EAAM+X,mBAAqB,KAChE,GACCwnB,IACAI,EAAgBj7B,KAAK46B,yBAAyBn9B,EAAQoG,IAE1DsF,EAAK6xB,wBAAwBv9B,EAAQw9B,EAAep3B,IAExDhB,gBAAiB,SAASkQ,EAAYjI,GAClCmtB,EAAMj4B,KAAKw4B,SAAS,SAAS78B,EAAGL,GAC5BA,EAAMuH,gBAAgBkQ,MAE1B/S,KAAK67B,eAAe/wB,IAExBkI,cAAe,SAASD,GACpB/S,KAAKw4B,QAAQnJ,SAAQ,SAAS/zB,GAC1BA,EAAM0X,cAAcD,OAG5BE,mBAAoB,SAAS6oB,GACzB97B,KAAKw4B,QAAQnJ,SAAQ,SAAS/zB,GAC1BA,EAAM2X,mBAAmB6oB,OAGjCD,eAAgB,SAAS/wB,GACrB9K,KAAK+7B,aAAe,CAChB/mB,KAAMlK,EAAOsD,KACb0G,KAAMhK,EAAOtO,MAAQsO,EAAOuE,MAC5BqG,KAAM5K,EAAOuD,IACboH,KAAM3K,EAAOpO,OAASoO,EAAOsE,SAGrC4sB,kBAAmB9D,EACnB+D,SAAU,SAASrlB,GACf,IAMIslB,EANA/yB,EAAOnJ,KACPvC,EAAS0L,EAAKqvB,QACd2D,EAAc1+B,GAAUA,EAAO0M,OAC/BiyB,EAAe,WACfjzB,EAAKkzB,oBAILH,EADAtlB,EACe,SAASmf,EAAG7rB,GACvB6rB,EAAEhkB,QAAQ7H,IAAMiyB,EAAc,EAAIC,OAAe,EAjOxC,IAiOqE,EAjOrE,IAiO+FlyB,GAAKiyB,EAAc,KAGhH,SAASpG,EAAG7rB,GACvB6rB,EAAEhkB,QAAQ7H,IAAMiyB,EAAc,EAAIC,OAAe,IAGzD3+B,EAAO4xB,QAAQ6M,IAEnBI,iBAAkB,WACd,OAAOnE,EAAKn4B,KAAKw4B,SAAS,SAASzC,GAC/B,OAAOA,EAAEzzB,YAAcyzB,EAAI,SAGnCwG,gBAAiB,SAAShvB,EAAKwsB,GAC3B,IAAIF,EAAc75B,KAAK85B,eAAevsB,GACtC,OAAOssB,EAAYE,IAAkB,CAACF,EAAYE,KAAmB,MAG7E9/B,EAAQ+uB,IAAMA,EACd,IAAIC,EAAWD,EACf/uB,EAAQgvB,SAAWA,EACnB,IAAIC,EAAQF,EACZ/uB,EAAQivB,MAAQA,G,kCCvQhBjvB,EAAQkvB,MAAQlvB,EAAQutB,WAAQ,EAChC,IAAIhf,EAAUnO,EAAQ,IAClB+N,EAAW/N,EAAQ,IACnBG,EAAYH,EAAQ,IACpB84B,EAAe94B,EAAQ,KACvB64B,EAAc74B,EAAQ,KACtBmiC,EAAeniC,EAAQ,KACvBE,EAASF,EAAQ,IACjBoiC,EAAUpiC,EAAQ,KAClBqiC,EAAkBvJ,EAAa3L,MAAMW,KACrCwU,EAAiBzJ,EAAY1L,MAAMiB,IACnCmU,EAAoB,CACpBC,oBAAqBr0B,EAAQ6C,KAC7BiuB,eAAgB,SAASv4B,GACrBf,KAAK88B,WAAa,SAAW/7B,EAAQme,MAAQ,aAGjDsI,EAAQ,GACZvtB,EAAQutB,MAAQA,EAChB,IAAI2B,EAAQ,GACZlvB,EAAQkvB,MAAQA,EAChB3B,EAAMK,aAAc,EAAIzf,EAASvC,QAAQ,GAAI22B,EAAahV,MAAME,KAAMkV,EAAmB,IACzFpV,EAAMO,eAAgB,EAAI3f,EAASvC,QAAQ,GAAI22B,EAAahV,MAAMG,OAAQiV,EAAmB,IAC7FpV,EAAMM,iBAAkB,EAAI1f,EAASvC,QAAQ,GAAI22B,EAAahV,MAAME,KAAMkV,EAAmB,CACzFxI,0BAA2BjB,EAAa3L,MAAMW,KAAKiM,4BAEvD5M,EAAMQ,mBAAoB,EAAI5f,EAASvC,QAAQ,GAAI22B,EAAahV,MAAMG,OAAQiV,EAAmB,CAC7FxI,0BAA2BjB,EAAa3L,MAAMW,KAAKiM,4BAEvD,IAAI2I,EAAavV,EAAMkB,YAAa,EAAItgB,EAASvC,QAAQ,GAAI82B,EAAgBC,EAAmB,CAC5FtD,eAAgB,SAASv4B,GACrB67B,EAAkBtD,eAAe50B,KAAK1E,KAAMe,GAC5Cf,KAAK88B,WAAa98B,KAAK88B,WAAa,WAAa/7B,EAAQi8B,OAAS,cAO1E,SAASC,EAAW3hC,EAAO2G,EAAO2P,EAAUvL,GAMxC,OALA/K,GAAQ,EAAImhC,EAAQS,OAAO5hC,IACrB2G,MAAQA,EACd3G,EAAMsW,SAAWA,EACjBtW,EAAM8Z,YACN9Z,EAAMgI,SAAWhI,EAAMgI,SAAW+C,EAC3B/K,EAGX,SAAS6hC,EAAmC1/B,GAMxC,IALA,IACIs4B,EAEAqH,EAHAlzB,EAAI,EAEJvD,EAAS,GAETi1B,EAAMn+B,EAAO0M,OACVD,EAAI0xB,GAEPwB,EAAQ,CADRrH,EAAIt4B,EAAOyM,IAEP6rB,EAAE/F,WACFoN,EAAQ,CAACH,EAAWlH,EAAGA,EAAE/F,SAAU+F,EAAE9F,YAAa,QAAS8F,IAE3DA,EAAE7F,WACFkN,EAAMn+B,KAAKg+B,EAAWlH,EAAGA,EAAE7F,UAAW6F,EAAE5F,aAAc,UAE1DxpB,EAAO1H,KAAKm+B,GACZlzB,IAEJ,MAAO,GAAG5D,OAAOoJ,MAAM,GAAI/I,GA/B/B6gB,EAAMmB,gBAAiB,EAAIvgB,EAASvC,QAAQ,GAAI82B,EAAgBC,EAAmB,CAC/EtD,eAAgByD,EAAWzD,iBAgC/B9R,EAAMc,aAAc,EAAIlgB,EAASvC,QAAQ,GAAI62B,EAAiBE,EAAmB,CAC7ExG,gBAAiB,SAAS34B,EAAQ6b,GAC9B,OAAOojB,EAAgBtG,gBAAgB1xB,KAAK1E,KAAMm9B,EAAmC1/B,GAAS6b,IAElG+jB,eAAgB,WACZr9B,KAAKmC,OAAO0C,OAAO7E,KAAK64B,WAAWyE,aAAap4B,kBAYxDsiB,EAAMS,mBAAoB,EAAI7f,EAASvC,QAAQ,GAAIstB,EAAa3L,MAAMY,WAAYwU,EAAmB,CACjGxG,gBAAiB,SAAS34B,EAAQ6b,GAC9B,IACIikB,EADAp0B,EAAOnJ,KAGX,GADAvC,EAAS0/B,EAAmC1/B,GACvCuC,KAAKw9B,aAAe,IAAM//B,EAAO0M,OAE/B,CAWH,IAVA,IAAIszB,EAAgBjB,EAAahV,MAAMG,OAAO+V,uBAAuBjgC,EAAQ6b,GACzEqkB,GAAiB,EAAIpjC,EAAOmE,KAAKjB,GAAQ,SAASs4B,GAClD,IAAIz6B,EAAQy6B,EAAE/H,WAAU,GAExB,OADA1yB,EAAMgI,SAAWyyB,EAAEzyB,SACZhI,KAEPsiC,EAA0B,GAC1BC,EAAa,GACb3zB,EAAI,EACJ0xB,EAAMzyB,EAAKq0B,YAAYM,UAAU3zB,OAC9BD,EAAI0xB,GACPgC,EAA0BA,EAAwBt3B,OAAO6C,EAAKq0B,YAAYM,UAAU5zB,GAAGwd,MACvFxd,KACH,EAAI1P,EAAUkB,MAAMkiC,GAAyB,SAASjiC,EAAGo6B,GACtD,GAAI,OAASA,EAAEzyB,SAAU,CACrB,IAAIA,EAAWyyB,EAAEzyB,SAASm1B,UACrBoF,EAAWv6B,GAGZu6B,EAAWv6B,GAAUrE,KAAK82B,GAF1B8H,EAAWv6B,GAAY,CAACyyB,OAMpC5sB,EAAKq0B,YAAYO,cAAgBF,EACjCF,EAAiBnB,EAAahV,MAAMG,OAAO+V,uBAAuBC,EAAgBrkB,IAClF,EAAI9e,EAAUkB,MAAMiiC,GAAgB,SAASzzB,EAAG6rB,GAC5C,IACIiI,EADA16B,EAAWyyB,EAAEzyB,SAASm1B,UAEtBvuB,EAAI,IAAM,IACV8zB,EAAmBH,EAAWv6B,IA7ClD,SAAsC26B,EAAY36B,GAE9C,IADA,IAAIqD,GACIA,GAAUs3B,GACdt3B,EAASs3B,EAAWF,eAAiBE,EAAWF,cAAcz6B,GAC9D26B,EAAaA,EAAWT,YAE5B,OAAO72B,EAuCoDu3B,CAA6B/0B,EAAKq0B,YAAal6B,MAEtFq6B,EAAezzB,EAAI,IAAM8zB,EAAiB,KAAOL,EAAezzB,EAAI,GAAK8zB,EAAiB,IAC1FL,EAAezzB,EAAI,KAAOyzB,EAAezzB,EAAI,GAAK8zB,EAAiB,IAAMjI,OAIrFwH,EAAc,CACV7V,KAAM+V,EACNtV,KAAMsV,EAAcn3B,OAAOq3B,EAAehH,YAE9CxtB,EAAKg1B,8BAA8BZ,EAAYpV,WA1C/CoV,EAAcpK,EAAa3L,MAAMY,WAAWgO,gBAAgB1xB,KAAK1E,KAAMvC,EAAQ6b,GA4CnF,OAAOikB,GAEXF,eAAgB7V,EAAMc,YAAY+U,iBAEtC7V,EAAMe,iBAAkB,EAAIngB,EAASvC,QAAQ,GAAI62B,EAAiBE,EAAmB,CACjFxG,gBAAiB5O,EAAMc,YAAY8N,gBACnCiH,eAAgB7V,EAAMc,YAAY+U,iBAEtC7V,EAAMU,uBAAwB,EAAI9f,EAASvC,QAAQ,GAAIstB,EAAa3L,MAAMY,WAAYwU,EAAmB,CACrGxG,gBAAiB5O,EAAMS,kBAAkBmO,gBACzCiH,eAAgB7V,EAAMc,YAAY+U,iBAEtClU,EAAMT,YAAa,EAAItgB,EAASvC,QAAQ,GAAIqtB,EAAY/J,MAAMV,IAAKmU,EAAmB,K,kCClJtF,IAEgCziC,EAHhCF,EAAQU,aAAU,EAQlB,IAAIoV,IAL4B5V,EAFQE,EAAQ,QAG9BF,EAAIG,WAAaH,EAAM,CACjC,QAAWA,IAGOQ,QAC1BV,EAAQU,QAAUoV,EAClBe,EAAO7W,QAAUA,EAAQU,QACzBmW,EAAO7W,QAAQU,QAAUmW,EAAO7W,S,kCCXhCA,EAAQU,aAAU,EAClB,IAAIqoB,EAAkBhb,EAAuB3N,EAAQ,OACjD+jC,EAAkB/jC,EAAQ,MAC1BgkC,EAAehkC,EAAQ,MACvBE,EAASF,EAAQ,IACjB6N,EAAQ7N,EAAQ,IAChB4oB,EAAyBjb,EAAuB3N,EAAQ,KACxDikC,EAAejkC,EAAQ,KAE3B,SAAS2N,EAAuB7N,GAC5B,OAAOA,GAAOA,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAGnB,IAMIokC,EAAgB,CAChB7W,MAAM,EACNC,QAAQ,EACRC,UAAU,EACVO,MAAM,EACNE,UAAU,EACVD,YAAY,EACZK,KAAK,EACL+V,SAAS,GAET3jC,EAAQC,KACRK,EAAON,EAAMO,IACbL,EAASF,EAAMG,MACfwd,EAAO3d,EAAMsQ,IACboN,EAAO1d,EAAMqQ,IACbkY,EAAYC,SACZH,EAAUC,OACVsb,EAAUC,OA8Ed,SAASC,EAAiB/9B,EAAOG,EAASgV,EAAO6oB,GAU7C,OATI7oB,IAAU6oB,EAAaC,OAAS9oB,IAAU6oB,EAAaE,OACvDl+B,EAAQG,EAAQg+B,iBAEfH,EAAa1zB,KAAO,IAAIiiB,QAAQpX,IAAU,IAC3CnV,EAAQG,EAAQi+B,WAEfJ,EAAazzB,KAAO,IAAIgiB,QAAQpX,IAAU,IAC3CnV,EAAQG,EAAQk+B,UAEbr+B,EA4BX,IAAIs+B,EAAclc,EAAgBroB,QAAQ8Q,QAAQ,CAC9C8X,iBAAkB,OAClBC,WAAY,iBACZC,cAAe,YACfpX,aAAc,CACV7P,MA7ImB,IA8InBE,OA7IoB,IA+IxBmP,UAAW,WACP7L,KAAKmkB,WACLnkB,KAAKm/B,iBAETC,gBAAiB,CAAC,eAClBC,0BAA2B,WACvBr/B,KAAKs/B,eAAe,CAAC,YAEzBnyB,sBAAuB,WACnBnN,KAAKu/B,gBACLv/B,KAAKmkB,YAET5X,uBAAwB,WACTvM,KACNw/B,SADMx/B,KACUw/B,QAAQhgC,UADlBQ,KAENw/B,QAFMx/B,KAESy/B,aAFTz/B,KAE6B0/B,kBAAoB,MAEhExyB,qBAAsB,WAClBlN,KAAKy/B,aAAa5b,SAClB7jB,KAAK0/B,kBAAkB7b,SACvB7jB,KAAKy/B,aAAaE,QAClB3/B,KAAK0/B,kBAAkBC,SAE3BvyB,oBAAqB,WACbpN,KAAK4/B,kBACL5/B,KAAK6/B,cACL7/B,KAAK8C,WAGbuK,kBAAmB,WACf,IAAItM,EAAUf,KAAK2N,YACf7C,EAAS9K,KAAKiO,QACd6xB,EAAgB/+B,EAAQg/B,WAAajlC,KAAKklC,KAAKj/B,EAAQg/B,UAAY,GA9KpD,EA+Kfr8B,EAAO3C,EAAQ2C,KACnB,MAAI,QAAUA,GAAQ,YAAcA,IAAS3C,EAAQk/B,eAAiBl/B,EAAQm/B,YACnE,CACH1jC,MAAOsO,EAAOtO,MACdE,OAAQoO,EAAOpO,OACf0R,KAAMtD,EAAOsD,KAAO0xB,EACpBzwB,MAAOvE,EAAOuE,MAAQywB,EACtBzxB,IAAKvD,EAAOuD,IAAMyxB,EAClB1wB,OAAQtE,EAAOsE,OAAS0wB,GAGzBh1B,GAEX8B,gBAAiB,WACF5M,KACN2N,YADM3N,KACamkB,WADbnkB,KAEN2N,YAAYjK,MAAO,EAAInJ,EAAO+uB,eAFxBtpB,KAE4C2N,YAAYjK,MAC9D66B,EAHMv+B,KAGa2N,YAAYjK,QAHzB1D,KAIF2N,YAAYjK,KAAO,SAGhCsI,oBAAqB,WACjBhM,KAAKy/B,aAAez/B,KAAKC,UAAU2E,IAAIxC,KAAK,CACxC,MAAS,gBAEbpC,KAAK0/B,kBAAoB1/B,KAAKC,UAAU2E,IAAIxC,KAAK,CAC7C,MAAS,wBAGjB+8B,cAAe,WACXn/B,KAAKw/B,QAAU,IAAInB,EAAa8B,OAAO,CACnCjgC,SAAUF,KAAKC,UACfq9B,YAAat9B,KAAKy/B,aAClBr/B,YAAaJ,KAAK0/B,kBAClBU,aAAcpgC,KAAKkM,cACnBm0B,UAAWrgC,KAAKmM,YACjB,CACCkhB,WAAY,QACZ3pB,KAAM,UAGd67B,cAAe,WACX,IACIe,EADOtgC,KACaw/B,QADbx/B,KAENugC,qBACL,IAAIC,EAHOxgC,KAGcygC,wBACzBH,EAAa7V,cAAc+V,GAC3B,IAAIE,EAAa,CACbzV,OAAQ,CAAC,CACLnV,OAAQ,CAACwqB,MAGjBI,EAAWC,gBAAkB,CACzBj9B,KAAM,QAAU88B,EAAc98B,KAAO,gBAAa,GAX3C1D,KAaN4gC,mBAAoB,EAAIxC,EAAgByC,cAblC7gC,KAaqD4gC,kBAAmBF,EAbxE1gC,KAayF8gC,kBAAmB,CACnHC,qBAAqB,EACrBC,uBAAuB,EACvBC,eAAe,IAChBX,EAAa1L,oBAChB4L,EAAclW,eAlBHtqB,KAkByBkhC,wBACpCZ,EAAa5V,WAnBF1qB,KAmBkB4gC,mBAC7BN,EAAaa,eApBFnhC,KAqBNohC,sBAAwBV,EAAWW,YAE5Crb,kBAAmB,CACfsb,WAAY,eAEhB50B,oBAAqB,CAAC,eACtB60B,oBAAqB,WACjBvhC,KAAKwhC,qBAETjB,mBAAoB,WAChB,IACIx/B,EADOf,KACQ2N,YACf8zB,EAAW1gC,EAAQ4zB,cACnB+M,EAAW3gC,EAAQ4gC,WAEnBzgC,EAnMZ,SAAgCA,EAAMugC,EAAUC,EAAUE,GACtD,OAAO,EAAIrnC,EAAOmE,KAAKwC,GAAM,SAASqoB,EAAUxT,GAC5C,IACI8rB,EACA5/B,EAFAgzB,EAAO,KAWX,YARI,IAAW1L,IACX0L,EAAO,GACP4M,EAAeze,EAAUmG,GACzB0L,EAAKwM,GAAYI,EAAepD,EAAQ1oB,GAASwT,EAASkY,GAC1Dx/B,EAAQ4/B,EAAetY,EAAWA,EAASmY,GAC3CzM,EAAKyM,GAAY,OAASz/B,EAAQ2/B,OAAoB,EAAS3/B,EAAQihB,EAAQjhB,GAC/EgzB,OAAO,IAAWA,EAAKwM,SAAa,IAAWxM,EAAKyM,GAAYzM,EAAO,MAEpEA,KAsLI6M,CALA9hC,KAIW+hC,oBAAsB,GACEN,EAAUC,EAL7C1hC,KAK4D+N,OAAO,sBAC1E,YAAchN,EAAQ2C,MANf1D,KAOFgiC,mBAAqB9gC,EAPnBlB,KAQF4gC,kBArLjB,SAAgC1/B,EAAMugC,EAAUC,EAAUxd,GAKtD,OAAO,EAAI3pB,EAAOmE,KAAKwC,GAAM,SAASqoB,GAClC,IAAI0L,EAAO,GAWX,OAVAA,EAAKwM,GAAYlY,EAASkY,GACtBtmC,EAAKouB,EAASmY,GAAYxd,GAJtB,KAKJ+Q,EAAKyM,GAPM,EASPnY,EAASmY,GAAYxd,EACrB+Q,EAAKyM,GATE,EAWPzM,EAAKyM,IAbC,EAgBPzM,KAoKsBgN,CAAuB/gC,EAAMugC,EAAUC,EAAU3gC,EAAQmhC,mBAR3EliC,KAUF4gC,kBAAoB1/B,GAGjCu/B,sBAAuB,WACnB,IACI1/B,EADOf,KACQ2N,YACfjK,EAAO,YAAc3C,EAAQ2C,KAAO,MAAQ3C,EAAQ2C,KACxD,MAAO,CACH6W,SAAS,EACToa,cAAe5zB,EAAQ4zB,cACvBgN,WAAY5gC,EAAQ4gC,WACpB/gC,MAAOG,EAAQohC,UACf3lC,MAAOuE,EAAQqhC,UACf/U,WAAY,QACZ3pB,KAAMA,EACN2+B,SAAmC,IAA1B3+B,EAAKypB,QAAQ,QAXfntB,KAWqC2N,YAAY20B,iBAAc,EACtEhnC,MAAO,CACHwO,KAAM/I,EAAQg/B,UACdhjB,OAAQhc,EAAQwhC,YAChBjL,OAAQ,CACJ/c,SAAS,EACT/d,MAvRO,GAyRXoE,MAAOG,EAAQyhC,WACfjoB,SAAS,EACTkgB,WAAY,CACRnD,OAAQ,IAEZoD,eAAgB,CACZpD,OAAQ,KAGhBA,OAAQ,CACJ12B,MAAOG,EAAQohC,UACf3lC,MAAOuE,EAAQqhC,UACf7nB,QAAS,QAAU7W,KAI/Bw9B,sBAAuB,WACnB,IACIngC,EADOf,KACQ2N,YACf2zB,EAFOthC,KAEWgiC,oBAFXhiC,KAEsC4gC,kBAC7C6B,EAHOziC,KAGkB0iC,0BAA0BpB,GAOvD,MALI,YAAcvgC,EAAQ2C,MAAQ,QAAU3C,EAAQ2C,KAtL5D,SAAoCk7B,EAAc79B,EAAS4hC,GACvD,OAAO,WACH,IAAI5sB,EAAQ/V,KAAK+V,MACb6sB,EAAY,YAAc7hC,EAAQ2C,KAClCwgB,EAAS0e,EAAY7hC,EAAQmhC,iBAAmB,EAChDjgC,EAAQ2gC,EAAYD,EAAY5sB,GAAOhV,EAAQ4gC,YAAc3hC,KAAKiC,MAClE4gC,EAAgBD,EAAY7hC,EAAQ+hC,SAAW/hC,EAAQgiC,iBACvDC,EAAgBJ,EAAY7hC,EAAQkiC,UAAYliC,EAAQmiC,iBAC5D,MAAO,CACHtiC,MAAO+9B,EAAiB18B,GAASiiB,EAAS2e,EAAgBG,EAAejiC,EAASgV,EAAO6oB,KA8KrEuE,CAA2BV,EAAmB1hC,EAN3Df,KAMyEgiC,oBAnM5F,SAAqCpD,EAAc79B,GAC/C,OAAO,WACH,IAAIH,EAAQ+9B,OAAiB,EAAQ59B,EAASf,KAAK+V,MAAO6oB,GAC1D,OAAOh+B,EAAQ,CACX2Z,SAAS,EACT+c,OAAQ,CACJ12B,MAAOA,IAEX,IA6LoBwiC,CAA4BX,EAAmB1hC,IAI3E2hC,0BAA2B,SAASxhC,GAChC,IACIH,EADOf,KACQ2N,YACf01B,EAAYniC,EAAKiJ,OAAS,EAC1Bm5B,EAAU,GAUd,OAbWtjC,KAINujC,eAvSb,SAAoBriC,EAAMwgC,GACtB,IAOIz/B,EACAiI,EAPAs5B,GADYtiC,EAAK,IAAM,IACAwgC,IAAa,EACpCx2B,EAAMs4B,EACNr4B,EAAMq4B,EACNC,EAAa,CAAC,GACdC,EAAa,CAAC,GACdC,EAAaziC,EAAKiJ,OAGtB,IAAKD,EAAI,EAAGA,EAAIy5B,EAAYz5B,KACxBjI,EAAQf,EAAKgJ,GAAGw3B,IACJx2B,GACRA,EAAMjJ,EACNwhC,EAAa,CAACv5B,IAEVjI,IAAUiJ,GACVu4B,EAAWxkC,KAAKiL,GAGpBjI,EAAQkJ,GACRA,EAAMlJ,EACNyhC,EAAa,CAACx5B,IAEVjI,IAAUkJ,GACVu4B,EAAWzkC,KAAKiL,GAO5B,OAHIiB,IAAQD,IACRu4B,EAAaC,EAAa,IAEvB,CACHD,WAAYA,EACZC,WAAYA,GAqQUE,CAAW1iC,EAAMH,EAAQ4gC,YAC3C5gC,EAAQk/B,gBACRqD,EAAQzE,MAAQ,EAChByE,EAAQxE,KAAOuE,GAEftiC,EAAQm/B,aACRoD,EAAQp4B,IAVDlL,KAUYujC,eAAeE,WAClCH,EAAQn4B,IAXDnL,KAWYujC,eAAeG,YAE/BJ,GAEX91B,UAAW,WACP,MAAO,CACHq2B,MAAO,QAAU7jC,KAAKw/B,QAAQ97B,OAGtC4J,aAAc,WACV,IAcIw2B,EAbAhuB,EADO9V,KACOw/B,QACd97B,EAAOoS,EAAOpS,KACdqgC,EAAY,QAAUrgC,EACtBsgC,EAAgB,YAActgC,EAK9BugC,EAAYnuB,EAAOouB,eACnBtyB,EAVO5R,KAUS2N,YAAYiE,SAC5BuyB,GAAU,EAAIj8B,EAAMyJ,WAAWC,IAAawR,EAAUxR,GACtDsM,EAZOle,KAYS2N,YAAYuQ,SAC5BkmB,GAAU,EAAIl8B,EAAMyJ,WAAWuM,IAAakF,EAAUlF,GAEtDmmB,EAV6B,KAUlBJ,EAAUx2B,IAAItC,IAAM84B,EAAUx2B,IAAIvC,KAC7C64B,GAAaC,GAAiB,SAAWtgC,GACrC,IAAMugC,EAAUx2B,IAAIvC,MACpB+4B,EAAUx2B,IAAIvC,KAAOm5B,GAErB,IAAMJ,EAAUx2B,IAAItC,MACpB84B,EAAUx2B,IAAItC,KAAOk5B,KAGzBJ,EAAUx2B,IAAIvC,KAAOm5B,EACrBJ,EAAUx2B,IAAItC,KAAOk5B,IAErBF,GAAWC,KACPD,GAAWC,GACXH,EAAUx2B,IAAIiR,WAAanG,EAAK3G,EAAUsM,GAC1C+lB,EAAUx2B,IAAIkR,WAAanG,EAAK5G,EAAUsM,KAE1C+lB,EAAUx2B,IAAIiR,WAAaylB,EAAUjhB,EAAQtR,QAAY,EACzDqyB,EAAUx2B,IAAIkR,WAAaylB,EAAUlhB,EAAQhF,QAAY,GAEzD8lB,IACAC,EAAUx2B,IAAIiR,WAAaylB,EAAU3rB,EAAKyrB,EAAUx2B,IAAIiR,YA5BvC,QA4BwE,EACzFulB,EAAUx2B,IAAIkR,WAAaylB,EAAU7rB,EAAK0rB,EAAUx2B,IAAIkR,WA9BxC,QA8ByE,IAG7F7I,EAAOggB,YAAY3rB,OAAS,GACxB45B,IACAD,EApC4B,IAoCjBG,EAAU12B,IAAIpC,IAAM84B,EAAU12B,IAAIrC,KAC7C+4B,EAAU12B,IAAIrC,IAAM+4B,EAAU12B,IAAIrC,IAAM44B,EACxCG,EAAU12B,IAAIpC,IAAM84B,EAAU12B,IAAIpC,IAAM24B,GAGhDG,EAAU12B,IAAI8zB,WA/CHrhC,KA+CqBohC,sBA/CrBphC,KAgDNyM,QAAUw3B,GAEnBK,aAAc,SAASnI,GACnB,IACIrxB,EADO9K,KACOiO,QACds2B,EApYe,EAoYCpI,EAChBqI,EAAa15B,EAAOtO,MAAQsO,EAAOsD,KAAOtD,EAAOuE,MAAQk1B,EACzD/nC,EAAQzB,EAAOypC,EAAarI,GAOhC,OANI3/B,EAzYQ,IA0YRA,EA1YQ,GA4YRA,EA3YQ,KA4YRA,EA5YQ,IA8YLA,GAEXioC,eAAgB,WACZ,IAIIC,EACAx6B,EAJAy6B,EADO3kC,KACW2N,YAAYjK,KAC9BkhC,EAFO5kC,KAEaw/B,QAAQ1J,YAC5B+O,EAAeD,EAAaz6B,OAGhC,GAAI,QAAUw6B,GAAc,YAAcA,EAEtC,IADAD,EAPO1kC,KAOSskC,aAAaO,GACxB36B,EAAI,EAAGA,EAAI26B,EAAc36B,IAC1B06B,EAAa16B,GAAGqX,mBAAmB,CAC/B/kB,MAAOkoC,EACPxtB,OAAQ,KAKxB2oB,YAAa,WACE7/B,KACF4gC,kBAAkBz2B,OAAS,IADzBnK,KAEFykC,iBAFEzkC,KAGFw/B,QAAQ75B,OAHN3F,KAIFy/B,aAAa56B,OAJX7E,KAIuBC,UAAU8L,QAGhDyE,kBAAmB,WACf,QAASxQ,KAAK4gC,kBAAkBz2B,QAEpCuE,gBAAiB,WACb,IACI3N,EADOf,KACQ2N,YACf2zB,EAFOthC,KAEWgiC,oBAFXhiC,KAEsC4gC,kBAC7CvwB,EAHOrQ,KAGQyI,SACnB,GAAI,IAAM64B,EAAWn3B,OACjB,MAAO,GAEX,IAAI26B,EAPO9kC,KAOOujC,eACd5B,EAAa5gC,EAAQ4gC,WACrB9C,EAAQyC,EAAW,GAAGK,GACtB7C,EAAOwC,EAAWA,EAAWn3B,OAAS,GAAGw3B,GACzCz2B,GAAM,EAAIhD,EAAMyJ,WAAWmzB,EAAOrB,WAAW,IAAMnC,EAAWwD,EAAOrB,WAAW,IAAI9B,GAAc9C,EAClG1zB,GAAM,EAAIjD,EAAMyJ,WAAWmzB,EAAOpB,WAAW,IAAMpC,EAAWwD,EAAOpB,WAAW,IAAI/B,GAAc9C,EAClGkG,EAAiB10B,EAAQ6H,YAAY2mB,GACrCmG,EAAgB30B,EAAQ6H,YAAY4mB,GACpCmG,EAAe50B,EAAQ6H,YAAYhN,GACnCg6B,EAAe70B,EAAQ6H,YAAY/M,GACnCpB,EAAkB,CAClBy5B,WAAYuB,EACZI,UAAWH,EACXpzB,SAAUqzB,EACV/mB,SAAUgnB,EACVE,mBAAoBvG,EACpBwG,kBAAmBvG,EACnBhtB,iBAAkB5G,EAClBo6B,iBAAkBn6B,EAClB/H,UAAW,CAAC,SAAU2hC,EAAgB,OAAQC,EAAe,OAAQC,EAAc,OAAQC,IAM/F,MAJI,YAAcnkC,EAAQ2C,OACtBqG,EAAgBw7B,uBAAyBxkC,EAAQmhC,iBACjDn4B,EAAgBy7B,eAAiBn1B,EAAQ6H,YAAYnX,EAAQmhC,mBAE1Dn4B,MAGf,EAAIxP,EAAOmE,KAAK,CAAC,YAAa,YAAa,cAAe,WAAY,WAAY,mBAAoB,mBAAoB,WAAY,YAAa,iBAAkB,cAAe,aAAc,YAAa,OAAQ,gBAAiB,aAAc,mBAAoB,gBAAiB,aAAc,oBAAqB,WAAY,aAAa,SAASgb,GAC5VwlB,EAAYz+B,UAAUulB,kBAAkBtM,GAAQ,cAEpD,EAAIuJ,EAAuBtoB,SAAS,cAAeukC,GACnD,IAAInvB,EAAWmvB,EACfjlC,EAAQU,QAAUoV,EAClBmvB,EAAYlvB,UAAUsuB,EAAaruB,QACnCa,EAAO7W,QAAUA,EAAQU,S,iCCtezBV,EAAQwrC,aAoPR,SAAsBvhB,GAClB,IAAIwhB,IAAaC,EACjBzhB,EAAO0hB,OAASF,EAChBG,EAAaH,GAAYxhB,GAtP7BjqB,EAAQ6rC,aAAeA,EACvB7rC,EAAQ8rC,SAAWA,EACnB9rC,EAAQ+rC,aA2PR,WAII,OAHA/N,EAAM4N,GAAc,WAChB7lC,KAAKimC,aAEFjmC,MA9PX/F,EAAQisC,cA6DR,SAAuBp4B,EAAOq4B,GAC1B,IAAIC,GAAY,EAAI7rC,EAAO+uB,eAAexb,GAASA,EAAM4L,MACrD0sB,IACAt4B,EAAMu4B,YAAcC,EAAeF,GAjB3C,SAA2BA,EAAWG,GAClC,IAAIC,EATR,SAAsBJ,EAAWK,GAC7B,IAAIC,EAAIN,EAAUjZ,QAAQsZ,GAC1B,OAAOC,EAAI,EAAI,CACXhtB,KAAM0sB,EAAUO,UAAU,EAAGD,GAC7BE,OAAQR,EAAUO,UAAUD,EAAI,IAChC,KAIYG,CAAaT,EAAW,MAAQ,CAC5C1sB,KAAM0sB,GAEN1sB,EAAO8sB,EAAU9sB,KACjBktB,EAASJ,EAAUI,OACnBA,GACAE,EAAcptB,GAAQotB,EAAcptB,IAAS6sB,EAC7CO,EAAcptB,EAAO,IAAMktB,GAAUL,GAErCO,EAAcptB,GAAQ6sB,EAQtBQ,CAAkBX,EAAWA,GAC7BY,EAAOZ,GAAa3rC,GAAQ,EAAM,GAAIsrC,EAASI,GAsBvD,SAAoBr4B,GA2HhB,OArCAm5B,GArFAn5B,EAAQrT,GAAQ,EAAM,CAClBysC,iBAAkB,CACdjiC,KAAM,IAEV,OAAU,CACNA,KAAM,IAEVkiC,OAAQ,CACJliC,KAAM,GACNqyB,OAAQ,IAEZ8P,MAAO,CACHniC,KAAM,IAEVoL,QAAS,CACLpL,KAAM,IAEV,eAAgB,GAChB,oBAAqB,CACjBoiC,KAAM,GACNC,UAAW,GACXC,KAAM,GACNC,UAAW,GACXJ,MAAO,CACHniC,KAAM,IAEVwP,MAAO,CACHxP,KAAM,KAGd,0BAA2B,CACvBA,KAAM,GACNqyB,OAAQ,IAEZ9P,MAAO,CACHigB,qBAAsB,CAClB1e,YAAa,KAGrBC,IAAK,GACLG,MAAO,GACPue,MAAO,CACHC,MAAO,CACHJ,KAAM,GACNC,UAAW,GACX/yB,MAAO,CACHxP,KAAM,MAIlB2iC,SAAU,GACVC,OAAQ,GACRC,OAAQ,GACRppC,IAAK,CACDgB,WAAY,IAEhBqoC,QAAS,CACLC,KAAM,CACFtN,eAAgB,CACZpD,OAAQ,KAGhB5gB,MAAO,CACH4gB,OAAQ,GACRoD,eAAgB,CACZpD,OAAQ,IAEZ7iB,MAAO,CACHxP,KAAM,MAIlBgjC,cAAe,CACXN,MAAO,CACHJ,KAAM,GACNC,UAAW,GACX/yB,MAAO,CACHxP,KAAM,KAGduiB,MAAO,IAEX0gB,UAAW,GACXC,OAAQ,IACTr6B,IACeo5B,iBAAkB,kBAAmBp5B,GACvDm5B,EAAYn5B,EAAM0Z,MAAMigB,qBAAqB1e,YAAa,aAAc,KAAMjb,EAAMs6B,iBACpFnB,EAAYn5B,EAAMpP,IAAIgB,WAAY,QAAS,KAAMoO,EAAMs6B,iBACvDnB,EAAYn5B,EAAMs5B,MAAMniC,KAAM,QAAS,KAAM6I,EAAMu6B,mBACnDC,EAAYx6B,EAAMs5B,MAAO,WAAY,KAAMt5B,EAAMs5B,OACjDH,EAAYn5B,EAAMq5B,OAAOliC,KAAM,QAAS,KAAM6I,EAAMy6B,qBACpDtB,EAAYn5B,EAAMq5B,OAAO7P,OAAQ,QAAS,KAAMxpB,EAAM06B,WAkC1D,SAAmB16B,GACf,IAAI26B,EAAqB36B,EAAM,qBAE/BmqB,EAAM,CAACwQ,EAAmBpB,KAAMoB,EAAmBnB,YAAY,SAAS3rC,EAAGxB,GACvE8sC,EAAY9sC,EAFK,QAEgB,KAAM2T,EAAM06B,cAEjDvQ,EAAM,CAACwQ,EAAoBA,EAAmBlB,KAAMkB,EAAmBjB,UAAWiB,EAAmBh0B,MAAMxP,OAAO,SAAStJ,EAAGxB,GAC1H8sC,EAAY9sC,EALK,QAKgB,KAAM2T,EAAM46B,cAEjDzB,EAAYwB,EAAmBrB,MAAMniC,KAPhB,QAOsC,KAAM6I,EAAMy6B,qBACvEtB,EAAYn5B,EAAM45B,MAAMC,MAAMlzB,MAAMxP,KARf,QAQqC,KAAM6I,EAAM46B,WACtEzB,EAAYn5B,EAAM45B,MAAMC,MAAMJ,KATT,QAS+B,KAAMz5B,EAAMs6B,iBAChEnB,EAAYn5B,EAAM45B,MAAMC,MAAMH,UAVT,QAUoC,KAAM15B,EAAMs6B,iBACrEnB,EAAYn5B,EAAMm6B,cAAcN,MAAMlzB,MAAMxP,KAXvB,QAW6C,KAAM6I,EAAM46B,WA9C9EC,CAAU76B,GACVmqB,EAAM,CAAC,QAAS,MAAO,QAAS,QAAS,WAAY,MAAO,UAAW,SAAU,gBAAiB,YAAa,SAAU,WAAW,SAASt8B,EAAGitC,GAC5I3B,EAAYn5B,EAAM86B,GAAU,iBAAkB96B,GAC9Cm5B,EAAYn5B,EAAM86B,GAAU,2BAA4B,KAAM96B,EAAMs6B,iBACpEE,EAAYx6B,EAAM86B,GAAU,UAAW96B,GACvCw6B,EAAYx6B,EAAM86B,GAAU,SAAU96B,MAE1CmqB,EAAM,CAAC,QAAS,MAAO,QAAS,QAAS,WAAY,MAAO,UAAW,SAAU,gBAAiB,WAAW,SAASt8B,EAAGitC,GACrHN,EAAYx6B,EAAM86B,GAAU,mBAAoB96B,GAChDw6B,EAAYx6B,EAAM86B,GAAU,SAAU96B,GACtCw6B,EAAYx6B,EAAM86B,GAAU,QAAS96B,MAEzCmqB,EAAM,CAAC,QAAS,MAAO,UAAU,SAASt8B,EAAGitC,GACzCN,EAAYx6B,EAAO86B,EAAS,KAAM96B,EAAM,oBAE5CmqB,EAAM,CAAC,QAAS,UAAU,SAASt8B,EAAGitC,GAClC96B,EAAM86B,GAAW96B,EAAM86B,IAAY,GACnCN,EAAYx6B,EAAM86B,GAAU,qBAAsB,KAAM96B,EAAM,yBAElEmqB,EAAM,CAAC,QAAS,QAAS,MAAO,QAAQ,SAASt8B,EAAGitC,GAChD96B,EAAM86B,GAAW96B,EAAM86B,IAAY,GACnCN,EAAYx6B,EAAM86B,GAAU,2BAA4B,KAAM96B,EAAM,+BAExEw6B,EAAYx6B,EAAMm6B,cAAczgB,MAAO,uBAAwB1Z,EAAM0Z,OACrE8gB,EAAYx6B,EAAMm6B,cAAczgB,MAAO,sBAAuB1Z,EAAM0Z,OACpEyf,EAAYn5B,EAAMi6B,QAAQrxB,MAAM4gB,OAAQ,QAAS,KAAMxpB,EAAM06B,WAC7DvB,EAAYn5B,EAAMi6B,QAAQC,KAAKtN,eAAepD,OAAQ,QAAS,KAAMxpB,EAAMu6B,mBAC3EpB,EAAYn5B,EAAMi6B,QAAQrxB,MAAMgkB,eAAepD,OAAQ,QAAS,KAAMxpB,EAAMu6B,mBAC5EpB,EAAYn5B,EAAMpP,IAAIyoC,OAAQ,kBAAmBr5B,GAqBrD,SAAwBA,GACpB,IAAIpP,EAAMoP,EAAMpP,IAChBu5B,EAAM,CAAC,OAAQ,OAAQ,WAAW,SAASt8B,EAAGitC,GAC1CN,EAAY5pC,EAAK,SAAWkqC,EAAS,KAAMlqC,EAAImqC,UAEnD5Q,EAAM,CAAC,MAAO,SAAU,MAAO,UAAU,SAASt8B,EAAGitC,GACjDN,EAAY5pC,EAAK,gBAAkBkqC,EAAS,KAAMlqC,EAAI,oBA1B1DoqC,CAAeh7B,GACRA,EAjJ4Di7B,CAAWj7B,MAjElF7T,EAAQ+uC,yBAqER,SAAkCC,EAAMC,GACpCC,EAAoBF,GAAQC,GArEhCjvC,EAAQmvC,gBAoPR,SAAyBllB,UACd2hB,EAAa3hB,EAAO0hB,SApP/B,IAUIU,EAVAl+B,EAAW/N,EAAQ,IACnBG,EAAYH,EAAQ,IACpBE,EAASF,EAAQ,IACjBgvC,EAAUhvC,EAAQ,KAClB2sC,EAAS,GACTF,EAAgB,GAChBqC,EAAsB,GACtB1uC,EAAU2N,EAASvC,OACnBoyB,EAAQz9B,EAAUkB,KAClB4tC,EAAmB,KAEnB3D,EAAe,EACfE,EAAe,GAEnB,SAASE,EAASK,GACd,IAAI1sB,GAAO,EAAInf,EAAO+uB,eAAe8c,GACrC,OAAOY,EAAOttB,IAASstB,EAAOF,EAAcptB,IAASosB,KAGzD,SAASyD,EAAoB7vB,EAAMktB,GAC/B,OAAOE,EAAcptB,EAAO,IAAMktB,IAAWuC,EAAoBzvB,EAAO,IAAMktB,IAAWE,EAAcptB,GAG3G,SAAS8vB,EAAwBC,EAAUC,EAAS9C,GAChD,OAAO2C,EAAoBE,EAAWC,EAAS9C,IAAW2C,EAAoBE,EAAU7C,GAG5F,SAASd,EAAaM,EAAWuD,GAC7B,IAAKh6B,UAAUxF,OACX,OAAOm/B,GAAoBC,GAAoB,EAAIF,EAAQO,aAAetD,EAE9E,IAAIM,GAAS,EAAIrsC,EAAO+uB,eAAeqgB,GAEvC,OADAL,GAAoBlD,GAAaA,EAAUqD,SAAWD,GAAwB,EAAIjvC,EAAO+uB,eAAe8c,EAAUqD,UAAWrD,EAAUsD,QAAS9C,GAAU2C,GAAoB,EAAIhvC,EAAO+uB,eAAe8c,GAAYQ,KAAY0C,EACzNtpC,KAsCX,SAASinC,EAAY/iB,EAAQ3kB,EAAOsqC,EAAQC,GACxC,IAAIC,EAASF,EAASA,EAAOtqC,GAASuqC,OAClC,IAAWC,QAAU,IAAW7lB,EAAO3kB,KACvC2kB,EAAO3kB,GAASwqC,GAIxB,SAASzB,EAAYpkB,EAAQ3kB,EAAOsqC,EAAQC,GACxC,IAAIC,EAASF,EAASA,EAAOtqC,GAASuqC,OAClC,IAAWC,IACX7lB,EAAO3kB,GAAS9E,GAAQ,EAAM,GAAIsvC,EAAQ7lB,EAAO3kB,O,iCCxFzDtF,EAAQkvB,MAAQlvB,EAAQutB,WAAQ,EAChC,IAQgCrtB,EAR5B6vC,EAAW3vC,EAAQ,IACnB4vC,EAAS5vC,EAAQ,IACjBG,EAAYH,EAAQ,IACpB6vC,GAK4B/vC,EALoBE,EAAQ,OAM1CF,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GANf+N,EAAQ7N,EAAQ,IAChBE,EAASF,EAAQ,IACjBmO,EAAUnO,EAAQ,IAQtB,SAAS+4B,EAAgBj5B,EAAKk5B,EAAKpxB,GAW/B,OAVIoxB,KAAOl5B,EACPm5B,OAAOC,eAAep5B,EAAKk5B,EAAK,CAC5BpxB,MAAOA,EACPuxB,YAAY,EACZC,cAAc,EACdC,UAAU,IAGdv5B,EAAIk5B,GAAOpxB,EAER9H,EAEX,IAAIgwC,EAAOrvC,KACPK,EAAOgvC,EAAK/uC,IACZ6V,EAAQk5B,EAAKj5B,KACbsH,EAAO2xB,EAAKh/B,IAcZqc,EAAQ,GACZvtB,EAAQutB,MAAQA,EAChB,IAAI2B,EAAQ,GAGZ,SAASihB,EAAIhN,GACT,IAAIz2B,EAAS,EAIb,OAHA,EAAInM,EAAUkB,MAAM0hC,GAAO,SAASzhC,EAAGsG,GACnC0E,GAAU1E,KAEP0E,EAOX,SAAS0jC,EAASjN,EAAOkN,GACrB,OAAOF,GAAI,EAAI7vC,EAAOmE,KAAK0+B,GAAO,SAASn7B,GACvC,OAAQA,EAAQqoC,IAAkBroC,EAAQqoC,OACxClN,EAAMjzB,OA8ChB,SAASogC,EAAoBC,GACzB,OAAO,SAASr7B,EAAM2G,GAClB,IAAI6Z,EAAgBxgB,EAAKwgB,cACrBzuB,EAAOiO,EAAKjO,KACZygC,EAAa7rB,EAAOqe,iBAAiB,GACrCsW,EAAavpC,EAAK,GAWtB,OAVAupC,EAAavpC,EAAKtC,QAAO,SAAS+H,EAAQsuB,GACtC,IAAIhzB,EAAQgzB,EAAK0M,GAIjB,OAHI,OAASh7B,EAAOg7B,KAChBh7B,EAASsuB,GAET,OAAShzB,GAASuoC,EAAQvoC,EAAO0E,EAAOg7B,IACjC1M,EAEJtuB,IACR8jC,IACI,EAAIT,EAASnkC,QAAQ,GAAI4kC,EAAYrX,EAAgB,GAAItd,EAAO8e,mBAAoBjF,KA/EnG11B,EAAQkvB,MAAQA,EAiGhB,IAAIuhB,EAAqB,CACrBC,iBAjHmB,IAkHnBC,qBAnHwB,GAoHxBrT,YAAa/uB,EAAQ6C,KACrBiuB,eAAgB9wB,EAAQ6C,KACxBw/B,YAAariC,EAAQ6C,KACrB+qB,gBAAiB5tB,EAAQ6C,KACzBy/B,aAActiC,EAAQ6C,KACtBgyB,eAAgB,WACZr9B,KAAKmC,OAAO0C,OAAO7E,KAAK64B,WAAWyE,cAEvC3C,mBAAoB,SAASoQ,EAAcC,GACvC,MAAO,CACHrrC,KAAMorC,EAAanqC,OAASoqC,EAC5BC,SAAUF,EAAaE,UAAW,EAAIjB,EAASnkC,QAAQ,GAAIklC,EAAaE,SAAU,CAC9EC,UAAW,eACV,IAGbvS,uBAAwB,SAASpb,GAC7BA,EAAS,aAAevd,KAAKmrC,iBAEjCC,qBAAsB,SAAS7tB,GAC3BA,EAAS,aAAevd,KAAKqrC,eAAiBrrC,KAAKmrC,gBAAkB,MAEzEG,aAAc,SAASC,EAAWC,EAAQtnB,EAAQ3G,GAC9C,IAAI7G,EAAQ80B,EAAOD,GAAaC,EAAOD,IAAcvrC,KAAKC,UAAU2E,IACpEsf,GAAUxN,EAAM7R,OAAOqf,GACvB3G,GAAY7G,EAAMtU,KAAKmb,IAE3BkuB,uBAAwB,SAASluB,GAC7BA,EAAS8kB,QAAU,KACnB9kB,EAASoqB,MAAQ,KACb3nC,KAAKgB,SAASsY,QACdiE,EAASlW,WAAa,KAEtBkW,EAAShW,WAAa,MAG9BkyB,cAAe,WACAz5B,KACNsrC,aAAa,gBADPtrC,UACmCmC,QADnCnC,KAENsrC,aAAa,eAFPtrC,OAIf05B,wBAAyB,WACrB,IACInc,EADOvd,KACSq6B,mBADTr6B,KACiC0rC,0BAA0Bt1B,OACtEmH,EAASouB,MAAQ,cACjBpuB,EAAS8kB,QAAU,EAHRriC,KAINorC,qBAAqB7tB,GAJfvd,KAKN25B,cAAcv3B,KAAKmb,IAE5BxS,eAAgB,WACZ,OAAO/K,KAAK+7B,cAEhBjI,oBAAqB,WACjB,IA/IuBpwB,EA+InB0uB,EAAkBpyB,KAAKgB,SAAS4qC,cACpC,OAAOxZ,GAAmBpyB,KAAK6rC,qBAAuB,SAAWzZ,EAAgB0Z,cAhJ1DpoC,GAgJgG,EAAInJ,EAAO+uB,eAAe8I,EAAgB1uB,OA/I/D,KAA/F,EAAIumC,EAAO8B,SAASroC,EAAM,CAnBzB,QADE,UAHC,WACU,eACJ,eAoK8J,EAAIwE,EAAMyJ,WAAWygB,EAAgB4Z,iBAAkB,EAAI9jC,EAAMyJ,WAAWygB,EAAgB6Z,kBAE3QC,oBAAqB,SAAS5yB,GAC1B,IAAI6yB,EAAM,GASV,OARA,EAAI3xC,EAAUkB,MAAMsE,KAAKs8B,oBAAoB,SAAS3gC,EAAGo6B,GACrD,IAAIqW,EAAaC,SAAS/yB,EAAUyc,EAAE9W,GAAK8W,EAAE/W,IACxCmtB,EAAIC,GAGLE,MAAMC,QAAQJ,EAAIC,IAAeD,EAAIC,GAAYntC,KAAK82B,GAAKoW,EAAIC,GAAc,CAACD,EAAIC,GAAarW,GAF/FoW,EAAIC,GAAcrW,KAKnBoW,GAEXpY,qBAAsB,SAASpd,GAC3B,IAEI4G,EADA6U,EADOpyB,KACgBgB,SAAS4qC,cADzB5rC,KAGF8zB,wBACLvW,EAAW,CACP,MAAS,iBACT3d,OAAQwyB,EAAgBxxB,MACxB,eAAgBwxB,EAAgBgQ,UAChCC,QAAS1rB,EAAmB,KAAOyb,EAAgBiQ,SAAW,EAC9D,iBAAkB,SAClBj9B,OAAO,EACP,YAXGpF,KAWeqrC,eAXfrrC,KAWqCmrC,gBAXrCnrC,KAW4DwsC,qBAX5DxsC,KAaFsrC,aAAa,iBAbXtrC,UAawCmC,OAAQob,KAG/D6a,mBAAoB,SAASzhB,GACd3W,KACN05B,0BADM15B,KAENysC,uBAAuB91B,GAFjB3W,KAGN+zB,qBAAqBpd,IAE9BwiB,yBAA0B,WACtB,IACIuT,EAEAC,EADAC,EAFO5sC,KAEqB6sC,wBAehC,OAbKD,IACDF,EALO1sC,KAKoBq5B,mBALpBr5B,KAMF6sC,wBAA0BD,GAAuB,EAAI5C,EAASnkC,SAAQ,EAAM,CAC7EsQ,OAAQ,IACTu2B,GACHC,EAAcD,EAAoBv2B,QAAUu2B,EAAoBv2B,OAAOC,QAAU,GACjFw2B,EAAqBz2B,OAASy2B,EAAqBz2B,QAAU,GAC7Dy2B,EAAqBz2B,OAAOC,OAAS,CACjC,eAAgBu2B,EAAY,gBAC5B/uC,EAAG+uC,EAAY/uC,EACfykC,QAASsK,EAAYtK,UAGtBuK,GAEXvT,iBAAkB,WACd,OAAOr5B,KAAKi6B,mBAAmBj6B,KAAKk6B,uBAAwBl6B,KAAKgB,SAASyT,QAE9Eq4B,oBAAqB,WACjB,OAAO9sC,KAAKgB,SAAS1F,OAEzBk/B,iBAAkB,SAASjjB,EAAOyzB,EAAc+B,EAAoBC,GAChE,IAAI1V,EAAS/f,EAAM+f,QAAU,GACzB2V,OAAY,IAAW11B,EAAMzN,KAAOyN,EAAMzN,KAAOkjC,EACrD,MAAO,CACHrtC,KAAM4X,EAAM3W,OAASoqC,EACrBprC,OAAQ03B,EAAO12B,OAASmsC,EACxB,eAAgBzV,EAAO/c,QAAU+c,EAAO96B,MAAQ,EAChDoB,EAAGqvC,EAAY,GAAK3V,EAAO/c,SAAW,IAAM0yB,MAAe3V,EAAO96B,MAAQ,IAAU,KAG5F69B,mBAAoB,SAASC,GACzB,IACI4S,EAAiB5S,EAAa15B,OADvBZ,KACqCgB,SAASg5B,gBACrDmT,EAFOntC,KAEegB,SAASwV,yBAC/Bm2B,EAHO3sC,KAGYw6B,iBAAiBF,EAAc4S,EAAgBA,GAEtE,OADAP,EAAYtqC,WAAai4B,EAAa/f,QAAU,UAAY,SACrD,CACHnE,OAAQu2B,EACRxlB,MAPOnnB,KAOKw6B,iBAAiBF,EAAaG,WAAY0S,EAAgBD,EAAgB5S,EAAaxwB,MACnGwd,UAROtnB,KAQSw6B,iBAAiBF,EAAaI,eAAgByS,EAAgBD,EAAgB5S,EAAaxwB,QAGnHkqB,WAAY,SAAS9yB,EAAM+yB,EAAemZ,GAKtC,OAJAA,EAAgBA,GAAiB,CAC7BnrC,MAAOjC,KAAKm0B,iBAAiB,KAEnB7wB,SAAWtD,KAAK40B,mBAhKtC,SAAqB1zB,EAAMksC,EAAenZ,GACtC,IAAIoZ,GAAmB,EACvB,IAAK,IAAI9tC,KAAS6tC,EAAe,CAC7B,IAAI5X,EAAa,aAAej2B,EAChC,GAAIi2B,GAAc,SAAWj2B,IAAS,EAAI2I,EAAMyJ,WAAWzQ,EAAK3B,SAAU,IAAW2B,EAAK3B,GAAQ,CAC9F,IAAI+tC,EAAWF,EAAc7tC,GACxBi2B,IACDvB,EAAcqZ,IAAarZ,EAAcqZ,IAAa,GAAK,GAE/DD,GAAmB,GAG3B,OAAOA,EAqJIE,CAAYrsC,EAAMksC,EAAenZ,GAAiB,KAAO/yB,EAAKe,QAAUf,EAAKe,OAExFmyB,0BAA2B,aAG3B+F,cAAe,WACX,OAAO+P,EAAuBvvC,QAAQupC,aAAalkC,OAEvDq0B,sBAAuB,WACnB,IAKI2X,EACAC,EANA3X,EAAQt0B,KACR2hC,EAAa3hC,KAAKm0B,iBAAiB,GACnCQ,EAAgB30B,KAAK40B,mBACrBH,EAAWz0B,KAAK00B,cAChBZ,EAAsB9zB,KAAK8zB,sBAG/B,GAAIA,EAAqB,CACrB,IAAI1B,EAAkBpyB,KAAKgB,SAAS4qC,cACpCI,EAAgB5Z,EAAgB4Z,eAnR5B,WAoRJC,EAAiB7Z,EAAgB6Z,gBArR5B,YAuRT,OAAO,SAAS/qC,GACZ,IAAIssC,EAAY,CACZvrC,MAAOqyB,EAAMO,mBAAmB3zB,EAAKygC,IACrCr+B,SAAUpC,EAAKyzB,GACf/J,IAAK1pB,EAAKuzB,GACVvzB,KAAMA,GAMV,OAJI4yB,IACA0Z,EAAU3iB,SAAW3pB,EAAK8qC,GAC1BwB,EAAU1iB,UAAY5pB,EAAK+qC,IAExBuB,IAGf3B,kBAAmB,WACf,MA9RO,aA8RA7rC,KAAKigB,eA7RF,gBA6RgCjgB,KAAKigB,eA5RxC,aA4RyEjgB,KAAKytC,WAEzFvX,WAAY,SAASn1B,GACjB,IAAIzF,EAAQyF,EAAQzF,MAChBA,EAAMsc,mBACNtc,EAAMwd,kBACNxd,EAAMqK,KAAK3F,KAAKC,UAAWc,EAAQkqB,OAAQlqB,EAAQ2sC,aAAc3sC,EAAQ6V,cACzE5W,KAAKm2B,aAAal3B,KAAK3D,IAEvBA,EAAMyc,mBAGdskB,iBAAkB,WACd,IACIsR,EAAoB,CACpB17B,SAFOjS,KAEQ2qC,kBAFR3qC,KAINga,cAJMha,KAIega,aAAajI,QAAQ,CAC3CswB,QAAS,GACVsL,GANQ3tC,KAON4tC,gBAPM5tC,KAOiB4tC,eAAe77B,QAAQ,CAC/CswB,QAROriC,KAQOgB,SAAS4qC,cAAcvJ,SAAW,GACjDsL,IAEP1R,SAAU,WACN,IAAI9yB,EAAOnJ,KACP6tC,EAAiB1kC,EAAKgtB,aAAahsB,OAAS,GAChD,EAAI3P,EAAUkB,MAAMyN,EAAKgtB,cAAgB,IAAI,SAASjsB,EAAG6rB,GACrDA,EAAEhkB,QAAQ7H,IAAM2jC,EAAiB,WAC7B1kC,EAAKkzB,yBACL,EAAQ,CACRh1B,WAAY0uB,EAAEl6B,EACd0L,WAAYwuB,EAAEj6B,QAI1Bg5B,mBAAoB,MACpBC,aAAc,CACV+Y,IAAK,SAAS5kC,EAAO4M,GACjB,IAAIi4B,EACA7sC,EAAOgI,EAAMhI,KACbyuB,EAAgBzmB,EAAMymB,cAC1B,GAAKzuB,EAAKiJ,OAAV,CAGA,IAAIw3B,EAAa7rB,EAAOqe,iBAAiB,GACrC6Z,EAAoB9sC,EAAKtC,QAAO,SAAS+H,EAAQsuB,GACjD,IAAIhzB,EAAQgzB,EAAK0M,GASjB,OARI,EAAIz5B,EAAMyJ,WAAW1P,IACrB0E,EAAO,IAAM1E,EACb0E,EAAO,MAEH,OAAS1E,GACT0E,EAAO,KAGRA,IACR,CAAC,EAAG,EAAG,IACV,OA9TZ,SAA+BA,EAAQzF,EAAM4U,GACzC,IAAIm4B,EAAmBn4B,EAAOS,aAAaq1B,cACvCjK,EAAa7rB,EAAOqe,iBAAiB,GACrC6X,EAAgBiC,EAAiBjC,eApCzB,WAqCRC,EAAiBgC,EAAiBhC,gBAtCzB,YAuCb,GAAIn2B,EAAOge,4BAAyB,IAAWma,EAAiBvqC,KAAM,CAClE,IAAIwqC,EAAahtC,EAAKtC,QAAO,SAAS+H,EAAQsuB,GAS1C,OARI,EAAI/sB,EAAMyJ,WAAWsjB,EAAK+W,MAC1BrlC,EAAO,IAAMsuB,EAAK0M,GAAc1M,EAAK+W,GACrCrlC,EAAO,OAEP,EAAIuB,EAAMyJ,WAAWsjB,EAAKgX,MAC1BtlC,EAAO,IAAMsuB,EAAKgX,GAAkBhX,EAAK0M,GACzCh7B,EAAO,MAEJA,IACR,CAAC,EAAG,EAAG,EAAG,IACTunC,EAAW,KACXvnC,EAAOqlC,GAAiBrlC,EAAOg7B,GAAcuM,EAAW,GAAKA,EAAW,IAExEA,EAAW,KACXvnC,EAAOslC,GAAkBtlC,EAAOg7B,GAAcuM,EAAW,GAAKA,EAAW,IAGjF,OAAOvnC,EAsSQwnC,EAAmD/a,EAA5B2a,EAAwB,GAA2CpM,EAAYqM,EAAkB,KAAO9sC,EAAKiJ,OAAS,KAAO6jC,EAAkB,GAAKA,EAAkB,IAAK5a,EAAgB2a,EAAuBj4B,EAAO8e,mBAAoBjF,GAAgBoe,GAAwB7sC,EAAM4U,KAE7Ts0B,IAAK,SAASr7B,EAAO+G,GACjB,IAAIs4B,EACAze,EAAgB5gB,EAAM4gB,cACtBzuB,EAAO6N,EAAM7N,KACjB,GAAKA,EAAKiJ,OAAV,CAGA,IAAIw3B,EAAa7rB,EAAOqe,iBAAiB,GACrC6Z,EAAoB9sC,EAAKtC,QAAO,SAAS+H,EAAQsuB,GACjD,IAAIhzB,EAAQgzB,EAAK0M,GAWjB,YAVI,IAAW1/B,IACX0E,EAAO,IAAM1E,GAEb,OAASA,EACT0E,EAAO,UAEH,IAAW1E,GACX0E,EAAO,KAGRA,IACR,CAAC,EAAG,EAAG,IACN1E,EAAQ+rC,EAAkB,GAI9B,GAHIA,EAAkB,KAAO9sC,EAAKiJ,SAC9BlI,EAAQ,MAER+rC,EAAkB,KAAO9sC,EAAKiJ,OAGlC,OAlUZ,SAA+BxD,EAAQzF,EAAM4U,GACzC,IAAIm4B,EAAmBn4B,EAAOS,aAAaq1B,cACvCI,EAAgBiC,EAAiBjC,eA9DzB,WA+DRC,EAAiBgC,EAAiBhC,gBAhEzB,YA0Eb,OATIn2B,EAAOge,4BAAyB,IAAWma,EAAiBvqC,OAC5DiD,EAAOqlC,GAAiB,EACxBrlC,EAAOslC,GAAkB,EACzBtlC,EAASzF,EAAKtC,QAAO,SAAS+H,EAAQsuB,GAGlC,OAFAtuB,EAAOqlC,IAAkB/W,EAAK+W,GAC9BrlC,EAAOslC,IAAmBhX,EAAKgX,GACxBtlC,IACRA,IAEAA,EAqTQ0nC,EAAmDjb,EAA5Bgb,EAAwB,GAA2CzM,EAAY1/B,GAAQmxB,EAAgBgb,EAAuBt4B,EAAO8e,mBAAoBjF,GAAgBye,GAAwBltC,EAAM4U,KAEzOmjB,MAAO,SAASqV,EAAOx4B,GACnB,IAAIy4B,EACArtC,EAAOotC,EAAMptC,KACbyuB,EAAgB2e,EAAM3e,cACtBgS,EAAa7rB,EAAOqe,iBAAiB,GACzC,OAAmBf,EAAZmb,EAAQ,GAA2Bz4B,EAAO8e,mBAAoBjF,GAAgByD,EAAgBmb,EAAO5M,EAAYzgC,EAAKk0B,QAAO,SAASlrB,GACzI,YAAO,IAAWA,EAAEy3B,MACrBx3B,QAASokC,GAEhBrjC,IAAKq/B,GAAoB,SAASiE,EAAGC,GACjC,OAAOD,EAAIC,KAEftjC,IAAKo/B,GAAoB,SAASiE,EAAGC,GACjC,OAAOD,EAAIC,MAGnBC,eAAgB,kBACL1uC,KAAK6sC,yBAEhBjY,iBAAkB,WACd,OAAO50B,KAAKgB,SAAS2zB,eAAiB,OAE1CR,eAAgB,WACZ,IAGI6X,EACAC,EAJAlrC,EAAUf,KAAKgB,SACfitC,EAAmBltC,EAAQ6qC,cAC3B1X,EAAc,CAACnzB,EAAQ4gC,YAAc,OASzC,OANIsM,IACAjC,EAAgBiC,EAAiBjC,cACjCC,EAAiBgC,EAAiBhC,gBAClC,EAAI/jC,EAAMymC,UAAU3C,IAAkB9X,EAAYj1B,KAAK+sC,IACvD,EAAI9jC,EAAMymC,UAAU1C,IAAmB/X,EAAYj1B,KAAKgtC,IAErD/X,GAEX2I,oBAAqB,SAAS37B,GAC1B,GAAKlB,KAAK8zB,sBAAV,CAGA,IAMI7xB,EAGA2sC,EACAC,EACAC,EACAC,EAVAd,EAFOjuC,KACQgB,SACY4qC,cAC3BoD,GAAe,EAAIz0C,EAAO+uB,eAAe2kB,EAAiBvqC,MAC1DurC,EAAkBC,WAAWjB,EAAiBhsC,OAC9C0/B,EALO3hC,KAKWm0B,iBAAiB,GAEnC6X,EAAgBiC,EAAiBjC,eA/a7B,WAgbJC,EAAiBgC,EAAiBhC,gBAjb7B,YAsbLkD,EAAc,SAASC,EAAIna,GAC3BhzB,EAAQgzB,EAAKhzB,MACbgzB,EAAKpK,SAAW5oB,EAAQgtC,EACxBha,EAAKnK,UAAY7oB,EAAQgtC,GAE7B,OAAQD,GACJ,IAtbA,QAubID,EAAkBI,EAClB,MACJ,IA1bE,UA2bEJ,EAAkB,SAASpzC,EAAGs5B,GAE1B,IAAIoa,GADJptC,EAAQgzB,EAAKhzB,OACOgtC,EAAkB,IACtCha,EAAKpK,SAAW5oB,EAAQotC,EACxBpa,EAAKnK,UAAY7oB,EAAQotC,GAE7B,MACJ,IAhcI,YAicAN,EAAkB,SAASpzC,EAAGs5B,GAC1BA,EAAKpK,SAAWoK,EAAK/zB,KAAK8qC,GAC1B/W,EAAKnK,UAAYmK,EAAK/zB,KAAK+qC,IAE/B,MACJ,QAMI,OAFA4C,GAHAD,GAAa,EAAIr0C,EAAOmE,KAAKwC,GAAM,SAAS+zB,GACxC,OAAO,EAAI/sB,EAAMyJ,WAAWsjB,EAAK/zB,KAAKygC,IAAe1M,EAAK/zB,KAAKygC,GAAc,SAEnDx3B,OAC9B8kC,EAAkBA,GAAmB,EAC7BD,GACJ,IAldL,WAmdSC,EAAkB5E,EAASuE,EAAYxE,EAAIwE,GAAcC,GAAoBI,EAC7EF,EAAkBI,EAClB,MACJ,IArdK,eAsdDL,EAAY1E,EAAIwE,GAAcC,EAC9BI,EAAkBh+B,EAAMo5B,EAASuE,EAAYE,IAAcG,EAC3DF,EAAkB,SAASpzC,EAAGs5B,GAC1BA,EAAKpK,SAAWikB,EAAYG,EAC5Bha,EAAKnK,UAAYgkB,EAAYG,GAEjC,MACJ,IA5dC,WA6dGA,EAAkBh+B,EAAMo5B,EAASuE,EAAYxE,EAAIwE,GAAcC,GAAoBA,GAAoBI,EACvGF,EAAkBI,GAGlCJ,IAAmB,EAAIv0C,EAAUkB,MAAMwF,EAAM6tC,KAEjDO,oBAAqB,SAASvuC,GAC1B,IAAIu5B,EAAet6B,KAAKm5B,2BACpBhjB,EAASmkB,EAAankB,OACtBo5B,EAAU,CAACp5B,EAAOC,OAAQD,EAAOgR,MAAOhR,EAAOmR,WAAW1oB,QAAO,SAASuM,EAAKoM,GAC/E,OAAOiB,EAAKrN,EAAK,EAAIoM,EAAM3Z,EAAI2Z,EAAM,mBACtC,GAGH,OAFAxW,EAAQ+I,KAAOwwB,EAAa/f,QAAUg1B,EAAU,EAChDxuC,EAAQyuC,qBAAuBlV,EAAa/f,QAAU,EAAIpE,EAAOC,OAAOxY,EAAIuY,EAAOC,OAAO,gBAAkB,EACrGrV,GAEX0uC,4BAA6B,WACzB,OAAO,IAGfx1C,EAAQutB,MAAQA,GAAQ,EAAIwiB,EAASnkC,QAAQ,GAAI6kC,EAAoB,CACjEgF,aAAc,WACV,IACIC,EACAC,EAFAzmC,EAAOnJ,KAGP6vC,EAAW1mC,EAAK20B,WAAa,GAC7BxkB,EAAUnQ,EAAKnI,SAASsY,QACvBnQ,EAAK7G,cAGNutC,EAAS1lC,SACTwlC,EAAWxmC,EAAK2mC,UAAY3mC,EAAK2mC,WAAa,GAC9CF,EAAgBzmC,EAAK4mC,gBAAkB5mC,EAAK4mC,gBAAkB5mC,EAAKlJ,UAAU2E,IAAIxC,KAAK,CAClFzC,KAAM,OACN0iC,QAAS,KACTziC,OAAQ,OACR,MAAS,kBACTwC,KAAK,CACL,YAAapC,KAAKmrC,iBAAmB,OACtCtmC,OAAOsE,EAAKhH,SACf,EAAI3H,EAAUkB,MAAMm0C,GAAU,SAAS3lC,EAAG4sB,GACjC6Y,EAASzlC,GAKVf,EAAK6mC,sBAAsBlZ,EAAS6Y,EAASzlC,IAJ7CylC,EAASzlC,GAAKf,EAAK8mC,oBAAoBnZ,GAAS51B,KAAK,CACjD,oBAAqBiI,IACtBtE,OAAO+qC,OAMtBzmC,EAAK+mC,oBAAsB/mC,EAAK+iC,oBAAoB5yB,KAExD2c,2BAA4B,SAAST,EAAY55B,GAC7C,IACIoP,GADOwqB,EAAax1B,KAAKqe,kBAAoBre,KAAKob,gBAC/BrQ,iBACvB,OAAO,EAAI7C,EAAMyJ,WAAW/V,IAAUoP,EAAY,IAAMpP,GAASoP,EAAY,IAAMpP,GAEvFu0C,yBAA0B,SAASjxB,EAAMtjB,GACrC,OAAOoE,KAAK81B,YAAY3rB,QAAUnK,KAAKsC,aAE3CizB,mBAAoB,SAAS35B,EAAO45B,GAMhC,IALA,IAAIC,EAAgB,KAChBC,GAAcF,IAAex1B,KAAKgB,SAASsY,SAAWkc,GAAcx1B,KAAKgB,SAASsY,QAClFqc,EAAaD,EAAoB,KAAP,KAC1BG,EAAqBH,EAAoB,KAAP,KAClCj4B,EAASuC,KAAKs8B,mBACTpyB,EAAI,EAAGA,EAAIzM,EAAO0M,OAAQD,IAAK,CACpC,IAAI6rB,EAAIt4B,EAAOyM,GACX8rB,EAAWD,EAAEJ,KAAe/5B,EAAQm6B,EAAEF,QAAqB,EAC/D,GAAI71B,KAAKi2B,4BAA4BT,EAAYQ,GAAW,CACxDP,EAAgBO,EAChB,OAGR,OAAOP,GAEX2a,kBAAmB,SAAS90C,EAAO+0C,GAC/B,MAAO,CAAC/0C,EAAO+0C,IAEnBC,iBAAkB,WACd,MAAO,IAEXC,yBAA0B,SAAS30C,EAAO45B,GACtC,IAAIrsB,EAAOnJ,KACPsZ,EAAUnQ,EAAKoN,aAAa+C,QAE5Bqc,GADcH,IAAelc,GAAWkc,GAAclc,EAC7B,KAAO,KAChCk3B,EAAYrnC,EAAK2sB,YACjB2a,EAAetnC,EAAKmnC,mBACpBI,EAAgB,GAWpB,OAVIF,EAAUrmC,OAAS,EACnBqmC,EAAUnhB,SAAQ,SAAS/zB,EAAO4O,GAC9B,IAAImmC,EAAYG,EAAUtmC,EAAI,GAC1BmmC,IAAc/0C,EAAMq6B,IAAc/5B,GAASy0C,EAAU1a,IAAc/5B,GAASN,EAAMq6B,IAAc/5B,GAASy0C,EAAU1a,IAAc/5B,IACjI80C,EAAczxC,KAAKkK,EAAKinC,kBAAkB90C,EAAO+0C,EAAWI,OAIpEC,EAAczxC,KAAK,CAACuxC,EAAU,GAAIA,EAAU,KAEzCE,GAEXC,iBAAkB,SAAS90C,EAAGC,GAC1B,IAII80C,EAJAC,EAAS7wC,KAAKgB,SAASsY,QAAUxd,EAAID,EACrCi1C,EAASD,EACT1E,EAAMnsC,KAAKkwC,oBACX50C,EAAQ,KAERm6B,EAAgBz1B,KAAKgB,SAASsY,QAAUzd,EAAIC,EAC5C+5B,EAAoB71B,KAAKgB,SAASsY,QAAU,KAAO,KACvD,GAAItZ,KAAKsC,aAAe6pC,EAAK,CACzB7wC,EAAQ6wC,EAAI0E,GACZ,GACIv1C,EAAQ6wC,EAAI2E,IAAW3E,EAAI0E,GAC3BA,IACAC,WACMD,GAAU,GAAKC,EAAS3E,EAAIhiC,UAAY7O,GAC9CgxC,MAAMC,QAAQjxC,KACds1C,EAAcz1C,EAAKG,EAAM,GAAGu6B,GAAqBJ,IACjD,EAAIj7B,EAAUkB,MAAMJ,GAAO,SAAS4O,EAAG6rB,GACnC,IAAIh6B,EAAWZ,EAAK46B,EAAEF,GAAqBJ,GACvCmb,GAAe70C,IACf60C,EAAc70C,EACdT,EAAQy6B,OAKxB,OAAOz6B,GAEX0gC,kBAAmB,WACf,IACI1iB,EADOtZ,KACQgB,SAASsY,QACxBy3B,GAAYz3B,EAFLtZ,KAEoBob,eAFpBpb,KAE0Cqe,mBAAmBtT,iBACpEimC,GAAY13B,EAHLtZ,KAGoBqe,kBAHpBre,KAG6Cob,gBAAgBrQ,iBAH7D/K,KAIN+7B,aAAe,CAChB/mB,KAAM+7B,EAAS,GACfj8B,KAAMi8B,EAAS,GACfr7B,KAAMs7B,EAAS,GACfv7B,KAAMu7B,EAAS,KAGvBC,oBAAqB,SAAS1jC,GAC1B,IAAIjS,EAAQ0E,KAAK85B,eAAevsB,GAAK,GACrC,OAAOjS,EAAQA,EAAM6mB,sBAAmB,KAGhDloB,EAAQkvB,MAAQA,GAAQ,EAAI6gB,EAASnkC,QAAQ,GAAI6kC,EAAoB,CACjEgF,aAAc,WACVloB,EAAMkoB,aAAahrC,KAAK1E,MACxB,IACI+V,EADAo2B,EAAMnsC,KAAKkwC,oBAEVlwC,KAAKsC,eAET,EAAI9H,EAAUkB,MAAMywC,GAAK,SAASjiC,EAAGgnC,GAClC,GAAIA,EAEA,OADAn7B,EAAQ7L,GACD,KAGfiiC,EAAIp2B,EAAQ,KAAOo2B,EAAIp2B,KAE3B46B,iBAAkB,SAAS90C,EAAGC,GAC1B,IAAIq1C,GAAM,EAAI52C,EAAOu4B,kBAAkB9yB,KAAKob,eAAeiW,YAAax1B,EAAGC,GAC3E,OAAO0rB,EAAMmpB,iBAAiBjsC,KAAK1E,KAAMmxC,EAAIne,IAAKme,EAAIvzC,IAE1Do+B,kBAAmB,WACf,IACIlxB,EADO9K,KACOob,eAAeg2B,YADtBpxC,KAEN+7B,aAAe,CAChB/mB,KAAMlK,EAAOsD,KACb0G,KAAMhK,EAAOtO,MAAQsO,EAAOuE,MAC5BqG,KAAM5K,EAAOuD,IACboH,KAAM3K,EAAOpO,OAASoO,EAAOsE,SAGrCmmB,mBAAoB,SAAS8b,EAAQ7b,GAIjC,IAHA,IAAIj6B,EAAS,KACT+1C,EAAY9b,EAAa,WAAa,SACtC/3B,EAASuC,KAAKs8B,mBACTpyB,EAAI,EAAGA,EAAIzM,EAAO0M,OAAQD,IAAK,CACpC,IAAI6rB,EAAIt4B,EAAOyM,GACXqnC,GAAW,EAAIrpC,EAAMyJ,WAAWokB,EAAEub,MAAe,EAAIppC,EAAMyJ,WAAW0/B,EAAOC,KAAevb,EAAEub,GAAW7Y,YAAc4Y,EAAOC,GAAW7Y,UAAY,CACrJ58B,EAAGk6B,EAAEl6B,EACLC,EAAGi6B,EAAEj6B,QACL,EACJ,IAAI,EAAIoM,EAAMyJ,WAAW4/B,GAAW,CAChCh2C,EAASg2C,EACT,OAGR,OAAOh2C,M,iCClsBftB,EAAQU,aAAU,EAClB,IAAIyN,EAAW/N,EAAQ,IACnBG,EAAYH,EAAQ,IACpBmO,EAAUnO,EAAQ,IAClBm3C,EAAUn3C,EAAQ,IAClBiZ,EAASjZ,EAAQ,MACjB6N,EAAQ7N,EAAQ,IAChBE,EAASF,EAAQ,IACjBo3C,GAAS,EAAID,EAAQE,aACrBj3C,EAAU2N,EAASvC,OACnBhL,EAAQC,KACRC,EAASF,EAAMG,MACfC,EAASJ,EAAMK,MACfy2C,EAAQ92C,EAAMmlC,KA6BlB,IAAIjwB,EAAW,CACX0I,YAAa,WACTzY,KAAKsT,OAAO9T,UACZQ,KAAKsT,OAAS,MAElBoK,YAAa,WACT,OAAO1d,KAAKmS,SAEhB2G,gBAAiB,WACb,IACI3G,EADOnS,KACQmS,QACfA,GAAWA,EAAQ/P,KAAK,eACxB+P,EAAQ/P,KAAK,CACTC,WAAY,QAIxBC,UAAW,WACP,OAAOtC,KAAK8tB,eAAiB9tB,KAAK8V,OAAOxT,aAE7CyV,gBAAiB,WACb,IACI5F,EADOnS,KACQmS,QACfA,GAAW,WAAaA,EAAQ/P,KAAK,eACrC+P,EAAQ/P,KAAK,CACTC,WAAY,WAJTrC,KAON+uB,WAPM/uB,KAOY+uB,UAAU3sB,KAAK,CAClCC,WAAY,WARLrC,KAUNsT,OAAO3N,MAAK,IAErBsT,YAAa,WACT,IAAI9G,EAAUnS,KAAKmS,QACnBA,GAAWA,EAAQ/P,KAAKpC,KAAKmZ,iBAEjCY,aAAc,WACV/Z,KAAKsT,OAAS,IAAIA,EAAOpZ,MAAM,CAC3BgG,SAAUF,KAAK8V,OAAO7V,UACtBG,YAAaJ,KAAK8V,OAAOkE,aACzB1e,MAAO0E,QAGfuT,iBAAkB,WACdvT,KAAKsT,OAAOrS,QAAQjB,KAAKwT,0BAE7BsG,oBAAqB,YAChB9Z,KAAKsT,QAAUtT,KAAK+Z,eACrB/Z,KAAKsT,OAAOxS,WAAWd,KAAKgB,SAASyT,QAEzC4F,YAAa,SAASD,GAClB,OAAO,EAAIlS,EAAMyJ,WAAWyI,KAAW,kBAAoBA,IAAS,EAAIlS,EAAMyJ,WAAWyI,EAAMoC,OAEnG0E,WAAY,WACRlhB,KAAK0X,QAAU1X,KAAKgB,SAASmV,QAEjCwG,aAAc,SAASC,EAAYC,GAC/B,IAAIC,EAAYF,EAAWG,OACvBC,EAAYH,EAAWE,OACvBE,EAAgB,WAAaH,GAAa,WAAaE,GAAa,WAAaF,GAAa,WAAaE,EAC3G40B,EAAe5xC,KAAKqa,YAAYuC,EAAWxC,SAAWpa,KAAKqa,YAAYwC,EAAWzC,OACtF,SAAU6C,IAAiB20B,IAE/Bn0B,oBAAqB,SAASV,EAAQS,GAClC,OAAQT,GACJ,IAAK,SACD,OA1FhB,SAA+BS,GAC3B,MAAO,EAAEA,GAASA,EAAQA,GAASA,EAAQA,EAAQA,GAASA,EAAQA,GAASA,GAASA,GAyFnEq0B,CAAsBr0B,GACjC,IAAK,UACD,OAxFhB,SAAgCA,GAC5B,IAAI5f,EAAI+zC,EAAMn0B,GACd,MAAO,EAAE5f,EAAG,EAAG,GAAIA,EAAGA,EAAG,EAAG,EAAGA,GAAIA,EAAG,GAsFnBk0C,CAAuBt0B,GAClC,IAAK,WACL,IAAK,eACD,OA/EhB,SAAqCA,GACjC,MAAO,EAAEA,GAASA,EAAQA,GAASA,EAAQ,EAAGA,GAASA,GAASA,GA8E7Cu0B,CAA4Bv0B,GACvC,IAAK,aACD,OA7EhB,SAAmCA,GAC/B,MAAO,EAAEA,EAAQA,EAAQA,EAAQA,EAAQ,GAAIA,GAASA,EAAQA,GA4E3Cw0B,CAA0Bx0B,GACrC,IAAK,QACD,OA1FhB,SAA8BA,GAC1B,IAAI5f,EAAI+zC,EAAMn0B,GACVy0B,EAAkBh3C,EAAO2C,EAAI,GAC7Bs0C,EAAiBP,EAAM/zC,EAAI,GAC/B,MAAO,EAAEA,GAAIq0C,GAAkBA,GAAkBr0C,EAAG,GAAIs0C,EAAgBD,GAAkBr0C,EAAGA,GAAIq0C,EAAiBC,EAAgB,EAAGt0C,EAAGq0C,EAAiBA,EAAiBr0C,EAAG,EAAGs0C,GAAiBD,EAAiBr0C,GAAIA,EAAGq0C,GAAkBC,EAAgB,GAsFxOC,CAAqB30B,KAGxCoB,UAAW,WACP,OAAO,OAAS5e,KAAKnE,GAAK,OAASmE,KAAKlE,GAE5CqX,aAAc,SAASJ,GACnB,IACImM,EADOlf,KACK8V,OAAOsF,eADZpb,KAEF+C,aAFE/C,KAGFiC,MAHEjC,KAGWoyC,YAAclzB,EAAKmzB,aAH9BryC,KAGgDqf,aAAaoZ,UAAY1lB,EAAW0lB,WAHpFz4B,KAIF4R,SAAWsN,EAAKmzB,aAAat/B,KAG1C6b,gBAAiB,WACb5uB,KAAKiC,MAAQjC,KAAKoyC,YAAcpyC,KAAKqf,aACrCrf,KAAK4R,SArHiB,2BAuH1Bid,WAAY,WACG7uB,KACF+C,aADE/C,KAEFiC,MAFEjC,KAEWoyC,YAFXpyC,KAE8Bqf,aAAe,EAF7Crf,KAGF4R,SAAW,EAHT5R,KAIFsT,OAAOlS,aAAa,QAJlBpB,KAIgCiC,SAG/C8vB,eAAgB,SAASpb,GACrB,IAAItP,EAAarH,KAAKnE,EAClB0L,EAAavH,KAAKlE,EAQtB,OAPI6a,IACI3W,KAAKgB,SAASsY,QACdjS,EAAarH,KAAKkuB,SAElB3mB,EAAavH,KAAKmuB,UAGnB,CACHtyB,EAAGwL,EACHvL,EAAGyL,IAGX+qC,mBAAoB,SAASpyC,EAAUqd,EAAUxc,GAC7C,IAAIvE,EAAQuE,EAAQvE,OAlJF,GAmJdE,EAASqE,EAAQrE,QAlJF,GAmJnB,OAAOwD,EAASka,OAAOrf,EAAO,GAAKyB,IAASzB,EAAO,GAAK2B,GAASF,EAAOE,EAAQqE,EAAQyb,IAAMzb,EAAQyb,IAAIsC,WAAa/d,EAAQ+d,WAAY,UAAU1c,KAAK,CACtJiF,WAAYkW,EAASlW,WACrBE,WAAYgW,EAAShW,WACrBlF,WAAYkb,EAASlb,cAG7BkwC,oBAAqB,SAASryC,EAAUsyC,GACpC,IAAI35B,EACAkE,EAAS/c,KAAKgB,SAAS+b,OAS3B,MARI,WAAaA,UACNy1B,EAAc/0C,OACrBob,EAAS3Y,EAASqwB,SAASnuB,KAAKowC,IAE5B,WAAaz1B,GAAU,YAAcA,GAAU,aAAeA,GAAU,iBAAmBA,GAAU,eAAiBA,GAAU,UAAYA,IAC5IlE,EAAS3Y,EAASiF,KAAK,GAAI,QAAQ/C,KAAKowC,GAAeptC,SAGxDyT,GAEXiF,cAAe,SAAS5d,EAAUwW,EAAO0D,EAAOmD,GAC5C,IACI1E,EADO7Y,KACOqa,YAAYD,GADnBpa,KACiCsyC,mBAAmBpyC,EAAUqd,EAAUnD,GADxEpa,KACsFuyC,oBAAoBryC,EAAUqd,GAM/H,OALI1E,GACAA,EAAO3X,KAAK,CACR,mBAJGlB,OAKJ6E,OAAO6R,GAEPmC,GAEX4B,eAAgB,SAAS5e,EAAGC,EAAG8B,GAC3B,MAAO,CACH/B,EAAGA,EAAI+B,EACP9B,EAAGA,EAAI8B,EACPpB,MAAO,EAAIoB,EACXlB,OAAQ,EAAIkB,IAGpB4c,cAAe,SAAS3e,EAAGC,GACvB,IAAIse,EAAQpa,KAAKgB,SAASoZ,MACtB5d,EAAQ4d,EAAM5d,OA3LA,GA4LdE,EAAS0d,EAAM1d,QA3LA,GA4LnB,MAAO,CACHb,EAAGA,EAAId,EAAOyB,EAAQ,GACtBV,EAAGA,EAAIf,EAAO2B,EAAS,GACvBF,MAAOA,EACPE,OAAQA,IAGhBud,gBAAiB,WACb,IACIlZ,EADOf,KACQgB,SACfnF,EAFOmE,KAEEnE,EACTC,EAHOkE,KAGElE,EAYb,OAVIiF,EAAQwZ,QALDva,KAMKqa,YAAYtZ,EAAQqZ,OANzBpa,KAMuCwa,cAAc3e,EAAGC,GANxDkE,KAMkEya,eAAe5e,EAAGC,EAAGiF,EAAQoV,OAAOC,OAAOxY,GAE7G,CACH/B,EAAGA,EACHC,EAAGA,EACHU,MAAO,EACPE,OAAQ,IAKpBwK,gBAAiBsB,EAAQ6C,KACzBoI,qBAAsB,SAASgB,GAC3B,IAAI7Y,EAAQoE,KAAKgyB,4BAA4Bvd,EAAOzU,KAAK0T,gBAAgBe,IACzE,OAAOzU,KAAK6T,oBAAoBY,EAAO7Y,IAE3CyZ,WAAY,WACR,IACI0G,EADO/b,KACiBgc,4BACxBvH,EAFOzU,KAEMsT,OACbhR,EAHOtC,KAGUyyC,sBAHVzyC,KAGuC+C,aAAc,IAAUgZ,IAH/D/b,KAGyF8V,OAAOsG,sBAAwBL,GACnItH,EAAM9O,OAAOrD,IAEjBW,qBAAsB,SAASwR,GAC3B,IACI7Y,EADOoE,KACMyT,qBAAqBgB,GAD3BzU,KAEDkH,gBAAgBuN,EAAO7Y,KAC7B6Y,EAAMjT,yBAHCxB,KAG6BiW,mBAAmBxB,EAAM0H,gBAC7D1H,EAAMrN,MAAMrM,EAAOa,EAAMC,GAAId,EAAOa,EAAME,MAGlD22C,mBAAoB,WAChB,OAAO,GAEXx8B,mBAAoB,SAASkG,GACzB,IAAIvf,EAAOoD,KAAKia,gBAAgBkC,GAC5Bu2B,EAAK91C,EAAKJ,MAAQ,EAClBm2C,EAAK/1C,EAAKF,OAAS,EACvB,MAAO,CACHb,EAAGe,EAAKf,EAAI62C,EACZ52C,EAAGc,EAAKd,EAAI62C,EACZ/0C,EAAGoC,KAAKgB,SAASuZ,QAAUzf,KAAKqQ,IAAIunC,EAAIC,GAAM,IAGtDr4B,yBAA0B,WACtB,MAAO,CACHze,EAAGmE,KAAKnE,EACRC,EAAGkE,KAAKlE,IAGhBo2B,sBAAuB,SAASlnB,EAAainB,GACzC,OAAOjnB,EAAYgK,MAAQid,EAAYp2B,EAAIo2B,EAAYz1B,OAASwO,EAAY8J,MAAQmd,EAAYp2B,GAAKmP,EAAY0K,MAAQuc,EAAYn2B,EAAIm2B,EAAYv1B,QAAUsO,EAAYyK,MAAQwc,EAAYn2B,GAEnM+X,oBAAqB,SAASY,EAAO7Y,GACjC,IACIoP,EADOhL,KACY2T,kBACnBsd,EAAYxc,EAAMrO,kBAClB6rB,EAHOjyB,KAGYia,gBAAgBxF,EAAM0H,eACzCy2B,EAJO5yC,KAIgBia,kBACvB44B,EAAW,WAAap+B,EAAMhN,mBAAmBpB,SA+BrD,OApCWrG,KAOFkyB,sBAAsBlnB,EAAa4nC,KAPjC5yC,KAQGgB,SAASsY,SAcXtO,EAAYgK,KAAOpZ,EAAMC,IACzBD,EAAMC,EAAIg3C,EAAW7nC,EAAYgK,KAAOid,EAAYp2B,EAAIo2B,EAAYz1B,MAtRrE,IAwRCwO,EAAY8J,KAAOlZ,EAAMC,EAAIo1B,EAAUz0B,QACvCZ,EAAMC,EAAIg3C,EAAW7nC,EAAY8J,KAAOmc,EAAUz0B,MAAQy1B,EAAYp2B,EAzRvE,GAyRoFo1B,EAAUz0B,OAE7FwO,EAAY0K,KAAO9Z,EAAME,IACzBF,EAAME,EAAIkP,EAAY0K,MAEtB1K,EAAYyK,KAAO7Z,EAAME,EAAIm1B,EAAUv0B,SACvCd,EAAME,EAAIkP,EAAYyK,KAAOwb,EAAUv0B,UAvBvCsO,EAAYgK,KAAOpZ,EAAMC,IACzBD,EAAMC,EAAImP,EAAYgK,MAEtBhK,EAAY8J,KAAOlZ,EAAMC,EAAIo1B,EAAUz0B,QACvCZ,EAAMC,EAAImP,EAAY8J,KAAOmc,EAAUz0B,OAEvCwO,EAAY0K,KAAO9Z,EAAME,IACzBF,EAAME,EAAI+2C,EAAW7nC,EAAY0K,KAAOuc,EAAYn2B,EAAIm2B,EAAYv1B,OA/QrE,IAiRCsO,EAAYyK,KAAO7Z,EAAME,EAAIm1B,EAAUv0B,SACvCd,EAAME,EAAI+2C,EAAW7nC,EAAYyK,KAAOwb,EAAUv0B,OAASu1B,EAAYn2B,EAAIm1B,EAAUv0B,OAlRtF,MAmSJd,GAEXo2B,4BAA6B,SAASvd,EAAO7Y,GACzC,IAAIq1B,EAAYxc,EAAMrO,kBAClB0sC,EAAer+B,EAAMhN,mBAYzB,OAXKzH,KAAKgB,SAASsY,UACX,SAAWw5B,EAAaprC,UACxB9L,EAAMC,GAAKo1B,EAAUz0B,MAAQ,EAEzB,UAAYs2C,EAAaprC,YACzB9L,EAAMC,GAAKo1B,EAAUz0B,MAAQ,IAIzCZ,EAAMC,GAAKi3C,EAAanrC,iBACxB/L,EAAME,GAAKg3C,EAAalrC,eACjBhM,GAEX8X,gBAAiB,SAASe,GACtB,OAAOzU,KAAK0wB,yBAAyBjc,EAAOzU,KAAKgU,kBAAkBS,EAAM0H,iBAE7EuU,yBAA0B,SAASjc,EAAOpO,GACtC,IACI4qB,EAAYxc,EAAMrO,kBAClB6rB,EAFOjyB,KAEYia,gBAAgBxF,EAAM0H,eAEzC9J,EAAU4f,EAAYv1B,OAAS,EAAIu0B,EAAUv0B,OAAS,EACtD0V,EAAU6f,EAAYz1B,MAAQ,EAAIy0B,EAAUz0B,MAAQ,EACpDX,EAAIo2B,EAAYp2B,EAChBC,EAAIm2B,EAAYn2B,EACpB,OAAQuK,GACJ,IAAK,OACDxK,GAAKo1B,EAAUz0B,MAnUZ,GAoUHV,GAAKuW,EACL,MACJ,IAAK,QACDxW,GAAKo2B,EAAYz1B,MAvUd,GAwUHV,GAAKuW,EACL,MACJ,IAAK,MACDxW,GAAKuW,EACLtW,GAAKm1B,EAAUv0B,OA5UZ,GA6UH,MACJ,IAAK,SACDb,GAAKuW,EACLtW,GAAKm2B,EAAYv1B,OAhVd,GAiVH,MACJ,IAAK,SACDb,GAAKuW,EACLtW,GAAKuW,EAEb,MAAO,CACHxW,EAAGA,EACHC,EAAGA,IAGX2a,YAAa,SAASvW,EAAUwW,EAAOC,GACnC,IACI5V,EADOf,KACQgB,SACf+xC,EAFO/yC,KAEW+xB,eAAepb,GACjCY,EAHOvX,KAGMgX,YAHNhX,KAINmS,QAJMnS,KAIS8d,cAAc5d,EAAUwW,EAAO3V,EAAQqZ,MAAO3f,EAAQ,CACtE4M,WAAY0rC,EAAWl3C,EACvB0L,WAAYwrC,EAAWj3C,EACvB2B,OAPOuC,KAOMyd,oBAAoB1c,EAAQgc,OAAQxF,EAAM3Z,IACxD2Z,KAEP4a,qBAAsB,WAClB,MAAO,CACH9vB,WAAY,YAGpBswB,2BAA4B,WACxB,OAAO,EAAI3yB,KAAK0uB,kBAEpBnD,cAAe,SAASrrB,EAAUwW,GAC9B,GAAK1W,KAAKgB,SAASwqB,UAAnB,CAGA,IAIIjO,EAHAxc,EADOf,KACQgB,SACfoxB,EAAkBrxB,EAAQyqB,UAC1B/tB,EAAS,GAET0zC,EALOnxC,KAKI6xB,aACXmhB,EANOhzC,KAMK4xB,gBACZqhB,EAPOjzC,KAOI2xB,eACXma,GAAc,EAAIvxC,EAAO+uB,eAAe8I,EAAgB0Z,aACxDoH,EAAoB,SAAWpH,EAC/BqH,EAAmB,QAAUrH,EAC7BsH,GAAiBF,KAAsB,EAAIhrC,EAAMyJ,WAAWshC,MAAS,EAAI/qC,EAAMyJ,WAAWqhC,KAAUG,EACpGE,GAAgBF,KAAqB,EAAIjrC,EAAMyJ,WAAWqhC,MAAU,EAAI9qC,EAAMyJ,WAAWshC,KAASC,EAClGI,EAAalhB,EAAgBkhB,WAC7BA,GAAc,GAAKA,EAAa,IAChCA,EAAatzC,KAAK2yB,6BAA+BP,EAAgBkhB,YAErEA,EAAar4C,EAAOoxC,SAASiH,GAAc,GAC3CF,IAAkBH,EAlBPjzC,KAkBkB8xB,kBAC7BuhB,IAAiBL,EAnBNhzC,KAmBkB8xB,kBACzB,SAAWga,IAAe,EAAI5jC,EAAMyJ,WAAWqhC,KAAS,EAAI9qC,EAAMyJ,WAAWshC,KAAQ,EAAI/qC,EAAMyJ,WAAWw/B,KACzGkC,GAAgB51C,EAAOwB,KAAK,CAACkyC,EAAMmC,EAAYN,EAAM7B,EAAMmC,EAAYN,IACxEv1C,EAAOwB,KAAK,CAACkyC,EAAK6B,EAAM7B,EAAK8B,KAC5BG,GAAiB31C,EAAOwB,KAAK,CAACkyC,EAAMmC,EAAYL,EAAK9B,EAAMmC,EAAYL,IACxElyC,EAAQuY,UAAW,EAAI9e,EAAUkB,MAAM+B,GAAQ,SAAS9B,EAAGo6B,GACvDA,EAAEY,aAENpZ,EA3BOvd,KA2BSmyB,qBAAqBC,GA3B9BpyB,KA4BG+uB,WAGNxR,EAAS9f,OAASA,EA/BfuC,KAgCE+uB,UAAU3sB,KAAKmb,IAhCjBvd,KA6BE+uB,UAAY7uB,EAASiF,KAAK1H,EAAQ,QAAQ2E,KAAKmb,GAAU1Y,OAAO6R,IA7BlE1W,KAmCF+uB,WAnCE/uB,KAmCgB+uB,UAAU3sB,KAAK,CAClCC,WAAY,aAIxB4U,iBAAkB,WACd,IACI9E,EADOnS,KACQmS,QACnB,MAAO,CACHtW,EAHOmE,KAGCnE,EACRC,EAJOkE,KAIClE,EACRob,OAAQ/E,EAAUA,EAAQ1M,UAAU/I,OAAS,EAAI,IAGzDoyB,gBAAiB,SAASykB,EAAU1vC,EAAO2vC,EAAeC,GACtD,IACIC,EADO1zC,KACaiC,MAAQsxC,GAAY,EACxCI,EAFO3zC,KAEgB4R,SAAW2hC,GAAY,EAC9C/vC,EAAUkwC,EAAeC,EAHlB3zC,KAINsT,OAAOlS,aAAa,UAAWoC,GAJzBxD,KAKNsT,OAAOlS,aAAa,QAASyC,GALvB7D,KAMF8V,OAAO89B,uBANL5zC,KAMmC+C,aANnC/C,KAOEgwB,WAPFhwB,KAQEgwB,UAAYujB,EAAWC,EARzBxzC,KASEiwB,aAAesjB,EAAWC,GAT5BxzC,KAWEkwB,YAXFlwB,KAYEkwB,WAAaqjB,EAAWE,EAZ1BzzC,KAaEmwB,cAAgBojB,EAAWE,GAb7BzzC,KAeFiC,MAfEjC,KAeWoyC,YAAcsB,EAfzB1zC,KAgBF4R,SAAY+hC,GAhBV3zC,KAgBiC4R,WAGhDiO,eAAgB,WACZ,IACIg0B,EAAYpC,EAAOoC,UACnBj2C,EAFOoC,KAEEgB,SAASmV,OAAOC,OAAOxY,EAChCk2C,GAAiB,EAAItC,EAAQuC,aAAa,iBAAmBF,EAAUG,kBAAoBH,EAAUI,kBAAoBJ,EAAUK,gBAAkBL,EAAUM,eAAiB,GAAK,EAEzL,OALWn0C,KAINgB,SAASozC,SAAWx2C,EAAIk2C,EAAiBA,EAAiBl2C,EAJpDoC,KAKCgB,SAASozC,UAEzB3iB,oBAAqB,WACjB,IACI1wB,EADOf,KACQgB,SACfsY,EAAUvY,EAAQuY,QAClBkS,EAAYzqB,EAAQyqB,UACpBhhB,EAJOxK,KAIWoX,oBACjBoU,KAEJ,EAAItjB,EAAMyJ,WAPA3R,KAOgB6qB,YAPhB7qB,KAOmC2xB,eAAiBnnB,EAAW4K,UAP/DpV,KAO8E6qB,YACzF,EAAI3iB,EAAMyJ,WARC3R,KAQe8qB,aARf9qB,KAQmC4xB,gBAAkBpnB,EAAW4K,UARhEpV,KAQ+E8qB,YAR/E9qB,KASN6xB,aAAe52B,EAAOqe,EAThBtZ,KAS+Bif,GAT/Bjf,KASyCgf,IATzChf,KAUN8xB,iBAAmB,iBAAmBtG,EAAU9nB,KAV1C1D,KAUsD2xB,gBAVtD3xB,KAU6E4xB,gBAV7E5xB,KAUoG2xB,gBAAkB,EAAIrY,EAV1HtZ,KAUyIgf,GAVzIhf,KAUmJif,KAElK9H,WAAY,WACR,IACIkL,EADOriB,KACcoX,oBACrBi9B,EAFOr0C,KAEcsiB,oBAFdtiB,KAGFgB,SAASsY,SAHPtZ,KAIFgf,GAJEhf,KAIQnE,EAAIwmB,EAAcjN,UAJ1BpV,KAIyCiC,OAJzCjC,KAKFif,GALEjf,KAKQlE,EAAIu4C,EAAcj/B,UAL1BpV,KAKyCsD,UALzCtD,KAMFgV,KAAOqN,EAAcjN,UANnBpV,KAMkC4R,UANlC5R,KAOFkuB,SAAW7L,EAAcjN,UAndZ,6BA4cXpV,KASFif,GATEjf,KASQlE,EAAIumB,EAAcjN,UAT1BpV,KASyCiC,OATzCjC,KAUFgf,GAVEhf,KAUQnE,EAAIw4C,EAAcj/B,UAV1BpV,KAUyCsD,UAVzCtD,KAWF0V,KAAO2M,EAAcjN,UAXnBpV,KAWkC4R,UAXlC5R,KAYFmuB,SAAW9L,EAAcjN,UAxdZ,4BA4cXpV,KAcNyxB,sBAdMzxB,KAeNwiB,qBAfMxiB,KAeoBnE,EAfpBmE,KAe4BlE,IAE3C2V,YAAa,SAASvQ,GACPlB,KACNiC,MADMjC,KACOoyC,YADPpyC,KAC0Bqf,aAD1Brf,KAC8C2Z,cAAgBzY,EAAKe,MADnEjC,KAEN4R,SAFM5R,KAEU6R,gBAFV7R,KAEiC8R,kBAAmB,EAAI5J,EAAMyJ,WAAWzQ,EAAK0Q,UAAY1Q,EAAK0Q,SAhepF,2BAke1BmM,kBAAmB,SAAS3D,GACxB,MAAO,CACHyE,KAAMzE,EAAMoC,KAAOpC,EAAM0E,WACzBtiB,MAAO4d,EAAM5d,OAxeC,GAyedE,OAAQ0d,EAAM1d,QAxeC,KA2evBqiB,iBAAkB,WACd,IACInhB,EADOoC,KACEgB,SAASsY,QAClBrX,EAFOjC,KAEMoyC,YACb9uC,EAHOtD,KAGSsD,SACpB,MAAO,CACHzH,EALOmE,KAKCgf,GACRljB,EANOkE,KAMCif,GACRG,OAAQxhB,EAAIqE,EAAQqB,EACpB6b,OAAQvhB,EAAI0F,EAAWrB,EACvBid,KATOlf,KASI8V,OAAOoJ,OAG1BwP,eAAgB,WACZ,IAAInX,EAAQvX,KAAKgX,YACbjW,EAAUf,KAAKgB,SACfpD,EAAI2Z,EAAM3Z,EAEVmf,EAAShc,EAAQgc,OACjBu3B,EAAW,WAAav3B,EACxBw3B,EAAa,aAAex3B,GAAU,iBAAmBA,GAAU,eAAiBA,EACxF,OAAIhc,EAAQwZ,UAAYxZ,EAAQqZ,OAASxc,GAE7B02C,GAAYC,EAAa,IAAM32C,EAAIA,GAD9B2Z,EAAM,gBAAkB,EAGlC,GAEXD,cAAe,SAASX,EAAkBY,GACtC,IAEIgG,EADAxc,EADOf,KACQgB,SAEfoZ,EAAQrZ,EAAQqZ,MAChB/X,EAJOrC,KAIYsC,YAEnB,GAFiC,CACjCD,WAAY,UAGZkb,EAROvd,KAOFqa,YAAYD,GACN3f,EAAQ,GAAI,CACnB4H,WAAYkV,EAAMlV,YACnBA,EAVIrC,KAUa+d,kBAAkB3D,IAE3B3f,EAAQ,GAAI8c,EAAOlV,EAAY,CACtC5E,OAbGuC,KAaUyd,oBAAoB1c,EAAQgc,OAAQxF,EAAM3Z,KAG1D+Y,IACD4G,EAASlW,WAjBFrH,KAiBoBnE,EAC3B0hB,EAAShW,WAlBFvH,KAkBoBlE,GAlBpBkE,KAoBNmS,QAAQ/P,KAAKmb,GAAUnY,SAEhCoO,sBAAuB,WAEnB,MAAO,CACHlQ,SAFOtD,KAEQwZ,gBACfvX,MAHOjC,KAGKqf,aACZzF,iBAJO5Z,KAIgB4Z,iBACvBD,cALO3Z,KAKa2Z,cACpBF,WANOzZ,KAMU8V,OAAO4D,KACxB86B,cAPOx0C,KAOa6qB,SACpB4pB,eAROz0C,KAQc8qB,UACrBxvB,MATO0E,OAYfgU,kBAAmB,WACf,IAAIsF,EAAUtZ,KAAKgB,SAASsY,QAC5B,OAAItZ,KAAKqf,aAAe,EACb/F,EAAU,QAAU,MAEpBA,EAAU,OAAS,UAGlCtB,iBAAkB,SAAS3H,GACvB,IACIqkC,EADO10C,KACkBsT,OAAO/R,UACpC,OAAO9G,EAAQ,GAAIi6C,EAAmB,CAClCrxC,aAAcgN,EAAQ6H,YAHflY,KAGgCwZ,gBAAiB,YACxDpW,UAAWiN,EAAQ6H,YAJZlY,KAI6Bqf,gBACrC,EAAInX,EAAMyJ,WAAW+iC,EAAkBlxC,SAAW,CACjDC,YAAa4M,EAAQ6H,YAAYw8B,EAAkBlxC,QAAS,YAC5D,IAAI,EAAI0E,EAAMyJ,WAAW+iC,EAAkB7wC,OAAS,CACpDC,UAAWuM,EAAQ6H,YAAYw8B,EAAkB7wC,QACjD,KAERwT,oBAAqB,WACjB,OAAOrX,KAAKgB,SAASuZ,SAEzBnC,SAAU,SAASvc,EAAGC,GAClB,IAAI8jB,EAAgB5f,KAAK6f,iBACzB,OAAOhkB,GAAKmE,KAAKnE,EAAI+jB,GAAiB/jB,GAAKmE,KAAKnE,EAAI+jB,GAAiB9jB,GAAKkE,KAAKlE,EAAI8jB,GAAiB9jB,GAAKkE,KAAKlE,EAAI8jB,GAEtHM,YAAa,SAASy0B,GAClB,IAAIviB,EAAkBpyB,KAAKgB,SAASwqB,UACpC,GAAI4G,IAAoBuiB,EAAY,CAChC,IAAI7I,EAAc1Z,EAAgB0Z,YAC9B3nC,EAAW,SAAW2nC,IAAe,EAAI5jC,EAAMyJ,WAAW3R,KAAK6qB,UAAY7qB,KAAK6qB,SAAW7qB,KAAKiC,MAChGoC,EAAY,QAAUynC,IAAe,EAAI5jC,EAAMyJ,WAAW3R,KAAK8qB,WAAa9qB,KAAK8qB,UAAY9qB,KAAKiC,MACtG,OAAOkC,EAAWE,EAAYF,EAAWE,EAEzC,OAAOrE,KAAKiC,OAGpB+d,YAAa,SAAS20B,GAClB,IAAIviB,EAAkBpyB,KAAKgB,SAASwqB,UACpC,GAAI4G,IAAoBuiB,EAAY,CAChC,IAAI7I,EAAc1Z,EAAgB0Z,YAC9B3nC,EAAW,SAAW2nC,IAAe,EAAI5jC,EAAMyJ,WAAW3R,KAAK6qB,UAAY7qB,KAAK6qB,SAAW7qB,KAAKiC,MAChGoC,EAAY,QAAUynC,IAAe,EAAI5jC,EAAMyJ,WAAW3R,KAAK8qB,WAAa9qB,KAAK8qB,UAAY9qB,KAAKiC,MACtG,OAAOkC,EAAWE,EAAYF,EAAWE,EAEzC,OAAOrE,KAAKiC,QAIxBhI,EAAQU,QAAUoV,EAClBe,EAAO7W,QAAUA,EAAQU,S,iCC5mBzBV,EAAQU,aAAU,EAClB,IAGgCR,EAH5BiO,EAAW/N,EAAQ,IACnB0W,GAE4B5W,EAFWE,EAAQ,OAGjCF,EAAIG,WAAaH,EAAM,CACjC,QAAWA,GAGnB,IAAIM,EAAU2N,EAASvC,OACnBhL,EAAQC,KACRG,EAASJ,EAAMK,MACfC,EAAON,EAAMO,IASjB,SAASw5C,EAAoBt5C,GACzB,IAAI+jB,EAAe/jB,EAAM+jB,aACrBmF,EAASlpB,EAAM8b,oBAAoBob,mBAAmBhO,OACtDqwB,EAAkB,aAAev5C,EAAMwa,OAAOmK,cAC9C60B,EAAgBx5C,EAAMwa,OAAO89B,sBAEjC,OADuBiB,IAAoBx1B,GAAgB,IAAMmF,GAAUnF,EAAe,GAAKmF,IAAWqwB,IAAoBrwB,GAAUswB,EARlI,MACG,SAUb,IAAI/kC,EAAWtV,EAAQ,GAAIsW,EAAcpW,QAAS,CAC9C4mB,mBAAoB,SAASC,GACzB,IACIzO,EAAa9X,EAAOumB,EAAetK,OAASsK,EAAehlB,MAAQ,GAD5DwD,KAEFgB,SAASsY,SAFPtZ,KAGFtD,OAAS8kB,EAAehlB,MAHtBwD,KAIF+0C,YAAchiC,EAJZ/S,KAKF0hB,YAAc,OALZ1hB,KAOFxD,MAAQglB,EAAehlB,MAPrBwD,KAQF0hB,YAAc3O,EARZ/S,KASF+0C,YAAc,OAG3B96B,gBAAiB,SAAS/F,GACtB,IAAItX,EAAO,CACPf,EAAGmE,KAAKnE,EACRC,EAAGkE,KAAKlE,EACRU,MAAOwD,KAAKxD,MACZE,OAAQsD,KAAKtD,QAEjB,GAAIwX,EAAU,CACV,IAAIwG,EAAQ,QAAUxG,EACjBlU,KAAKgB,SAASsY,SAIf1c,EAAKf,EAAI6e,EAAQ9d,EAAKf,EAAIe,EAAKJ,MAAQI,EAAKf,EAC5Ce,EAAKJ,MAAQ,IAJbI,EAAKd,EAAI4e,EAAQ9d,EAAKd,EAAIc,EAAKd,EAAIc,EAAKF,OACxCE,EAAKF,OAAS,GAMtB,OAAOE,GAEXqZ,mBAAoB,SAAS/B,GACzB,OAAOlU,KAAKia,gBAAgB/F,IAEhCF,kBAAmB,WACf,IAAI3N,EAAWuuC,EAAoB50C,MAInC,OAHIA,KAAKgB,SAASsY,UACdjT,EAlDF,QAkDaA,EApDX,QACD,QAqDIA,GAEXqN,gBAAiB,SAASe,GAgBtB,OAbI,IAFOzU,KAEIqf,cAFJrf,KAEyB8V,OAAO89B,sBAClC5zC,KAAKgB,SAASsY,QAHZtZ,KAMW0wB,yBAAyBjc,EA/D3C,SAyDOzU,KAIW0wB,yBAAyBjc,EA3D7C,OAgEM,WAAaA,EAAMhN,mBAAmBpB,SATnCrG,KAUW0wB,yBAAyBjc,EAAO,UAErC1D,EAAcpW,QAAQ+Y,gBAAgBhP,KAAK1E,KAAMyU,IAKtEY,WAAY,WACRrV,KAAKsT,OAAO6I,cAAgB,WAAanc,KAAKsT,OAAO7L,mBAAmBpB,UAAYuuC,EAAoB50C,MACxG+Q,EAAcpW,QAAQ0a,WAAW3Q,KAAK1E,OAE1CkH,gBAAiB,SAASuN,EAAO7Y,GAC7B,IAAIq2B,EAAcjyB,KAAKia,kBACnBgX,EAAYxc,EAAMrO,kBACtB,SAAIpG,KAAKgB,SAASg0C,4BACTp5C,EAAME,GAAKm2B,EAAYn2B,GAAKF,EAAME,EAAIm1B,EAAUv0B,QAAUu1B,EAAYn2B,EAAIm2B,EAAYv1B,QAAUd,EAAMC,GAAKo2B,EAAYp2B,GAAKD,EAAMC,EAAIo1B,EAAUz0B,OAASy1B,EAAYp2B,EAAIo2B,EAAYz1B,QAAYZ,EAAME,EAAIm2B,EAAYn2B,EAAIm2B,EAAYv1B,QAAUd,EAAME,EAAIm1B,EAAUv0B,OAASu1B,EAAYn2B,GAAKF,EAAMC,EAAIo2B,EAAYp2B,EAAIo2B,EAAYz1B,OAASZ,EAAMC,EAAIo1B,EAAUz0B,MAAQy1B,EAAYp2B,KACvX4Y,EAAM9O,MAAK,IACJ,IAKnB8sC,mBAAoB,WAChB,OAAOzyC,KAAKgB,SAASyT,MAAMwgC,mBAAqBj1C,KAAKqf,cAEzD5I,YAAa,SAASvW,EAAUwW,EAAOC,GACnC,IACIY,EADOvX,KACMgX,YACbpZ,EAFOoC,KAEEgB,SAASk0C,aAClB57B,EAHOtZ,KAGQgB,SAASsY,QACxB67B,EAJOn1C,KAIsB2uB,kBAC7B9yB,EAAIs5C,EAAsBt5C,EAC1BC,EAAIq5C,EAAsBr5C,EAC1BU,EAAQ24C,EAAsB34C,MAC9BE,EAASy4C,EAAsBz4C,OAC/Bia,IACI2C,GACA9c,EAAQ,EACRX,EAZGmE,KAYMkuB,WAETxxB,EAAS,EACTZ,EAfGkE,KAeMmuB,WAfNnuB,KAkBNmS,QAAUjS,EAASjE,KAAKJ,EAAGC,EAAGU,EAAOE,GAAQ0F,KAAK,CACnDgzC,GAAIx3C,EACJy3C,GAAIz3C,IACLmZ,UAAUQ,GAAOrW,KAAK,CACrB,mBAtBOlB,OAuBR6E,OAAO6R,IAEdsH,uBAAwB,WACpB,IACIliB,EADOkE,KACElE,EACTY,EAFOsD,KAEOtD,OACdb,EAHOmE,KAGEnE,EACTW,EAJOwD,KAIMxD,MAYjB,OAhBWwD,KAKFgB,SAASsY,QACV,IAAM9c,IACNA,EAhIe,EAiIfX,GAhImB,GAmInB,IAAMa,IACNA,EArIe,EAsIfZ,GArImB,GAwIpB,CACHD,EAAGA,EACHC,EAAGA,EACHU,MAAOA,EACPE,OAAQA,IAGhB44C,mBAAoB,WAChB,IAAInjC,EAAUnS,KAAKmS,QACnB,MAAO,CACHtW,EAAGsW,EAAQ/P,KAAK,KAChBtG,EAAGqW,EAAQ/P,KAAK,KAChB1F,OAAQyV,EAAQ/P,KAAK,UACrB5F,MAAO2V,EAAQ/P,KAAK,WAG5BmzC,sBAAuB,WACnB,IACIC,EACAC,EAFAC,EAAa11C,KAAKiC,OAAS,EAG3B0zC,EAAwB31C,KAAKoX,oBAAoBob,mBAAmBhO,OACpE3oB,EAAImE,KAAKnE,EACTC,EAAIkE,KAAKlE,EACTU,EAAQwD,KAAKxD,MACbE,EAASsD,KAAKtD,OAgBlB,OAfIsD,KAAKgB,SAASsY,SACdm8B,EAAS35C,EAAIY,EAAS,EAElB84C,EADAG,EACSD,EAAa75C,EAAIA,EAAIW,EAErBk5C,EAAa75C,EAAIW,EAAQX,IAGtC25C,EAAS35C,EAAIW,EAAQ,EAEjBi5C,EADAE,EACSD,EAAa55C,EAAIY,EAASZ,EAE1B45C,EAAa55C,EAAIA,EAAIY,GAG/B,CACHb,EAAG25C,EACH15C,EAAG25C,EACHv+B,OAAQ,IAGhBD,iBAAkB,SAAS/C,GACvB,GAAI,SAAWA,EACX,OAAOlU,KAAKu1C,wBAEhB,IAAInzB,EAASpiB,KAAKmiB,iBAElB,OADAC,EAAOlL,OAAS,EACTkL,GAEXD,eAAgB,WACZ,IAAI3lB,EAAQwD,KAAKxD,MACbE,EAASsD,KAAKtD,OAGlB,MAAO,CACHb,EAHImE,KAAKnE,EAGFW,EAAQ,EACfV,EAHIkE,KAAKlE,EAGFY,EAAS,IAGxBulB,eAAgB,SAASrmB,EAAOg6C,GAC5B,OAAI,OAASh6C,EACFA,EAEPA,EAAQg6C,EAAO,GACRA,EAAO,GAEdh6C,EAAQg6C,EAAO,GACRA,EAAO,GAEXh6C,GAEX+2B,2BAA4B,WACxB,OAAO3yB,KAAKgB,SAASsY,QAAUtZ,KAAKtD,OAASsD,KAAKxD,OAEtDi1B,oBAAqB,SAASokB,GAC1B9kC,EAAcpW,QAAQ82B,oBAAoB/sB,KAAK1E,OAC3CA,KAAK6xB,aAAegkB,EAAe,IAAM71C,KAAK6xB,aAAegkB,EAAe,MAC5E71C,KAAK6xB,kBAAe,IAG5B1a,WAAY,WACR,IAUI5J,EACAE,EACAqoC,EAXAx8B,EADOtZ,KACQgB,SAASsY,QACxBy8B,EAAUz8B,EAAU,IAAM,IAC1B08B,EAAU18B,EAAU,IAAM,IAC1B28B,EAAkB38B,EAAU,QAAU,SACtC48B,EAAkB58B,EAAU,SAAW,QACvC+6B,EANOr0C,KAMcsiB,oBACrBD,EAPOriB,KAOcoX,oBACrBy+B,EARO71C,KAQe8V,OAAOuI,kBAAkBtT,iBAC/CiX,EATOhiB,KASe8V,OAAOsF,eAAerQ,iBAIhDwC,EAAM8mC,EAAcj/B,UAbTpV,KAawBsD,UAbxBtD,KAcNg2C,GAAWzoC,EAAM,OAASA,EAAMA,EAAMA,GAdhCvN,KAc4Cg2C,EAAU,eAAiB,GAClFvoC,EAAM4U,EAAcjN,UAfTpV,KAewBiC,MAAO,GAC1C6zC,EAASzzB,EAAcjN,UAhBZpV,KAgB2B4R,UAhB3B5R,KAiBN,IAAM+1C,GAAWtoC,EAjBXzN,KAkBN,IAAMg2C,GAAWzoC,EAlBXvN,KAkBsBk2C,GAAmB,EACpDzoC,EAnBWzN,KAmBAiiB,eAAexU,EAAKuU,GAC/B8zB,EApBW91C,KAoBGiiB,eAAe6zB,EAAQ9zB,GApB1BhiB,KAqBNi2C,GAAmB96C,EAAKsS,EAAMqoC,GACnCroC,EAAMA,EAAMqoC,EAASroC,EAAMqoC,EAtBhB91C,KAuBNwiB,qBAAqBlJ,EAAU7L,EAAMF,EAAK+L,EAAU/L,EAAME,EAvBpDzN,KAuB8DxD,MAvB9DwD,KAuB0EtD,QAvB1EsD,KAwBN+1C,GAAW,OAAStoC,EAAMA,EAAMA,GAxB1BzN,KAwBsC+1C,EAAU,eAAiB,GAxBjE/1C,KAyBN,MAAQ+1C,EAAQI,eAAiB,OAASL,EAASA,EAASA,GAzBtD91C,KAyBqE+1C,EAAU,eAAiB,GAzBhG/1C,KA0BN,UAAY+1C,EAAQI,eAAiB9zB,EAAcjN,UA1PlC,2BAgOXpV,KA2BNyxB,oBAAoBokB,GA3Bd71C,KA4BF8tB,eAAiB,OA5Bf9tB,KA4B6Bg2C,KA5B7Bh2C,KA6BEg2C,GAAWH,EAAe,KA7B5B71C,KA8BEk2C,GA9BFl2C,KA8B0Bk2C,IAAoBL,EAAe,GA9B7D71C,KA8BuEg2C,IA9BvEh2C,KA+BEg2C,GAAWH,EAAe,IA/B5B71C,KAiCEg2C,GAjCFh2C,KAiCkBk2C,GAAmBL,EAAe,KAjCpD71C,KAkCEk2C,GAAmBL,EAAe,GAlCpC71C,KAkC8Cg2C,MAI7D1+B,cAAe,SAASX,EAAkBY,GACtCvX,KAAKmS,QAAQ4E,UAAUtc,EAAQ,GAAI8c,EAAQZ,EAA4C,GAAzB3W,KAAK2uB,qBAEvEA,gBAAiB,WACb,IACI9yB,EADOmE,KACEnE,EACTC,EAFOkE,KAEElE,EACTU,EAHOwD,KAGMxD,MACbE,EAJOsD,KAIOtD,OACds5C,EALOh2C,KAKQ8V,OAAOuI,kBACtB/E,EANOtZ,KAMQgB,SAASsY,QAC5B,GAAI08B,EAAQI,gBAAiB,CACzB,IAAIC,EAAcL,EAAQz/B,aACtB+/B,EAAax7C,KAAKE,MAAMq7C,EAAY75C,MAAQ,GAC5C+5C,EAAkBP,EAAQI,kBAC9B,GAAIC,EAAY97B,QACZ,GAAKjB,EAGE,CACH,IAAIk9B,EAhBLx2C,KAgB4BgV,OAhB5BhV,KAgB0CkuB,UAhB1CluB,KAgB2DgV,OAASuhC,EAAkBP,EAAQS,eAC7F56C,GAAK26C,EAAkBF,EAAa,GACpC95C,GAASg6C,EAAkBF,EAAa,GAChC,IAAM95C,EAAQ,QANtBE,GAbDsD,KAagB0V,OAbhB1V,KAa8BmuB,UAb9BnuB,KAa+C0V,OAAS6gC,EAAkBP,EAAQS,eAAiBH,EAAa,GACtG,IAAM55C,EAAS,GASpC,MAAO,CACHb,EAAGA,EACHC,EAAGA,EACHU,MAAOA,EACPE,OAAQA,IAGhB0b,SAAU,SAASvc,EAAGC,GAElB,OAAOD,GADImE,KACMnE,GAAKA,GADXmE,KACqBnE,EADrBmE,KAC8BxD,OAASV,GADvCkE,KACiDlE,GAAKA,GADtDkE,KACgElE,EADhEkE,KACyEtD,UAG5FzC,EAAQU,QAAUoV,EAClBe,EAAO7W,QAAUA,EAAQU,S,iCC3TzBV,EAAQkvB,MAAQlvB,EAAQutB,WAAQ,EAChC,IAAIyL,EAAkB54B,EAAQ,KAC1BoiC,EAAUpiC,EAAQ,KAClBI,EAAUJ,EAAQ,IAClBG,EAAYH,EAAQ,IACpBE,EAASF,EAAQ,IACjBQ,EAAQR,EAAQ,KAEhBW,EAAQF,KAAKE,MACbkW,EAAOpW,KAAKoW,KACZwlC,EAAM57C,KAAK47C,IACXxrC,EAAMpQ,KAAKoQ,IACXC,EAAMrQ,KAAKqQ,IACX/P,EAAMN,KAAKM,IACXosB,EAAQ,GACZvtB,EAAQutB,MAAQA,EAChB,IAAI2B,EAAQ,GAGZ,SAAS8T,EAAW3hC,EAAOq7C,EAAMC,EAAMC,GACnC,IAAI9gB,GAAI,EAAI0G,EAAQS,OAAO5hC,GAI3B,OAHAy6B,EAAEl6B,EAAI86C,EACN5gB,EAAEj6B,EAAI86C,EACN7gB,EAAEh5B,MAAQ85C,EACH9gB,EAGX,SAAS+gB,EAAgBx7C,EAAOy7C,EAAWC,EAAa73C,EAAK83C,GACzD,IAAIC,EAAe57C,EAAMyB,MAAQk6C,EAC7Bz4C,GAAS,EAAIjE,EAAOkE,cAAcy4C,GAGtC,OAAOja,EAAW8Z,EAFVC,EAAYn7C,GAAKP,EAAMkiB,OAASre,EAAM83C,GAAiBz4C,EAAOV,IAC9Dk5C,EAAYl7C,GAAKR,EAAMkiB,OAASre,EAAM83C,GAAiBz4C,EAAOT,IACnCm5C,GAfvCj9C,EAAQkvB,MAAQA,EAyBhB,IAAIguB,EAAc,CACdC,4BAA6B,WACzB,OAAO,GAEXC,oBAAqB,SAAS9/B,EAAOgG,EAAU7G,GAE3C6G,GAAW,EAAI9iB,EAAQoL,QAAQ0X,EAAUhG,GAD9BvX,KAEN24B,uBAAuBpb,GAC5B7G,EAAMtU,KAAKmb,IAEf6a,mBAAoB,SAASzhB,GACzB,IACIY,EADOvX,KACM0X,QAAQtB,OADdpW,KAENq3C,oBAAoB9/B,EAAMogB,SAAU,CACrC,MAAS,gBAHF33B,KAIHy3B,gBAJGz3B,KAKNo3B,eALMp3B,KAKgBq3C,oBAAoB9/B,EAAM+f,OAAQ,CACzD,MAAS,eANFt3B,KAOHo3B,eACRnE,EAAgBzL,MAAM4Q,mBAAmB1zB,KAR9B1E,KAQyC2W,GACpDA,GATW3W,KASc25B,eATd35B,KASoC25B,cAAcv3B,KAAK,CAC9DigC,QAAS,QAGjB5I,cAAe,WACAz5B,KACNsrC,aAAa,iBADPtrC,UACoCmC,QADpCnC,KAENs3C,sBAFMt3C,KAEuBsrC,aAAa,gBAFpCtrC,UAEgEmC,QAC3E8wB,EAAgBzL,MAAMiS,cAAc/0B,KAHzB1E,OAKfs3C,mBAAoB,WAChB,OAAO,GAEXzgB,mBAAoB,SAASC,GACzB,MAAO,CACHpP,MAAM,EAAIntB,EAAOmE,KAAKo4B,EAAQpP,MAAQ,IAAI,SAAS8O,GAC/C,OAAOA,EAAGvI,wBAItBmI,gBAAiB,SAAS34B,GACtB,MAAO,CACHiqB,KAAMjqB,IAGd85C,kBAAmB,SAASx2C,EAASiqC,GACjC,MAAO,CACHprC,OAAQmB,EAAQH,OAASoqC,EACzB,eAAgBjqC,EAAQvE,MACxBktB,UAAW3oB,EAAQ2oB,WAAa,UAGxCmhB,YAAa,SAAS9pC,EAASiqC,GAC3B,MAAO,CACHrT,SAAU33B,KAAKu3C,kBAAkBx2C,EAASiqC,KAGlDzT,YAAa,SAAShgB,GACPvX,KACNy3B,gBADMz3B,KACiBy3B,eAAer1B,KAAKmV,EAAMogB,WACtD,EAAIn9B,EAAUkB,MAFHsE,KAEc43B,WAAa,IAAI,SAASj8B,EAAGwW,GAClDA,EAAQuV,MAAQvV,EAAQuV,KAAKtlB,KAAK,CAC9B,eAAgBmV,EAAMogB,SAAS,kBAChCvyB,YAGX8xB,aAAc,SAASJ,EAASpgB,GAC5B,MAAO,CACHgR,KAAM1nB,KAAKw3C,mBAAmB1gB,EAAQpP,KAAM,CACxC,eAAgB1nB,KAAK0X,QAAQtB,OAAOuhB,SAAS,kBAC9C9yB,OAAO6R,KAGlBsgB,eAAgB,SAASC,GACrBA,EAAQvP,KAAK7D,UAEjBgU,eAAgB,SAASZ,EAASH,EAAS/kB,EAAS0lC,GAChD,IAAIpG,EAAS,CACT5zC,OAAQq5B,EAAQpP,MAEhBgwB,EAAczgB,EAAQvP,KAC1B3V,EAAU2lC,EAAY3lC,QAAQs/B,EAAQ,GAAIoG,GAAqBC,EAAYt1C,KAAKivC,IAEpFhV,iBAAkB,WAEdpJ,EAAgBzL,MAAM6U,iBAAiB33B,KAD5B1E,WAEN25B,eAFM35B,KAEgB25B,cAAc5nB,QAAQ,CAC7CswB,QAAS,GACV,CACCpwB,SALOjS,KAKQ2qC,oBAGvB1O,SAAU,WACN,IAAI9yB,EAAOnJ,KACPqjC,EAAYl6B,EAAKyuB,UAAUztB,OAAS,GACxC,EAAI3P,EAAUkB,MAAMyN,EAAKyuB,WAAa,IAAI,SAAS1tB,EAAGytC,GAClD,IAAI3lC,EACA9H,IAAMm5B,IACNrxB,EAAW,WACP7I,EAAKkzB,qBAGblzB,EAAK0uB,eAAe8f,EAAMxuC,EAAK20B,UAAU5zB,IAAI,EAAM8H,OAG3DkkB,WAAY,SAASn1B,GACjBkyB,EAAgBzL,MAAM0O,WAAWxxB,KAAK1E,KAAM,CACxC1E,MAAOyF,EAAQzF,MACf2vB,OAAQlqB,EAAQkqB,UAGxBusB,mBAAoB,SAAS/5C,EAAQ8f,GACjC,OAAOvd,KAAKC,UAAUkF,KAAK1H,EAAQ,QAAQ2E,KAAKmb,IAEpDq6B,YAAa,SAASn6C,EAAQ6b,GAC1B,OAAOA,EAAU7b,EAAOo6C,MAAK,SAASC,EAAIC,GACtC,OAAOA,EAAGj8C,EAAIg8C,EAAGh8C,KAChB2B,EAAOo6C,MAAK,SAASC,EAAIC,GAC1B,OAAOD,EAAGj8C,EAAIk8C,EAAGl8C,MAGzBivC,aAAc,SAASrtC,EAAQkZ,EAAkBqhC,EAAcC,GAC3D,IACI3+B,EADOtZ,KACQgB,SAASsY,QACxBwd,EAFO92B,KAEQo2B,gBAAgB34B,EAAQ6b,EAAS2+B,GAFzCj4C,KAGN89B,UAAU7+B,KAAK63B,GAHT92B,KAID43B,UAAUogB,GAGXrhC,GAPE3W,KAQE63B,eARF73B,KAQsB43B,UAAUogB,GAAelhB,GAR/C92B,KAKF43B,UAAUogB,GALRh4C,KAK6Bk3B,aAAavgB,EAL1C3W,KAKkE62B,mBAAmBC,GAAWA,EALhG92B,KAK8Gy3B,iBAO7HygB,oBAAqB,WACjB,IACIC,EADOn4C,KACoB4qC,qBAC3BwN,EAFOp4C,KAEwB0X,QAAQtB,OAAOuhB,SAAS,gBAC3D,MAAO,CACH,eAAgBygB,EAA0BD,EAAsBC,EAA0BD,EAC1Fx4C,KAAM,SAGd04C,0BAA2B,SAASvhB,GAChC,OAAOA,EAAQpP,MAEnBuoB,oBAAqB,SAASnZ,GAC1B,OAAO92B,KAAKw3C,mBAAmBx3C,KAAKq4C,0BAA0BvhB,GAAU92B,KAAKk4C,oBAAoBphB,KAErGkZ,sBAAuB,SAASlZ,EAASG,GACrC,IAAI1Z,EAAWvd,KAAKk4C,oBAAoBphB,GACxCvZ,EAAS9f,OAASuC,KAAKq4C,0BAA0BvhB,GACjDG,EAAQ70B,KAAKmb,IAEjB4yB,yBAA0B,SAASjxB,EAAMtjB,GACrC,IAAKq3B,EAAgBzL,MAAM2oB,yBAAyBzrC,KAAK1E,MACrD,OAAO,EAEX,IAAI6K,EAAQqU,EAAKo5B,eAAiBt4C,KAAKu4C,mBAAqBv4C,KAAKw4C,cAC7DttC,EAAMgU,EAAKvU,gBAAgByK,UAAUvK,EAAMw2B,WAAax2B,EAAMw2B,WAAW,GAAKx2B,EAAMK,KACpFC,EAAM+T,EAAKvU,gBAAgByK,UAAUvK,EAAMw2B,WAAax2B,EAAMw2B,WAAWx2B,EAAMw2B,WAAWl3B,OAAS,GAAKU,EAAMM,KAC9GmO,EAAUtZ,KAAKuW,aAAa+C,QAC5BiL,EAAWrF,EAAK3I,aAAagO,SACjC,OAAOrF,EAAKo5B,kBAAoBh/B,IAAYiL,GAAYjL,GAAWiL,KAAcrF,EAAKo5B,iBAAmBh/B,IAAYiL,IAAajL,GAAWiL,GAAY3oB,GAASsP,GAAOtP,GAASuP,EAAMvP,GAASuP,GAAOvP,GAASsP,IAGrNutC,EAAajxB,EAAME,MAAO,EAAIjtB,EAAQoL,QAAQ,GAAIotB,EAAgBzL,MAAO2vB,EAAa,CACtFlG,oBAAqB,SAAS1jC,GAC1B,IAAItL,EAAQjC,KAAKqe,kBAAkB1T,gBAAgByK,UAAU7H,GAC7D,MAAO,CACH1R,EAAGoG,EACHnG,EAAGmG,IAGXszB,mBAAoB,SAAS35B,EAAO45B,GAKhC,IAJA,IACIC,EAAgB,KAChBib,EAAgB1wC,KAAKuwC,yBAAyB30C,EAAO45B,GACrDkjB,EAAiBljB,IAHVx1B,KAG8BgB,SAASsY,UAAYkc,GAHnDx1B,KAGsEgB,SAASsY,QACjFpP,EAAI,EAAGA,EAAIwmC,EAAcvmC,OAAQD,IAAK,CAC3C,IAAI6rB,EAAI2a,EAAcxmC,GAClBw8B,GAAK3Q,EAAE,GAAG9W,GAAK8W,EAAE,GAAG9W,KAAO8W,EAAE,GAAG/W,GAAK+W,EAAE,GAAG/W,IAC1CyvB,EAAI1Y,EAAE,GAAG9W,GAAK8W,EAAE,GAAG/W,GAAK0nB,EACxB1Q,OAAW,EAMf,GAJIA,EADAD,EAAE,GAAG/W,GAAK+W,EAAE,GAAG/W,KAAO,EACX05B,EAAiB3iB,EAAE,GAAG9W,GAAK8W,EAAE,GAAG/W,GAEhC05B,EAAiBhS,EAAI9qC,EAAQ6yC,GAAK7yC,EAAQ6yC,GAAK/H,EAE1D1mC,KAAKi2B,4BAA4BT,EAAYQ,GAAW,CACxDP,EAAgBO,EAChB,OAGR,OAAOP,KAGfjO,EAAMI,UAAW,EAAIntB,EAAQoL,QAAQ,GAAI4yC,EAAY,CACjDE,yBAA0B,SAASl7C,GAC/B,IAAIq5B,EAAU,GACVnB,EAAY31B,KAAKgB,SAASsY,QAAU,IAAM,IAe9C,OAdA,EAAI9e,EAAUkB,MAAM+B,GAAQ,SAASyM,EAAGssB,GACpC,IAAIl7B,EACJ,GAAK4O,EAAL,CAIA,IAAI0uC,EAAO9hB,EAAQA,EAAQ3sB,OAAS,GAAGwrB,GACnCijB,IAASpiB,EAAGb,MACZr6B,GAAQ,EAAImhC,EAAQS,OAAO1G,IACrBb,GAAaijB,EACnB9hB,EAAQ73B,KAAK3D,IAEjBw7B,EAAQ73B,KAAKu3B,QATTM,EAAQ73B,KAAKu3B,MAWdM,GAEXV,gBAAiB,SAAS34B,GACtB,OAAOg7C,EAAWriB,gBAAgBp2B,KAAK24C,yBAAyBl7C,KAEpE83B,mBAAoB,SAAS35B,EAAO45B,GAOhC,IANA,IAAIC,EACAnc,EAAUtZ,KAAKgB,SAASsY,QACxBoc,GAAcF,IAAelc,GAAWkc,GAAclc,EACtDqc,EAAaD,EAAoB,KAAP,KAC1BG,EAAqBH,EAAoB,KAAP,KAClCgb,EAAgB1wC,KAAKuwC,yBAAyB30C,EAAO45B,GAChDtrB,EAAI,EAAGA,EAAIwmC,EAAcvmC,OAAQD,IAAK,CAC3C,IAAI6rB,EAAI2a,EAAcxmC,GAClB8rB,OAAW,EAMf,GAJIA,EADAR,EACW55B,IAAUm6B,EAAE,GAAGJ,GAAaI,EAAE,GAAGF,GAAqBE,EAAE,GAAGF,GAE3Dj6B,IAAUm6B,EAAE,GAAGJ,GAAaI,EAAE,GAAGF,GAAqBE,EAAE,GAAGF,GAEtE71B,KAAKi2B,4BAA4BT,EAAYQ,GAAW,CACxDP,EAAgBO,EAChB,OAGR,OAAOP,KAGfjO,EAAMG,QAAS,EAAIltB,EAAQoL,QAAQ,GAAI4yC,EAAY,CAC/C/a,uBAAwB,SAASmb,EAAKv/B,GAClC,IAAIm3B,EAAe,GACfqI,EAAaD,EACbE,EAAgB,SAASC,EAAiB5M,EAAY6M,GACtD,OAAOD,EAAkB5M,GAAc6M,EAAeD,GAAmBA,EAAkB5M,GAAc6M,EAAeD,EAAkBA,EAAkBC,GAsFhK,OApFI,IAAMH,EAAW3uC,OACjB2uC,EAAWzpB,SAAQ,SAAS6pB,EAAUhvC,GAClC,IAAIivC,EACAC,EACAC,EACAC,EAGAr8C,EACAC,EACAC,EACAC,EAEAoxC,EACAC,EACA8K,EAGAnyC,EAZA2vC,EAAY+B,EAAW5uC,EAAI,GAC3BmmC,EAAYyI,EAAW5uC,EAAI,GAY/B,GAAKA,GAAKA,IAAM4uC,EAAW3uC,OAAS,EAApC,CAIA,IAAIqvC,EAAON,EAASr9C,EAChB49C,EAAOP,EAASp9C,EAMpB,GALAmB,EAAK85C,EAAUl7C,EACfqB,EAAKmzC,EAAUx0C,EACfsB,EAAK45C,EAAUj7C,EACfsB,EAAKizC,EAAUv0C,MACSwd,IAAYmgC,GAAQ1C,EAAUj7C,GAAK29C,GAAQpJ,EAAUv0C,GAAK29C,GAAQ1C,EAAUj7C,GAAK29C,GAAQpJ,EAAUv0C,IAAMwd,IAAYkgC,GAAQzC,EAAUl7C,GAAK29C,GAAQnJ,EAAUx0C,GAAK29C,GAAQzC,EAAUl7C,GAAK29C,GAAQnJ,EAAUx0C,IAE3Nyd,GAKD+/B,EAAgBF,EAAeK,EAC/BF,GAAiBG,EAAOpJ,EAAUv0C,GAAK,EACvCs9C,GAAgBK,EAAO1C,EAAUj7C,GAAK,IANtCw9C,EAAgBF,EAAeK,EAC/BJ,GAAiBG,EAAOnJ,EAAUx0C,GAAK,EACvCs9C,GAAgBK,EAAOzC,EAAUl7C,GAAK,OAMvC,CAIH,GAHA2yC,EAAIpxC,EAAKD,EACTsxC,EAAIxxC,EAAKC,EACTq8C,EAAIp8C,EAAKD,EAAKD,EAAKG,EACdkc,EAUE,CACH,IAAKk1B,EAED,YADAiC,EAAaxxC,KAAKi6C,EAAUA,EAAUA,GAM1Cj8C,GADAmK,GADM,GAAKqnC,EADNgL,EACeF,GAAK/K,EACZgL,EAEbt8C,GAAMkK,MAnBI,CACV,IAAKqnC,EAED,YADAgC,EAAaxxC,KAAKi6C,EAAUA,EAAUA,GAM1C/7C,GADAiK,GADM,GAAKonC,EADNgL,EACeD,GAAK9K,EACZgL,EAEbr8C,GAAMgK,EAYViyC,GAAiBG,EArDR,GAqDwBt8C,GAAM,IACvCo8C,GAAiBG,EAtDR,GAsDwBr8C,GAAM,IACvC+7C,GAAgBK,EAvDP,GAuDuBv8C,GAAM,IACtCm8C,GAAgBK,EAxDP,GAwDuBt8C,GAAM,IAErCmc,GAID6/B,EAAeJ,EAAchC,EAAUl7C,EAAG29C,EAAML,GAChDE,EAAgBN,EAAc1I,EAAUx0C,EAAG29C,EAAMH,KAJjDD,EAAeL,EAAchC,EAAUj7C,EAAG29C,EAAML,GAChDE,EAAgBP,EAAc1I,EAAUv0C,EAAG29C,EAAMH,IAKrD,IAAII,EAAYzc,EAAWic,EAAUC,EAAcC,GAC/CO,EAAa1c,EAAWic,EAAUG,EAAeC,GACrD7I,EAAaxxC,KAAKy6C,EAAWR,EAAUS,QA3DnClJ,EAAaxxC,KAAKi6C,EAAUA,MA8DpCzI,EAAaxxC,KAAK65C,EAAW,IAE1BrI,GAEXra,gBAAiB,SAAS34B,EAAQ6b,GAC9B,OAAOm/B,EAAWriB,gBAAgBp2B,KAAK09B,uBAAuBjgC,EAAQ6b,KAE1Ek+B,mBAAoB,SAAS/5C,EAAQ8f,GACjC,OAAOvd,KAAKC,UAAUkF,KAAK1H,EAAQ,UAAU2E,KAAKmb,IAEtDgY,mBAAoB,SAAS35B,EAAO45B,GA8BhC,IA7BA,IACIC,EAAgB,KAChBC,GAAcF,IAAex1B,KAAKgB,SAASsY,SAAWkc,GAAcx1B,KAAKgB,SAASsY,QAClFqc,EAAaD,EAAoB,KAAP,KAC1BkkB,EAAmBlkB,EAAmB,IAAN,IAChCG,EAAqBH,EAAoB,KAAP,KAClCmkB,EAA2BnkB,EAAmB,IAAN,IAExC1qB,GADQwqB,EAPDx1B,KAO4Cob,eAP5Cpb,KAOmBqe,mBACPtT,iBACnB2lC,EAAgB1wC,KAAKuwC,yBAAyB30C,EAAO45B,GACrDskB,EAAQ,SAAS5vC,GACjB,IAAI6rB,EAAI2a,EAAcxmC,GAClB,IAAM6rB,EAAE5rB,OACRa,EAAY,IAAM+qB,EAAE,GAAGF,IAAsB7qB,EAAY,IAAM+qB,EAAE,GAAGF,KAAuBJ,EAAgBM,EAAE,GAAGF,IA3WhI,SAAgCE,EAAGgkB,EAAIjC,EAAIC,EAAIiC,GAC3C,IAAIjhB,EAAIghB,EAAKhkB,EACTwjB,EAAI,EAAIzB,EAAK,EAAIiC,EACjBtL,EAAI,EAAIsJ,EAAK,EAAID,EAAK,EAAIiC,EAC1BvL,EAAIwL,EAAK,EAAIjC,EAAK,EAAID,EAAKiC,EAC/B,OAAO,EAAIl/C,EAAMo/C,oBAAoBzL,EAAGC,EAAG8K,EAAGxgB,GAwWzBmhB,CAAuBt+C,EAAOm6B,EAAE,GAAGJ,GAAYI,EAAE,GAAG6jB,GAAkB7jB,EAAE,GAAG6jB,GAAkB7jB,EAAE,GAAGJ,IACxGtG,SAAQ,SAAS8qB,GAChB,GAAIA,GAAK,GAAKA,GAAK,EAAG,CAClB,IAAInkB,EAAWl7B,KAAK47C,IAAI,EAAIyD,EAAG,GAAKpkB,EAAE,GAAGF,GAAqB,EAAI/6B,KAAK47C,IAAI,EAAIyD,EAAG,GAAKA,EAAIpkB,EAAE,GAAG8jB,GAA2B,GAAK,EAAIM,GAAKA,EAAIA,EAAIpkB,EAAE,GAAG8jB,GAA2BM,EAAIA,EAAIA,EAAIpkB,EAAE,GAAGF,GAC9L7qB,EAAY,IAAMgrB,GAAYhrB,EAAY,IAAMgrB,IAChDP,EAAgBO,OAKhC,GAAI,OAASP,EACT,MAAO,SAGNvrB,EAAI,EAAGA,EAAIwmC,EAAcvmC,OAAQD,IAAK,CAE3C,GAAI,UADO4vC,EAAM5vC,GAEb,MAGR,OAAOurB,GAEX2a,kBAAmB,SAAS90C,EAAO+0C,EAAWI,GAC1C,IAAI16B,EAAQ06B,EAAatjB,QAAQ7xB,GACjC,MAAO,CAACA,EAAOm1C,EAAa16B,EAAQ,GAAI06B,EAAa16B,EAAQ,GAAIs6B,IAErEC,iBAAkB,WACd,OAAOtwC,KAAK89B,UAAU3zB,OAAS,EAAInK,KAAK89B,UAAUl/B,QAAO,SAAS4vC,EAAG4L,GACjE,OAAO5L,EAAEloC,OAAO8zC,EAAI1yB,QACrB,IAAM,MAGjByB,EAAMzB,MAAO,EAAIjtB,EAAQoL,QAAQ,GAAIotB,EAAgB9J,MAAOguB,EAAa,CACrES,YAAa,SAASn6C,GAClB,OAAOA,GAEX24B,gBAAiB,SAAS34B,EAAQ6b,EAAS2+B,GACvC,IAEI/tC,EAFAmwC,EAAiB,GACjBrD,EAAch3C,KAAKob,eAAeiW,YAGtC,GADA4mB,GAAej4C,KAAKs6C,cAAc78C,GAjb3B,aAkbHuC,KAAKu6C,kBAlbF,aAkbmCv6C,KAAKigB,cAQ3C,OAAOw4B,EAAWriB,gBAAgB1xB,KAAK1E,KAAMvC,GAP7C,IAAKyM,EAAI,EAAGA,EAAIzM,EAAO0M,OAAQD,IAC3BmwC,EAAiBA,EAAe/zC,OAAOtG,KAAKw6C,kBAAkB/8C,EAAOyM,GAAIzM,EAAOyM,EAAI,GAAI8sC,IAQhG,OANSqD,EAAelwC,SAChBkwC,EAAiB58C,GAKlB,CACHiqB,KAAM2yB,IAGdI,mBAAoB,SAAS19C,GACzB,IAAI29C,GAAY,EAAIngD,EAAO2a,gBAAgBnY,GAC3C,OAAOA,GAAS,EAAI,IAAM29C,GAAaA,GAE3CJ,cAAe,SAAS78C,GACpB,IAAInC,EAEAA,EADA0E,KAAK89B,UAAU3zB,OACPnK,KAAK89B,UAAU,GAAGpW,KAAK,GAEvBuV,EAAWx/B,EAAO,GAAIA,EAAO,GAAG5B,EAAG4B,EAAO,GAAG3B,EAAG2B,EAAO,GAAGV,QAEtEzB,EAAQ0E,KAAK26C,sBAAsBr/C,EAAOmC,EAAOA,EAAO0M,OAAS,MAE7D1M,EAAOwB,KAAK3D,IAGpBq/C,sBAAuB,SAASr/C,EAAOs/C,GACnC,GAAIA,EAAU79C,QAAUzB,EAAMyB,MAA9B,CAGA,IAAI,EAAIxC,EAAO2a,gBAAgBla,EAAM4/C,EAAU79C,WAAY,EAAIxC,EAAO2a,gBAAgBla,EAAMM,EAAMyB,QAC9FzB,EAAMyB,MAAQ69C,EAAU79C,UACrB,CACH,IAAI89C,EAAkBD,EAAU79C,MAAQzB,EAAMyB,MAC9CzB,EAAMyB,MAAQ69C,EAAU79C,MAAQiD,KAAKy6C,mBAAmBI,GAE5D,OAAOv/C,IAEXk/C,kBAAmB,SAASl/C,EAAOy7C,EAAWC,GAC1C,IAGI9sC,EAHA4wC,EAAgB,GAChBC,EAAejgD,KAAKE,MAAM+7C,EAAUh6C,MAAQzB,EAAMyB,OAClDoC,GAAO43C,EAAUv5B,OAASliB,EAAMkiB,QAAUu9B,EAE9C,GAAI,IAAMA,EACND,EAAgB,CAAC/D,EAAWz7C,QAE5B,GAAIy/C,EAAe,EACf,IAAK7wC,EAAI6wC,EAAc7wC,GAAK,EAAGA,IAC3B4wC,EAAc77C,KAAK63C,EAAgBx7C,EAAOy7C,EAAWC,EAAa73C,EAAK+K,SAG3E,IAAKA,EAAI,EAAGA,GAAK6wC,EAAc7wC,IAC3B4wC,EAAc77C,KAAK63C,EAAgBx7C,EAAOy7C,EAAWC,EAAa73C,EAAK47C,EAAe7wC,IAIlG,OAAO4wC,GAEXvlB,mBAAoB,SAAS8b,EAAQ7b,GACjC,IAgBIj6B,EAfAy6C,EADOh2C,KACQqe,kBACfizB,EAAY9b,EAAa,QAAU,SACnCwlB,EAAa3J,EAAOC,GACpB0F,EAAchB,EAAQ3kB,YAItB4pB,EAAmB,SAASlE,EAAWz7C,EAAO6T,GAC9C,IAJ6B2oC,EAAIC,EAI7Bl8C,EAAIsT,EAAKtT,EACTC,EAAIqT,EAAKrT,EACb,OALOoV,EAAKwlC,GADiBoB,EAMJ,CACrBj8C,EAAGA,EACHC,EAAGA,IAPYD,GADck8C,EAS9Bf,GARuBn7C,EAAG,GAAK66C,EAAIoB,EAAGh8C,EAAIi8C,EAAGj8C,EAAG,KAQhCk6C,EAAQkF,aAAehwC,EAAI6rC,EAAUl7C,EAAGP,EAAMO,IAAMA,GAAKsP,EAAI4rC,EAAUl7C,EAAGP,EAAMO,IAAMA,GAAKqP,EAAI6rC,EAAUj7C,EAAGR,EAAMQ,IAAMA,GAAKqP,EAAI4rC,EAAUj7C,EAAGR,EAAMQ,IAAMA,GAG7Kq/C,EAjBOn7C,KAiBeo7C,kBAAkBJ,EAAY1J,GACxD,GAAI,IAAM6J,EAAehxC,OACrB5O,EAAS4/C,EAAe,QAExB,GAAIA,EAAehxC,OAAS,EAAG,CAC3B,IAGQhL,EACAk8C,EAJJtE,EAAYoE,EAAe,GAC3B7/C,EAAQ6/C,EAAe,GAC3B,GAzgBD,aAifIn7C,KAwBMu6C,kBAzgBV,aAifIv6C,KAwB4CigB,cAGvCuV,GACAr2B,GAAO43C,EAAUv5B,OAASliB,EAAMkiB,SAAWu5B,EAAUh6C,MAAQzB,EAAMyB,OACnEs+C,EAAYL,EAAa1/C,EAAMyB,QAE/BoC,GAAO43C,EAAUv5B,OAASliB,EAAMkiB,SAAWu5B,EAAUh6C,MAAQzB,EAAMyB,OACnEs+C,GAAaL,EAAa1/C,EAAMkiB,QAAUre,GAE9C5D,EAASu7C,EAAgBx7C,EAAOy7C,EAAWC,EAAa73C,EAAKk8C,QAE7D,GAAI7lB,EAAY,CACZ,IAAIh3B,GAAS,EAAIjE,EAAOkE,eAAeu8C,GACnCM,GAAMhgD,EAAMQ,EAAIi7C,EAAUj7C,IAAMR,EAAMO,EAAIk7C,EAAUl7C,GACpD0/C,EAAKxE,EAAUj7C,EAAIi7C,EAAUl7C,EAAIy/C,EACjCE,EAAKh9C,EAAOT,IAAMS,EAAOV,IAEzBjC,GADKm7C,EAAYl7C,EAAI0/C,EAAKxE,EAAYn7C,EAC5B0/C,IAAOD,EAAKE,GACtB1/C,EAAIw/C,EAAKz/C,EAAI0/C,EACjB,GAAIN,EAAiBlE,EAAWz7C,EAAO,CAC/BO,EAAGA,EACHC,EAAGA,IACH,CACJ,IAAI2/C,EAAUrgD,GAAI,EAAIP,EAAM6gD,QAAQ,IAAMV,GAAc,IAAM,IAC1D,IAAMS,GAAW5/C,GAAKm7C,EAAYn7C,GAAKC,GAAKk7C,EAAYl7C,GAAK,IAAM2/C,GAAW5/C,GAAKm7C,EAAYn7C,GAAKC,GAAKk7C,EAAYl7C,GAAK,IAAM2/C,GAAW5/C,GAAKm7C,EAAYn7C,GAAKC,GAAKk7C,EAAYl7C,GAAK,IAAM2/C,GAAW5/C,GAAKm7C,EAAYn7C,GAAKC,GAAKk7C,EAAYl7C,KAC/OP,EAAS,CACLM,EAAGA,EACHC,EAAGA,SAIZ,CACH,IAAI4qC,GAAKprC,EAAMQ,EAAIi7C,EAAUj7C,IAAMR,EAAMO,EAAIk7C,EAAUl7C,GACnD8/C,EAAK5E,EAAUj7C,EAAIi7C,EAAUl7C,EAAI6qC,EACjC8H,EAAI,EAAI9H,EAAIA,EACZ+H,GAAK,EAAIuI,EAAYn7C,EAAI,EAAI6qC,EAAIiV,EAAK,EAAIjV,EAAIsQ,EAAYl7C,EAE1Di9B,EAAI0V,EAAIA,EAAI,EAAID,IADXkI,EAAIsE,EAAY,GAAKtE,EAAIiF,EAAK3E,EAAYl7C,EAAG,GAAK46C,EAAIM,EAAYn7C,EAAG,IAE9E,GAAIk9B,GAAK,EAAG,CACR,IAAI97B,IAAOwxC,EAAIv9B,EAAK6nB,KAAO,EAAIyV,GAC3BtxC,IAAOuxC,EAAIv9B,EAAK6nB,KAAO,EAAIyV,GAC3BrxC,EAAKupC,EAAIzpC,EAAK0+C,EACdv+C,EAAKspC,EAAIxpC,EAAKy+C,EAClBpgD,EAAS0/C,EAAiBlE,EAAWz7C,EAAO,CACxCO,EAAGoB,EACHnB,EAAGqB,IACF,CACDtB,EAAGoB,EACHnB,EAAGqB,GACH89C,EAAiBlE,EAAWz7C,EAAO,CACnCO,EAAGqB,EACHpB,EAAGsB,IACF,CACDvB,EAAGqB,EACHpB,EAAGsB,QACH,IAMxB,OAAO7B,GAEX6/C,kBAAmB,SAASQ,EAAOtK,GAC/B,IAAI7zC,EAASuC,KAAK81B,YACdqlB,EAAiB,GACrB,GAAIn7C,KAAKuW,aAAaslC,OAAQ,CAE1B,IAAIjB,GADJn9C,GAAS,EAAIhD,EAAQoL,SAAQ,EAAM,GAAIpI,IAChBA,EAAO0M,OAAS,GACnC2xC,EAAiB7e,EAAWx/B,EAAO,GAAIA,EAAO,GAAG5B,EAAG4B,EAAO,GAAG3B,EAAG2B,EAAO,GAAGV,OAC3Eg/C,EAAgB9e,EAAW2d,EAAWA,EAAU/+C,EAAG++C,EAAU9+C,EAAG8+C,EAAU79C,OAC1Ei/C,EAAmBh8C,KAAK26C,sBAAsBmB,EAAgBlB,GAC9DqB,EAAkBj8C,KAAK26C,sBAAsBoB,EAAet+C,EAAO,IACnEw+C,GACAx+C,EAAOy+C,QAAQD,GAEfD,GACAv+C,EAAOwB,KAAK+8C,GAGpB,IAAK,IAAI9xC,EAAI,EAAGA,EAAIzM,EAAO0M,SACnB1M,EAAOyM,EAAI,GAAGonC,KAAesK,EAC7BT,EAAel8C,KAAKxB,EAAOyM,EAAI,IAE3BzM,EAAOyM,GAAGonC,KAAesK,EACzBT,EAAel8C,KAAKxB,EAAOyM,KAEvBzM,EAAOyM,GAAGonC,GAAasK,GAASn+C,EAAOyM,EAAI,GAAGonC,GAAasK,GAASn+C,EAAOyM,EAAI,GAAGonC,GAAasK,GAASn+C,EAAOyM,GAAGonC,GAAasK,KAC/HT,EAAel8C,KAAKxB,EAAOyM,EAAI,IAC/BixC,EAAel8C,KAAKxB,EAAOyM,OAInCixC,EAAehxC,OAAS,IAbGD,KAiBnC,OAAOixC","file":"static/js/main~ae86451b.6dc19d15.chunk.js","sourcesContent":["/**\r\n * DevExtreme (viz/series/points/label.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Label = Label;\r\nvar _format_helper = _interopRequireDefault(require(\"../../../format_helper\"));\r\nvar _utils = require(\"../../core/utils\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _format = _format_helper.default.format;\r\nvar _math = Math;\r\nvar _round = _math.round;\r\nvar _floor = _math.floor;\r\nvar _abs = _math.abs;\r\nvar CONNECTOR_LENGTH = 12;\r\nvar LABEL_BACKGROUND_PADDING_X = 8;\r\nvar LABEL_BACKGROUND_PADDING_Y = 4;\r\n\r\nfunction getClosestCoord(point, coords) {\r\n var closestDistance = 1 / 0;\r\n var closestCoord;\r\n (0, _iterator.each)(coords, function(_, coord) {\r\n var x = point[0] - coord[0];\r\n var y = point[1] - coord[1];\r\n var distance = x * x + y * y;\r\n if (distance < closestDistance) {\r\n closestDistance = distance;\r\n closestCoord = coord\r\n }\r\n });\r\n return [_floor(closestCoord[0]), _floor(closestCoord[1])]\r\n}\r\n\r\nfunction getCrossCoord(rect, coord, indexOffset) {\r\n return (coord - rect[0 + indexOffset]) / (rect[2 + indexOffset] - rect[0 + indexOffset]) * (rect[3 - indexOffset] - rect[1 - indexOffset]) + rect[1 - indexOffset]\r\n}\r\nvar barPointStrategy = {\r\n isLabelInside: function(labelPoint, figure) {\r\n var xc = labelPoint.x + labelPoint.width / 2;\r\n var yc = labelPoint.y + labelPoint.height / 2;\r\n return figure.x <= xc && xc <= figure.x + figure.width && figure.y <= yc && yc <= figure.y + figure.height\r\n },\r\n prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle, figureCenter) {\r\n var x1 = rotatedBBox.x;\r\n var xc = x1 + rotatedBBox.width / 2;\r\n var x2 = x1 + rotatedBBox.width - 1;\r\n var y1 = rotatedBBox.y;\r\n var yc = y1 + rotatedBBox.height / 2;\r\n var y2 = y1 + rotatedBBox.height - 1;\r\n var labelPoints;\r\n var isRectangular = _abs(angle) % 90 === 0;\r\n if (figureCenter[0] > x1 && figureCenter[0] < x2) {\r\n if (isRectangular) {\r\n labelPoints = [\r\n [figureCenter[0], _abs(figureCenter[1] - y1) < _abs(figureCenter[1] - y2) ? y1 : y2]\r\n ]\r\n } else {\r\n labelPoints = [\r\n [figureCenter[0], getCrossCoord([x1, y1, x2, y2], figureCenter[0], 0)]\r\n ]\r\n }\r\n } else {\r\n if (figureCenter[1] > y1 && figureCenter[1] < y2) {\r\n if (isRectangular) {\r\n labelPoints = [\r\n [_abs(figureCenter[0] - x1) < _abs(figureCenter[0] - x2) ? x1 : x2, figureCenter[1]]\r\n ]\r\n } else {\r\n labelPoints = [\r\n [getCrossCoord([x1, y1, x2, y2], figureCenter[1], 1), figureCenter[1]]\r\n ]\r\n }\r\n } else {\r\n if (isRectangular) {\r\n labelPoints = [\r\n [x1, y1],\r\n [isHorizontal ? x1 : xc, isHorizontal ? yc : y1],\r\n [x2, y1],\r\n [x1, y2],\r\n [isHorizontal ? x2 : xc, isHorizontal ? yc : y2],\r\n [x2, y2]\r\n ]\r\n } else {\r\n labelPoints = [\r\n [xc, yc]\r\n ]\r\n }\r\n }\r\n }\r\n return labelPoints\r\n },\r\n isHorizontal: function(bBox, figure) {\r\n return bBox.x > figure.x + figure.width || bBox.x + bBox.width < figure.x\r\n },\r\n getFigureCenter: function(figure) {\r\n return [_floor(figure.x + figure.width / 2), _floor(figure.y + figure.height / 2)]\r\n },\r\n findFigurePoint: function(figure, labelPoint) {\r\n var figureCenter = barPointStrategy.getFigureCenter(figure);\r\n var point = getClosestCoord(labelPoint, [\r\n [figure.x, figureCenter[1]],\r\n [figureCenter[0], figure.y + figure.height],\r\n [figure.x + figure.width, figureCenter[1]],\r\n [figureCenter[0], figure.y]\r\n ]);\r\n return point\r\n },\r\n adjustPoints: function(points) {\r\n var lineIsVertical = _abs(points[1] - points[3]) <= 1;\r\n var lineIsHorizontal = _abs(points[0] - points[2]) <= 1;\r\n if (lineIsHorizontal) {\r\n points[0] = points[2]\r\n }\r\n if (lineIsVertical) {\r\n points[1] = points[3]\r\n }\r\n return points\r\n }\r\n};\r\nvar symbolPointStrategy = {\r\n isLabelInside: function() {\r\n return false\r\n },\r\n prepareLabelPoints: barPointStrategy.prepareLabelPoints,\r\n isHorizontal: function(bBox, figure) {\r\n return bBox.x > figure.x + figure.r || bBox.x + bBox.width < figure.x - figure.r\r\n },\r\n getFigureCenter: function(figure) {\r\n return [figure.x, figure.y]\r\n },\r\n findFigurePoint: function(figure, labelPoint) {\r\n var angle = Math.atan2(figure.y - labelPoint[1], labelPoint[0] - figure.x);\r\n return [_round(figure.x + figure.r * Math.cos(angle)), _round(figure.y - figure.r * Math.sin(angle))]\r\n },\r\n adjustPoints: barPointStrategy.adjustPoints\r\n};\r\nvar piePointStrategy = {\r\n isLabelInside: function(_0, _1, isOutside) {\r\n return !isOutside\r\n },\r\n prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle) {\r\n var xl = bBox.x;\r\n var xr = xl + bBox.width;\r\n var xc = xl + _round(bBox.width / 2);\r\n var yt = bBox.y;\r\n var yb = yt + bBox.height;\r\n var yc = yt + _round(bBox.height / 2);\r\n var points = [\r\n [\r\n [xl, yt],\r\n [xr, yt]\r\n ],\r\n [\r\n [xr, yt],\r\n [xr, yb]\r\n ],\r\n [\r\n [xr, yb],\r\n [xl, yb]\r\n ],\r\n [\r\n [xl, yb],\r\n [xl, yt]\r\n ]\r\n ];\r\n var cosSin = (0, _utils.getCosAndSin)(angle);\r\n if (0 === angle) {\r\n points = isHorizontal ? [\r\n [xl, yc],\r\n [xr, yc]\r\n ] : [\r\n [xc, yt],\r\n [xc, yb]\r\n ]\r\n } else {\r\n points = points.map(function(pair) {\r\n return pair.map(function(point) {\r\n return [_round((point[0] - xc) * cosSin.cos + (point[1] - yc) * cosSin.sin + xc), _round(-(point[0] - xc) * cosSin.sin + (point[1] - yc) * cosSin.cos + yc)]\r\n })\r\n }).reduce(function(r, pair) {\r\n var point1x = pair[0][0];\r\n var point1y = pair[0][1];\r\n var point2x = pair[1][0];\r\n var point2y = pair[1][1];\r\n if (isHorizontal) {\r\n if (point1y >= yc && yc >= point2y || point1y <= yc && yc <= point2y) {\r\n r.push([(yc - point1y) * (point2x - point1x) / (point2y - point1y) + point1x, yc])\r\n }\r\n } else {\r\n if (point1x >= xc && xc >= point2x || point1x <= xc && xc <= point2x) {\r\n r.push([xc, (xc - point1x) * (point2y - point1y) / (point2x - point1x) + point1y])\r\n }\r\n }\r\n return r\r\n }, [])\r\n }\r\n return points\r\n },\r\n isHorizontal: function(bBox, figure) {\r\n return bBox.x > figure.x || figure.x > bBox.x + bBox.width\r\n },\r\n getFigureCenter: symbolPointStrategy.getFigureCenter,\r\n findFigurePoint: function(figure, labelPoint, isHorizontal) {\r\n if (!isHorizontal) {\r\n return [figure.x, figure.y]\r\n }\r\n var labelX = labelPoint[0];\r\n var x = _round(figure.x + (figure.y - labelPoint[1]) / Math.tan((0, _utils.degreesToRadians)(figure.angle)));\r\n var points = [figure.x, figure.y, x, labelPoint[1]];\r\n if (!(figure.x <= x && x <= labelX) && !(labelX <= x && x <= figure.x)) {\r\n if (_abs(figure.x - labelX) < CONNECTOR_LENGTH) {\r\n points = [figure.x, figure.y]\r\n } else {\r\n if (figure.x <= labelX) {\r\n points[2] = figure.x + CONNECTOR_LENGTH\r\n } else {\r\n points[2] = figure.x - CONNECTOR_LENGTH\r\n }\r\n }\r\n }\r\n return points\r\n },\r\n adjustPoints: function(points) {\r\n return points\r\n }\r\n};\r\n\r\nfunction selectStrategy(figure) {\r\n return void 0 !== figure.angle && piePointStrategy || void 0 !== figure.r && symbolPointStrategy || barPointStrategy\r\n}\r\n\r\nfunction disposeItem(obj, field) {\r\n obj[field] && obj[field].dispose();\r\n obj[field] = null\r\n}\r\n\r\nfunction checkBackground(background) {\r\n return background && (background.fill && \"none\" !== background.fill || background[\"stroke-width\"] > 0 && background.stroke && \"none\" !== background.stroke)\r\n}\r\n\r\nfunction checkConnector(connector) {\r\n return connector && connector[\"stroke-width\"] > 0 && connector.stroke && \"none\" !== connector.stroke\r\n}\r\n\r\nfunction formatText(data, options) {\r\n var format = options.format;\r\n data.valueText = _format(data.value, format);\r\n data.argumentText = _format(data.argument, options.argumentFormat);\r\n if (void 0 !== data.percent) {\r\n data.percentText = _format(data.percent, {\r\n type: \"percent\",\r\n precision: format && format.percentPrecision\r\n })\r\n }\r\n if (void 0 !== data.total) {\r\n data.totalText = _format(data.total, format)\r\n }\r\n if (void 0 !== data.openValue) {\r\n data.openValueText = _format(data.openValue, format)\r\n }\r\n if (void 0 !== data.closeValue) {\r\n data.closeValueText = _format(data.closeValue, format)\r\n }\r\n if (void 0 !== data.lowValue) {\r\n data.lowValueText = _format(data.lowValue, format)\r\n }\r\n if (void 0 !== data.highValue) {\r\n data.highValueText = _format(data.highValue, format)\r\n }\r\n if (void 0 !== data.reductionValue) {\r\n data.reductionValueText = _format(data.reductionValue, format)\r\n }\r\n return options.customizeText ? options.customizeText.call(data, data) : data.valueText\r\n}\r\n\r\nfunction Label(renderSettings) {\r\n this._renderer = renderSettings.renderer;\r\n this._container = renderSettings.labelsGroup;\r\n this._point = renderSettings.point;\r\n this._strategy = renderSettings.strategy;\r\n this._rowCount = 1\r\n}\r\nLabel.prototype = {\r\n constructor: Label,\r\n setColor: function(color) {\r\n this._color = color\r\n },\r\n setOptions: function(options) {\r\n this._options = options\r\n },\r\n setData: function(data) {\r\n this._data = data\r\n },\r\n setDataField: function(fieldName, fieldValue) {\r\n this._data = this._data || {};\r\n this._data[fieldName] = fieldValue\r\n },\r\n getData: function() {\r\n return this._data\r\n },\r\n setFigureToDrawConnector: function(figure) {\r\n this._figure = figure\r\n },\r\n dispose: function() {\r\n var that = this;\r\n disposeItem(that, \"_group\");\r\n that._data = that._options = that._textContent = that._visible = that._insideGroup = that._text = that._background = that._connector = that._figure = null\r\n },\r\n _setVisibility: function(value, state) {\r\n this._group && this._group.attr({\r\n visibility: value\r\n });\r\n this._visible = state\r\n },\r\n isVisible: function() {\r\n return this._visible\r\n },\r\n hide: function(holdInvisible) {\r\n this._holdVisibility = !!holdInvisible;\r\n this._hide()\r\n },\r\n _hide: function() {\r\n this._setVisibility(\"hidden\", false)\r\n },\r\n show: function(holdVisible) {\r\n var correctPosition = !this._drawn;\r\n if (this._point.hasValue()) {\r\n this._holdVisibility = !!holdVisible;\r\n this._show();\r\n correctPosition && this._point.correctLabelPosition(this)\r\n }\r\n },\r\n _show: function() {\r\n var that = this;\r\n var renderer = that._renderer;\r\n var container = that._container;\r\n var options = that._options || {};\r\n var text = that._textContent = formatText(that._data, that._options) || null;\r\n if (text) {\r\n if (!that._group) {\r\n that._group = renderer.g().append(container);\r\n that._insideGroup = renderer.g().append(that._group);\r\n that._text = renderer.text(\"\", 0, 0).append(that._insideGroup)\r\n }\r\n that._text.css(options.attributes ? (0, _utils.patchFontOptions)(options.attributes.font) : {});\r\n if (checkBackground(options.background)) {\r\n that._background = that._background || renderer.rect().append(that._insideGroup).toBackground();\r\n that._background.attr(options.background);\r\n that._color && that._background.attr({\r\n fill: that._color\r\n })\r\n } else {\r\n disposeItem(that, \"_background\")\r\n }\r\n if (checkConnector(options.connector)) {\r\n that._connector = that._connector || renderer.path([], \"line\").sharp().append(that._group).toBackground();\r\n that._connector.attr(options.connector);\r\n that._color && that._connector.attr({\r\n stroke: that._color\r\n })\r\n } else {\r\n disposeItem(that, \"_connector\")\r\n }\r\n that._text.attr({\r\n text: text,\r\n align: options.textAlignment,\r\n \"class\": options.cssClass\r\n });\r\n that._updateBackground(that._text.getBBox());\r\n that._setVisibility(\"visible\", true);\r\n that._drawn = true\r\n } else {\r\n that._hide()\r\n }\r\n },\r\n _getLabelVisibility: function(isVisible) {\r\n return this._holdVisibility ? this.isVisible() : isVisible\r\n },\r\n draw: function(isVisible) {\r\n if (this._getLabelVisibility(isVisible)) {\r\n this._show();\r\n this._point && this._point.correctLabelPosition(this)\r\n } else {\r\n this._drawn = false;\r\n this._hide()\r\n }\r\n return this\r\n },\r\n _updateBackground: function(bBox) {\r\n var that = this;\r\n if (that._background) {\r\n bBox.x -= LABEL_BACKGROUND_PADDING_X;\r\n bBox.y -= LABEL_BACKGROUND_PADDING_Y;\r\n bBox.width += 2 * LABEL_BACKGROUND_PADDING_X;\r\n bBox.height += 2 * LABEL_BACKGROUND_PADDING_Y;\r\n that._background.attr(bBox)\r\n }\r\n that._bBoxWithoutRotation = (0, _extend.extend)({}, bBox);\r\n var rotationAngle = that._options.rotationAngle || 0;\r\n that._insideGroup.rotate(rotationAngle, bBox.x + bBox.width / 2, bBox.y + bBox.height / 2);\r\n bBox = (0, _utils.rotateBBox)(bBox, [bBox.x + bBox.width / 2, bBox.y + bBox.height / 2], -rotationAngle);\r\n that._bBox = bBox\r\n },\r\n getFigureCenter: function() {\r\n var figure = this._figure;\r\n var strategy = this._strategy || selectStrategy(figure);\r\n return strategy.getFigureCenter(figure)\r\n },\r\n _getConnectorPoints: function() {\r\n var that = this;\r\n var figure = that._figure;\r\n var options = that._options;\r\n var strategy = that._strategy || selectStrategy(figure);\r\n var bBox = that._shiftBBox(that._bBoxWithoutRotation);\r\n var rotatedBBox = that.getBoundingRect();\r\n var labelPoint;\r\n var points = [];\r\n var isHorizontal;\r\n if (!strategy.isLabelInside(bBox, figure, \"inside\" !== options.position)) {\r\n isHorizontal = strategy.isHorizontal(bBox, figure);\r\n var figureCenter = that.getFigureCenter();\r\n points = strategy.prepareLabelPoints(bBox, rotatedBBox, isHorizontal, -options.rotationAngle || 0, figureCenter);\r\n labelPoint = getClosestCoord(figureCenter, points);\r\n points = strategy.findFigurePoint(figure, labelPoint, isHorizontal);\r\n points = points.concat(labelPoint)\r\n }\r\n return strategy.adjustPoints(points)\r\n },\r\n fit: function(maxWidth) {\r\n var padding = this._background ? 2 * LABEL_BACKGROUND_PADDING_X : 0;\r\n var rowCountChanged = false;\r\n if (this._text) {\r\n var result = this._text.setMaxSize(maxWidth - padding, void 0, this._options);\r\n var rowCount = result.rowCount;\r\n if (0 === rowCount) {\r\n rowCount = 1\r\n }\r\n if (rowCount !== this._rowCount) {\r\n rowCountChanged = true;\r\n this._rowCount = rowCount\r\n }\r\n result.textIsEmpty && disposeItem(this, \"_background\")\r\n }\r\n this._updateBackground(this._text.getBBox());\r\n return rowCountChanged\r\n },\r\n resetEllipsis: function() {\r\n this._text && this._text.restoreText();\r\n this._updateBackground(this._text.getBBox())\r\n },\r\n setTrackerData: function(point) {\r\n this._text.data({\r\n \"chart-data-point\": point\r\n });\r\n this._background && this._background.data({\r\n \"chart-data-point\": point\r\n })\r\n },\r\n hideInsideLabel: function(coords) {\r\n return this._point.hideInsideLabel(this, coords)\r\n },\r\n getPoint: function() {\r\n return this._point\r\n },\r\n shift: function(x, y) {\r\n var that = this;\r\n if (that._textContent) {\r\n that._insideGroup.attr({\r\n translateX: that._x = _round(x - that._bBox.x),\r\n translateY: that._y = _round(y - that._bBox.y)\r\n });\r\n if (that._connector) {\r\n that._connector.attr({\r\n points: that._getConnectorPoints()\r\n })\r\n }\r\n }\r\n return that\r\n },\r\n getBoundingRect: function() {\r\n return this._shiftBBox(this._bBox)\r\n },\r\n _shiftBBox: function(bBox) {\r\n return this._textContent ? {\r\n x: bBox.x + this._x,\r\n y: bBox.y + this._y,\r\n width: bBox.width,\r\n height: bBox.height\r\n } : {}\r\n },\r\n getLayoutOptions: function() {\r\n var options = this._options;\r\n return {\r\n alignment: options.alignment,\r\n background: checkBackground(options.background),\r\n horizontalOffset: options.horizontalOffset,\r\n verticalOffset: options.verticalOffset,\r\n radialOffset: options.radialOffset,\r\n position: options.position,\r\n connectorOffset: (checkConnector(options.connector) ? CONNECTOR_LENGTH : 0) + (checkBackground(options.background) ? LABEL_BACKGROUND_PADDING_X : 0)\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/sparklines/base_sparkline.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _utils = require(\"../core/utils\");\r\nvar _translator2d = require(\"../translators/translator2d\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _tooltip = require(\"../core/tooltip\");\r\nvar _export = require(\"../core/export\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DEFAULT_LINE_SPACING = 2;\r\nvar EVENT_NS = \"sparkline-tooltip\";\r\nvar POINTER_ACTION = (0, _index.addNamespace)([_pointer.default.down, _pointer.default.move], EVENT_NS);\r\nvar _extend = _extend2.extend;\r\nvar _floor = Math.floor;\r\n\r\nfunction inCanvas(_ref, x, y) {\r\n var left = _ref.left,\r\n top = _ref.top,\r\n bottom = _ref.bottom,\r\n right = _ref.right,\r\n width = _ref.width,\r\n height = _ref.height;\r\n return (0, _utils.pointInCanvas)({\r\n left: left,\r\n top: top,\r\n right: width - right,\r\n bottom: height - bottom,\r\n width: width,\r\n height: height\r\n }, x, y)\r\n}\r\n\r\nfunction pointerHandler(_ref2) {\r\n var data = _ref2.data;\r\n var that = data.widget;\r\n that._enableOutHandler();\r\n that._showTooltip()\r\n}\r\n\r\nfunction generateDefaultCustomizeTooltipCallback(fontOptions, rtlEnabled) {\r\n var lineSpacing = fontOptions.lineSpacing;\r\n var lineHeight = (void 0 !== lineSpacing && null !== lineSpacing ? lineSpacing : DEFAULT_LINE_SPACING) + fontOptions.size;\r\n return function(customizeObject) {\r\n var html = \"\";\r\n var vt = customizeObject.valueText;\r\n for (var i = 0; i < vt.length; i += 2) {\r\n html += \"\" + vt[i] + \"\" + vt[i + 1] + \"\"\r\n }\r\n return {\r\n html: \"\" + html + \"
\"\r\n }\r\n }\r\n}\r\n\r\nfunction generateCustomizeTooltipCallback(customizeTooltip, fontOptions, rtlEnabled) {\r\n var defaultCustomizeTooltip = generateDefaultCustomizeTooltipCallback(fontOptions, rtlEnabled);\r\n if ((0, _type.isFunction)(customizeTooltip)) {\r\n return function(customizeObject) {\r\n var res = customizeTooltip.call(customizeObject, customizeObject);\r\n if (!(\"html\" in res) && !(\"text\" in res)) {\r\n _extend(res, defaultCustomizeTooltip.call(customizeObject, customizeObject))\r\n }\r\n return res\r\n }\r\n } else {\r\n return defaultCustomizeTooltip\r\n }\r\n}\r\n\r\nfunction createAxis(isHorizontal) {\r\n var translator = new _translator2d.Translator2D({}, {}, {\r\n shiftZeroValue: !isHorizontal,\r\n isHorizontal: !!isHorizontal\r\n });\r\n return {\r\n getTranslator: function() {\r\n return translator\r\n },\r\n update: function(range, canvas, options) {\r\n translator.update(range, canvas, options)\r\n },\r\n getVisibleArea: function() {\r\n var visibleArea = translator.getCanvasVisibleArea();\r\n return [visibleArea.min, visibleArea.max]\r\n },\r\n visualRange: _common.noop,\r\n calculateInterval: _common.noop,\r\n getMarginOptions: function() {\r\n return {}\r\n }\r\n }\r\n}\r\nvar _initTooltip;\r\nvar BaseSparkline = _base_widget.default.inherit({\r\n _getLayoutItems: _common.noop,\r\n _useLinks: false,\r\n _themeDependentChanges: [\"OPTIONS\"],\r\n _initCore: function() {\r\n var that = this;\r\n that._tooltipTracker = that._renderer.root;\r\n that._tooltipTracker.attr({\r\n \"pointer-events\": \"visible\"\r\n });\r\n that._createHtmlElements();\r\n that._initTooltipEvents();\r\n that._argumentAxis = createAxis(true);\r\n that._valueAxis = createAxis()\r\n },\r\n _getDefaultSize: function() {\r\n return this._defaultSize\r\n },\r\n _disposeCore: function() {\r\n this._disposeWidgetElements();\r\n this._disposeTooltipEvents();\r\n this._ranges = null\r\n },\r\n _optionChangesOrder: [\"OPTIONS\"],\r\n _change_OPTIONS: function() {\r\n this._prepareOptions();\r\n this._change([\"UPDATE\"])\r\n },\r\n _customChangesOrder: [\"UPDATE\"],\r\n _change_UPDATE: function() {\r\n this._update()\r\n },\r\n _update: function() {\r\n var that = this;\r\n if (that._tooltipShown) {\r\n that._tooltipShown = false;\r\n that._tooltip.hide()\r\n }\r\n that._cleanWidgetElements();\r\n that._updateWidgetElements();\r\n that._drawWidgetElements()\r\n },\r\n _updateWidgetElements: function() {\r\n var canvas = this._getCorrectCanvas();\r\n this._updateRange();\r\n this._argumentAxis.update(this._ranges.arg, canvas, this._getStick());\r\n this._valueAxis.update(this._ranges.val, canvas)\r\n },\r\n _getStick: function() {},\r\n _applySize: function(rect) {\r\n this._allOptions.size = {\r\n width: rect[2] - rect[0],\r\n height: rect[3] - rect[1]\r\n };\r\n this._change([\"UPDATE\"])\r\n },\r\n _setupResizeHandler: _common.noop,\r\n _prepareOptions: function() {\r\n return _extend(true, {}, this._themeManager.theme(), this.option())\r\n },\r\n _getTooltipCoords: function() {\r\n var canvas = this._canvas;\r\n var rootOffset = this._renderer.getRootOffset();\r\n return {\r\n x: canvas.width / 2 + rootOffset.left,\r\n y: canvas.height / 2 + rootOffset.top\r\n }\r\n },\r\n _initTooltipEvents: function() {\r\n var data = {\r\n widget: this\r\n };\r\n this._renderer.root.off(\".\" + EVENT_NS).on(POINTER_ACTION, data, pointerHandler)\r\n },\r\n _showTooltip: function() {\r\n var that = this;\r\n var tooltip;\r\n if (!that._tooltipShown) {\r\n that._tooltipShown = true;\r\n tooltip = that._getTooltip();\r\n tooltip.isEnabled() && that._tooltip.show(that._getTooltipData(), that._getTooltipCoords(), {})\r\n }\r\n },\r\n _hideTooltip: function() {\r\n if (this._tooltipShown) {\r\n this._tooltipShown = false;\r\n this._tooltip.hide()\r\n }\r\n },\r\n _stopCurrentHandling: function() {\r\n this._hideTooltip()\r\n },\r\n _enableOutHandler: function() {\r\n var that = this;\r\n if (that._outHandler) {\r\n return\r\n }\r\n var handler = function(_ref3) {\r\n var pageX = _ref3.pageX,\r\n pageY = _ref3.pageY;\r\n var _that$_renderer$getRo = that._renderer.getRootOffset(),\r\n left = _that$_renderer$getRo.left,\r\n top = _that$_renderer$getRo.top;\r\n var x = _floor(pageX - left);\r\n var y = _floor(pageY - top);\r\n if (!inCanvas(that._canvas, x, y)) {\r\n that._hideTooltip();\r\n that._disableOutHandler()\r\n }\r\n };\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), POINTER_ACTION, handler);\r\n this._outHandler = handler\r\n },\r\n _disableOutHandler: function() {\r\n this._outHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), POINTER_ACTION, this._outHandler);\r\n this._outHandler = null\r\n },\r\n _disposeTooltipEvents: function() {\r\n this._tooltipTracker.off();\r\n this._disableOutHandler();\r\n this._renderer.root.off(\".\" + EVENT_NS)\r\n },\r\n _getTooltip: function() {\r\n var that = this;\r\n if (!that._tooltip) {\r\n _initTooltip.apply(this, arguments);\r\n that._setTooltipRendererOptions(that._tooltipRendererOptions);\r\n that._tooltipRendererOptions = null;\r\n that._setTooltipOptions()\r\n }\r\n return that._tooltip\r\n }\r\n});\r\nvar _default = BaseSparkline;\r\nexports.default = _default;\r\nBaseSparkline.addPlugin(_tooltip.plugin);\r\n_initTooltip = BaseSparkline.prototype._initTooltip;\r\nBaseSparkline.prototype._initTooltip = _common.noop;\r\nvar _disposeTooltip = BaseSparkline.prototype._disposeTooltip;\r\nBaseSparkline.prototype._disposeTooltip = function() {\r\n if (this._tooltip) {\r\n _disposeTooltip.apply(this, arguments)\r\n }\r\n};\r\nBaseSparkline.prototype._setTooltipRendererOptions = function() {\r\n var options = this._getRendererOptions();\r\n if (this._tooltip) {\r\n this._tooltip.setRendererOptions(options)\r\n } else {\r\n this._tooltipRendererOptions = options\r\n }\r\n};\r\nBaseSparkline.prototype._setTooltipOptions = function() {\r\n var tooltip = this._tooltip;\r\n var options = tooltip && this._getOption(\"tooltip\");\r\n tooltip && tooltip.update(_extend({}, options, {\r\n customizeTooltip: generateCustomizeTooltipCallback(options.customizeTooltip, options.font, this.option(\"rtlEnabled\")),\r\n enabled: options.enabled && this._isTooltipEnabled()\r\n }))\r\n};\r\nvar exportPlugin = (0, _extend2.extend)(true, {}, _export.plugin, {\r\n init: _common.noop,\r\n dispose: _common.noop,\r\n customize: null,\r\n members: {\r\n _getExportMenuOptions: null\r\n }\r\n});\r\nBaseSparkline.addPlugin(exportPlugin);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/pie_point.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _utils = require(\"../../core/utils\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _consts = _interopRequireDefault(require(\"../../components/consts\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _round = Math.round;\r\nvar _sqrt = Math.sqrt;\r\nvar _acos = Math.acos;\r\nvar DEG = 180 / Math.PI;\r\nvar _abs = Math.abs;\r\nvar RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;\r\nvar _default = _extend({}, _symbol_point.default, {\r\n _updateData: function(data, argumentChanged) {\r\n var that = this;\r\n _symbol_point.default._updateData.call(this, data);\r\n if (argumentChanged || !(0, _type.isDefined)(that._visible)) {\r\n that._visible = true\r\n }\r\n that.minValue = that.initialMinValue = that.originalMinValue = (0, _type.isDefined)(data.minValue) ? data.minValue : 0\r\n },\r\n animate: function(complete, duration, delay) {\r\n var that = this;\r\n that.graphic.animate({\r\n x: that.centerX,\r\n y: that.centerY,\r\n outerRadius: that.radiusOuter,\r\n innerRadius: that.radiusInner,\r\n startAngle: that.toAngle,\r\n endAngle: that.fromAngle\r\n }, {\r\n delay: delay,\r\n partitionDuration: duration\r\n }, complete)\r\n },\r\n correctPosition: function(correction) {\r\n var that = this;\r\n that.correctRadius(correction);\r\n that.correctLabelRadius(correction.radiusOuter + RADIAL_LABEL_INDENT);\r\n that.centerX = correction.centerX;\r\n that.centerY = correction.centerY\r\n },\r\n correctRadius: function(correction) {\r\n this.radiusInner = correction.radiusInner;\r\n this.radiusOuter = correction.radiusOuter\r\n },\r\n correctLabelRadius: function(radiusLabels) {\r\n this.radiusLabels = radiusLabels\r\n },\r\n correctValue: function(correction, percent, base) {\r\n var that = this;\r\n that.value = (base || that.normalInitialValue) + correction;\r\n that.minValue = correction;\r\n that.percent = percent;\r\n that._label.setDataField(\"percent\", percent)\r\n },\r\n _updateLabelData: function() {\r\n this._label.setData(this._getLabelFormatObject())\r\n },\r\n _getShiftLabelCoords: function() {\r\n var that = this;\r\n var bBox = that._label.getBoundingRect();\r\n var coord = that._getLabelCoords(that._label);\r\n var visibleArea = that._getVisibleArea();\r\n if (that._isLabelDrawingWithoutPoints) {\r\n return that._checkLabelPosition(coord, bBox, visibleArea)\r\n } else {\r\n return that._getLabelExtraCoord(coord, that._checkVerticalLabelPosition(coord, bBox, visibleArea), bBox)\r\n }\r\n },\r\n _getLabelPosition: function(options) {\r\n return options.position\r\n },\r\n getAnnotationCoords: function(location) {\r\n return this._getElementCoords(\"edge\" !== location ? \"inside\" : \"outside\", this.radiusOuter, 0)\r\n },\r\n _getElementCoords: function(position, elementRadius, radialOffset) {\r\n var bBox = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n var that = this;\r\n var angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);\r\n var radiusInner = that.radiusInner;\r\n var radiusOuter = that.radiusOuter;\r\n var columnsPosition = \"columns\" === position;\r\n var rad;\r\n var x;\r\n if (\"inside\" === position) {\r\n rad = radiusInner + (radiusOuter - radiusInner) / 2 + radialOffset;\r\n x = that.centerX + rad * angleFunctions.cos - bBox.width / 2\r\n } else {\r\n rad = elementRadius + radialOffset;\r\n if (angleFunctions.cos > .1 || columnsPosition && angleFunctions.cos >= 0) {\r\n x = that.centerX + rad * angleFunctions.cos\r\n } else {\r\n if (angleFunctions.cos < -.1 || columnsPosition && angleFunctions.cos < 0) {\r\n x = that.centerX + rad * angleFunctions.cos - bBox.width\r\n } else {\r\n x = that.centerX + rad * angleFunctions.cos - bBox.width / 2\r\n }\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: _round(that.centerY - rad * angleFunctions.sin - bBox.height / 2)\r\n }\r\n },\r\n _getLabelCoords: function(label) {\r\n var that = this;\r\n var bBox = label.getBoundingRect();\r\n var options = label.getLayoutOptions();\r\n var position = that._getLabelPosition(options);\r\n return that._getElementCoords(position, that.radiusLabels, options.radialOffset, bBox)\r\n },\r\n _correctLabelCoord: function(coord, moveLabelsFromCenter) {\r\n var that = this;\r\n var label = that._label;\r\n var bBox = label.getBoundingRect();\r\n var labelWidth = bBox.width;\r\n var options = label.getLayoutOptions();\r\n var visibleArea = that._getVisibleArea();\r\n var rightBorderX = visibleArea.maxX - labelWidth;\r\n var leftBorderX = visibleArea.minX;\r\n var angleOfPoint = (0, _utils.normalizeAngle)(that.middleAngle);\r\n var centerX = that.centerX;\r\n var connectorOffset = options.connectorOffset;\r\n var x = coord.x;\r\n if (\"columns\" === options.position) {\r\n if (angleOfPoint <= 90 || angleOfPoint >= 270) {\r\n x = rightBorderX\r\n } else {\r\n x = leftBorderX\r\n }\r\n coord.x = x\r\n } else {\r\n if (\"inside\" !== options.position && moveLabelsFromCenter) {\r\n if (angleOfPoint <= 90 || angleOfPoint >= 270) {\r\n if (x - connectorOffset < centerX) {\r\n x = centerX + connectorOffset\r\n }\r\n } else {\r\n if (x + labelWidth + connectorOffset > centerX) {\r\n x = centerX - labelWidth - connectorOffset\r\n }\r\n }\r\n coord.x = x\r\n }\r\n }\r\n return coord\r\n },\r\n drawLabel: function() {\r\n this.translate();\r\n this._isLabelDrawingWithoutPoints = true;\r\n this._drawLabel();\r\n this._isLabelDrawingWithoutPoints = false\r\n },\r\n updateLabelCoord: function(moveLabelsFromCenter) {\r\n var that = this;\r\n var bBox = that._label.getBoundingRect();\r\n var coord = that._correctLabelCoord(bBox, moveLabelsFromCenter);\r\n coord = that._checkHorizontalLabelPosition(coord, bBox, that._getVisibleArea());\r\n that._label.shift(_round(coord.x), _round(bBox.y))\r\n },\r\n _checkVerticalLabelPosition: function(coord, box, visibleArea) {\r\n var x = coord.x;\r\n var y = coord.y;\r\n if (coord.y + box.height > visibleArea.maxY) {\r\n y = visibleArea.maxY - box.height\r\n } else {\r\n if (coord.y < visibleArea.minY) {\r\n y = visibleArea.minY\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getLabelExtraCoord: function(coord, shiftCoord, box) {\r\n return coord.y !== shiftCoord.y ? (0, _utils.getVerticallyShiftedAngularCoords)({\r\n x: coord.x,\r\n y: coord.y,\r\n width: box.width,\r\n height: box.height\r\n }, shiftCoord.y - coord.y, {\r\n x: this.centerX,\r\n y: this.centerY\r\n }) : coord\r\n },\r\n _checkHorizontalLabelPosition: function(coord, box, visibleArea) {\r\n var x = coord.x;\r\n var y = coord.y;\r\n if (coord.x + box.width > visibleArea.maxX) {\r\n x = visibleArea.maxX - box.width\r\n } else {\r\n if (coord.x < visibleArea.minX) {\r\n x = visibleArea.minX\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n applyWordWrap: function(moveLabelsFromCenter) {\r\n var that = this;\r\n var label = that._label;\r\n var box = label.getBoundingRect();\r\n var visibleArea = that._getVisibleArea();\r\n var position = label.getLayoutOptions().position;\r\n var width = box.width;\r\n var rowCountChanged = false;\r\n if (\"columns\" === position && that.series.index > 0) {\r\n width = visibleArea.maxX - that.centerX - that.radiusLabels\r\n } else {\r\n if (\"inside\" === position) {\r\n if (width > visibleArea.maxX - visibleArea.minX) {\r\n width = visibleArea.maxX - visibleArea.minX\r\n }\r\n } else {\r\n if (moveLabelsFromCenter && box.x < that.centerX && box.width + box.x > that.centerX) {\r\n width = Math.floor((visibleArea.maxX - visibleArea.minX) / 2)\r\n } else {\r\n if (box.x + width > visibleArea.maxX) {\r\n width = visibleArea.maxX - box.x\r\n } else {\r\n if (box.x < visibleArea.minX) {\r\n width = box.x + width - visibleArea.minX\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (width < box.width) {\r\n rowCountChanged = label.fit(width)\r\n }\r\n return rowCountChanged\r\n },\r\n setLabelTrackerData: function() {\r\n this._label.setTrackerData(this)\r\n },\r\n _checkLabelPosition: function(coord, bBox, visibleArea) {\r\n coord = this._checkHorizontalLabelPosition(coord, bBox, visibleArea);\r\n return this._checkVerticalLabelPosition(coord, bBox, visibleArea)\r\n },\r\n _getLabelConnector: function() {\r\n var that = this;\r\n var rad = that.radiusOuter;\r\n var seriesStyle = that._options.styles.normal;\r\n var strokeWidthBy2 = seriesStyle[\"stroke-width\"] / 2;\r\n var borderWidth = that.series.getOptions().containerBackgroundColor === seriesStyle.stroke ? _round(strokeWidthBy2) : _round(-strokeWidthBy2);\r\n var angleFunctions = (0, _utils.getCosAndSin)(_round(that.middleAngle));\r\n return {\r\n x: _round(that.centerX + (rad - borderWidth) * angleFunctions.cos),\r\n y: _round(that.centerY - (rad - borderWidth) * angleFunctions.sin),\r\n angle: that.middleAngle\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled, firstDrawing) {\r\n var that = this;\r\n var radiusOuter = that.radiusOuter;\r\n var radiusInner = that.radiusInner;\r\n var fromAngle = that.fromAngle;\r\n var toAngle = that.toAngle;\r\n if (animationEnabled) {\r\n radiusInner = radiusOuter = 0;\r\n if (!firstDrawing) {\r\n fromAngle = toAngle = that.shiftedAngle\r\n }\r\n }\r\n that.graphic = renderer.arc(that.centerX, that.centerY, radiusInner, radiusOuter, toAngle, fromAngle).attr({\r\n \"stroke-linejoin\": \"round\"\r\n }).smartAttr(that._getStyle()).data({\r\n \"chart-data-point\": that\r\n }).sharp().append(group)\r\n },\r\n getTooltipParams: function() {\r\n var that = this;\r\n var angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);\r\n var radiusInner = that.radiusInner;\r\n var radiusOuter = that.radiusOuter;\r\n return {\r\n x: that.centerX + (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.cos,\r\n y: that.centerY - (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.sin,\r\n offset: 0\r\n }\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var angle = that.shiftedAngle || 0;\r\n var value = that.value;\r\n var minValue = that.minValue;\r\n var translator = that._getValTranslator();\r\n that.fromAngle = translator.translate(minValue) + angle;\r\n that.toAngle = translator.translate(value) + angle;\r\n that.middleAngle = translator.translate((value - minValue) / 2 + minValue) + angle;\r\n if (!that.isVisible()) {\r\n that.middleAngle = that.toAngle = that.fromAngle = that.fromAngle || angle\r\n }\r\n },\r\n getMarkerVisibility: function() {\r\n return true\r\n },\r\n _updateMarker: function(animationEnabled, style, _, callback) {\r\n var that = this;\r\n if (!animationEnabled) {\r\n style = _extend({\r\n x: that.centerX,\r\n y: that.centerY,\r\n outerRadius: that.radiusOuter,\r\n innerRadius: that.radiusInner,\r\n startAngle: that.toAngle,\r\n endAngle: that.fromAngle\r\n }, style)\r\n }\r\n that.graphic.smartAttr(style).sharp();\r\n callback && callback()\r\n },\r\n getLegendStyles: function() {\r\n return this._styles.legendStyles\r\n },\r\n isInVisibleArea: function() {\r\n return true\r\n },\r\n hide: function() {\r\n var that = this;\r\n if (that._visible) {\r\n that._visible = false;\r\n that.hideTooltip();\r\n that._options.visibilityChanged()\r\n }\r\n },\r\n show: function() {\r\n var that = this;\r\n if (!that._visible) {\r\n that._visible = true;\r\n that._options.visibilityChanged()\r\n }\r\n },\r\n setInvisibility: function() {\r\n this._label.draw(false)\r\n },\r\n isVisible: function() {\r\n return this._visible\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var formatObject = _symbol_point.default._getFormatObject.call(this, tooltip);\r\n var percent = this.percent;\r\n formatObject.percent = percent;\r\n formatObject.percentText = tooltip.formatValue(percent, \"percent\");\r\n return formatObject\r\n },\r\n getColor: function() {\r\n return this._styles.normal.fill\r\n },\r\n coordsIn: function(x, y) {\r\n var that = this;\r\n var lx = x - that.centerX;\r\n var ly = y - that.centerY;\r\n var r = _sqrt(lx * lx + ly * ly);\r\n var fromAngle = that.fromAngle % 360;\r\n var toAngle = that.toAngle % 360;\r\n var angle;\r\n if (r < that.radiusInner || r > that.radiusOuter || 0 === r) {\r\n return false\r\n }\r\n angle = _acos(lx / r) * DEG * (ly > 0 ? -1 : 1);\r\n if (angle < 0) {\r\n angle += 360\r\n }\r\n if (fromAngle === toAngle && _abs(that.toAngle - that.fromAngle) > 1e-4) {\r\n return true\r\n } else {\r\n return fromAngle >= toAngle ? angle <= fromAngle && angle >= toAngle : !(angle >= fromAngle && angle <= toAngle)\r\n }\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/range_symbol_point.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _label = require(\"./label\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _type = require(\"../../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _min = _math.min;\r\nvar _max = _math.max;\r\nvar _round = _math.round;\r\nvar DEFAULT_IMAGE_WIDTH = 20;\r\nvar DEFAULT_IMAGE_HEIGHT = 20;\r\nvar _default = _extend({}, _symbol_point.default, {\r\n deleteLabel: function() {\r\n var that = this;\r\n that._topLabel.dispose();\r\n that._topLabel = null;\r\n that._bottomLabel.dispose();\r\n that._bottomLabel = null\r\n },\r\n hideMarker: function(type) {\r\n var graphic = this.graphic;\r\n var marker = graphic && graphic[type + \"Marker\"];\r\n var label = this[\"_\" + type + \"Label\"];\r\n if (marker && \"hidden\" !== marker.attr(\"visibility\")) {\r\n marker.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n label.draw(false)\r\n },\r\n setInvisibility: function() {\r\n this.hideMarker(\"top\");\r\n this.hideMarker(\"bottom\")\r\n },\r\n clearVisibility: function() {\r\n var that = this;\r\n var graphic = that.graphic;\r\n var topMarker = graphic && graphic.topMarker;\r\n var bottomMarker = graphic && graphic.bottomMarker;\r\n if (topMarker && topMarker.attr(\"visibility\")) {\r\n topMarker.attr({\r\n visibility: null\r\n })\r\n }\r\n if (bottomMarker && bottomMarker.attr(\"visibility\")) {\r\n bottomMarker.attr({\r\n visibility: null\r\n })\r\n }\r\n },\r\n clearMarker: function() {\r\n var that = this;\r\n var graphic = that.graphic;\r\n var topMarker = graphic && graphic.topMarker;\r\n var bottomMarker = graphic && graphic.bottomMarker;\r\n var emptySettings = that._emptySettings;\r\n topMarker && topMarker.attr(emptySettings);\r\n bottomMarker && bottomMarker.attr(emptySettings)\r\n },\r\n _getLabelPosition: function(markerType) {\r\n var position;\r\n var labelsInside = \"inside\" === this._options.label.position;\r\n if (!this._options.rotated) {\r\n position = \"top\" === markerType ^ labelsInside ? \"top\" : \"bottom\"\r\n } else {\r\n position = \"top\" === markerType ^ labelsInside ? \"right\" : \"left\"\r\n }\r\n return position\r\n },\r\n _getLabelMinFormatObject: function() {\r\n var that = this;\r\n return {\r\n index: 0,\r\n argument: that.initialArgument,\r\n value: that.initialMinValue,\r\n seriesName: that.series.name,\r\n originalValue: that.originalMinValue,\r\n originalArgument: that.originalArgument,\r\n point: that\r\n }\r\n },\r\n _updateLabelData: function() {\r\n var maxFormatObject = this._getLabelFormatObject();\r\n maxFormatObject.index = 1;\r\n this._topLabel.setData(maxFormatObject);\r\n this._bottomLabel.setData(this._getLabelMinFormatObject())\r\n },\r\n _updateLabelOptions: function() {\r\n var that = this;\r\n var options = this._options.label;\r\n (!that._topLabel || !that._bottomLabel) && that._createLabel();\r\n that._topLabel.setOptions(options);\r\n that._bottomLabel.setOptions(options)\r\n },\r\n _createLabel: function() {\r\n var options = {\r\n renderer: this.series._renderer,\r\n labelsGroup: this.series._labelsGroup,\r\n point: this\r\n };\r\n this._topLabel = new _label.Label(options);\r\n this._bottomLabel = new _label.Label(options)\r\n },\r\n _getGraphicBBox: function(location) {\r\n var options = this._options;\r\n var images = this._getImage(options.image);\r\n var image = \"top\" === location ? this._checkImage(images.top) : this._checkImage(images.bottom);\r\n var bBox;\r\n var coord = this._getPositionFromLocation(location);\r\n if (options.visible) {\r\n bBox = image ? this._getImageBBox(coord.x, coord.y) : this._getSymbolBBox(coord.x, coord.y, options.styles.normal.r)\r\n } else {\r\n bBox = {\r\n x: coord.x,\r\n y: coord.y,\r\n width: 0,\r\n height: 0\r\n }\r\n }\r\n return bBox\r\n },\r\n _getPositionFromLocation: function(location) {\r\n var x;\r\n var y;\r\n var isTop = \"top\" === location;\r\n if (!this._options.rotated) {\r\n x = this.x;\r\n y = isTop ? _min(this.y, this.minY) : _max(this.y, this.minY)\r\n } else {\r\n x = isTop ? _max(this.x, this.minX) : _min(this.x, this.minX);\r\n y = this.y\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _checkOverlay: function(bottomCoord, topCoord, topValue) {\r\n return bottomCoord < topCoord + topValue\r\n },\r\n _getOverlayCorrections: function(topCoords, bottomCoords) {\r\n var rotated = this._options.rotated;\r\n var coordSelector = !rotated ? \"y\" : \"x\";\r\n var valueSelector = !rotated ? \"height\" : \"width\";\r\n var visibleArea = this.series.getValueAxis().getVisibleArea();\r\n var minBound = visibleArea[0];\r\n var maxBound = visibleArea[1];\r\n var delta = _round((topCoords[coordSelector] + topCoords[valueSelector] - bottomCoords[coordSelector]) / 2);\r\n var coord1 = topCoords[coordSelector] - delta;\r\n var coord2 = bottomCoords[coordSelector] + delta;\r\n if (coord1 < minBound) {\r\n delta = minBound - coord1;\r\n coord1 += delta;\r\n coord2 += delta\r\n } else {\r\n if (coord2 + bottomCoords[valueSelector] > maxBound) {\r\n delta = maxBound - coord2 - bottomCoords[valueSelector];\r\n coord1 += delta;\r\n coord2 += delta\r\n }\r\n }\r\n return {\r\n coord1: coord1,\r\n coord2: coord2\r\n }\r\n },\r\n _checkLabelsOverlay: function(topLocation) {\r\n var that = this;\r\n var topCoords = that._topLabel.getBoundingRect();\r\n var bottomCoords = that._bottomLabel.getBoundingRect();\r\n var corrections = {};\r\n if (!that._options.rotated) {\r\n if (\"top\" === topLocation) {\r\n if (this._checkOverlay(bottomCoords.y, topCoords.y, topCoords.height)) {\r\n corrections = this._getOverlayCorrections(topCoords, bottomCoords);\r\n that._topLabel.shift(topCoords.x, corrections.coord1);\r\n that._bottomLabel.shift(bottomCoords.x, corrections.coord2)\r\n }\r\n } else {\r\n if (this._checkOverlay(topCoords.y, bottomCoords.y, bottomCoords.height)) {\r\n corrections = this._getOverlayCorrections(bottomCoords, topCoords);\r\n that._topLabel.shift(topCoords.x, corrections.coord2);\r\n that._bottomLabel.shift(bottomCoords.x, corrections.coord1)\r\n }\r\n }\r\n } else {\r\n if (\"top\" === topLocation) {\r\n if (this._checkOverlay(topCoords.x, bottomCoords.x, bottomCoords.width)) {\r\n corrections = this._getOverlayCorrections(bottomCoords, topCoords);\r\n that._topLabel.shift(corrections.coord2, topCoords.y);\r\n that._bottomLabel.shift(corrections.coord1, bottomCoords.y)\r\n }\r\n } else {\r\n if (this._checkOverlay(bottomCoords.x, topCoords.x, topCoords.width)) {\r\n corrections = this._getOverlayCorrections(topCoords, bottomCoords);\r\n that._topLabel.shift(corrections.coord1, topCoords.y);\r\n that._bottomLabel.shift(corrections.coord2, bottomCoords.y)\r\n }\r\n }\r\n }\r\n },\r\n _drawLabel: function() {\r\n var that = this;\r\n var labels = [];\r\n var notInverted = that._options.rotated ? that.x >= that.minX : that.y < that.minY;\r\n var customVisibility = that._getCustomLabelVisibility();\r\n var topLabel = that._topLabel;\r\n var bottomLabel = that._bottomLabel;\r\n topLabel.pointPosition = notInverted ? \"top\" : \"bottom\";\r\n bottomLabel.pointPosition = notInverted ? \"bottom\" : \"top\";\r\n if ((that.series.getLabelVisibility() || customVisibility) && that.hasValue() && false !== customVisibility) {\r\n false !== that.visibleTopMarker && labels.push(topLabel);\r\n false !== that.visibleBottomMarker && labels.push(bottomLabel);\r\n (0, _iterator.each)(labels, function(_, label) {\r\n label.draw(true)\r\n });\r\n that._checkLabelsOverlay(that._topLabel.pointPosition)\r\n } else {\r\n topLabel.draw(false);\r\n bottomLabel.draw(false)\r\n }\r\n },\r\n _getImage: function(imageOption) {\r\n var image = {};\r\n if ((0, _type.isDefined)(imageOption)) {\r\n if (\"string\" === typeof imageOption) {\r\n image.top = image.bottom = imageOption\r\n } else {\r\n image.top = {\r\n url: \"string\" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMaxPoint,\r\n width: \"number\" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMaxPoint,\r\n height: \"number\" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMaxPoint\r\n };\r\n image.bottom = {\r\n url: \"string\" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMinPoint,\r\n width: \"number\" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMinPoint,\r\n height: \"number\" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMinPoint\r\n }\r\n }\r\n }\r\n return image\r\n },\r\n _checkSymbol: function(oldOptions, newOptions) {\r\n var that = this;\r\n var oldSymbol = oldOptions.symbol;\r\n var newSymbol = newOptions.symbol;\r\n var symbolChanged = \"circle\" === oldSymbol && \"circle\" !== newSymbol || \"circle\" !== oldSymbol && \"circle\" === newSymbol;\r\n var oldImages = that._getImage(oldOptions.image);\r\n var newImages = that._getImage(newOptions.image);\r\n var topImageChanged = that._checkImage(oldImages.top) !== that._checkImage(newImages.top);\r\n var bottomImageChanged = that._checkImage(oldImages.bottom) !== that._checkImage(newImages.bottom);\r\n return symbolChanged || topImageChanged || bottomImageChanged\r\n },\r\n _getSettingsForTwoMarkers: function(style) {\r\n var that = this;\r\n var options = that._options;\r\n var settings = {};\r\n var x = options.rotated ? _min(that.x, that.minX) : that.x;\r\n var y = options.rotated ? that.y : _min(that.y, that.minY);\r\n var radius = style.r;\r\n var points = that._populatePointShape(options.symbol, radius);\r\n settings.top = _extend({\r\n translateX: x + that.width,\r\n translateY: y,\r\n r: radius\r\n }, style);\r\n settings.bottom = _extend({\r\n translateX: x,\r\n translateY: y + that.height,\r\n r: radius\r\n }, style);\r\n if (points) {\r\n settings.top.points = settings.bottom.points = points\r\n }\r\n return settings\r\n },\r\n _hasGraphic: function() {\r\n return this.graphic && this.graphic.topMarker && this.graphic.bottomMarker\r\n },\r\n _drawOneMarker: function(renderer, markerType, imageSettings, settings) {\r\n var that = this;\r\n var graphic = that.graphic;\r\n if (graphic[markerType]) {\r\n that._updateOneMarker(markerType, settings)\r\n } else {\r\n graphic[markerType] = that._createMarker(renderer, graphic, imageSettings, settings)\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled, firstDrawing, style) {\r\n var that = this;\r\n var settings = that._getSettingsForTwoMarkers(style || that._getStyle());\r\n var image = that._getImage(that._options.image);\r\n if (that._checkImage(image.top)) {\r\n settings.top = that._getImageSettings(settings.top, image.top)\r\n }\r\n if (that._checkImage(image.bottom)) {\r\n settings.bottom = that._getImageSettings(settings.bottom, image.bottom)\r\n }\r\n that.graphic = that.graphic || renderer.g().append(group);\r\n that.visibleTopMarker && that._drawOneMarker(renderer, \"topMarker\", image.top, settings.top);\r\n that.visibleBottomMarker && that._drawOneMarker(renderer, \"bottomMarker\", image.bottom, settings.bottom)\r\n },\r\n _getSettingsForTracker: function(radius) {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n return {\r\n translateX: rotated ? _min(that.x, that.minX) - radius : that.x - radius,\r\n translateY: rotated ? that.y - radius : _min(that.y, that.minY) - radius,\r\n width: that.width + 2 * radius,\r\n height: that.height + 2 * radius\r\n }\r\n },\r\n isInVisibleArea: function() {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var argument = !rotated ? that.x : that.y;\r\n var maxValue = !rotated ? _max(that.minY, that.y) : _max(that.minX, that.x);\r\n var minValue = !rotated ? _min(that.minY, that.y) : _min(that.minX, that.x);\r\n var tmp;\r\n var visibleTopMarker;\r\n var visibleBottomMarker;\r\n var visibleRangeArea = true;\r\n var visibleArgArea = that.series.getArgumentAxis().getVisibleArea();\r\n var visibleValArea = that.series.getValueAxis().getVisibleArea();\r\n var notVisibleByArg = visibleArgArea[1] < argument || visibleArgArea[0] > argument;\r\n var notVisibleByVal = visibleValArea[0] > minValue && visibleValArea[0] > maxValue || visibleValArea[1] < minValue && visibleValArea[1] < maxValue;\r\n if (notVisibleByArg || notVisibleByVal) {\r\n visibleTopMarker = visibleBottomMarker = visibleRangeArea = false\r\n } else {\r\n visibleTopMarker = visibleValArea[0] <= minValue && visibleValArea[1] > minValue;\r\n visibleBottomMarker = visibleValArea[0] < maxValue && visibleValArea[1] >= maxValue;\r\n if (rotated) {\r\n tmp = visibleTopMarker;\r\n visibleTopMarker = visibleBottomMarker;\r\n visibleBottomMarker = tmp\r\n }\r\n }\r\n that.visibleTopMarker = visibleTopMarker;\r\n that.visibleBottomMarker = visibleBottomMarker;\r\n return visibleRangeArea\r\n },\r\n getTooltipParams: function() {\r\n var that = this;\r\n var x;\r\n var y;\r\n var rotated = that._options.rotated;\r\n var minValue = !rotated ? _min(that.y, that.minY) : _min(that.x, that.minX);\r\n var side = !rotated ? \"height\" : \"width\";\r\n var visibleArea = that._getVisibleArea();\r\n var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n var min = _max(minVisible, minValue);\r\n var max = _min(maxVisible, minValue + that[side]);\r\n if (!rotated) {\r\n x = that.x;\r\n y = min + (max - min) / 2\r\n } else {\r\n y = that.y;\r\n x = min + (max - min) / 2\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n offset: 0\r\n }\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n _symbol_point.default._translate.call(that);\r\n that.height = rotated ? 0 : _abs(that.minY - that.y);\r\n that.width = rotated ? _abs(that.x - that.minX) : 0\r\n },\r\n hasCoords: function() {\r\n return _symbol_point.default.hasCoords.call(this) && !(null === this.minX || null === this.minY)\r\n },\r\n _updateData: function(data) {\r\n var that = this;\r\n _symbol_point.default._updateData.call(that, data);\r\n that.minValue = that.initialMinValue = that.originalMinValue = data.minValue\r\n },\r\n _getImageSettings: function(settings, image) {\r\n return {\r\n href: image.url || image.toString(),\r\n width: image.width || DEFAULT_IMAGE_WIDTH,\r\n height: image.height || DEFAULT_IMAGE_HEIGHT,\r\n translateX: settings.translateX,\r\n translateY: settings.translateY\r\n }\r\n },\r\n getCrosshairData: function(x, y) {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var minX = that.minX;\r\n var minY = that.minY;\r\n var vx = that.vx;\r\n var vy = that.vy;\r\n var value = that.value;\r\n var minValue = that.minValue;\r\n var argument = that.argument;\r\n var coords = {\r\n axis: that.series.axis,\r\n x: vx,\r\n y: vy,\r\n yValue: value,\r\n xValue: argument\r\n };\r\n if (rotated) {\r\n coords.yValue = argument;\r\n if (_abs(vx - x) < _abs(minX - x)) {\r\n coords.xValue = value\r\n } else {\r\n coords.x = minX;\r\n coords.xValue = minValue\r\n }\r\n } else {\r\n if (_abs(vy - y) >= _abs(minY - y)) {\r\n coords.y = minY;\r\n coords.yValue = minValue\r\n }\r\n }\r\n return coords\r\n },\r\n _updateOneMarker: function(markerType, settings) {\r\n this.graphic && this.graphic[markerType] && this.graphic[markerType].attr(settings)\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n this._drawMarker(void 0, void 0, false, false, style)\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var that = this;\r\n var initialMinValue = that.initialMinValue;\r\n var initialValue = that.initialValue;\r\n var initialArgument = that.initialArgument;\r\n var minValue = tooltip.formatValue(initialMinValue);\r\n var value = tooltip.formatValue(initialValue);\r\n return {\r\n argument: initialArgument,\r\n argumentText: tooltip.formatValue(initialArgument, \"argument\"),\r\n valueText: minValue + \" - \" + value,\r\n rangeValue1Text: minValue,\r\n rangeValue2Text: value,\r\n rangeValue1: initialMinValue,\r\n rangeValue2: initialValue,\r\n seriesName: that.series.name,\r\n point: that,\r\n originalMinValue: that.originalMinValue,\r\n originalValue: that.originalValue,\r\n originalArgument: that.originalArgument\r\n }\r\n },\r\n getLabel: function() {\r\n return [this._topLabel, this._bottomLabel]\r\n },\r\n getLabels: function() {\r\n return [this._topLabel, this._bottomLabel]\r\n },\r\n getBoundingRect: _common.noop,\r\n coordsIn: function(x, y) {\r\n var trackerRadius = this._storeTrackerR();\r\n var xCond = x >= this.x - trackerRadius && x <= this.x + trackerRadius;\r\n var yCond = y >= this.y - trackerRadius && y <= this.y + trackerRadius;\r\n if (this._options.rotated) {\r\n return yCond && (xCond || x >= this.minX - trackerRadius && x <= this.minX + trackerRadius)\r\n } else {\r\n return xCond && (yCond || y >= this.minY - trackerRadius && y <= this.minY + trackerRadius)\r\n }\r\n },\r\n getMaxValue: function() {\r\n if (\"discrete\" !== this.series.valueAxisType) {\r\n return this.minValue > this.value ? this.minValue : this.value\r\n }\r\n return this.value\r\n },\r\n getMinValue: function() {\r\n if (\"discrete\" !== this.series.valueAxisType) {\r\n return this.minValue < this.value ? this.minValue : this.value\r\n }\r\n return this.minValue\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/candlestick_point.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _min = _math.min;\r\nvar _max = _math.max;\r\nvar _round = _math.round;\r\nvar DEFAULT_FINANCIAL_TRACKER_MARGIN = 2;\r\nvar _default = (0, _extend2.extend)({}, _bar_point.default, {\r\n _getContinuousPoints: function(openCoord, closeCoord) {\r\n var that = this;\r\n var x = that.x;\r\n var createPoint = that._options.rotated ? function(x, y) {\r\n return [y, x]\r\n } : function(x, y) {\r\n return [x, y]\r\n };\r\n var width = that.width;\r\n var highCoord = that.highY;\r\n var max = _abs(highCoord - openCoord) < _abs(highCoord - closeCoord) ? openCoord : closeCoord;\r\n var min = max === closeCoord ? openCoord : closeCoord;\r\n var points;\r\n if (min === max) {\r\n points = [].concat(createPoint(x, that.highY)).concat(createPoint(x, that.lowY)).concat(createPoint(x, that.closeY)).concat(createPoint(x - width / 2, that.closeY)).concat(createPoint(x + width / 2, that.closeY)).concat(createPoint(x, that.closeY))\r\n } else {\r\n points = [].concat(createPoint(x, that.highY)).concat(createPoint(x, max)).concat(createPoint(x + width / 2, max)).concat(createPoint(x + width / 2, min)).concat(createPoint(x, min)).concat(createPoint(x, that.lowY)).concat(createPoint(x, min)).concat(createPoint(x - width / 2, min)).concat(createPoint(x - width / 2, max)).concat(createPoint(x, max))\r\n }\r\n return points\r\n },\r\n _getCrockPoints: function(y) {\r\n var that = this;\r\n var x = that.x;\r\n var createPoint = that._options.rotated ? function(x, y) {\r\n return [y, x]\r\n } : function(x, y) {\r\n return [x, y]\r\n };\r\n return [].concat(createPoint(x, that.highY)).concat(createPoint(x, that.lowY)).concat(createPoint(x, y)).concat(createPoint(x - that.width / 2, y)).concat(createPoint(x + that.width / 2, y)).concat(createPoint(x, y))\r\n },\r\n _getPoints: function() {\r\n var that = this;\r\n var points;\r\n var closeCoord = that.closeY;\r\n var openCoord = that.openY;\r\n if (null !== closeCoord && null !== openCoord) {\r\n points = that._getContinuousPoints(openCoord, closeCoord)\r\n } else {\r\n if (openCoord === closeCoord) {\r\n points = [that.x, that.highY, that.x, that.lowY]\r\n } else {\r\n points = that._getCrockPoints(null !== openCoord ? openCoord : closeCoord)\r\n }\r\n }\r\n return points\r\n },\r\n getColor: function() {\r\n var that = this;\r\n return that._isReduction ? that._options.reduction.color : that._styles.normal.stroke || that.series.getColor()\r\n },\r\n _drawMarkerInGroup: function(group, attributes, renderer) {\r\n var that = this;\r\n that.graphic = renderer.path(that._getPoints(), \"area\").attr({\r\n \"stroke-linecap\": \"square\"\r\n }).attr(attributes).data({\r\n \"chart-data-point\": that\r\n }).sharp().append(group)\r\n },\r\n _fillStyle: function() {\r\n var that = this;\r\n var styles = that._options.styles;\r\n if (that._isReduction && that._isPositive) {\r\n that._styles = styles.reductionPositive\r\n } else {\r\n if (that._isReduction) {\r\n that._styles = styles.reduction\r\n } else {\r\n if (that._isPositive) {\r\n that._styles = styles.positive\r\n } else {\r\n that._styles = styles\r\n }\r\n }\r\n }\r\n },\r\n _getMinTrackerWidth: function() {\r\n return 2 + 2 * this._styles.normal[\"stroke-width\"]\r\n },\r\n correctCoordinates: function(correctOptions) {\r\n var minWidth = this._getMinTrackerWidth();\r\n var maxWidth = 10;\r\n var width = correctOptions.width;\r\n width = width < minWidth ? minWidth : width > maxWidth ? maxWidth : width;\r\n this.width = width + width % 2;\r\n this.xCorrection = correctOptions.offset\r\n },\r\n _getMarkerGroup: function(group) {\r\n var that = this;\r\n var markerGroup;\r\n if (that._isReduction && that._isPositive) {\r\n markerGroup = group.reductionPositiveMarkersGroup\r\n } else {\r\n if (that._isReduction) {\r\n markerGroup = group.reductionMarkersGroup\r\n } else {\r\n if (that._isPositive) {\r\n markerGroup = group.defaultPositiveMarkersGroup\r\n } else {\r\n markerGroup = group.defaultMarkersGroup\r\n }\r\n }\r\n }\r\n return markerGroup\r\n },\r\n _drawMarker: function(renderer, group) {\r\n this._drawMarkerInGroup(this._getMarkerGroup(group), this._getStyle(), renderer)\r\n },\r\n _getSettingsForTracker: function() {\r\n var that = this;\r\n var highY = that.highY;\r\n var lowY = that.lowY;\r\n var rotated = that._options.rotated;\r\n var x;\r\n var y;\r\n var width;\r\n var height;\r\n if (highY === lowY) {\r\n highY = rotated ? highY + DEFAULT_FINANCIAL_TRACKER_MARGIN : highY - DEFAULT_FINANCIAL_TRACKER_MARGIN;\r\n lowY = rotated ? lowY - DEFAULT_FINANCIAL_TRACKER_MARGIN : lowY + DEFAULT_FINANCIAL_TRACKER_MARGIN\r\n }\r\n if (rotated) {\r\n x = _min(lowY, highY);\r\n y = that.x - that.width / 2;\r\n width = _abs(lowY - highY);\r\n height = that.width\r\n } else {\r\n x = that.x - that.width / 2;\r\n y = _min(lowY, highY);\r\n width = that.width;\r\n height = _abs(lowY - highY)\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n }\r\n },\r\n _getGraphicBBox: function(location) {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var x = that.x;\r\n var width = that.width;\r\n var lowY = that.lowY;\r\n var highY = that.highY;\r\n if (location) {\r\n var valVisibleArea = that.series.getValueAxis().getVisibleArea();\r\n highY = that._truncateCoord(highY, valVisibleArea);\r\n lowY = that._truncateCoord(lowY, valVisibleArea)\r\n }\r\n var bBox = {\r\n x: !rotated ? x - _round(width / 2) : lowY,\r\n y: !rotated ? highY : x - _round(width / 2),\r\n width: !rotated ? width : highY - lowY,\r\n height: !rotated ? lowY - highY : width\r\n };\r\n if (location) {\r\n var isTop = \"top\" === location;\r\n if (!this._options.rotated) {\r\n bBox.y = isTop ? bBox.y : bBox.y + bBox.height;\r\n bBox.height = 0\r\n } else {\r\n bBox.x = isTop ? bBox.x + bBox.width : bBox.x;\r\n bBox.width = 0\r\n }\r\n }\r\n return bBox\r\n },\r\n getTooltipParams: function(location) {\r\n var that = this;\r\n if (that.graphic) {\r\n var minValue = _min(that.lowY, that.highY);\r\n var maxValue = _max(that.lowY, that.highY);\r\n var visibleArea = that._getVisibleArea();\r\n var rotated = that._options.rotated;\r\n var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n var min = _max(minVisible, minValue);\r\n var max = _min(maxVisible, maxValue);\r\n var centerCoord = that.getCenterCoord();\r\n if (\"edge\" === location) {\r\n centerCoord[rotated ? \"x\" : \"y\"] = rotated ? max : min\r\n }\r\n centerCoord.offset = 0;\r\n return centerCoord\r\n }\r\n },\r\n getCenterCoord: function() {\r\n if (this.graphic) {\r\n var that = this;\r\n var x;\r\n var y;\r\n var minValue = _min(that.lowY, that.highY);\r\n var maxValue = _max(that.lowY, that.highY);\r\n var visibleArea = that._getVisibleArea();\r\n var rotated = that._options.rotated;\r\n var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n var min = _max(minVisible, minValue);\r\n var max = _min(maxVisible, maxValue);\r\n var center = min + (max - min) / 2;\r\n if (rotated) {\r\n y = that.x;\r\n x = center\r\n } else {\r\n x = that.x;\r\n y = center\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n }\r\n },\r\n hasValue: function() {\r\n return null !== this.highValue && null !== this.lowValue\r\n },\r\n hasCoords: function() {\r\n return null !== this.x && null !== this.lowY && null !== this.highY\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var valTranslator = that._getValTranslator();\r\n var x = that._getArgTranslator().translate(that.argument);\r\n that.vx = that.vy = that.x = null === x ? x : x + (that.xCorrection || 0);\r\n that.openY = null !== that.openValue ? valTranslator.translate(that.openValue) : null;\r\n that.highY = valTranslator.translate(that.highValue);\r\n that.lowY = valTranslator.translate(that.lowValue);\r\n that.closeY = null !== that.closeValue ? valTranslator.translate(that.closeValue) : null;\r\n var centerValue = _min(that.lowY, that.highY) + _abs(that.lowY - that.highY) / 2;\r\n that._calculateVisibility(!rotated ? that.x : centerValue, !rotated ? centerValue : that.x)\r\n },\r\n getCrosshairData: function(x, y) {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var origY = rotated ? x : y;\r\n var yValue;\r\n var argument = that.argument;\r\n var coords;\r\n var coord = \"low\";\r\n if (_abs(that.lowY - origY) < _abs(that.closeY - origY)) {\r\n yValue = that.lowY\r\n } else {\r\n yValue = that.closeY;\r\n coord = \"close\"\r\n }\r\n if (_abs(yValue - origY) >= _abs(that.openY - origY)) {\r\n yValue = that.openY;\r\n coord = \"open\"\r\n }\r\n if (_abs(yValue - origY) >= _abs(that.highY - origY)) {\r\n yValue = that.highY;\r\n coord = \"high\"\r\n }\r\n if (rotated) {\r\n coords = {\r\n y: that.vy,\r\n x: yValue,\r\n xValue: that[coord + \"Value\"],\r\n yValue: argument\r\n }\r\n } else {\r\n coords = {\r\n x: that.vx,\r\n y: yValue,\r\n xValue: argument,\r\n yValue: that[coord + \"Value\"]\r\n }\r\n }\r\n coords.axis = that.series.axis;\r\n return coords\r\n },\r\n _updateData: function(data) {\r\n var that = this;\r\n var label = that._label;\r\n var reductionColor = this._options.reduction.color;\r\n that.value = that.initialValue = data.reductionValue;\r\n that.originalValue = data.value;\r\n that.lowValue = that.originalLowValue = data.lowValue;\r\n that.highValue = that.originalHighValue = data.highValue;\r\n that.openValue = that.originalOpenValue = data.openValue;\r\n that.closeValue = that.originalCloseValue = data.closeValue;\r\n that._isPositive = data.openValue < data.closeValue;\r\n that._isReduction = data.isReduction;\r\n if (that._isReduction) {\r\n label.setColor(reductionColor)\r\n }\r\n },\r\n _updateMarker: function(animationEnabled, style, group) {\r\n var that = this;\r\n var graphic = that.graphic;\r\n graphic.attr({\r\n points: that._getPoints()\r\n }).smartAttr(style).sharp();\r\n group && graphic.append(that._getMarkerGroup(group))\r\n },\r\n _getLabelFormatObject: function() {\r\n var that = this;\r\n return {\r\n openValue: that.openValue,\r\n highValue: that.highValue,\r\n lowValue: that.lowValue,\r\n closeValue: that.closeValue,\r\n reductionValue: that.initialValue,\r\n argument: that.initialArgument,\r\n value: that.initialValue,\r\n seriesName: that.series.name,\r\n originalOpenValue: that.originalOpenValue,\r\n originalCloseValue: that.originalCloseValue,\r\n originalLowValue: that.originalLowValue,\r\n originalHighValue: that.originalHighValue,\r\n originalArgument: that.originalArgument,\r\n point: that\r\n }\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var that = this;\r\n var highValue = tooltip.formatValue(that.highValue);\r\n var openValue = tooltip.formatValue(that.openValue);\r\n var closeValue = tooltip.formatValue(that.closeValue);\r\n var lowValue = tooltip.formatValue(that.lowValue);\r\n var symbolMethods = _symbol_point.default;\r\n var formatObject = symbolMethods._getFormatObject.call(that, tooltip);\r\n return (0, _extend2.extend)({}, formatObject, {\r\n valueText: \"h: \" + highValue + (\"\" !== openValue ? \" o: \" + openValue : \"\") + (\"\" !== closeValue ? \" c: \" + closeValue : \"\") + \" l: \" + lowValue,\r\n highValueText: highValue,\r\n openValueText: openValue,\r\n closeValueText: closeValue,\r\n lowValueText: lowValue\r\n })\r\n },\r\n getMaxValue: function() {\r\n return this.highValue\r\n },\r\n getMinValue: function() {\r\n return this.lowValue\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sparklines/bullet.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _base_sparkline = _interopRequireDefault(require(\"./base_sparkline\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TARGET_MIN_Y = .02;\r\nvar TARGET_MAX_Y = .98;\r\nvar BAR_VALUE_MIN_Y = .1;\r\nvar BAR_VALUE_MAX_Y = .9;\r\nvar DEFAULT_CANVAS_WIDTH = 300;\r\nvar DEFAULT_CANVAS_HEIGHT = 30;\r\nvar DEFAULT_HORIZONTAL_MARGIN = 1;\r\nvar DEFAULT_VERTICAL_MARGIN = 2;\r\nvar _Number = Number;\r\nvar _isFinite = isFinite;\r\nvar dxBullet = _base_sparkline.default.inherit({\r\n _rootClassPrefix: \"dxb\",\r\n _rootClass: \"dxb-bullet\",\r\n _themeSection: \"bullet\",\r\n _defaultSize: {\r\n width: DEFAULT_CANVAS_WIDTH,\r\n height: DEFAULT_CANVAS_HEIGHT,\r\n left: DEFAULT_HORIZONTAL_MARGIN,\r\n right: DEFAULT_HORIZONTAL_MARGIN,\r\n top: DEFAULT_VERTICAL_MARGIN,\r\n bottom: DEFAULT_VERTICAL_MARGIN\r\n },\r\n _disposeWidgetElements: function() {\r\n delete this._zeroLevelPath;\r\n delete this._targetPath;\r\n delete this._barValuePath\r\n },\r\n _cleanWidgetElements: function() {\r\n this._zeroLevelPath.remove();\r\n this._targetPath.remove();\r\n this._barValuePath.remove()\r\n },\r\n _drawWidgetElements: function() {\r\n this._drawBullet();\r\n this._drawn()\r\n },\r\n _createHtmlElements: function() {\r\n var renderer = this._renderer;\r\n this._zeroLevelPath = renderer.path(void 0, \"line\").attr({\r\n \"class\": \"dxb-zero-level\",\r\n \"stroke-linecap\": \"square\"\r\n });\r\n this._targetPath = renderer.path(void 0, \"line\").attr({\r\n \"class\": \"dxb-target\",\r\n \"stroke-linecap\": \"square\"\r\n });\r\n this._barValuePath = renderer.path(void 0, \"line\").attr({\r\n \"class\": \"dxb-bar-value\",\r\n \"stroke-linecap\": \"square\"\r\n })\r\n },\r\n _prepareOptions: function() {\r\n var that = this;\r\n var options;\r\n var startScaleValue;\r\n var endScaleValue;\r\n var level;\r\n var value;\r\n var target;\r\n that._allOptions = options = that.callBase();\r\n var isValueUndefined = void 0 === that._allOptions.value;\r\n var isTargetUndefined = void 0 === that._allOptions.target;\r\n that._tooltipEnabled = !(isValueUndefined && isTargetUndefined);\r\n if (isValueUndefined) {\r\n that._allOptions.value = 0\r\n }\r\n if (isTargetUndefined) {\r\n that._allOptions.target = 0\r\n }\r\n options.value = value = _Number(options.value);\r\n options.target = target = _Number(options.target);\r\n if (void 0 === that._allOptions.startScaleValue) {\r\n that._allOptions.startScaleValue = target < value ? target : value;\r\n that._allOptions.startScaleValue = that._allOptions.startScaleValue < 0 ? that._allOptions.startScaleValue : 0\r\n }\r\n if (void 0 === that._allOptions.endScaleValue) {\r\n that._allOptions.endScaleValue = target > value ? target : value\r\n }\r\n options.startScaleValue = startScaleValue = _Number(options.startScaleValue);\r\n options.endScaleValue = endScaleValue = _Number(options.endScaleValue);\r\n if (endScaleValue < startScaleValue) {\r\n level = endScaleValue;\r\n that._allOptions.endScaleValue = startScaleValue;\r\n that._allOptions.startScaleValue = level;\r\n that._allOptions.inverted = true\r\n }\r\n },\r\n _updateRange: function() {\r\n var that = this;\r\n var options = that._allOptions;\r\n that._ranges = {\r\n arg: {\r\n invert: options.rtlEnabled ? !options.inverted : options.inverted,\r\n min: options.startScaleValue,\r\n max: options.endScaleValue,\r\n axisType: \"continuous\",\r\n dataType: \"numeric\"\r\n },\r\n val: {\r\n min: 0,\r\n max: 1,\r\n axisType: \"continuous\",\r\n dataType: \"numeric\"\r\n }\r\n }\r\n },\r\n _drawBullet: function() {\r\n var that = this;\r\n var options = that._allOptions;\r\n var isValidBounds = options.startScaleValue !== options.endScaleValue;\r\n var isValidMin = _isFinite(options.startScaleValue);\r\n var isValidMax = _isFinite(options.endScaleValue);\r\n var isValidValue = _isFinite(options.value);\r\n var isValidTarget = _isFinite(options.target);\r\n if (isValidBounds && isValidMax && isValidMin && isValidTarget && isValidValue) {\r\n this._drawBarValue();\r\n this._drawTarget();\r\n this._drawZeroLevel()\r\n }\r\n },\r\n _getTargetParams: function() {\r\n var that = this;\r\n var options = that._allOptions;\r\n var translatorY = that._valueAxis.getTranslator();\r\n var x = that._argumentAxis.getTranslator().translate(options.target);\r\n return {\r\n points: [x, translatorY.translate(TARGET_MIN_Y), x, translatorY.translate(TARGET_MAX_Y)],\r\n stroke: options.targetColor,\r\n \"stroke-width\": options.targetWidth\r\n }\r\n },\r\n _getBarValueParams: function() {\r\n var that = this;\r\n var options = that._allOptions;\r\n var translatorX = that._argumentAxis.getTranslator();\r\n var translatorY = that._valueAxis.getTranslator();\r\n var startLevel = options.startScaleValue;\r\n var endLevel = options.endScaleValue;\r\n var value = options.value;\r\n var y2 = translatorY.translate(BAR_VALUE_MIN_Y);\r\n var y1 = translatorY.translate(BAR_VALUE_MAX_Y);\r\n var x1;\r\n var x2;\r\n if (value > 0) {\r\n x1 = startLevel <= 0 ? 0 : startLevel;\r\n x2 = value >= endLevel ? endLevel : value < x1 ? x1 : value\r\n } else {\r\n x1 = endLevel >= 0 ? 0 : endLevel;\r\n x2 = value < startLevel ? startLevel : value > x1 ? x1 : value\r\n }\r\n x1 = translatorX.translate(x1);\r\n x2 = translatorX.translate(x2);\r\n return {\r\n points: [x1, y1, x2, y1, x2, y2, x1, y2],\r\n fill: options.color\r\n }\r\n },\r\n _getCorrectCanvas: function() {\r\n return this._canvas\r\n },\r\n _getZeroLevelParams: function() {\r\n var that = this;\r\n var translatorY = that._valueAxis.getTranslator();\r\n var x = that._argumentAxis.getTranslator().translate(0);\r\n return {\r\n points: [x, translatorY.translate(TARGET_MIN_Y), x, translatorY.translate(TARGET_MAX_Y)],\r\n stroke: that._allOptions.targetColor,\r\n \"stroke-width\": 1\r\n }\r\n },\r\n _drawZeroLevel: function() {\r\n var that = this;\r\n var options = that._allOptions;\r\n if (0 > options.endScaleValue || 0 < options.startScaleValue || !options.showZeroLevel) {\r\n return\r\n }\r\n that._zeroLevelPath.attr(that._getZeroLevelParams()).sharp().append(that._renderer.root)\r\n },\r\n _drawTarget: function() {\r\n var that = this;\r\n var options = that._allOptions;\r\n var target = options.target;\r\n if (target > options.endScaleValue || target < options.startScaleValue || !options.showTarget) {\r\n return\r\n }\r\n that._targetPath.attr(that._getTargetParams()).sharp().append(that._renderer.root)\r\n },\r\n _drawBarValue: function() {\r\n this._barValuePath.attr(this._getBarValueParams()).append(this._renderer.root)\r\n },\r\n _getTooltipCoords: function() {\r\n var canvas = this._canvas;\r\n var rootOffset = this._renderer.getRootOffset();\r\n var bBox = this._barValuePath.getBBox();\r\n return {\r\n x: bBox.x + bBox.width / 2 + rootOffset.left,\r\n y: canvas.height / 2 + rootOffset.top\r\n }\r\n },\r\n _getTooltipData: function() {\r\n var that = this;\r\n var tooltip = that._tooltip;\r\n var options = that._allOptions;\r\n var value = options.value;\r\n var target = options.target;\r\n var valueText = tooltip.formatValue(value);\r\n var targetText = tooltip.formatValue(target);\r\n return {\r\n originalValue: value,\r\n originalTarget: target,\r\n value: valueText,\r\n target: targetText,\r\n valueText: [\"Actual Value:\", valueText, \"Target Value:\", targetText]\r\n }\r\n },\r\n _isTooltipEnabled: function() {\r\n return this._tooltipEnabled\r\n }\r\n});\r\n(0, _iterator.each)([\"color\", \"targetColor\", \"targetWidth\", \"showTarget\", \"showZeroLevel\", \"value\", \"target\", \"startScaleValue\", \"endScaleValue\"], function(_, name) {\r\n dxBullet.prototype._optionChangesMap[name] = \"OPTIONS\"\r\n});\r\n(0, _component_registrator.default)(\"dxBullet\", dxBullet);\r\nvar _default = dxBullet;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/base_point.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Point = Point;\r\nvar _consts = _interopRequireDefault(require(\"../../components/consts\"));\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\nvar _bubble_point = _interopRequireDefault(require(\"./bubble_point\"));\r\nvar _pie_point = _interopRequireDefault(require(\"./pie_point\"));\r\nvar _range_symbol_point = _interopRequireDefault(require(\"./range_symbol_point\"));\r\nvar _range_bar_point = _interopRequireDefault(require(\"./range_bar_point\"));\r\nvar _candlestick_point = _interopRequireDefault(require(\"./candlestick_point\"));\r\nvar _stock_point = _interopRequireDefault(require(\"./stock_point\"));\r\nvar _polar_point = require(\"./polar_point\");\r\nvar _utils = require(\"../../core/utils\");\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _common = require(\"../../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar mixins = {};\r\nvar _extend = _extend2.extend;\r\nvar statesConsts = _consts.default.states;\r\nvar SYMBOL_POINT = \"symbolPoint\";\r\nvar POLAR_SYMBOL_POINT = \"polarSymbolPoint\";\r\nvar BAR_POINT = \"barPoint\";\r\nvar POLAR_BAR_POINT = \"polarBarPoint\";\r\nvar PIE_POINT = \"piePoint\";\r\nvar SELECTED_STATE = statesConsts.selectedMark;\r\nvar HOVER_STATE = statesConsts.hoverMark;\r\nvar NORMAL_STATE = statesConsts.normalMark;\r\nvar HOVER = statesConsts.hover;\r\nvar NORMAL = statesConsts.normal;\r\nvar SELECTION = statesConsts.selection;\r\nvar pointTypes = {\r\n chart: {\r\n scatter: SYMBOL_POINT,\r\n line: SYMBOL_POINT,\r\n spline: SYMBOL_POINT,\r\n stepline: SYMBOL_POINT,\r\n stackedline: SYMBOL_POINT,\r\n fullstackedline: SYMBOL_POINT,\r\n stackedspline: SYMBOL_POINT,\r\n fullstackedspline: SYMBOL_POINT,\r\n stackedsplinearea: SYMBOL_POINT,\r\n fullstackedsplinearea: SYMBOL_POINT,\r\n area: SYMBOL_POINT,\r\n splinearea: SYMBOL_POINT,\r\n steparea: SYMBOL_POINT,\r\n stackedarea: SYMBOL_POINT,\r\n fullstackedarea: SYMBOL_POINT,\r\n rangearea: \"rangeSymbolPoint\",\r\n bar: BAR_POINT,\r\n stackedbar: BAR_POINT,\r\n fullstackedbar: BAR_POINT,\r\n rangebar: \"rangeBarPoint\",\r\n bubble: \"bubblePoint\",\r\n stock: \"stockPoint\",\r\n candlestick: \"candlestickPoint\"\r\n },\r\n pie: {\r\n pie: PIE_POINT,\r\n doughnut: PIE_POINT,\r\n donut: PIE_POINT\r\n },\r\n polar: {\r\n scatter: POLAR_SYMBOL_POINT,\r\n line: POLAR_SYMBOL_POINT,\r\n area: POLAR_SYMBOL_POINT,\r\n bar: POLAR_BAR_POINT,\r\n stackedbar: POLAR_BAR_POINT\r\n }\r\n};\r\n\r\nfunction isNoneMode(mode) {\r\n return \"none\" === (0, _utils.normalizeEnum)(mode)\r\n}\r\n\r\nfunction Point(series, dataItem, options) {\r\n this.fullState = NORMAL_STATE;\r\n this.series = series;\r\n this.update(dataItem, options);\r\n this._viewCounters = {\r\n hover: 0,\r\n selection: 0\r\n };\r\n this._emptySettings = {\r\n fill: null,\r\n stroke: null,\r\n dashStyle: null\r\n }\r\n}\r\nmixins.symbolPoint = _symbol_point.default;\r\nmixins.barPoint = _bar_point.default;\r\nmixins.bubblePoint = _bubble_point.default;\r\nmixins.piePoint = _pie_point.default;\r\nmixins.rangeSymbolPoint = _range_symbol_point.default;\r\nmixins.rangeBarPoint = _range_bar_point.default;\r\nmixins.candlestickPoint = _candlestick_point.default;\r\nmixins.stockPoint = _stock_point.default;\r\nmixins.polarSymbolPoint = _polar_point.polarSymbolPoint;\r\nmixins.polarBarPoint = _polar_point.polarBarPoint;\r\nPoint.prototype = {\r\n constructor: Point,\r\n getColor: function() {\r\n if (!this.hasValue() && !this._styles.usePointCustomOptions) {\r\n this.series.customizePoint(this, this._dataItem)\r\n }\r\n return this._styles.normal.fill || this.series.getColor()\r\n },\r\n _getStyle: function() {\r\n return this._styles[this._currentStyle || \"normal\"]\r\n },\r\n update: function(dataItem, options) {\r\n this.updateOptions(options);\r\n this.updateData(dataItem)\r\n },\r\n updateData: function(dataItem) {\r\n var that = this;\r\n var argumentWasChanged = that.argument !== dataItem.argument;\r\n that.argument = that.initialArgument = that.originalArgument = dataItem.argument;\r\n that.tag = dataItem.tag;\r\n that.index = dataItem.index;\r\n that._dataItem = dataItem;\r\n that.data = dataItem.data;\r\n that.lowError = dataItem.lowError;\r\n that.highError = dataItem.highError;\r\n that.aggregationInfo = dataItem.aggregationInfo;\r\n that._updateData(dataItem, argumentWasChanged);\r\n !that.hasValue() && that.setInvisibility();\r\n that._fillStyle();\r\n that._updateLabelData()\r\n },\r\n deleteMarker: function() {\r\n var that = this;\r\n if (that.graphic) {\r\n that.graphic.dispose()\r\n }\r\n that.graphic = null\r\n },\r\n draw: function(renderer, groups, animationEnabled, firstDrawing) {\r\n var that = this;\r\n if (that._needDeletingOnDraw || that.series.autoHidePointMarkers && !that.isSelected()) {\r\n that.deleteMarker();\r\n that._needDeletingOnDraw = false\r\n }\r\n if (that._needClearingOnDraw) {\r\n that.clearMarker();\r\n that._needClearingOnDraw = false\r\n }\r\n if (!that._hasGraphic()) {\r\n that.getMarkerVisibility() && !that.series.autoHidePointMarkers && that._drawMarker(renderer, groups.markers, animationEnabled, firstDrawing)\r\n } else {\r\n that._updateMarker(animationEnabled, this._getStyle(), groups.markers)\r\n }\r\n that._drawLabel();\r\n that._drawErrorBar(renderer, groups.errorBars, animationEnabled);\r\n return that\r\n },\r\n _getViewStyle: function() {\r\n var state = NORMAL_STATE;\r\n var fullState = this.fullState;\r\n var styles = [NORMAL, HOVER, SELECTION, SELECTION];\r\n if (this._viewCounters.hover) {\r\n state |= HOVER_STATE\r\n }\r\n if (this._viewCounters.selection) {\r\n state |= SELECTED_STATE\r\n }\r\n if (isNoneMode(this.getOptions().selectionMode)) {\r\n fullState &= ~SELECTED_STATE\r\n }\r\n if (isNoneMode(this.getOptions().hoverMode)) {\r\n fullState &= ~HOVER_STATE\r\n }\r\n state |= fullState;\r\n return styles[state]\r\n },\r\n applyView: function(legendCallback) {\r\n var style = this._getViewStyle();\r\n var that = this;\r\n that._currentStyle = style;\r\n if (!that.graphic && that.series.autoHidePointMarkers && (style === SELECTION || style === HOVER)) {\r\n that._drawMarker(that.series.getRenderer(), that.series.getMarkersGroup())\r\n }\r\n if (that.graphic) {\r\n if (that.series.autoHidePointMarkers && style !== SELECTION && style !== HOVER) {\r\n that.deleteMarker()\r\n } else {\r\n if (\"normal\" === style) {\r\n that.clearMarker()\r\n } else {\r\n that.graphic.toForeground()\r\n }\r\n that._updateMarker(true, that._styles[style], void 0, legendCallback)\r\n }\r\n }\r\n },\r\n setView: function(style) {\r\n this._viewCounters[style]++;\r\n this.applyView()\r\n },\r\n resetView: function(style) {\r\n var viewCounters = this._viewCounters;\r\n --viewCounters[style];\r\n if (viewCounters[style] < 0) {\r\n viewCounters[style] = 0\r\n }\r\n this.applyView()\r\n },\r\n releaseHoverState: function() {\r\n var that = this;\r\n if (that.graphic && !that.isSelected()) {\r\n that.graphic.toBackground()\r\n }\r\n },\r\n select: function() {\r\n this.series.selectPoint(this)\r\n },\r\n clearSelection: function() {\r\n this.series.deselectPoint(this)\r\n },\r\n hover: function() {\r\n this.series.hoverPoint(this)\r\n },\r\n clearHover: function() {\r\n this.series.clearPointHover()\r\n },\r\n showTooltip: function() {\r\n this.series.showPointTooltip(this)\r\n },\r\n hideTooltip: function() {\r\n this.series.hidePointTooltip(this)\r\n },\r\n _checkLabelsChanging: function(oldType, newType) {\r\n var isNewRange = ~newType.indexOf(\"range\");\r\n var isOldRange = ~oldType.indexOf(\"range\");\r\n return isOldRange && !isNewRange || !isOldRange && isNewRange\r\n },\r\n updateOptions: function(newOptions) {\r\n if (!newOptions) {\r\n return\r\n }\r\n var that = this;\r\n var oldOptions = that._options;\r\n var widgetType = newOptions.widgetType;\r\n var oldType = oldOptions && oldOptions.type;\r\n var newType = newOptions.type;\r\n var newPointTypeMixin = pointTypes[widgetType][newType];\r\n if (oldType !== newType) {\r\n that._needDeletingOnDraw = true;\r\n that._needClearingOnDraw = false;\r\n if (oldType) {\r\n that._checkLabelsChanging(oldType, newType) && that.deleteLabel();\r\n that._resetType(mixins[pointTypes[oldType]])\r\n }\r\n that._setType(mixins[newPointTypeMixin])\r\n } else {\r\n that._needDeletingOnDraw = that._checkSymbol(oldOptions, newOptions);\r\n that._needClearingOnDraw = that._checkCustomize(oldOptions, newOptions)\r\n }\r\n that._options = newOptions;\r\n that._fillStyle();\r\n that._updateLabelOptions(newPointTypeMixin)\r\n },\r\n translate: function() {\r\n if (this.hasValue()) {\r\n this._translate();\r\n this.translated = true\r\n }\r\n },\r\n _checkCustomize: function(oldOptions, newOptions) {\r\n return oldOptions.styles.usePointCustomOptions && !newOptions.styles.usePointCustomOptions\r\n },\r\n _getCustomLabelVisibility: function() {\r\n return this._styles.useLabelCustomOptions ? !!this._options.label.visible : null\r\n },\r\n getBoundingRect: function() {\r\n return this._getGraphicBBox()\r\n },\r\n _resetType: function(methods) {\r\n for (var methodName in methods) {\r\n delete this[methodName]\r\n }\r\n },\r\n _setType: function(methods) {\r\n for (var methodName in methods) {\r\n this[methodName] = methods[methodName]\r\n }\r\n },\r\n isInVisibleArea: function() {\r\n return this.inVisibleArea\r\n },\r\n isSelected: function() {\r\n return !!(this.fullState & SELECTED_STATE)\r\n },\r\n isHovered: function() {\r\n return !!(this.fullState & HOVER_STATE)\r\n },\r\n getOptions: function() {\r\n return this._options\r\n },\r\n animate: function(complete, settings, partitionDuration) {\r\n if (!this.graphic) {\r\n complete && complete();\r\n return\r\n }\r\n this.graphic.animate(settings, {\r\n partitionDuration: partitionDuration\r\n }, complete)\r\n },\r\n getCoords: function(min) {\r\n var that = this;\r\n if (!min) {\r\n return {\r\n x: that.x,\r\n y: that.y\r\n }\r\n }\r\n if (!that._options.rotated) {\r\n return {\r\n x: that.x,\r\n y: that.minY + (that.y - that.minY ? 0 : 1)\r\n }\r\n }\r\n return {\r\n x: that.minX - (that.x - that.minX ? 0 : 1),\r\n y: that.y\r\n }\r\n },\r\n getDefaultCoords: function() {\r\n var that = this;\r\n return !that._options.rotated ? {\r\n x: that.x,\r\n y: that.defaultY\r\n } : {\r\n x: that.defaultX,\r\n y: that.y\r\n }\r\n },\r\n setDefaultCoords: function() {\r\n var coords = this.getDefaultCoords();\r\n this.x = coords.x;\r\n this.y = coords.y\r\n },\r\n _getVisibleArea: function() {\r\n return this.series.getVisibleArea()\r\n },\r\n _getArgTranslator: function() {\r\n return this.series.getArgumentAxis().getTranslator()\r\n },\r\n _getValTranslator: function() {\r\n return this.series.getValueAxis().getTranslator()\r\n },\r\n _calculateVisibility: function(x, y, width, height) {\r\n var that = this;\r\n var visibleArea = that._getVisibleArea();\r\n var rotated = that._options.rotated;\r\n if (visibleArea.minX > x + (width || 0) || visibleArea.maxX < x || visibleArea.minY > y + (height || 0) || visibleArea.maxY < y || rotated && (0, _type.isDefined)(width) && 0 !== width && (visibleArea.minX === x + width || visibleArea.maxX === x) || !rotated && (0, _type.isDefined)(height) && 0 !== height && (visibleArea.minY === y + height || visibleArea.maxY === y)) {\r\n that.inVisibleArea = false\r\n } else {\r\n that.inVisibleArea = true\r\n }\r\n },\r\n isArgumentCorrect: function() {\r\n return this.series._argumentChecker(this.argument)\r\n },\r\n isValueCorrect: function() {\r\n var valueChecker = this.series._valueChecker;\r\n return valueChecker(this.getMinValue()) && valueChecker(this.getMaxValue())\r\n },\r\n hasValue: function() {\r\n return null !== this.value && null !== this.minValue && this.isArgumentCorrect() && this.isValueCorrect()\r\n },\r\n hasCoords: _common.noop,\r\n correctPosition: _common.noop,\r\n correctRadius: _common.noop,\r\n correctLabelRadius: _common.noop,\r\n getCrosshairData: _common.noop,\r\n getPointRadius: _common.noop,\r\n _populatePointShape: _common.noop,\r\n _checkSymbol: _common.noop,\r\n getMarkerCoords: _common.noop,\r\n hide: _common.noop,\r\n show: _common.noop,\r\n hideMarker: _common.noop,\r\n setInvisibility: _common.noop,\r\n clearVisibility: _common.noop,\r\n isVisible: _common.noop,\r\n resetCorrection: _common.noop,\r\n correctValue: _common.noop,\r\n resetValue: _common.noop,\r\n setPercentValue: _common.noop,\r\n correctCoordinates: _common.noop,\r\n coordsIn: _common.noop,\r\n getTooltipParams: _common.noop,\r\n applyWordWrap: _common.noop,\r\n setLabelTrackerData: _common.noop,\r\n updateLabelCoord: _common.noop,\r\n drawLabel: _common.noop,\r\n correctLabelPosition: _common.noop,\r\n getMinValue: _common.noop,\r\n getMaxValue: _common.noop,\r\n _drawErrorBar: _common.noop,\r\n getMarkerVisibility: _common.noop,\r\n dispose: function() {\r\n var that = this;\r\n that.deleteMarker();\r\n that.deleteLabel();\r\n that._errorBar && this._errorBar.dispose();\r\n that._options = that._styles = that.series = that._errorBar = null\r\n },\r\n getTooltipFormatObject: function(tooltip, stackPoints) {\r\n var that = this;\r\n var tooltipFormatObject = that._getFormatObject(tooltip);\r\n var sharedTooltipValuesArray = [];\r\n var tooltipStackPointsFormatObject = [];\r\n if (stackPoints) {\r\n stackPoints.forEach(function(point) {\r\n if (!point.isVisible()) {\r\n return\r\n }\r\n var formatObject = point._getFormatObject(tooltip);\r\n tooltipStackPointsFormatObject.push(formatObject);\r\n sharedTooltipValuesArray.push(formatObject.seriesName + \": \" + formatObject.valueText)\r\n });\r\n _extend(tooltipFormatObject, {\r\n points: tooltipStackPointsFormatObject,\r\n valueText: sharedTooltipValuesArray.join(\"\\n\"),\r\n stackName: that.series.getStackName() || null\r\n })\r\n }\r\n var aggregationInfo = that.aggregationInfo;\r\n if (aggregationInfo) {\r\n var axis = that.series.getArgumentAxis();\r\n var rangeText = axis.formatRange(aggregationInfo.intervalStart, aggregationInfo.intervalEnd, aggregationInfo.aggregationInterval);\r\n if (rangeText) {\r\n tooltipFormatObject.valueText += \"\\n\".concat(rangeText)\r\n }\r\n }\r\n return tooltipFormatObject\r\n },\r\n setHole: function(holeValue, position) {\r\n var that = this;\r\n var minValue = isFinite(that.minValue) ? that.minValue : 0;\r\n if ((0, _type.isDefined)(holeValue)) {\r\n if (\"left\" === position) {\r\n that.leftHole = that.value - holeValue;\r\n that.minLeftHole = minValue - holeValue\r\n } else {\r\n that.rightHole = that.value - holeValue;\r\n that.minRightHole = minValue - holeValue\r\n }\r\n }\r\n },\r\n resetHoles: function() {\r\n this.leftHole = null;\r\n this.minLeftHole = null;\r\n this.rightHole = null;\r\n this.minRightHole = null\r\n },\r\n getLabel: function() {\r\n return this._label\r\n },\r\n getLabels: function() {\r\n return [this._label]\r\n },\r\n getCenterCoord: function() {\r\n return {\r\n x: this.x,\r\n y: this.y\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/series/points/bubble_point.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar MIN_BUBBLE_HEIGHT = 20;\r\nvar _default = _extend({}, _symbol_point.default, {\r\n correctCoordinates: function(diameter) {\r\n this.bubbleSize = diameter / 2\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled) {\r\n var that = this;\r\n var attr = _extend({\r\n translateX: that.x,\r\n translateY: that.y\r\n }, that._getStyle());\r\n that.graphic = renderer.circle(0, 0, animationEnabled ? 0 : that.bubbleSize).smartAttr(attr).data({\r\n \"chart-data-point\": that\r\n }).append(group)\r\n },\r\n getTooltipParams: function(location) {\r\n var that = this;\r\n var graphic = that.graphic;\r\n if (!graphic) {\r\n return\r\n }\r\n var height = graphic.getBBox().height;\r\n return {\r\n x: that.x,\r\n y: that.y,\r\n offset: height < MIN_BUBBLE_HEIGHT || \"edge\" === location ? height / 2 : 0\r\n }\r\n },\r\n _getLabelFormatObject: function() {\r\n var formatObject = _symbol_point.default._getLabelFormatObject.call(this);\r\n formatObject.size = this.initialSize;\r\n return formatObject\r\n },\r\n _updateData: function(data) {\r\n _symbol_point.default._updateData.call(this, data);\r\n this.size = this.initialSize = data.size\r\n },\r\n _getGraphicBBox: function() {\r\n var that = this;\r\n return that._getSymbolBBox(that.x, that.y, that.bubbleSize)\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n var that = this;\r\n if (!animationEnabled) {\r\n style = _extend({\r\n r: that.bubbleSize,\r\n translateX: that.x,\r\n translateY: that.y\r\n }, style)\r\n }\r\n that.graphic.smartAttr(style)\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var formatObject = _symbol_point.default._getFormatObject.call(this, tooltip);\r\n formatObject.sizeText = tooltip.formatValue(this.initialSize);\r\n return formatObject\r\n },\r\n _storeTrackerR: function() {\r\n return this.bubbleSize\r\n },\r\n _getLabelCoords: function(label) {\r\n var coords;\r\n if (\"inside\" === label.getLayoutOptions().position) {\r\n coords = this._getLabelCoordOfPosition(label, \"inside\")\r\n } else {\r\n coords = _symbol_point.default._getLabelCoords.call(this, label)\r\n }\r\n return coords\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/range_bar_point.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\nvar _range_symbol_point = _interopRequireDefault(require(\"./range_symbol_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _default = _extend({}, _bar_point.default, {\r\n deleteLabel: _range_symbol_point.default.deleteLabel,\r\n _getFormatObject: _range_symbol_point.default._getFormatObject,\r\n clearVisibility: function() {\r\n var graphic = this.graphic;\r\n if (graphic && graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: null\r\n })\r\n }\r\n },\r\n setInvisibility: function() {\r\n var graphic = this.graphic;\r\n if (graphic && \"hidden\" !== graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n this._topLabel.draw(false);\r\n this._bottomLabel.draw(false)\r\n },\r\n getTooltipParams: function(location) {\r\n var that = this;\r\n var edgeLocation = \"edge\" === location;\r\n var x;\r\n var y;\r\n if (that._options.rotated) {\r\n x = edgeLocation ? that.x + that.width : that.x + that.width / 2;\r\n y = that.y + that.height / 2\r\n } else {\r\n x = that.x + that.width / 2;\r\n y = edgeLocation ? that.y : that.y + that.height / 2\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n offset: 0\r\n }\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var barMethods = _bar_point.default;\r\n barMethods._translate.call(that);\r\n if (that._options.rotated) {\r\n that.width = that.width || 1\r\n } else {\r\n that.height = that.height || 1\r\n }\r\n },\r\n hasCoords: _range_symbol_point.default.hasCoords,\r\n _updateData: _range_symbol_point.default._updateData,\r\n _getLabelPosition: _range_symbol_point.default._getLabelPosition,\r\n _getLabelMinFormatObject: _range_symbol_point.default._getLabelMinFormatObject,\r\n _updateLabelData: _range_symbol_point.default._updateLabelData,\r\n _updateLabelOptions: _range_symbol_point.default._updateLabelOptions,\r\n getCrosshairData: _range_symbol_point.default.getCrosshairData,\r\n _createLabel: _range_symbol_point.default._createLabel,\r\n _checkOverlay: _range_symbol_point.default._checkOverlay,\r\n _checkLabelsOverlay: _range_symbol_point.default._checkLabelsOverlay,\r\n _getOverlayCorrections: _range_symbol_point.default._getOverlayCorrections,\r\n _drawLabel: _range_symbol_point.default._drawLabel,\r\n _getLabelCoords: _range_symbol_point.default._getLabelCoords,\r\n getLabel: _range_symbol_point.default.getLabel,\r\n getLabels: _range_symbol_point.default.getLabels,\r\n getBoundingRect: _common.noop,\r\n getMinValue: _range_symbol_point.default.getMinValue,\r\n getMaxValue: _range_symbol_point.default.getMaxValue\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/stock_point.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _candlestick_point = _interopRequireDefault(require(\"./candlestick_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _isNumeric = _type.isNumeric;\r\nvar _default = _extend({}, _candlestick_point.default, {\r\n _getPoints: function() {\r\n var that = this;\r\n var createPoint = that._options.rotated ? function(x, y) {\r\n return [y, x]\r\n } : function(x, y) {\r\n return [x, y]\r\n };\r\n var openYExist = _isNumeric(that.openY);\r\n var closeYExist = _isNumeric(that.closeY);\r\n var x = that.x;\r\n var width = that.width;\r\n var points = [].concat(createPoint(x, that.highY));\r\n openYExist && (points = points.concat(createPoint(x, that.openY)));\r\n openYExist && (points = points.concat(createPoint(x - width / 2, that.openY)));\r\n openYExist && (points = points.concat(createPoint(x, that.openY)));\r\n closeYExist && (points = points.concat(createPoint(x, that.closeY)));\r\n closeYExist && (points = points.concat(createPoint(x + width / 2, that.closeY)));\r\n closeYExist && (points = points.concat(createPoint(x, that.closeY)));\r\n points = points.concat(createPoint(x, that.lowY));\r\n return points\r\n },\r\n _drawMarkerInGroup: function(group, attributes, renderer) {\r\n this.graphic = renderer.path(this._getPoints(), \"line\").attr({\r\n \"stroke-linecap\": \"square\"\r\n }).attr(attributes).data({\r\n \"chart-data-point\": this\r\n }).sharp().append(group)\r\n },\r\n _getMinTrackerWidth: function() {\r\n var width = 2 + this._styles.normal[\"stroke-width\"];\r\n return width + width % 2\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/polar_point.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polarSymbolPoint = exports.polarBarPoint = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\nvar _pie_point = _interopRequireDefault(require(\"./pie_point\"));\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _utils = require(\"../../core/utils\");\r\nvar _consts = _interopRequireDefault(require(\"../../components/consts\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _max = _math.max;\r\nvar RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;\r\nvar ERROR_BARS_ANGLE_OFFSET = 90;\r\nvar CANVAS_POSITION_START = \"canvas_position_start\";\r\nvar CANVAS_POSITION_END = \"canvas_position_end\";\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\nvar polarSymbolPoint = _extend({}, _symbol_point.default, {\r\n _getLabelCoords: _pie_point.default._getLabelCoords,\r\n _getElementCoords: _pie_point.default._getElementCoords,\r\n _moveLabelOnCanvas: function(coord, visibleArea, labelBBox) {\r\n var x = coord.x;\r\n var y = coord.y;\r\n if (visibleArea.minX > x) {\r\n x = visibleArea.minX\r\n }\r\n if (visibleArea.maxX < x + labelBBox.width) {\r\n x = visibleArea.maxX - labelBBox.width\r\n }\r\n if (visibleArea.minY > y) {\r\n y = visibleArea.minY\r\n }\r\n if (visibleArea.maxY < y + labelBBox.height) {\r\n y = visibleArea.maxY - labelBBox.height\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getLabelPosition: function() {\r\n return \"outside\"\r\n },\r\n _getCoords: function(argument, value) {\r\n var axis = this.series.getValueAxis();\r\n var startAngle = axis.getAngles()[0];\r\n var angle = this._getArgTranslator().translate(argument);\r\n var radius = this._getValTranslator().translate(value);\r\n var coords = (0, _utils.convertPolarToXY)(axis.getCenter(), axis.getAngles()[0], angle, radius);\r\n coords.angle = angle + startAngle - 90, coords.radius = radius;\r\n return coords\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var center = that.series.getValueAxis().getCenter();\r\n var coord = that._getCoords(that.argument, that.value);\r\n var translator = that._getValTranslator();\r\n var maxRadius = translator.isInverted() ? translator.translate(CANVAS_POSITION_START) : translator.translate(CANVAS_POSITION_END);\r\n var normalizedRadius = (0, _type.isDefined)(coord.radius) && coord.radius >= 0 ? coord.radius : null;\r\n that.vx = (0, _utils.normalizeAngle)(coord.angle);\r\n that.vy = that.radiusOuter = that.radiusLabels = normalizedRadius;\r\n that.radiusLabels += RADIAL_LABEL_INDENT;\r\n that.radius = normalizedRadius;\r\n that.middleAngle = -coord.angle;\r\n that.angle = -coord.angle;\r\n that.x = coord.x;\r\n that.y = coord.y;\r\n that.defaultX = that.centerX = center.x;\r\n that.defaultY = that.centerY = center.y;\r\n that._translateErrorBars();\r\n that.inVisibleArea = that._checkRadiusForVisibleArea(normalizedRadius, maxRadius)\r\n },\r\n _checkRadiusForVisibleArea: function(radius, maxRadius) {\r\n return (0, _type.isDefined)(radius) && radius <= maxRadius\r\n },\r\n _translateErrorBars: function() {\r\n var that = this;\r\n var errorBars = that._options.errorBars;\r\n var translator = that._getValTranslator();\r\n if (!errorBars) {\r\n return\r\n }(0, _type.isDefined)(that.lowError) && (that._lowErrorCoord = that.centerY - translator.translate(that.lowError));\r\n (0, _type.isDefined)(that.highError) && (that._highErrorCoord = that.centerY - translator.translate(that.highError));\r\n that._errorBarPos = that.centerX;\r\n that._baseErrorBarPos = \"stdDeviation\" === errorBars.type ? that._lowErrorCoord + (that._highErrorCoord - that._lowErrorCoord) / 2 : that.centerY - that.radius\r\n },\r\n _getTranslates: function(animationEnabled) {\r\n return animationEnabled ? this.getDefaultCoords() : {\r\n x: this.x,\r\n y: this.y\r\n }\r\n },\r\n getDefaultCoords: function() {\r\n var cosSin = (0, _utils.getCosAndSin)(-this.angle);\r\n var radius = this._getValTranslator().translate(CANVAS_POSITION_DEFAULT);\r\n var x = this.defaultX + radius * cosSin.cos;\r\n var y = this.defaultY + radius * cosSin.sin;\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _addLabelAlignmentAndOffset: function(label, coord) {\r\n return coord\r\n },\r\n _checkLabelPosition: function(label, coord) {\r\n var that = this;\r\n var visibleArea = that._getVisibleArea();\r\n var graphicBBox = that._getGraphicBBox();\r\n if (that._isPointInVisibleArea(visibleArea, graphicBBox)) {\r\n coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())\r\n }\r\n return coord\r\n },\r\n _getErrorBarSettings: function(errorBarOptions, animationEnabled) {\r\n var settings = _symbol_point.default._getErrorBarSettings.call(this, errorBarOptions, animationEnabled);\r\n settings.rotate = ERROR_BARS_ANGLE_OFFSET - this.angle;\r\n settings.rotateX = this.centerX;\r\n settings.rotateY = this.centerY;\r\n return settings\r\n },\r\n getCoords: function(min) {\r\n return min ? this.getDefaultCoords() : {\r\n x: this.x,\r\n y: this.y\r\n }\r\n }\r\n});\r\nexports.polarSymbolPoint = polarSymbolPoint;\r\nvar polarBarPoint = _extend({}, _bar_point.default, {\r\n _translateErrorBars: polarSymbolPoint._translateErrorBars,\r\n _getErrorBarSettings: polarSymbolPoint._getErrorBarSettings,\r\n _moveLabelOnCanvas: polarSymbolPoint._moveLabelOnCanvas,\r\n _getLabelCoords: _pie_point.default._getLabelCoords,\r\n _getElementCoords: _pie_point.default._getElementCoords,\r\n _getLabelConnector: _pie_point.default._getLabelConnector,\r\n getTooltipParams: _pie_point.default.getTooltipParams,\r\n _getLabelPosition: _pie_point.default._getLabelPosition,\r\n _getCoords: polarSymbolPoint._getCoords,\r\n _translate: function() {\r\n var that = this;\r\n var translator = that._getValTranslator();\r\n var businessRange = translator.getBusinessRange();\r\n var maxRadius = translator.isInverted() ? translator.translate(CANVAS_POSITION_START) : translator.translate(CANVAS_POSITION_END);\r\n that.radiusInner = translator.translate(that.minValue);\r\n polarSymbolPoint._translate.call(that);\r\n if (null === that.radiusInner) {\r\n that.radiusInner = that.radius = maxRadius\r\n } else {\r\n if (null === that.radius) {\r\n that.radius = that.value >= businessRange.minVisible ? maxRadius : 0\r\n } else {\r\n if (that.radius > maxRadius) {\r\n that.radius = maxRadius\r\n }\r\n }\r\n }\r\n that.radiusOuter = that.radiusLabels = _max(that.radiusInner, that.radius);\r\n that.radiusLabels += RADIAL_LABEL_INDENT;\r\n that.radiusInner = that.defaultRadius = _math.min(that.radiusInner, that.radius);\r\n that.middleAngle = that.angle = -(0, _utils.normalizeAngle)(that.middleAngleCorrection - that.angle)\r\n },\r\n _checkRadiusForVisibleArea: function(radius) {\r\n return (0, _type.isDefined)(radius) || this._getValTranslator().translate(this.minValue) > 0\r\n },\r\n _getErrorBarBaseEdgeLength: function() {\r\n var coord = this.getMarkerCoords();\r\n return _math.PI * coord.outerRadius * _math.abs(coord.startAngle - coord.endAngle) / 180\r\n },\r\n getMarkerCoords: function() {\r\n return {\r\n x: this.centerX,\r\n y: this.centerY,\r\n outerRadius: this.radiusOuter,\r\n innerRadius: this.defaultRadius,\r\n startAngle: this.middleAngle - this.interval / 2,\r\n endAngle: this.middleAngle + this.interval / 2\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled) {\r\n var that = this;\r\n var styles = that._getStyle();\r\n var coords = that.getMarkerCoords();\r\n var innerRadius = coords.innerRadius;\r\n var outerRadius = coords.outerRadius;\r\n var start = that._getCoords(that.argument, CANVAS_POSITION_DEFAULT);\r\n var x = coords.x;\r\n var y = coords.y;\r\n if (animationEnabled) {\r\n innerRadius = 0;\r\n outerRadius = 0;\r\n x = start.x;\r\n y = start.y\r\n }\r\n that.graphic = renderer.arc(x, y, innerRadius, outerRadius, coords.startAngle, coords.endAngle).attr(styles).data({\r\n \"chart-data-point\": that\r\n }).append(group)\r\n },\r\n _checkLabelPosition: function(label, coord) {\r\n var that = this;\r\n var visibleArea = that._getVisibleArea();\r\n var angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);\r\n var x = that.centerX + that.defaultRadius * angleFunctions.cos;\r\n var y = that.centerY - that.defaultRadius * angleFunctions.sin;\r\n if (x > visibleArea.minX && x < visibleArea.maxX && y > visibleArea.minY && y < visibleArea.maxY) {\r\n coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())\r\n }\r\n return coord\r\n },\r\n _addLabelAlignmentAndOffset: function(label, coord) {\r\n return coord\r\n },\r\n correctCoordinates: function(correctOptions) {\r\n this.middleAngleCorrection = correctOptions.offset;\r\n this.interval = correctOptions.width\r\n },\r\n coordsIn: function(x, y) {\r\n var val = (0, _utils.convertXYToPolar)(this.series.getValueAxis().getCenter(), x, y);\r\n var coords = this.getMarkerCoords();\r\n var isBetweenAngles = coords.startAngle < coords.endAngle ? -val.phi >= coords.startAngle && -val.phi <= coords.endAngle : -val.phi <= coords.startAngle && -val.phi >= coords.endAngle;\r\n return val.r >= coords.innerRadius && val.r <= coords.outerRadius && isBetweenAngles\r\n }\r\n});\r\nexports.polarBarPoint = polarBarPoint;\r\n","/**\r\n * DevExtreme (viz/series/range_series.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.chart = void 0;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _area_series = require(\"./area_series\");\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar _extend = _extend2.extend;\r\nvar barSeries = _bar_series.chart.bar;\r\nvar areaSeries = _area_series.chart.area;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar baseRangeSeries = {\r\n areErrorBarsVisible: _common.noop,\r\n _createErrorBarGroup: _common.noop,\r\n _checkData: function(data, skippedFields) {\r\n var valueFields = this.getValueFields();\r\n return _scatter_series.chart._checkData.call(this, data, skippedFields, {\r\n minValue: valueFields[0],\r\n value: valueFields[1]\r\n }) && data.minValue === data.minValue\r\n },\r\n getValueRangeInitialValue: _scatter_series.chart.getValueRangeInitialValue,\r\n _getPointDataSelector: function(data) {\r\n var _this = this;\r\n var valueFields = this.getValueFields();\r\n var val1Field = valueFields[0];\r\n var val2Field = valueFields[1];\r\n var tagField = this.getTagField();\r\n var argumentField = this.getArgumentField();\r\n return function(data) {\r\n return {\r\n tag: data[tagField],\r\n minValue: _this._processEmptyValue(data[val1Field]),\r\n value: _this._processEmptyValue(data[val2Field]),\r\n argument: data[argumentField],\r\n data: data\r\n }\r\n }\r\n },\r\n _defaultAggregator: \"range\",\r\n _aggregators: {\r\n range: function(_ref, series) {\r\n var _data$reduce;\r\n var intervalStart = _ref.intervalStart,\r\n data = _ref.data;\r\n if (!data.length) {\r\n return\r\n }\r\n var valueFields = series.getValueFields();\r\n var val1Field = valueFields[0];\r\n var val2Field = valueFields[1];\r\n var result = data.reduce(function(result, item) {\r\n var val1 = item[val1Field];\r\n var val2 = item[val2Field];\r\n if (!(0, _type.isDefined)(val1) || !(0, _type.isDefined)(val2)) {\r\n return result\r\n }\r\n result[val1Field] = Math.min(result[val1Field], Math.min(val1, val2));\r\n result[val2Field] = Math.max(result[val2Field], Math.max(val1, val2));\r\n return result\r\n }, (_data$reduce = {}, _defineProperty(_data$reduce, val1Field, 1 / 0), _defineProperty(_data$reduce, val2Field, -(1 / 0)), _defineProperty(_data$reduce, series.getArgumentField(), intervalStart), _data$reduce));\r\n if (!isFinite(result[val1Field]) || !isFinite(result[val2Field])) {\r\n if (data.filter(function(i) {\r\n return null === i[val1Field] && null === i[val2Field]\r\n }).length === data.length) {\r\n result[val1Field] = result[val2Field] = null\r\n } else {\r\n return\r\n }\r\n }\r\n return result\r\n }\r\n },\r\n getValueFields: function() {\r\n return [this._options.rangeValue1Field || \"val1\", this._options.rangeValue2Field || \"val2\"]\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var rotated = this._options.rotated;\r\n var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n var coordName = isOpposite ? \"vy\" : \"vx\";\r\n var minCoordName = rotated ? \"minX\" : \"minY\";\r\n var oppositeCoordName = isOpposite ? \"vx\" : \"vy\";\r\n var points = this.getPoints();\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpCoord = void 0;\r\n if (isArgument) {\r\n tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0\r\n } else {\r\n var coords = [Math.min(p[coordName], p[minCoordName]), Math.max(p[coordName], p[minCoordName])];\r\n tmpCoord = coord >= coords[0] && coord <= coords[1] ? p[oppositeCoordName] : void 0\r\n }\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n }\r\n};\r\nchart.rangebar = _extend({}, barSeries, baseRangeSeries);\r\nchart.rangearea = _extend({}, areaSeries, {\r\n _drawPoint: function(options) {\r\n var point = options.point;\r\n if (point.isInVisibleArea()) {\r\n point.clearVisibility();\r\n point.draw(this._renderer, options.groups);\r\n this._drawnPoints.push(point);\r\n if (!point.visibleTopMarker) {\r\n point.hideMarker(\"top\")\r\n }\r\n if (!point.visibleBottomMarker) {\r\n point.hideMarker(\"bottom\")\r\n }\r\n } else {\r\n point.setInvisibility()\r\n }\r\n },\r\n _prepareSegment: function(points, rotated) {\r\n var processedPoints = this._processSinglePointsAreaSegment(points, rotated);\r\n var processedMinPointsCoords = (0, _utils.map)(processedPoints, function(pt) {\r\n return pt.getCoords(true)\r\n });\r\n return {\r\n line: processedPoints,\r\n bottomLine: processedMinPointsCoords,\r\n area: (0, _utils.map)(processedPoints, function(pt) {\r\n return pt.getCoords()\r\n }).concat(processedMinPointsCoords.slice().reverse()),\r\n singlePointSegment: processedPoints !== points\r\n }\r\n },\r\n _getDefaultSegment: function(segment) {\r\n var defaultSegment = areaSeries._getDefaultSegment.call(this, segment);\r\n defaultSegment.bottomLine = defaultSegment.line;\r\n return defaultSegment\r\n },\r\n _removeElement: function(element) {\r\n areaSeries._removeElement.call(this, element);\r\n element.bottomLine && element.bottomLine.remove()\r\n },\r\n _drawElement: function(segment, group) {\r\n var that = this;\r\n var drawnElement = areaSeries._drawElement.call(that, segment, group);\r\n drawnElement.bottomLine = that._bordersGroup && that._createBorderElement(segment.bottomLine, {\r\n \"stroke-width\": that._styles.normal.border[\"stroke-width\"]\r\n }).append(that._bordersGroup);\r\n return drawnElement\r\n },\r\n _applyStyle: function(style) {\r\n var that = this;\r\n var elementsGroup = that._elementsGroup;\r\n var bordersGroup = that._bordersGroup;\r\n elementsGroup && elementsGroup.smartAttr(style.elements);\r\n bordersGroup && bordersGroup.attr(style.border);\r\n (that._graphics || []).forEach(function(graphic) {\r\n graphic.line && graphic.line.attr({\r\n \"stroke-width\": style.border[\"stroke-width\"]\r\n });\r\n graphic.bottomLine && graphic.bottomLine.attr({\r\n \"stroke-width\": style.border[\"stroke-width\"]\r\n })\r\n })\r\n },\r\n _updateElement: function(element, segment, animate, complete) {\r\n var bottomLineParams = {\r\n points: segment.bottomLine\r\n };\r\n var bottomBorderElement = element.bottomLine;\r\n areaSeries._updateElement.apply(this, arguments);\r\n if (bottomBorderElement) {\r\n animate ? bottomBorderElement.animate(bottomLineParams) : bottomBorderElement.attr(bottomLineParams)\r\n }\r\n }\r\n}, baseRangeSeries);\r\n","/**\r\n * DevExtreme (viz/series/pie_series.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.pie = exports.doughnut = exports.donut = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar chartScatterSeries = _scatter_series.chart;\r\nvar barSeries = _bar_series.chart.bar;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar _noop = _common.noop;\r\nvar _map = _utils.map;\r\nvar _isFinite = isFinite;\r\nvar _max = Math.max;\r\nvar ANIMATION_DURATION = .7;\r\nvar INSIDE = \"inside\";\r\nvar pie = _extend({}, barSeries, {\r\n _setGroupsSettings: function() {\r\n chartScatterSeries._setGroupsSettings.apply(this, arguments);\r\n this._labelsGroup.attr({\r\n \"pointer-events\": null\r\n })\r\n },\r\n _createErrorBarGroup: _noop,\r\n _drawPoint: function(options) {\r\n var point = options.point;\r\n var legendCallback = this._legendCallback;\r\n chartScatterSeries._drawPoint.call(this, options);\r\n !point.isVisible() && point.setInvisibility();\r\n point.isSelected() && legendCallback()\r\n },\r\n _getOldPoint: function(data, oldPointsByArgument, index) {\r\n var point = (this._points || [])[index];\r\n if (point) {\r\n oldPointsByArgument[point.argument.valueOf()] = oldPointsByArgument[point.argument.valueOf()].filter(function(p) {\r\n return p !== point\r\n })\r\n }\r\n return point\r\n },\r\n adjustLabels: function(moveLabelsFromCenter) {\r\n return (this._points || []).reduce(function(r, p) {\r\n if (p._label.isVisible()) {\r\n p.setLabelTrackerData();\r\n r = p.applyWordWrap(moveLabelsFromCenter) || r;\r\n p.updateLabelCoord(moveLabelsFromCenter);\r\n return r\r\n }\r\n }, false)\r\n },\r\n _applyElementsClipRect: _noop,\r\n getColor: _noop,\r\n areErrorBarsVisible: _noop,\r\n drawLabelsWOPoints: function() {\r\n var that = this;\r\n if (that._options.label.position === INSIDE) {\r\n return false\r\n }\r\n that._labelsGroup.append(that._extGroups.labelsGroup);\r\n (that._points || []).forEach(function(point) {\r\n point.drawLabel()\r\n });\r\n return true\r\n },\r\n getPointsCount: function() {\r\n var _this = this;\r\n return this._data.filter(function(d) {\r\n return _this._checkData(d)\r\n }).length\r\n },\r\n setMaxPointsCount: function(count) {\r\n this._pointsCount = count\r\n },\r\n _getCreatingPointOptions: function(data, dataIndex) {\r\n return this._getPointOptions(data, dataIndex)\r\n },\r\n _updateOptions: function(options) {\r\n this.labelSpace = 0;\r\n this.innerRadius = \"pie\" === this.type ? 0 : options.innerRadius\r\n },\r\n _checkData: function(data, skippedFields) {\r\n var base = barSeries._checkData.call(this, data, skippedFields, {\r\n value: this.getValueFields()[0]\r\n });\r\n return this._options.paintNullPoints ? base : base && null !== data.value\r\n },\r\n _createGroups: chartScatterSeries._createGroups,\r\n _setMarkerGroupSettings: function() {\r\n this._markersGroup.attr({\r\n \"class\": \"dxc-markers\"\r\n })\r\n },\r\n _getMainColor: function(data, point) {\r\n var pointsByArg = this.getPointsByArg(data.argument);\r\n var argumentIndex = point ? pointsByArg.indexOf(point) : pointsByArg.length;\r\n return this._options.mainSeriesColor(data.argument, argumentIndex, this._pointsCount)\r\n },\r\n _getPointOptions: function(data) {\r\n return this._parsePointOptions(this._preparePointOptions(), this._options.label, data)\r\n },\r\n _getRangeData: function() {\r\n return this._rangeData\r\n },\r\n _createPointStyles: function(pointOptions, data, point) {\r\n var that = this;\r\n var mainColor = pointOptions.color || that._getMainColor(data, point);\r\n return {\r\n normal: that._parsePointStyle(pointOptions, mainColor, mainColor),\r\n hover: that._parsePointStyle(pointOptions.hoverStyle, mainColor, mainColor),\r\n selection: that._parsePointStyle(pointOptions.selectionStyle, mainColor, mainColor),\r\n legendStyles: {\r\n normal: that._createLegendState(pointOptions, mainColor),\r\n hover: that._createLegendState(pointOptions.hoverStyle, mainColor),\r\n selection: that._createLegendState(pointOptions.selectionStyle, mainColor)\r\n }\r\n }\r\n },\r\n _getArrangeMinShownValue: function(points, total) {\r\n var minSegmentSize = this._options.minSegmentSize;\r\n var totalMinSegmentSize = 0;\r\n var totalNotMinValues = 0;\r\n total = total || points.length;\r\n _each(points, function(_, point) {\r\n if (point.isVisible()) {\r\n if (point.normalInitialValue < minSegmentSize * total / 360) {\r\n totalMinSegmentSize += minSegmentSize\r\n } else {\r\n totalNotMinValues += point.normalInitialValue\r\n }\r\n }\r\n });\r\n return totalMinSegmentSize < 360 ? minSegmentSize * totalNotMinValues / (360 - totalMinSegmentSize) : 0\r\n },\r\n _applyArrangeCorrection: function(points, minShownValue, total) {\r\n var options = this._options;\r\n var isClockWise = \"anticlockwise\" !== options.segmentsDirection;\r\n var shiftedAngle = _isFinite(options.startAngle) ? (0, _utils.normalizeAngle)(options.startAngle) : 0;\r\n var minSegmentSize = options.minSegmentSize;\r\n var percent;\r\n var correction = 0;\r\n var zeroTotalCorrection = 0;\r\n if (0 === total) {\r\n total = points.filter(function(el) {\r\n return el.isVisible()\r\n }).length;\r\n zeroTotalCorrection = 1\r\n }\r\n _each(isClockWise ? points : points.concat([]).reverse(), function(_, point) {\r\n var val = point.isVisible() ? zeroTotalCorrection || point.normalInitialValue : 0;\r\n var updatedZeroValue;\r\n if (minSegmentSize && point.isVisible() && val < minShownValue) {\r\n updatedZeroValue = minShownValue\r\n }\r\n percent = val / total;\r\n point.correctValue(correction, percent, zeroTotalCorrection + (updatedZeroValue || 0));\r\n point.shiftedAngle = shiftedAngle;\r\n correction += updatedZeroValue || val\r\n });\r\n this._rangeData = {\r\n val: {\r\n min: 0,\r\n max: correction\r\n }\r\n }\r\n },\r\n _removePoint: function(point) {\r\n var points = this.getPointsByArg(point.argument);\r\n points.splice(points.indexOf(point), 1);\r\n point.dispose()\r\n },\r\n arrangePoints: function() {\r\n var that = this;\r\n var originalPoints = that._points || [];\r\n var minSegmentSize = that._options.minSegmentSize;\r\n var minShownValue;\r\n var isAllPointsNegative = true;\r\n var i = 0;\r\n var len = originalPoints.length;\r\n while (i < len && isAllPointsNegative) {\r\n isAllPointsNegative = originalPoints[i].value <= 0;\r\n i++\r\n }\r\n var points = that._points = _map(originalPoints, function(point) {\r\n if (null === point.value || !isAllPointsNegative && point.value < 0) {\r\n that._removePoint(point);\r\n return null\r\n } else {\r\n return point\r\n }\r\n });\r\n var maxValue = points.reduce(function(max, p) {\r\n return _max(max, Math.abs(p.initialValue))\r\n }, 0);\r\n points.forEach(function(p) {\r\n p.normalInitialValue = p.initialValue / (0 !== maxValue ? maxValue : 1)\r\n });\r\n var total = points.reduce(function(total, point) {\r\n return total + (point.isVisible() ? point.normalInitialValue : 0)\r\n }, 0);\r\n if (minSegmentSize) {\r\n minShownValue = this._getArrangeMinShownValue(points, total)\r\n }\r\n that._applyArrangeCorrection(points, minShownValue, total)\r\n },\r\n correctPosition: function(correction, canvas) {\r\n _each(this._points, function(_, point) {\r\n point.correctPosition(correction)\r\n });\r\n this.setVisibleArea(canvas)\r\n },\r\n correctRadius: function(correction) {\r\n this._points.forEach(function(point) {\r\n point.correctRadius(correction)\r\n })\r\n },\r\n correctLabelRadius: function(labelRadius) {\r\n this._points.forEach(function(point) {\r\n point.correctLabelRadius(labelRadius)\r\n })\r\n },\r\n setVisibleArea: function(canvas) {\r\n this._visibleArea = {\r\n minX: canvas.left,\r\n maxX: canvas.width - canvas.right,\r\n minY: canvas.top,\r\n maxY: canvas.height - canvas.bottom\r\n }\r\n },\r\n _applyVisibleArea: _noop,\r\n _animate: function(firstDrawing) {\r\n var that = this;\r\n var points = that._points;\r\n var pointsCount = points && points.length;\r\n var completeFunc = function() {\r\n that._animateComplete()\r\n };\r\n var animatePoint;\r\n if (firstDrawing) {\r\n animatePoint = function(p, i) {\r\n p.animate(i === pointsCount - 1 ? completeFunc : void 0, ANIMATION_DURATION, (1 - ANIMATION_DURATION) * i / (pointsCount - 1))\r\n }\r\n } else {\r\n animatePoint = function(p, i) {\r\n p.animate(i === pointsCount - 1 ? completeFunc : void 0)\r\n }\r\n }\r\n points.forEach(animatePoint)\r\n },\r\n getVisiblePoints: function() {\r\n return _map(this._points, function(p) {\r\n return p.isVisible() ? p : null\r\n })\r\n },\r\n getPointsByKeys: function(arg, argumentIndex) {\r\n var pointsByArg = this.getPointsByArg(arg);\r\n return pointsByArg[argumentIndex] && [pointsByArg[argumentIndex]] || []\r\n }\r\n});\r\nexports.pie = pie;\r\nvar doughnut = pie;\r\nexports.doughnut = doughnut;\r\nvar donut = pie;\r\nexports.donut = donut;\r\n","/**\r\n * DevExtreme (viz/series/stacked_series.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _area_series = require(\"./area_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _line_series = require(\"./line_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar chartAreaSeries = _area_series.chart.area;\r\nvar chartBarSeries = _bar_series.chart.bar;\r\nvar baseStackedSeries = {\r\n _calculateErrorBars: _common.noop,\r\n _updateOptions: function(options) {\r\n this._stackName = \"axis_\" + (options.axis || \"default\")\r\n }\r\n};\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\nchart.stackedline = (0, _extend2.extend)({}, _line_series.chart.line, baseStackedSeries, {});\r\nchart.stackedspline = (0, _extend2.extend)({}, _line_series.chart.spline, baseStackedSeries, {});\r\nchart.fullstackedline = (0, _extend2.extend)({}, _line_series.chart.line, baseStackedSeries, {\r\n getValueRangeInitialValue: _area_series.chart.area.getValueRangeInitialValue\r\n});\r\nchart.fullstackedspline = (0, _extend2.extend)({}, _line_series.chart.spline, baseStackedSeries, {\r\n getValueRangeInitialValue: _area_series.chart.area.getValueRangeInitialValue\r\n});\r\nvar stackedBar = chart.stackedbar = (0, _extend2.extend)({}, chartBarSeries, baseStackedSeries, {\r\n _updateOptions: function(options) {\r\n baseStackedSeries._updateOptions.call(this, options);\r\n this._stackName = this._stackName + \"_stack_\" + (options.stack || \"default\")\r\n }\r\n});\r\nchart.fullstackedbar = (0, _extend2.extend)({}, chartBarSeries, baseStackedSeries, {\r\n _updateOptions: stackedBar._updateOptions\r\n});\r\n\r\nfunction clonePoint(point, value, minValue, position) {\r\n point = (0, _object.clone)(point);\r\n point.value = value;\r\n point.minValue = minValue;\r\n point.translate();\r\n point.argument = point.argument + position;\r\n return point\r\n}\r\n\r\nfunction preparePointsForStackedAreaSegment(points) {\r\n var i = 0;\r\n var p;\r\n var result = [];\r\n var array;\r\n var len = points.length;\r\n while (i < len) {\r\n p = points[i];\r\n array = [p];\r\n if (p.leftHole) {\r\n array = [clonePoint(p, p.leftHole, p.minLeftHole, \"left\"), p]\r\n }\r\n if (p.rightHole) {\r\n array.push(clonePoint(p, p.rightHole, p.minRightHole, \"right\"))\r\n }\r\n result.push(array);\r\n i++\r\n }\r\n return [].concat.apply([], result)\r\n}\r\nchart.stackedarea = (0, _extend2.extend)({}, chartAreaSeries, baseStackedSeries, {\r\n _prepareSegment: function(points, rotated) {\r\n return chartAreaSeries._prepareSegment.call(this, preparePointsForStackedAreaSegment(points), rotated)\r\n },\r\n _appendInGroup: function() {\r\n this._group.append(this._extGroups.seriesGroup).toBackground()\r\n }\r\n});\r\n\r\nfunction getPointsByArgFromPrevSeries(prevSeries, argument) {\r\n var result;\r\n while (!result && prevSeries) {\r\n result = prevSeries._segmentByArg && prevSeries._segmentByArg[argument];\r\n prevSeries = prevSeries._prevSeries\r\n }\r\n return result\r\n}\r\nchart.stackedsplinearea = (0, _extend2.extend)({}, _area_series.chart.splinearea, baseStackedSeries, {\r\n _prepareSegment: function(points, rotated) {\r\n var that = this;\r\n var areaSegment;\r\n points = preparePointsForStackedAreaSegment(points);\r\n if (!this._prevSeries || 1 === points.length) {\r\n areaSegment = _area_series.chart.splinearea._prepareSegment.call(this, points, rotated)\r\n } else {\r\n var forwardPoints = _line_series.chart.spline._calculateBezierPoints(points, rotated);\r\n var backwardPoints = (0, _utils.map)(points, function(p) {\r\n var point = p.getCoords(true);\r\n point.argument = p.argument;\r\n return point\r\n });\r\n var prevSeriesForwardPoints = [];\r\n var pointByArg = {};\r\n var i = 0;\r\n var len = that._prevSeries._segments.length;\r\n while (i < len) {\r\n prevSeriesForwardPoints = prevSeriesForwardPoints.concat(that._prevSeries._segments[i].line);\r\n i++\r\n }(0, _iterator.each)(prevSeriesForwardPoints, function(_, p) {\r\n if (null !== p.argument) {\r\n var argument = p.argument.valueOf();\r\n if (!pointByArg[argument]) {\r\n pointByArg[argument] = [p]\r\n } else {\r\n pointByArg[argument].push(p)\r\n }\r\n }\r\n });\r\n that._prevSeries._segmentByArg = pointByArg;\r\n backwardPoints = _line_series.chart.spline._calculateBezierPoints(backwardPoints, rotated);\r\n (0, _iterator.each)(backwardPoints, function(i, p) {\r\n var argument = p.argument.valueOf();\r\n var prevSeriesPoints;\r\n if (i % 3 === 0) {\r\n prevSeriesPoints = pointByArg[argument] || getPointsByArgFromPrevSeries(that._prevSeries, argument);\r\n if (prevSeriesPoints) {\r\n backwardPoints[i - 1] && prevSeriesPoints[0] && (backwardPoints[i - 1] = prevSeriesPoints[0]);\r\n backwardPoints[i + 1] && (backwardPoints[i + 1] = prevSeriesPoints[2] || p)\r\n }\r\n }\r\n });\r\n areaSegment = {\r\n line: forwardPoints,\r\n area: forwardPoints.concat(backwardPoints.reverse())\r\n };\r\n that._areaPointsToSplineAreaPoints(areaSegment.area)\r\n }\r\n return areaSegment\r\n },\r\n _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\nchart.fullstackedarea = (0, _extend2.extend)({}, chartAreaSeries, baseStackedSeries, {\r\n _prepareSegment: chart.stackedarea._prepareSegment,\r\n _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\nchart.fullstackedsplinearea = (0, _extend2.extend)({}, _area_series.chart.splinearea, baseStackedSeries, {\r\n _prepareSegment: chart.stackedsplinearea._prepareSegment,\r\n _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\npolar.stackedbar = (0, _extend2.extend)({}, _bar_series.polar.bar, baseStackedSeries, {});\r\n","/**\r\n * DevExtreme (viz/sparkline.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _sparkline = _interopRequireDefault(require(\"./sparklines/sparkline\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _sparkline.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/sparklines/sparkline.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _base_sparkline = _interopRequireDefault(require(\"./base_sparkline\"));\r\nvar _data_validator = require(\"../components/data_validator\");\r\nvar _base_series = require(\"../series/base_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _data_source = require(\"../core/data_source\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar MIN_BAR_WIDTH = 1;\r\nvar MAX_BAR_WIDTH = 50;\r\nvar DEFAULT_BAR_INTERVAL = 4;\r\nvar DEFAULT_CANVAS_WIDTH = 250;\r\nvar DEFAULT_CANVAS_HEIGHT = 30;\r\nvar DEFAULT_POINT_BORDER = 2;\r\nvar ALLOWED_TYPES = {\r\n line: true,\r\n spline: true,\r\n stepline: true,\r\n area: true,\r\n steparea: true,\r\n splinearea: true,\r\n bar: true,\r\n winloss: true\r\n};\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _round = _math.round;\r\nvar _max = _math.max;\r\nvar _min = _math.min;\r\nvar _isFinite = isFinite;\r\nvar _Number = Number;\r\nvar _String = String;\r\n\r\nfunction findMinMax(data, valField) {\r\n var firstItem = data[0] || {};\r\n var firstValue = firstItem[valField] || 0;\r\n var min = firstValue;\r\n var max = firstValue;\r\n var minIndexes = [0];\r\n var maxIndexes = [0];\r\n var dataLength = data.length;\r\n var value;\r\n var i;\r\n for (i = 1; i < dataLength; i++) {\r\n value = data[i][valField];\r\n if (value < min) {\r\n min = value;\r\n minIndexes = [i]\r\n } else {\r\n if (value === min) {\r\n minIndexes.push(i)\r\n }\r\n }\r\n if (value > max) {\r\n max = value;\r\n maxIndexes = [i]\r\n } else {\r\n if (value === max) {\r\n maxIndexes.push(i)\r\n }\r\n }\r\n }\r\n if (max === min) {\r\n minIndexes = maxIndexes = []\r\n }\r\n return {\r\n minIndexes: minIndexes,\r\n maxIndexes: maxIndexes\r\n }\r\n}\r\n\r\nfunction parseNumericDataSource(data, argField, valField, ignoreEmptyPoints) {\r\n return (0, _utils.map)(data, function(dataItem, index) {\r\n var item = null;\r\n var isDataNumber;\r\n var value;\r\n if (void 0 !== dataItem) {\r\n item = {};\r\n isDataNumber = _isFinite(dataItem);\r\n item[argField] = isDataNumber ? _String(index) : dataItem[argField];\r\n value = isDataNumber ? dataItem : dataItem[valField];\r\n item[valField] = null === value ? ignoreEmptyPoints ? void 0 : value : _Number(value);\r\n item = void 0 !== item[argField] && void 0 !== item[valField] ? item : null\r\n }\r\n return item\r\n })\r\n}\r\n\r\nfunction parseWinlossDataSource(data, argField, valField, target) {\r\n var lowBarValue = -1;\r\n var zeroBarValue = 0;\r\n var highBarValue = 1;\r\n var delta = 1e-4;\r\n return (0, _utils.map)(data, function(dataItem) {\r\n var item = {};\r\n item[argField] = dataItem[argField];\r\n if (_abs(dataItem[valField] - target) < delta) {\r\n item[valField] = zeroBarValue\r\n } else {\r\n if (dataItem[valField] > target) {\r\n item[valField] = highBarValue\r\n } else {\r\n item[valField] = lowBarValue\r\n }\r\n }\r\n return item\r\n })\r\n}\r\n\r\nfunction selectPointColor(color, options, index, pointIndexes) {\r\n if (index === pointIndexes.first || index === pointIndexes.last) {\r\n color = options.firstLastColor\r\n }\r\n if ((pointIndexes.min || []).indexOf(index) >= 0) {\r\n color = options.minColor\r\n }\r\n if ((pointIndexes.max || []).indexOf(index) >= 0) {\r\n color = options.maxColor\r\n }\r\n return color\r\n}\r\n\r\nfunction createLineCustomizeFunction(pointIndexes, options) {\r\n return function() {\r\n var color = selectPointColor(void 0, options, this.index, pointIndexes);\r\n return color ? {\r\n visible: true,\r\n border: {\r\n color: color\r\n }\r\n } : {}\r\n }\r\n}\r\n\r\nfunction createBarCustomizeFunction(pointIndexes, options, winlossData) {\r\n return function() {\r\n var index = this.index;\r\n var isWinloss = \"winloss\" === options.type;\r\n var target = isWinloss ? options.winlossThreshold : 0;\r\n var value = isWinloss ? winlossData[index][options.valueField] : this.value;\r\n var positiveColor = isWinloss ? options.winColor : options.barPositiveColor;\r\n var negativeColor = isWinloss ? options.lossColor : options.barNegativeColor;\r\n return {\r\n color: selectPointColor(value >= target ? positiveColor : negativeColor, options, index, pointIndexes)\r\n }\r\n }\r\n}\r\nvar dxSparkline = _base_sparkline.default.inherit({\r\n _rootClassPrefix: \"dxsl\",\r\n _rootClass: \"dxsl-sparkline\",\r\n _themeSection: \"sparkline\",\r\n _defaultSize: {\r\n width: DEFAULT_CANVAS_WIDTH,\r\n height: DEFAULT_CANVAS_HEIGHT\r\n },\r\n _initCore: function() {\r\n this.callBase();\r\n this._createSeries()\r\n },\r\n _initialChanges: [\"DATA_SOURCE\"],\r\n _dataSourceChangedHandler: function() {\r\n this._requestChange([\"UPDATE\"])\r\n },\r\n _updateWidgetElements: function() {\r\n this._updateSeries();\r\n this.callBase()\r\n },\r\n _disposeWidgetElements: function() {\r\n var that = this;\r\n that._series && that._series.dispose();\r\n that._series = that._seriesGroup = that._seriesLabelGroup = null\r\n },\r\n _cleanWidgetElements: function() {\r\n this._seriesGroup.remove();\r\n this._seriesLabelGroup.remove();\r\n this._seriesGroup.clear();\r\n this._seriesLabelGroup.clear()\r\n },\r\n _drawWidgetElements: function() {\r\n if (this._dataIsLoaded()) {\r\n this._drawSeries();\r\n this._drawn()\r\n }\r\n },\r\n _getCorrectCanvas: function() {\r\n var options = this._allOptions;\r\n var canvas = this._canvas;\r\n var halfPointSize = options.pointSize && Math.ceil(options.pointSize / 2) + DEFAULT_POINT_BORDER;\r\n var type = options.type;\r\n if (\"bar\" !== type && \"winloss\" !== type && (options.showFirstLast || options.showMinMax)) {\r\n return {\r\n width: canvas.width,\r\n height: canvas.height,\r\n left: canvas.left + halfPointSize,\r\n right: canvas.right + halfPointSize,\r\n top: canvas.top + halfPointSize,\r\n bottom: canvas.bottom + halfPointSize\r\n }\r\n }\r\n return canvas\r\n },\r\n _prepareOptions: function() {\r\n var that = this;\r\n that._allOptions = that.callBase();\r\n that._allOptions.type = (0, _utils.normalizeEnum)(that._allOptions.type);\r\n if (!ALLOWED_TYPES[that._allOptions.type]) {\r\n that._allOptions.type = \"line\"\r\n }\r\n },\r\n _createHtmlElements: function() {\r\n this._seriesGroup = this._renderer.g().attr({\r\n \"class\": \"dxsl-series\"\r\n });\r\n this._seriesLabelGroup = this._renderer.g().attr({\r\n \"class\": \"dxsl-series-labels\"\r\n })\r\n },\r\n _createSeries: function() {\r\n this._series = new _base_series.Series({\r\n renderer: this._renderer,\r\n seriesGroup: this._seriesGroup,\r\n labelsGroup: this._seriesLabelGroup,\r\n argumentAxis: this._argumentAxis,\r\n valueAxis: this._valueAxis\r\n }, {\r\n widgetType: \"chart\",\r\n type: \"line\"\r\n })\r\n },\r\n _updateSeries: function() {\r\n var that = this;\r\n var singleSeries = that._series;\r\n that._prepareDataSource();\r\n var seriesOptions = that._prepareSeriesOptions();\r\n singleSeries.updateOptions(seriesOptions);\r\n var groupsData = {\r\n groups: [{\r\n series: [singleSeries]\r\n }]\r\n };\r\n groupsData.argumentOptions = {\r\n type: \"bar\" === seriesOptions.type ? \"discrete\" : void 0\r\n };\r\n that._simpleDataSource = (0, _data_validator.validateData)(that._simpleDataSource, groupsData, that._incidentOccurred, {\r\n checkTypeForAllData: false,\r\n convertToAxisDataType: true,\r\n sortingMethod: true\r\n })[singleSeries.getArgumentField()];\r\n seriesOptions.customizePoint = that._getCustomizeFunction();\r\n singleSeries.updateData(that._simpleDataSource);\r\n singleSeries.createPoints();\r\n that._groupsDataCategories = groupsData.categories\r\n },\r\n _optionChangesMap: {\r\n dataSource: \"DATA_SOURCE\"\r\n },\r\n _optionChangesOrder: [\"DATA_SOURCE\"],\r\n _change_DATA_SOURCE: function() {\r\n this._updateDataSource()\r\n },\r\n _prepareDataSource: function() {\r\n var that = this;\r\n var options = that._allOptions;\r\n var argField = options.argumentField;\r\n var valField = options.valueField;\r\n var dataSource = that._dataSourceItems() || [];\r\n var data = parseNumericDataSource(dataSource, argField, valField, that.option(\"ignoreEmptyPoints\"));\r\n if (\"winloss\" === options.type) {\r\n that._winlossDataSource = data;\r\n that._simpleDataSource = parseWinlossDataSource(data, argField, valField, options.winlossThreshold)\r\n } else {\r\n that._simpleDataSource = data\r\n }\r\n },\r\n _prepareSeriesOptions: function() {\r\n var that = this;\r\n var options = that._allOptions;\r\n var type = \"winloss\" === options.type ? \"bar\" : options.type;\r\n return {\r\n visible: true,\r\n argumentField: options.argumentField,\r\n valueField: options.valueField,\r\n color: options.lineColor,\r\n width: options.lineWidth,\r\n widgetType: \"chart\",\r\n type: type,\r\n opacity: type.indexOf(\"area\") !== -1 ? that._allOptions.areaOpacity : void 0,\r\n point: {\r\n size: options.pointSize,\r\n symbol: options.pointSymbol,\r\n border: {\r\n visible: true,\r\n width: DEFAULT_POINT_BORDER\r\n },\r\n color: options.pointColor,\r\n visible: false,\r\n hoverStyle: {\r\n border: {}\r\n },\r\n selectionStyle: {\r\n border: {}\r\n }\r\n },\r\n border: {\r\n color: options.lineColor,\r\n width: options.lineWidth,\r\n visible: \"bar\" !== type\r\n }\r\n }\r\n },\r\n _getCustomizeFunction: function() {\r\n var that = this;\r\n var options = that._allOptions;\r\n var dataSource = that._winlossDataSource || that._simpleDataSource;\r\n var drawnPointIndexes = that._getExtremumPointsIndexes(dataSource);\r\n var customizeFunction;\r\n if (\"winloss\" === options.type || \"bar\" === options.type) {\r\n customizeFunction = createBarCustomizeFunction(drawnPointIndexes, options, that._winlossDataSource)\r\n } else {\r\n customizeFunction = createLineCustomizeFunction(drawnPointIndexes, options)\r\n }\r\n return customizeFunction\r\n },\r\n _getExtremumPointsIndexes: function(data) {\r\n var that = this;\r\n var options = that._allOptions;\r\n var lastIndex = data.length - 1;\r\n var indexes = {};\r\n that._minMaxIndexes = findMinMax(data, options.valueField);\r\n if (options.showFirstLast) {\r\n indexes.first = 0;\r\n indexes.last = lastIndex\r\n }\r\n if (options.showMinMax) {\r\n indexes.min = that._minMaxIndexes.minIndexes;\r\n indexes.max = that._minMaxIndexes.maxIndexes\r\n }\r\n return indexes\r\n },\r\n _getStick: function() {\r\n return {\r\n stick: \"bar\" !== this._series.type\r\n }\r\n },\r\n _updateRange: function() {\r\n var that = this;\r\n var series = that._series;\r\n var type = series.type;\r\n var isBarType = \"bar\" === type;\r\n var isWinlossType = \"winloss\" === type;\r\n var DEFAULT_VALUE_RANGE_MARGIN = .15;\r\n var DEFAULT_ARGUMENT_RANGE_MARGIN = .1;\r\n var WINLOSS_MAX_RANGE = 1;\r\n var WINLOSS_MIN_RANGE = -1;\r\n var rangeData = series.getRangeData();\r\n var minValue = that._allOptions.minValue;\r\n var hasMinY = (0, _type.isDefined)(minValue) && _isFinite(minValue);\r\n var maxValue = that._allOptions.maxValue;\r\n var hasMaxY = (0, _type.isDefined)(maxValue) && _isFinite(maxValue);\r\n var argCoef;\r\n var valCoef = (rangeData.val.max - rangeData.val.min) * DEFAULT_VALUE_RANGE_MARGIN;\r\n if (isBarType || isWinlossType || \"area\" === type) {\r\n if (0 !== rangeData.val.min) {\r\n rangeData.val.min -= valCoef\r\n }\r\n if (0 !== rangeData.val.max) {\r\n rangeData.val.max += valCoef\r\n }\r\n } else {\r\n rangeData.val.min -= valCoef;\r\n rangeData.val.max += valCoef\r\n }\r\n if (hasMinY || hasMaxY) {\r\n if (hasMinY && hasMaxY) {\r\n rangeData.val.minVisible = _min(minValue, maxValue);\r\n rangeData.val.maxVisible = _max(minValue, maxValue)\r\n } else {\r\n rangeData.val.minVisible = hasMinY ? _Number(minValue) : void 0;\r\n rangeData.val.maxVisible = hasMaxY ? _Number(maxValue) : void 0\r\n }\r\n if (isWinlossType) {\r\n rangeData.val.minVisible = hasMinY ? _max(rangeData.val.minVisible, WINLOSS_MIN_RANGE) : void 0;\r\n rangeData.val.maxVisible = hasMaxY ? _min(rangeData.val.maxVisible, WINLOSS_MAX_RANGE) : void 0\r\n }\r\n }\r\n if (series.getPoints().length > 1) {\r\n if (isBarType) {\r\n argCoef = (rangeData.arg.max - rangeData.arg.min) * DEFAULT_ARGUMENT_RANGE_MARGIN;\r\n rangeData.arg.min = rangeData.arg.min - argCoef;\r\n rangeData.arg.max = rangeData.arg.max + argCoef\r\n }\r\n }\r\n rangeData.arg.categories = that._groupsDataCategories;\r\n that._ranges = rangeData\r\n },\r\n _getBarWidth: function(pointsCount) {\r\n var that = this;\r\n var canvas = that._canvas;\r\n var intervalWidth = pointsCount * DEFAULT_BAR_INTERVAL;\r\n var rangeWidth = canvas.width - canvas.left - canvas.right - intervalWidth;\r\n var width = _round(rangeWidth / pointsCount);\r\n if (width < MIN_BAR_WIDTH) {\r\n width = MIN_BAR_WIDTH\r\n }\r\n if (width > MAX_BAR_WIDTH) {\r\n width = MAX_BAR_WIDTH\r\n }\r\n return width\r\n },\r\n _correctPoints: function() {\r\n var that = this;\r\n var seriesType = that._allOptions.type;\r\n var seriesPoints = that._series.getPoints();\r\n var pointsLength = seriesPoints.length;\r\n var barWidth;\r\n var i;\r\n if (\"bar\" === seriesType || \"winloss\" === seriesType) {\r\n barWidth = that._getBarWidth(pointsLength);\r\n for (i = 0; i < pointsLength; i++) {\r\n seriesPoints[i].correctCoordinates({\r\n width: barWidth,\r\n offset: 0\r\n })\r\n }\r\n }\r\n },\r\n _drawSeries: function() {\r\n var that = this;\r\n if (that._simpleDataSource.length > 0) {\r\n that._correctPoints();\r\n that._series.draw();\r\n that._seriesGroup.append(that._renderer.root)\r\n }\r\n },\r\n _isTooltipEnabled: function() {\r\n return !!this._simpleDataSource.length\r\n },\r\n _getTooltipData: function() {\r\n var that = this;\r\n var options = that._allOptions;\r\n var dataSource = that._winlossDataSource || that._simpleDataSource;\r\n var tooltip = that._tooltip;\r\n if (0 === dataSource.length) {\r\n return {}\r\n }\r\n var minMax = that._minMaxIndexes;\r\n var valueField = options.valueField;\r\n var first = dataSource[0][valueField];\r\n var last = dataSource[dataSource.length - 1][valueField];\r\n var min = (0, _type.isDefined)(minMax.minIndexes[0]) ? dataSource[minMax.minIndexes[0]][valueField] : first;\r\n var max = (0, _type.isDefined)(minMax.maxIndexes[0]) ? dataSource[minMax.maxIndexes[0]][valueField] : first;\r\n var formattedFirst = tooltip.formatValue(first);\r\n var formattedLast = tooltip.formatValue(last);\r\n var formattedMin = tooltip.formatValue(min);\r\n var formattedMax = tooltip.formatValue(max);\r\n var customizeObject = {\r\n firstValue: formattedFirst,\r\n lastValue: formattedLast,\r\n minValue: formattedMin,\r\n maxValue: formattedMax,\r\n originalFirstValue: first,\r\n originalLastValue: last,\r\n originalMinValue: min,\r\n originalMaxValue: max,\r\n valueText: [\"Start:\", formattedFirst, \"End:\", formattedLast, \"Min:\", formattedMin, \"Max:\", formattedMax]\r\n };\r\n if (\"winloss\" === options.type) {\r\n customizeObject.originalThresholdValue = options.winlossThreshold;\r\n customizeObject.thresholdValue = tooltip.formatValue(options.winlossThreshold)\r\n }\r\n return customizeObject\r\n }\r\n});\r\n(0, _utils.map)([\"lineColor\", \"lineWidth\", \"areaOpacity\", \"minColor\", \"maxColor\", \"barPositiveColor\", \"barNegativeColor\", \"winColor\", \"lessColor\", \"firstLastColor\", \"pointSymbol\", \"pointColor\", \"pointSize\", \"type\", \"argumentField\", \"valueField\", \"winlossThreshold\", \"showFirstLast\", \"showMinMax\", \"ignoreEmptyPoints\", \"minValue\", \"maxValue\"], function(name) {\r\n dxSparkline.prototype._optionChangesMap[name] = \"OPTIONS\"\r\n});\r\n(0, _component_registrator.default)(\"dxSparkline\", dxSparkline);\r\nvar _default = dxSparkline;\r\nexports.default = _default;\r\ndxSparkline.addPlugin(_data_source.plugin);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/themes.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.addCacheItem = addCacheItem;\r\nexports.currentTheme = currentTheme;\r\nexports.getTheme = getTheme;\r\nexports.refreshTheme = refreshTheme;\r\nexports.registerTheme = registerTheme;\r\nexports.registerThemeSchemeAlias = registerThemeSchemeAlias;\r\nexports.removeCacheItem = removeCacheItem;\r\nvar _extend2 = require(\"../core/utils/extend\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _utils = require(\"./core/utils\");\r\nvar _themes = require(\"../ui/themes\");\r\nvar themes = {};\r\nvar themesMapping = {};\r\nvar themesSchemeMapping = {};\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar currentThemeName = null;\r\nvar defaultTheme;\r\nvar nextCacheUid = 0;\r\nvar widgetsCache = {};\r\n\r\nfunction getTheme(themeName) {\r\n var name = (0, _utils.normalizeEnum)(themeName);\r\n return themes[name] || themes[themesMapping[name] || currentTheme()]\r\n}\r\n\r\nfunction findThemeNameByName(name, scheme) {\r\n return themesMapping[name + \".\" + scheme] || themesSchemeMapping[name + \".\" + scheme] || themesMapping[name]\r\n}\r\n\r\nfunction findThemeNameByPlatform(platform, version, scheme) {\r\n return findThemeNameByName(platform + version, scheme) || findThemeNameByName(platform, scheme)\r\n}\r\n\r\nfunction currentTheme(themeName, colorScheme) {\r\n if (!arguments.length) {\r\n return currentThemeName || findThemeNameByName((0, _themes.current)()) || defaultTheme\r\n }\r\n var scheme = (0, _utils.normalizeEnum)(colorScheme);\r\n currentThemeName = (themeName && themeName.platform ? findThemeNameByPlatform((0, _utils.normalizeEnum)(themeName.platform), themeName.version, scheme) : findThemeNameByName((0, _utils.normalizeEnum)(themeName), scheme)) || currentThemeName;\r\n return this\r\n}\r\n\r\nfunction getThemeInfo(themeName, splitter) {\r\n var k = themeName.indexOf(splitter);\r\n return k > 0 ? {\r\n name: themeName.substring(0, k),\r\n scheme: themeName.substring(k + 1)\r\n } : null\r\n}\r\n\r\nfunction registerThemeName(themeName, targetThemeName) {\r\n var themeInfo = getThemeInfo(themeName, \".\") || {\r\n name: themeName\r\n };\r\n var name = themeInfo.name;\r\n var scheme = themeInfo.scheme;\r\n if (scheme) {\r\n themesMapping[name] = themesMapping[name] || targetThemeName;\r\n themesMapping[name + \".\" + scheme] = targetThemeName\r\n } else {\r\n themesMapping[name] = targetThemeName\r\n }\r\n}\r\n\r\nfunction registerTheme(theme, baseThemeName) {\r\n var themeName = (0, _utils.normalizeEnum)(theme && theme.name);\r\n if (themeName) {\r\n theme.isDefault && (defaultTheme = themeName);\r\n registerThemeName(themeName, themeName);\r\n themes[themeName] = _extend(true, {}, getTheme(baseThemeName), patchTheme(theme))\r\n }\r\n}\r\n\r\nfunction registerThemeSchemeAlias(from, to) {\r\n themesSchemeMapping[from] = to\r\n}\r\n\r\nfunction mergeScalar(target, field, source, sourceValue) {\r\n var _value = source ? source[field] : sourceValue;\r\n if (void 0 !== _value && void 0 === target[field]) {\r\n target[field] = _value\r\n }\r\n}\r\n\r\nfunction mergeObject(target, field, source, sourceValue) {\r\n var _value = source ? source[field] : sourceValue;\r\n if (void 0 !== _value) {\r\n target[field] = _extend(true, {}, _value, target[field])\r\n }\r\n}\r\n\r\nfunction patchTheme(theme) {\r\n theme = _extend(true, {\r\n loadingIndicator: {\r\n font: {}\r\n },\r\n \"export\": {\r\n font: {}\r\n },\r\n legend: {\r\n font: {},\r\n border: {}\r\n },\r\n title: {\r\n font: {}\r\n },\r\n tooltip: {\r\n font: {}\r\n },\r\n \"chart:common\": {},\r\n \"chart:common:axis\": {\r\n grid: {},\r\n minorGrid: {},\r\n tick: {},\r\n minorTick: {},\r\n title: {\r\n font: {}\r\n },\r\n label: {\r\n font: {}\r\n }\r\n },\r\n \"chart:common:annotation\": {\r\n font: {},\r\n border: {}\r\n },\r\n chart: {\r\n commonSeriesSettings: {\r\n candlestick: {}\r\n }\r\n },\r\n pie: {},\r\n polar: {},\r\n gauge: {\r\n scale: {\r\n tick: {},\r\n minorTick: {},\r\n label: {\r\n font: {}\r\n }\r\n }\r\n },\r\n barGauge: {},\r\n funnel: {},\r\n sankey: {},\r\n map: {\r\n background: {}\r\n },\r\n treeMap: {\r\n tile: {\r\n selectionStyle: {\r\n border: {}\r\n }\r\n },\r\n group: {\r\n border: {},\r\n selectionStyle: {\r\n border: {}\r\n },\r\n label: {\r\n font: {}\r\n }\r\n }\r\n },\r\n rangeSelector: {\r\n scale: {\r\n tick: {},\r\n minorTick: {},\r\n label: {\r\n font: {}\r\n }\r\n },\r\n chart: {}\r\n },\r\n sparkline: {},\r\n bullet: {}\r\n }, theme);\r\n mergeScalar(theme.loadingIndicator, \"backgroundColor\", theme);\r\n mergeScalar(theme.chart.commonSeriesSettings.candlestick, \"innerColor\", null, theme.backgroundColor);\r\n mergeScalar(theme.map.background, \"color\", null, theme.backgroundColor);\r\n mergeScalar(theme.title.font, \"color\", null, theme.primaryTitleColor);\r\n mergeObject(theme.title, \"subtitle\", null, theme.title);\r\n mergeScalar(theme.legend.font, \"color\", null, theme.secondaryTitleColor);\r\n mergeScalar(theme.legend.border, \"color\", null, theme.gridColor);\r\n patchAxes(theme);\r\n _each([\"chart\", \"pie\", \"polar\", \"gauge\", \"barGauge\", \"map\", \"treeMap\", \"funnel\", \"rangeSelector\", \"sparkline\", \"bullet\", \"sankey\"], function(_, section) {\r\n mergeScalar(theme[section], \"redrawOnResize\", theme);\r\n mergeScalar(theme[section], \"containerBackgroundColor\", null, theme.backgroundColor);\r\n mergeObject(theme[section], \"tooltip\", theme);\r\n mergeObject(theme[section], \"export\", theme)\r\n });\r\n _each([\"chart\", \"pie\", \"polar\", \"gauge\", \"barGauge\", \"map\", \"treeMap\", \"funnel\", \"rangeSelector\", \"sankey\"], function(_, section) {\r\n mergeObject(theme[section], \"loadingIndicator\", theme);\r\n mergeObject(theme[section], \"legend\", theme);\r\n mergeObject(theme[section], \"title\", theme)\r\n });\r\n _each([\"chart\", \"pie\", \"polar\"], function(_, section) {\r\n mergeObject(theme, section, null, theme[\"chart:common\"])\r\n });\r\n _each([\"chart\", \"polar\"], function(_, section) {\r\n theme[section] = theme[section] || {};\r\n mergeObject(theme[section], \"commonAxisSettings\", null, theme[\"chart:common:axis\"])\r\n });\r\n _each([\"chart\", \"polar\", \"map\", \"pie\"], function(_, section) {\r\n theme[section] = theme[section] || {};\r\n mergeObject(theme[section], \"commonAnnotationSettings\", null, theme[\"chart:common:annotation\"])\r\n });\r\n mergeObject(theme.rangeSelector.chart, \"commonSeriesSettings\", theme.chart);\r\n mergeObject(theme.rangeSelector.chart, \"dataPrepareSettings\", theme.chart);\r\n mergeScalar(theme.treeMap.group.border, \"color\", null, theme.gridColor);\r\n mergeScalar(theme.treeMap.tile.selectionStyle.border, \"color\", null, theme.primaryTitleColor);\r\n mergeScalar(theme.treeMap.group.selectionStyle.border, \"color\", null, theme.primaryTitleColor);\r\n mergeScalar(theme.map.legend, \"backgroundColor\", theme);\r\n patchMapLayers(theme);\r\n return theme\r\n}\r\n\r\nfunction patchAxes(theme) {\r\n var commonAxisSettings = theme[\"chart:common:axis\"];\r\n var colorFieldName = \"color\";\r\n _each([commonAxisSettings.grid, commonAxisSettings.minorGrid], function(_, obj) {\r\n mergeScalar(obj, colorFieldName, null, theme.gridColor)\r\n });\r\n _each([commonAxisSettings, commonAxisSettings.tick, commonAxisSettings.minorTick, commonAxisSettings.label.font], function(_, obj) {\r\n mergeScalar(obj, colorFieldName, null, theme.axisColor)\r\n });\r\n mergeScalar(commonAxisSettings.title.font, colorFieldName, null, theme.secondaryTitleColor);\r\n mergeScalar(theme.gauge.scale.label.font, colorFieldName, null, theme.axisColor);\r\n mergeScalar(theme.gauge.scale.tick, colorFieldName, null, theme.backgroundColor);\r\n mergeScalar(theme.gauge.scale.minorTick, colorFieldName, null, theme.backgroundColor);\r\n mergeScalar(theme.rangeSelector.scale.label.font, colorFieldName, null, theme.axisColor)\r\n}\r\n\r\nfunction patchMapLayers(theme) {\r\n var map = theme.map;\r\n _each([\"area\", \"line\", \"marker\"], function(_, section) {\r\n mergeObject(map, \"layer:\" + section, null, map.layer)\r\n });\r\n _each([\"dot\", \"bubble\", \"pie\", \"image\"], function(_, section) {\r\n mergeObject(map, \"layer:marker:\" + section, null, map[\"layer:marker\"])\r\n })\r\n}\r\n\r\nfunction addCacheItem(target) {\r\n var cacheUid = ++nextCacheUid;\r\n target._cache = cacheUid;\r\n widgetsCache[cacheUid] = target\r\n}\r\n\r\nfunction removeCacheItem(target) {\r\n delete widgetsCache[target._cache]\r\n}\r\n\r\nfunction refreshTheme() {\r\n _each(widgetsCache, function() {\r\n this.refresh()\r\n });\r\n return this\r\n}\r\n","/**\r\n * DevExtreme (viz/series/scatter_series.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _extend3 = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _range_data_calculator = _interopRequireDefault(require(\"./helpers/range_data_calculator\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar math = Math;\r\nvar _abs = math.abs;\r\nvar _sqrt = math.sqrt;\r\nvar _max = math.max;\r\nvar DEFAULT_TRACKER_WIDTH = 12;\r\nvar DEFAULT_DURATION = 400;\r\nvar HIGH_ERROR = \"highError\";\r\nvar LOW_ERROR = \"lowError\";\r\nvar VARIANCE = \"variance\";\r\nvar STANDARD_DEVIATION = \"stddeviation\";\r\nvar STANDARD_ERROR = \"stderror\";\r\nvar PERCENT = \"percent\";\r\nvar FIXED = \"fixed\";\r\nvar UNDEFINED = \"undefined\";\r\nvar DISCRETE = \"discrete\";\r\nvar LOGARITHMIC = \"logarithmic\";\r\nvar DATETIME = \"datetime\";\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\n\r\nfunction sum(array) {\r\n var result = 0;\r\n (0, _iterator.each)(array, function(_, value) {\r\n result += value\r\n });\r\n return result\r\n}\r\n\r\nfunction isErrorBarTypeCorrect(type) {\r\n return (0, _array.inArray)(type, [FIXED, PERCENT, VARIANCE, STANDARD_DEVIATION, STANDARD_ERROR]) !== -1\r\n}\r\n\r\nfunction variance(array, expectedValue) {\r\n return sum((0, _utils.map)(array, function(value) {\r\n return (value - expectedValue) * (value - expectedValue)\r\n })) / array.length\r\n}\r\n\r\nfunction calculateAvgErrorBars(result, data, series) {\r\n var errorBarsOptions = series.getOptions().valueErrorBar;\r\n var valueField = series.getValueFields()[0];\r\n var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {\r\n var fusionData = data.reduce(function(result, item) {\r\n if ((0, _type.isDefined)(item[lowValueField])) {\r\n result[0] += item[valueField] - item[lowValueField];\r\n result[1]++\r\n }\r\n if ((0, _type.isDefined)(item[highValueField])) {\r\n result[2] += item[highValueField] - item[valueField];\r\n result[3]++\r\n }\r\n return result\r\n }, [0, 0, 0, 0]);\r\n if (fusionData[1]) {\r\n result[lowValueField] = result[valueField] - fusionData[0] / fusionData[1]\r\n }\r\n if (fusionData[2]) {\r\n result[highValueField] = result[valueField] + fusionData[2] / fusionData[3]\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction calculateSumErrorBars(result, data, series) {\r\n var errorBarsOptions = series.getOptions().valueErrorBar;\r\n var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {\r\n result[lowValueField] = 0;\r\n result[highValueField] = 0;\r\n result = data.reduce(function(result, item) {\r\n result[lowValueField] += item[lowValueField];\r\n result[highValueField] += item[highValueField];\r\n return result\r\n }, result)\r\n }\r\n return result\r\n}\r\n\r\nfunction getMinMaxAggregator(compare) {\r\n return function(_ref, series) {\r\n var intervalStart = _ref.intervalStart,\r\n data = _ref.data;\r\n var valueField = series.getValueFields()[0];\r\n var targetData = data[0];\r\n targetData = data.reduce(function(result, item) {\r\n var value = item[valueField];\r\n if (null === result[valueField]) {\r\n result = item\r\n }\r\n if (null !== value && compare(value, result[valueField])) {\r\n return item\r\n }\r\n return result\r\n }, targetData);\r\n return (0, _extend3.extend)({}, targetData, _defineProperty({}, series.getArgumentField(), intervalStart))\r\n }\r\n}\r\n\r\nfunction checkFields(data, fieldsToCheck, skippedFields) {\r\n var allFieldsIsValid = true;\r\n for (var field in fieldsToCheck) {\r\n var isArgument = \"argument\" === field;\r\n if (isArgument || \"size\" === field ? !(0, _type.isDefined)(data[field]) : void 0 === data[field]) {\r\n var selector = fieldsToCheck[field];\r\n if (!isArgument) {\r\n skippedFields[selector] = (skippedFields[selector] || 0) + 1\r\n }\r\n allFieldsIsValid = false\r\n }\r\n }\r\n return allFieldsIsValid\r\n}\r\nvar baseScatterMethods = {\r\n _defaultDuration: DEFAULT_DURATION,\r\n _defaultTrackerWidth: DEFAULT_TRACKER_WIDTH,\r\n _applyStyle: _common.noop,\r\n _updateOptions: _common.noop,\r\n _parseStyle: _common.noop,\r\n _prepareSegment: _common.noop,\r\n _drawSegment: _common.noop,\r\n _appendInGroup: function() {\r\n this._group.append(this._extGroups.seriesGroup)\r\n },\r\n _createLegendState: function(styleOptions, defaultColor) {\r\n return {\r\n fill: styleOptions.color || defaultColor,\r\n hatching: styleOptions.hatching ? (0, _extend3.extend)({}, styleOptions.hatching, {\r\n direction: \"right\"\r\n }) : void 0\r\n }\r\n },\r\n _applyElementsClipRect: function(settings) {\r\n settings[\"clip-path\"] = this._paneClipRectID\r\n },\r\n _applyMarkerClipRect: function(settings) {\r\n settings[\"clip-path\"] = this._forceClipping ? this._paneClipRectID : null\r\n },\r\n _createGroup: function(groupName, parent, target, settings) {\r\n var group = parent[groupName] = parent[groupName] || this._renderer.g();\r\n target && group.append(target);\r\n settings && group.attr(settings)\r\n },\r\n _applyClearingSettings: function(settings) {\r\n settings.opacity = null;\r\n settings.scale = null;\r\n if (this._options.rotated) {\r\n settings.translateX = null\r\n } else {\r\n settings.translateY = null\r\n }\r\n },\r\n _createGroups: function() {\r\n var that = this;\r\n that._createGroup(\"_markersGroup\", that, that._group);\r\n that._createGroup(\"_labelsGroup\", that)\r\n },\r\n _setMarkerGroupSettings: function() {\r\n var that = this;\r\n var settings = that._createPointStyles(that._getMarkerGroupOptions()).normal;\r\n settings.class = \"dxc-markers\";\r\n settings.opacity = 1;\r\n that._applyMarkerClipRect(settings);\r\n that._markersGroup.attr(settings)\r\n },\r\n getVisibleArea: function() {\r\n return this._visibleArea\r\n },\r\n areErrorBarsVisible: function() {\r\n var errorBarOptions = this._options.valueErrorBar;\r\n return errorBarOptions && this._errorBarsEnabled() && \"none\" !== errorBarOptions.displayMode && (isErrorBarTypeCorrect((0, _utils.normalizeEnum)(errorBarOptions.type)) || (0, _type.isDefined)(errorBarOptions.lowValueField) || (0, _type.isDefined)(errorBarOptions.highValueField))\r\n },\r\n groupPointsByCoords: function(rotated) {\r\n var cat = [];\r\n (0, _iterator.each)(this.getVisiblePoints(), function(_, p) {\r\n var pointCoord = parseInt(rotated ? p.vy : p.vx);\r\n if (!cat[pointCoord]) {\r\n cat[pointCoord] = p\r\n } else {\r\n Array.isArray(cat[pointCoord]) ? cat[pointCoord].push(p) : cat[pointCoord] = [cat[pointCoord], p]\r\n }\r\n });\r\n return cat\r\n },\r\n _createErrorBarGroup: function(animationEnabled) {\r\n var that = this;\r\n var errorBarOptions = that._options.valueErrorBar;\r\n var settings;\r\n if (that.areErrorBarsVisible()) {\r\n settings = {\r\n \"class\": \"dxc-error-bars\",\r\n stroke: errorBarOptions.color,\r\n \"stroke-width\": errorBarOptions.lineWidth,\r\n opacity: animationEnabled ? .001 : errorBarOptions.opacity || 1,\r\n \"stroke-linecap\": \"square\",\r\n sharp: true,\r\n \"clip-path\": that._forceClipping ? that._paneClipRectID : that._widePaneClipRectID\r\n };\r\n that._createGroup(\"_errorBarGroup\", that, that._group, settings)\r\n }\r\n },\r\n _setGroupsSettings: function(animationEnabled) {\r\n var that = this;\r\n that._setMarkerGroupSettings();\r\n that._setLabelGroupSettings(animationEnabled);\r\n that._createErrorBarGroup(animationEnabled)\r\n },\r\n _getCreatingPointOptions: function() {\r\n var that = this;\r\n var defaultPointOptions;\r\n var creatingPointOptions = that._predefinedPointOptions;\r\n var normalStyle;\r\n if (!creatingPointOptions) {\r\n defaultPointOptions = that._getPointOptions();\r\n that._predefinedPointOptions = creatingPointOptions = (0, _extend3.extend)(true, {\r\n styles: {}\r\n }, defaultPointOptions);\r\n normalStyle = defaultPointOptions.styles && defaultPointOptions.styles.normal || {};\r\n creatingPointOptions.styles = creatingPointOptions.styles || {};\r\n creatingPointOptions.styles.normal = {\r\n \"stroke-width\": normalStyle[\"stroke-width\"],\r\n r: normalStyle.r,\r\n opacity: normalStyle.opacity\r\n }\r\n }\r\n return creatingPointOptions\r\n },\r\n _getPointOptions: function() {\r\n return this._parsePointOptions(this._preparePointOptions(), this._options.label)\r\n },\r\n _getOptionsForPoint: function() {\r\n return this._options.point\r\n },\r\n _parsePointStyle: function(style, defaultColor, defaultBorderColor, defaultSize) {\r\n var border = style.border || {};\r\n var sizeValue = void 0 !== style.size ? style.size : defaultSize;\r\n return {\r\n fill: style.color || defaultColor,\r\n stroke: border.color || defaultBorderColor,\r\n \"stroke-width\": border.visible ? border.width : 0,\r\n r: sizeValue / 2 + (border.visible && 0 !== sizeValue ? ~~(border.width / 2) || 0 : 0)\r\n }\r\n },\r\n _createPointStyles: function(pointOptions) {\r\n var that = this;\r\n var mainPointColor = pointOptions.color || that._options.mainSeriesColor;\r\n var containerColor = that._options.containerBackgroundColor;\r\n var normalStyle = that._parsePointStyle(pointOptions, mainPointColor, mainPointColor);\r\n normalStyle.visibility = pointOptions.visible ? \"visible\" : \"hidden\";\r\n return {\r\n normal: normalStyle,\r\n hover: that._parsePointStyle(pointOptions.hoverStyle, containerColor, mainPointColor, pointOptions.size),\r\n selection: that._parsePointStyle(pointOptions.selectionStyle, containerColor, mainPointColor, pointOptions.size)\r\n }\r\n },\r\n _checkData: function(data, skippedFields, fieldsToCheck) {\r\n fieldsToCheck = fieldsToCheck || {\r\n value: this.getValueFields()[0]\r\n };\r\n fieldsToCheck.argument = this.getArgumentField();\r\n return checkFields(data, fieldsToCheck, skippedFields || {}) && data.value === data.value\r\n },\r\n getValueRangeInitialValue: function() {\r\n return\r\n },\r\n _getRangeData: function() {\r\n return _range_data_calculator.default.getRangeData(this)\r\n },\r\n _getPointDataSelector: function() {\r\n var _this = this;\r\n var valueField = this.getValueFields()[0];\r\n var argumentField = this.getArgumentField();\r\n var tagField = this.getTagField();\r\n var areErrorBarsVisible = this.areErrorBarsVisible();\r\n var lowValueField;\r\n var highValueField;\r\n if (areErrorBarsVisible) {\r\n var errorBarOptions = this._options.valueErrorBar;\r\n lowValueField = errorBarOptions.lowValueField || LOW_ERROR;\r\n highValueField = errorBarOptions.highValueField || HIGH_ERROR\r\n }\r\n return function(data) {\r\n var pointData = {\r\n value: _this._processEmptyValue(data[valueField]),\r\n argument: data[argumentField],\r\n tag: data[tagField],\r\n data: data\r\n };\r\n if (areErrorBarsVisible) {\r\n pointData.lowError = data[lowValueField];\r\n pointData.highError = data[highValueField]\r\n }\r\n return pointData\r\n }\r\n },\r\n _errorBarsEnabled: function() {\r\n return this.valueAxisType !== DISCRETE && this.valueAxisType !== LOGARITHMIC && this.valueType !== DATETIME\r\n },\r\n _drawPoint: function(options) {\r\n var point = options.point;\r\n if (point.isInVisibleArea()) {\r\n point.clearVisibility();\r\n point.draw(this._renderer, options.groups, options.hasAnimation, options.firstDrawing);\r\n this._drawnPoints.push(point)\r\n } else {\r\n point.setInvisibility()\r\n }\r\n },\r\n _animateComplete: function() {\r\n var that = this;\r\n var animationSettings = {\r\n duration: that._defaultDuration\r\n };\r\n that._labelsGroup && that._labelsGroup.animate({\r\n opacity: 1\r\n }, animationSettings);\r\n that._errorBarGroup && that._errorBarGroup.animate({\r\n opacity: that._options.valueErrorBar.opacity || 1\r\n }, animationSettings)\r\n },\r\n _animate: function() {\r\n var that = this;\r\n var lastPointIndex = that._drawnPoints.length - 1;\r\n (0, _iterator.each)(that._drawnPoints || [], function(i, p) {\r\n p.animate(i === lastPointIndex ? function() {\r\n that._animateComplete()\r\n } : void 0, {\r\n translateX: p.x,\r\n translateY: p.y\r\n })\r\n })\r\n },\r\n _defaultAggregator: \"avg\",\r\n _aggregators: {\r\n avg: function(_ref2, series) {\r\n var _calculateAvgErrorBar;\r\n var data = _ref2.data,\r\n intervalStart = _ref2.intervalStart;\r\n if (!data.length) {\r\n return\r\n }\r\n var valueField = series.getValueFields()[0];\r\n var aggregationResult = data.reduce(function(result, item) {\r\n var value = item[valueField];\r\n if ((0, _type.isDefined)(value)) {\r\n result[0] += value;\r\n result[1]++\r\n } else {\r\n if (null === value) {\r\n result[2]++\r\n }\r\n }\r\n return result\r\n }, [0, 0, 0]);\r\n return calculateAvgErrorBars((_calculateAvgErrorBar = {}, _defineProperty(_calculateAvgErrorBar, valueField, aggregationResult[2] === data.length ? null : aggregationResult[0] / aggregationResult[1]), _defineProperty(_calculateAvgErrorBar, series.getArgumentField(), intervalStart), _calculateAvgErrorBar), data, series)\r\n },\r\n sum: function(_ref3, series) {\r\n var _calculateSumErrorBar;\r\n var intervalStart = _ref3.intervalStart,\r\n data = _ref3.data;\r\n if (!data.length) {\r\n return\r\n }\r\n var valueField = series.getValueFields()[0];\r\n var aggregationResult = data.reduce(function(result, item) {\r\n var value = item[valueField];\r\n if (void 0 !== value) {\r\n result[0] += value\r\n }\r\n if (null === value) {\r\n result[1]++\r\n } else {\r\n if (void 0 === value) {\r\n result[2]++\r\n }\r\n }\r\n return result\r\n }, [0, 0, 0]);\r\n var value = aggregationResult[0];\r\n if (aggregationResult[1] === data.length) {\r\n value = null\r\n }\r\n if (aggregationResult[2] === data.length) {\r\n return\r\n }\r\n return calculateSumErrorBars((_calculateSumErrorBar = {}, _defineProperty(_calculateSumErrorBar, valueField, value), _defineProperty(_calculateSumErrorBar, series.getArgumentField(), intervalStart), _calculateSumErrorBar), data, series)\r\n },\r\n count: function(_ref4, series) {\r\n var _ref5;\r\n var data = _ref4.data,\r\n intervalStart = _ref4.intervalStart;\r\n var valueField = series.getValueFields()[0];\r\n return _ref5 = {}, _defineProperty(_ref5, series.getArgumentField(), intervalStart), _defineProperty(_ref5, valueField, data.filter(function(i) {\r\n return void 0 !== i[valueField]\r\n }).length), _ref5\r\n },\r\n min: getMinMaxAggregator(function(a, b) {\r\n return a < b\r\n }),\r\n max: getMinMaxAggregator(function(a, b) {\r\n return a > b\r\n })\r\n },\r\n _endUpdateData: function() {\r\n delete this._predefinedPointOptions\r\n },\r\n getArgumentField: function() {\r\n return this._options.argumentField || \"arg\"\r\n },\r\n getValueFields: function() {\r\n var options = this._options;\r\n var errorBarsOptions = options.valueErrorBar;\r\n var valueFields = [options.valueField || \"val\"];\r\n var lowValueField;\r\n var highValueField;\r\n if (errorBarsOptions) {\r\n lowValueField = errorBarsOptions.lowValueField;\r\n highValueField = errorBarsOptions.highValueField;\r\n (0, _type.isString)(lowValueField) && valueFields.push(lowValueField);\r\n (0, _type.isString)(highValueField) && valueFields.push(highValueField)\r\n }\r\n return valueFields\r\n },\r\n _calculateErrorBars: function(data) {\r\n if (!this.areErrorBarsVisible()) {\r\n return\r\n }\r\n var that = this;\r\n var options = that._options;\r\n var errorBarsOptions = options.valueErrorBar;\r\n var errorBarType = (0, _utils.normalizeEnum)(errorBarsOptions.type);\r\n var floatErrorValue = parseFloat(errorBarsOptions.value);\r\n var valueField = that.getValueFields()[0];\r\n var value;\r\n var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n var valueArray;\r\n var valueArrayLength;\r\n var meanValue;\r\n var processDataItem;\r\n var addSubError = function(_i, item) {\r\n value = item.value;\r\n item.lowError = value - floatErrorValue;\r\n item.highError = value + floatErrorValue\r\n };\r\n switch (errorBarType) {\r\n case FIXED:\r\n processDataItem = addSubError;\r\n break;\r\n case PERCENT:\r\n processDataItem = function(_, item) {\r\n value = item.value;\r\n var error = value * floatErrorValue / 100;\r\n item.lowError = value - error;\r\n item.highError = value + error\r\n };\r\n break;\r\n case UNDEFINED:\r\n processDataItem = function(_, item) {\r\n item.lowError = item.data[lowValueField];\r\n item.highError = item.data[highValueField]\r\n };\r\n break;\r\n default:\r\n valueArray = (0, _utils.map)(data, function(item) {\r\n return (0, _type.isDefined)(item.data[valueField]) ? item.data[valueField] : null\r\n });\r\n valueArrayLength = valueArray.length;\r\n floatErrorValue = floatErrorValue || 1;\r\n switch (errorBarType) {\r\n case VARIANCE:\r\n floatErrorValue = variance(valueArray, sum(valueArray) / valueArrayLength) * floatErrorValue;\r\n processDataItem = addSubError;\r\n break;\r\n case STANDARD_DEVIATION:\r\n meanValue = sum(valueArray) / valueArrayLength;\r\n floatErrorValue = _sqrt(variance(valueArray, meanValue)) * floatErrorValue;\r\n processDataItem = function(_, item) {\r\n item.lowError = meanValue - floatErrorValue;\r\n item.highError = meanValue + floatErrorValue\r\n };\r\n break;\r\n case STANDARD_ERROR:\r\n floatErrorValue = _sqrt(variance(valueArray, sum(valueArray) / valueArrayLength) / valueArrayLength) * floatErrorValue;\r\n processDataItem = addSubError\r\n }\r\n }\r\n processDataItem && (0, _iterator.each)(data, processDataItem)\r\n },\r\n _patchMarginOptions: function(options) {\r\n var pointOptions = this._getCreatingPointOptions();\r\n var styles = pointOptions.styles;\r\n var maxSize = [styles.normal, styles.hover, styles.selection].reduce(function(max, style) {\r\n return _max(max, 2 * style.r + style[\"stroke-width\"])\r\n }, 0);\r\n options.size = pointOptions.visible ? maxSize : 0;\r\n options.sizePointNormalState = pointOptions.visible ? 2 * styles.normal.r + styles.normal[\"stroke-width\"] : 2;\r\n return options\r\n },\r\n usePointsToDefineAutoHiding: function() {\r\n return true\r\n }\r\n};\r\nexports.chart = chart = (0, _extend3.extend)({}, baseScatterMethods, {\r\n drawTrackers: function() {\r\n var that = this;\r\n var trackers;\r\n var trackersGroup;\r\n var segments = that._segments || [];\r\n var rotated = that._options.rotated;\r\n if (!that.isVisible()) {\r\n return\r\n }\r\n if (segments.length) {\r\n trackers = that._trackers = that._trackers || [];\r\n trackersGroup = that._trackersGroup = (that._trackersGroup || that._renderer.g().attr({\r\n fill: \"gray\",\r\n opacity: .001,\r\n stroke: \"gray\",\r\n \"class\": \"dxc-trackers\"\r\n })).attr({\r\n \"clip-path\": this._paneClipRectID || null\r\n }).append(that._group);\r\n (0, _iterator.each)(segments, function(i, segment) {\r\n if (!trackers[i]) {\r\n trackers[i] = that._drawTrackerElement(segment).data({\r\n \"chart-data-series\": that\r\n }).append(trackersGroup)\r\n } else {\r\n that._updateTrackerElement(segment, trackers[i])\r\n }\r\n })\r\n }\r\n that._trackersTranslator = that.groupPointsByCoords(rotated)\r\n },\r\n _checkAxisVisibleAreaCoord: function(isArgument, coord) {\r\n var axis = isArgument ? this.getArgumentAxis() : this.getValueAxis();\r\n var visibleArea = axis.getVisibleArea();\r\n return (0, _type.isDefined)(coord) && visibleArea[0] <= coord && visibleArea[1] >= coord\r\n },\r\n checkSeriesViewportCoord: function(axis, coord) {\r\n return this.getPoints().length && this.isVisible()\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;\r\n var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\r\n var points = this.getVisiblePoints();\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0;\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n },\r\n _getNearestPoints: function(point, nextPoint) {\r\n return [point, nextPoint]\r\n },\r\n _getBezierPoints: function() {\r\n return []\r\n },\r\n _getNearestPointsByCoord: function(coord, isArgument) {\r\n var that = this;\r\n var rotated = that.getOptions().rotated;\r\n var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n var coordName = isOpposite ? \"vy\" : \"vx\";\r\n var allPoints = that.getPoints();\r\n var bezierPoints = that._getBezierPoints();\r\n var nearestPoints = [];\r\n if (allPoints.length > 1) {\r\n allPoints.forEach(function(point, i) {\r\n var nextPoint = allPoints[i + 1];\r\n if (nextPoint && (point[coordName] <= coord && nextPoint[coordName] >= coord || point[coordName] >= coord && nextPoint[coordName] <= coord)) {\r\n nearestPoints.push(that._getNearestPoints(point, nextPoint, bezierPoints))\r\n }\r\n })\r\n } else {\r\n nearestPoints.push([allPoints[0], allPoints[0]])\r\n }\r\n return nearestPoints\r\n },\r\n getNeighborPoint: function(x, y) {\r\n var pCoord = this._options.rotated ? y : x;\r\n var nCoord = pCoord;\r\n var cat = this._trackersTranslator;\r\n var point = null;\r\n var minDistance;\r\n var oppositeCoord = this._options.rotated ? x : y;\r\n var oppositeCoordName = this._options.rotated ? \"vx\" : \"vy\";\r\n if (this.isVisible() && cat) {\r\n point = cat[pCoord];\r\n do {\r\n point = cat[nCoord] || cat[pCoord];\r\n pCoord--;\r\n nCoord++\r\n } while ((pCoord >= 0 || nCoord < cat.length) && !point);\r\n if (Array.isArray(point)) {\r\n minDistance = _abs(point[0][oppositeCoordName] - oppositeCoord);\r\n (0, _iterator.each)(point, function(i, p) {\r\n var distance = _abs(p[oppositeCoordName] - oppositeCoord);\r\n if (minDistance >= distance) {\r\n minDistance = distance;\r\n point = p\r\n }\r\n })\r\n }\r\n }\r\n return point\r\n },\r\n _applyVisibleArea: function() {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var visibleX = (rotated ? that.getValueAxis() : that.getArgumentAxis()).getVisibleArea();\r\n var visibleY = (rotated ? that.getArgumentAxis() : that.getValueAxis()).getVisibleArea();\r\n that._visibleArea = {\r\n minX: visibleX[0],\r\n maxX: visibleX[1],\r\n minY: visibleY[0],\r\n maxY: visibleY[1]\r\n }\r\n },\r\n getPointCenterByArg: function(arg) {\r\n var point = this.getPointsByArg(arg)[0];\r\n return point ? point.getCenterCoord() : void 0\r\n }\r\n});\r\nexports.polar = polar = (0, _extend3.extend)({}, baseScatterMethods, {\r\n drawTrackers: function() {\r\n chart.drawTrackers.call(this);\r\n var cat = this._trackersTranslator;\r\n var index;\r\n if (!this.isVisible()) {\r\n return\r\n }(0, _iterator.each)(cat, function(i, category) {\r\n if (category) {\r\n index = i;\r\n return false\r\n }\r\n });\r\n cat[index + 360] = cat[index]\r\n },\r\n getNeighborPoint: function(x, y) {\r\n var pos = (0, _utils.convertXYToPolar)(this.getValueAxis().getCenter(), x, y);\r\n return chart.getNeighborPoint.call(this, pos.phi, pos.r)\r\n },\r\n _applyVisibleArea: function() {\r\n var that = this;\r\n var canvas = that.getValueAxis().getCanvas();\r\n that._visibleArea = {\r\n minX: canvas.left,\r\n maxX: canvas.width - canvas.right,\r\n minY: canvas.top,\r\n maxY: canvas.height - canvas.bottom\r\n }\r\n },\r\n getSeriesPairCoord: function(params, isArgument) {\r\n var coords = null;\r\n var paramName = isArgument ? \"argument\" : \"radius\";\r\n var points = this.getVisiblePoints();\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpPoint = (0, _type.isDefined)(p[paramName]) && (0, _type.isDefined)(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? {\r\n x: p.x,\r\n y: p.y\r\n } : void 0;\r\n if ((0, _type.isDefined)(tmpPoint)) {\r\n coords = tmpPoint;\r\n break\r\n }\r\n }\r\n return coords\r\n }\r\n});\r\n","/**\r\n * DevExtreme (viz/series/points/symbol_point.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _label = require(\"./label\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _utils = require(\"../../core/utils\");\r\nvar window = (0, _window.getWindow)();\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _round = _math.round;\r\nvar _floor = _math.floor;\r\nvar _ceil = _math.ceil;\r\nvar DEFAULT_IMAGE_WIDTH = 20;\r\nvar DEFAULT_IMAGE_HEIGHT = 20;\r\nvar LABEL_OFFSET = 10;\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\n\r\nfunction getSquareMarkerCoords(radius) {\r\n return [-radius, -radius, radius, -radius, radius, radius, -radius, radius, -radius, -radius]\r\n}\r\n\r\nfunction getPolygonMarkerCoords(radius) {\r\n var r = _ceil(radius);\r\n return [-r, 0, 0, -r, r, 0, 0, r, -r, 0]\r\n}\r\n\r\nfunction getCrossMarkerCoords(radius) {\r\n var r = _ceil(radius);\r\n var floorHalfRadius = _floor(r / 2);\r\n var ceilHalfRadius = _ceil(r / 2);\r\n return [-r, -floorHalfRadius, -floorHalfRadius, -r, 0, -ceilHalfRadius, floorHalfRadius, -r, r, -floorHalfRadius, ceilHalfRadius, 0, r, floorHalfRadius, floorHalfRadius, r, 0, ceilHalfRadius, -floorHalfRadius, r, -r, floorHalfRadius, -ceilHalfRadius, 0]\r\n}\r\n\r\nfunction getTriangleDownMarkerCoords(radius) {\r\n return [-radius, -radius, radius, -radius, 0, radius, -radius, -radius]\r\n}\r\n\r\nfunction getTriangleUpMarkerCoords(radius) {\r\n return [-radius, radius, radius, radius, 0, -radius, -radius, radius]\r\n}\r\nvar _default = {\r\n deleteLabel: function() {\r\n this._label.dispose();\r\n this._label = null\r\n },\r\n _hasGraphic: function() {\r\n return this.graphic\r\n },\r\n clearVisibility: function() {\r\n var that = this;\r\n var graphic = that.graphic;\r\n if (graphic && graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: null\r\n })\r\n }\r\n },\r\n isVisible: function() {\r\n return this.inVisibleArea && this.series.isVisible()\r\n },\r\n setInvisibility: function() {\r\n var that = this;\r\n var graphic = that.graphic;\r\n if (graphic && \"hidden\" !== graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n that._errorBar && that._errorBar.attr({\r\n visibility: \"hidden\"\r\n });\r\n that._label.draw(false)\r\n },\r\n clearMarker: function() {\r\n var graphic = this.graphic;\r\n graphic && graphic.attr(this._emptySettings)\r\n },\r\n _createLabel: function() {\r\n this._label = new _label.Label({\r\n renderer: this.series._renderer,\r\n labelsGroup: this.series._labelsGroup,\r\n point: this\r\n })\r\n },\r\n _updateLabelData: function() {\r\n this._label.setData(this._getLabelFormatObject())\r\n },\r\n _updateLabelOptions: function() {\r\n !this._label && this._createLabel();\r\n this._label.setOptions(this._options.label)\r\n },\r\n _checkImage: function(image) {\r\n return (0, _type.isDefined)(image) && (\"string\" === typeof image || (0, _type.isDefined)(image.url))\r\n },\r\n _fillStyle: function() {\r\n this._styles = this._options.styles\r\n },\r\n _checkSymbol: function(oldOptions, newOptions) {\r\n var oldSymbol = oldOptions.symbol;\r\n var newSymbol = newOptions.symbol;\r\n var symbolChanged = \"circle\" === oldSymbol && \"circle\" !== newSymbol || \"circle\" !== oldSymbol && \"circle\" === newSymbol;\r\n var imageChanged = this._checkImage(oldOptions.image) !== this._checkImage(newOptions.image);\r\n return !!(symbolChanged || imageChanged)\r\n },\r\n _populatePointShape: function(symbol, radius) {\r\n switch (symbol) {\r\n case \"square\":\r\n return getSquareMarkerCoords(radius);\r\n case \"polygon\":\r\n return getPolygonMarkerCoords(radius);\r\n case \"triangle\":\r\n case \"triangleDown\":\r\n return getTriangleDownMarkerCoords(radius);\r\n case \"triangleUp\":\r\n return getTriangleUpMarkerCoords(radius);\r\n case \"cross\":\r\n return getCrossMarkerCoords(radius)\r\n }\r\n },\r\n hasCoords: function() {\r\n return null !== this.x && null !== this.y\r\n },\r\n correctValue: function(correction) {\r\n var that = this;\r\n var axis = that.series.getValueAxis();\r\n if (that.hasValue()) {\r\n that.value = that.properValue = axis.validateUnit(that.initialValue.valueOf() + correction.valueOf());\r\n that.minValue = axis.validateUnit(correction)\r\n }\r\n },\r\n resetCorrection: function() {\r\n this.value = this.properValue = this.initialValue;\r\n this.minValue = CANVAS_POSITION_DEFAULT\r\n },\r\n resetValue: function() {\r\n var that = this;\r\n if (that.hasValue()) {\r\n that.value = that.properValue = that.initialValue = 0;\r\n that.minValue = 0;\r\n that._label.setDataField(\"value\", that.value)\r\n }\r\n },\r\n _getTranslates: function(animationEnabled) {\r\n var translateX = this.x;\r\n var translateY = this.y;\r\n if (animationEnabled) {\r\n if (this._options.rotated) {\r\n translateX = this.defaultX\r\n } else {\r\n translateY = this.defaultY\r\n }\r\n }\r\n return {\r\n x: translateX,\r\n y: translateY\r\n }\r\n },\r\n _createImageMarker: function(renderer, settings, options) {\r\n var width = options.width || DEFAULT_IMAGE_WIDTH;\r\n var height = options.height || DEFAULT_IMAGE_HEIGHT;\r\n return renderer.image(-_round(.5 * width), -_round(.5 * height), width, height, options.url ? options.url.toString() : options.toString(), \"center\").attr({\r\n translateX: settings.translateX,\r\n translateY: settings.translateY,\r\n visibility: settings.visibility\r\n })\r\n },\r\n _createSymbolMarker: function(renderer, pointSettings) {\r\n var marker;\r\n var symbol = this._options.symbol;\r\n if (\"circle\" === symbol) {\r\n delete pointSettings.points;\r\n marker = renderer.circle().attr(pointSettings)\r\n } else {\r\n if (\"square\" === symbol || \"polygon\" === symbol || \"triangle\" === symbol || \"triangleDown\" === symbol || \"triangleUp\" === symbol || \"cross\" === symbol) {\r\n marker = renderer.path([], \"area\").attr(pointSettings).sharp()\r\n }\r\n }\r\n return marker\r\n },\r\n _createMarker: function(renderer, group, image, settings) {\r\n var that = this;\r\n var marker = that._checkImage(image) ? that._createImageMarker(renderer, settings, image) : that._createSymbolMarker(renderer, settings);\r\n if (marker) {\r\n marker.data({\r\n \"chart-data-point\": that\r\n }).append(group)\r\n }\r\n return marker\r\n },\r\n _getSymbolBBox: function(x, y, r) {\r\n return {\r\n x: x - r,\r\n y: y - r,\r\n width: 2 * r,\r\n height: 2 * r\r\n }\r\n },\r\n _getImageBBox: function(x, y) {\r\n var image = this._options.image;\r\n var width = image.width || DEFAULT_IMAGE_WIDTH;\r\n var height = image.height || DEFAULT_IMAGE_HEIGHT;\r\n return {\r\n x: x - _round(width / 2),\r\n y: y - _round(height / 2),\r\n width: width,\r\n height: height\r\n }\r\n },\r\n _getGraphicBBox: function() {\r\n var that = this;\r\n var options = that._options;\r\n var x = that.x;\r\n var y = that.y;\r\n var bBox;\r\n if (options.visible) {\r\n bBox = that._checkImage(options.image) ? that._getImageBBox(x, y) : that._getSymbolBBox(x, y, options.styles.normal.r)\r\n } else {\r\n bBox = {\r\n x: x,\r\n y: y,\r\n width: 0,\r\n height: 0\r\n }\r\n }\r\n return bBox\r\n },\r\n hideInsideLabel: _common.noop,\r\n _getShiftLabelCoords: function(label) {\r\n var coord = this._addLabelAlignmentAndOffset(label, this._getLabelCoords(label));\r\n return this._checkLabelPosition(label, coord)\r\n },\r\n _drawLabel: function() {\r\n var that = this;\r\n var customVisibility = that._getCustomLabelVisibility();\r\n var label = that._label;\r\n var isVisible = that._showForZeroValues() && that.hasValue() && false !== customVisibility && (that.series.getLabelVisibility() || customVisibility);\r\n label.draw(!!isVisible)\r\n },\r\n correctLabelPosition: function(label) {\r\n var that = this;\r\n var coord = that._getShiftLabelCoords(label);\r\n if (!that.hideInsideLabel(label, coord)) {\r\n label.setFigureToDrawConnector(that._getLabelConnector(label.pointPosition));\r\n label.shift(_round(coord.x), _round(coord.y))\r\n }\r\n },\r\n _showForZeroValues: function() {\r\n return true\r\n },\r\n _getLabelConnector: function(pointPosition) {\r\n var bBox = this._getGraphicBBox(pointPosition);\r\n var w2 = bBox.width / 2;\r\n var h2 = bBox.height / 2;\r\n return {\r\n x: bBox.x + w2,\r\n y: bBox.y + h2,\r\n r: this._options.visible ? Math.max(w2, h2) : 0\r\n }\r\n },\r\n _getPositionFromLocation: function() {\r\n return {\r\n x: this.x,\r\n y: this.y\r\n }\r\n },\r\n _isPointInVisibleArea: function(visibleArea, graphicBBox) {\r\n return visibleArea.minX <= graphicBBox.x + graphicBBox.width && visibleArea.maxX >= graphicBBox.x && visibleArea.minY <= graphicBBox.y + graphicBBox.height && visibleArea.maxY >= graphicBBox.y\r\n },\r\n _checkLabelPosition: function(label, coord) {\r\n var that = this;\r\n var visibleArea = that._getVisibleArea();\r\n var labelBBox = label.getBoundingRect();\r\n var graphicBBox = that._getGraphicBBox(label.pointPosition);\r\n var fullGraphicBBox = that._getGraphicBBox();\r\n var isInside = \"inside\" === label.getLayoutOptions().position;\r\n var offset = LABEL_OFFSET;\r\n if (that._isPointInVisibleArea(visibleArea, fullGraphicBBox)) {\r\n if (!that._options.rotated) {\r\n if (visibleArea.minX > coord.x) {\r\n coord.x = visibleArea.minX\r\n }\r\n if (visibleArea.maxX < coord.x + labelBBox.width) {\r\n coord.x = visibleArea.maxX - labelBBox.width\r\n }\r\n if (visibleArea.minY > coord.y) {\r\n coord.y = isInside ? visibleArea.minY : graphicBBox.y + graphicBBox.height + offset\r\n }\r\n if (visibleArea.maxY < coord.y + labelBBox.height) {\r\n coord.y = isInside ? visibleArea.maxY - labelBBox.height : graphicBBox.y - labelBBox.height - offset\r\n }\r\n } else {\r\n if (visibleArea.minX > coord.x) {\r\n coord.x = isInside ? visibleArea.minX : graphicBBox.x + graphicBBox.width + offset\r\n }\r\n if (visibleArea.maxX < coord.x + labelBBox.width) {\r\n coord.x = isInside ? visibleArea.maxX - labelBBox.width : graphicBBox.x - offset - labelBBox.width\r\n }\r\n if (visibleArea.minY > coord.y) {\r\n coord.y = visibleArea.minY\r\n }\r\n if (visibleArea.maxY < coord.y + labelBBox.height) {\r\n coord.y = visibleArea.maxY - labelBBox.height\r\n }\r\n }\r\n }\r\n return coord\r\n },\r\n _addLabelAlignmentAndOffset: function(label, coord) {\r\n var labelBBox = label.getBoundingRect();\r\n var labelOptions = label.getLayoutOptions();\r\n if (!this._options.rotated) {\r\n if (\"left\" === labelOptions.alignment) {\r\n coord.x += labelBBox.width / 2\r\n } else {\r\n if (\"right\" === labelOptions.alignment) {\r\n coord.x -= labelBBox.width / 2\r\n }\r\n }\r\n }\r\n coord.x += labelOptions.horizontalOffset;\r\n coord.y += labelOptions.verticalOffset;\r\n return coord\r\n },\r\n _getLabelCoords: function(label) {\r\n return this._getLabelCoordOfPosition(label, this._getLabelPosition(label.pointPosition))\r\n },\r\n _getLabelCoordOfPosition: function(label, position) {\r\n var that = this;\r\n var labelBBox = label.getBoundingRect();\r\n var graphicBBox = that._getGraphicBBox(label.pointPosition);\r\n var offset = LABEL_OFFSET;\r\n var centerY = graphicBBox.height / 2 - labelBBox.height / 2;\r\n var centerX = graphicBBox.width / 2 - labelBBox.width / 2;\r\n var x = graphicBBox.x;\r\n var y = graphicBBox.y;\r\n switch (position) {\r\n case \"left\":\r\n x -= labelBBox.width + offset;\r\n y += centerY;\r\n break;\r\n case \"right\":\r\n x += graphicBBox.width + offset;\r\n y += centerY;\r\n break;\r\n case \"top\":\r\n x += centerX;\r\n y -= labelBBox.height + offset;\r\n break;\r\n case \"bottom\":\r\n x += centerX;\r\n y += graphicBBox.height + offset;\r\n break;\r\n case \"inside\":\r\n x += centerX;\r\n y += centerY\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled) {\r\n var that = this;\r\n var options = that._options;\r\n var translates = that._getTranslates(animationEnabled);\r\n var style = that._getStyle();\r\n that.graphic = that._createMarker(renderer, group, options.image, _extend({\r\n translateX: translates.x,\r\n translateY: translates.y,\r\n points: that._populatePointShape(options.symbol, style.r)\r\n }, style))\r\n },\r\n _getErrorBarSettings: function() {\r\n return {\r\n visibility: \"visible\"\r\n }\r\n },\r\n _getErrorBarBaseEdgeLength: function() {\r\n return 2 * this.getPointRadius()\r\n },\r\n _drawErrorBar: function(renderer, group) {\r\n if (!this._options.errorBars) {\r\n return\r\n }\r\n var that = this;\r\n var options = that._options;\r\n var errorBarOptions = options.errorBars;\r\n var points = [];\r\n var settings;\r\n var pos = that._errorBarPos;\r\n var high = that._highErrorCoord;\r\n var low = that._lowErrorCoord;\r\n var displayMode = (0, _utils.normalizeEnum)(errorBarOptions.displayMode);\r\n var isHighDisplayMode = \"high\" === displayMode;\r\n var isLowDisplayMode = \"low\" === displayMode;\r\n var highErrorOnly = (isHighDisplayMode || !(0, _type.isDefined)(low)) && (0, _type.isDefined)(high) && !isLowDisplayMode;\r\n var lowErrorOnly = (isLowDisplayMode || !(0, _type.isDefined)(high)) && (0, _type.isDefined)(low) && !isHighDisplayMode;\r\n var edgeLength = errorBarOptions.edgeLength;\r\n if (edgeLength <= 1 && edgeLength > 0) {\r\n edgeLength = this._getErrorBarBaseEdgeLength() * errorBarOptions.edgeLength\r\n }\r\n edgeLength = _floor(parseInt(edgeLength) / 2);\r\n highErrorOnly && (low = that._baseErrorBarPos);\r\n lowErrorOnly && (high = that._baseErrorBarPos);\r\n if (\"none\" !== displayMode && (0, _type.isDefined)(high) && (0, _type.isDefined)(low) && (0, _type.isDefined)(pos)) {\r\n !lowErrorOnly && points.push([pos - edgeLength, high, pos + edgeLength, high]);\r\n points.push([pos, high, pos, low]);\r\n !highErrorOnly && points.push([pos + edgeLength, low, pos - edgeLength, low]);\r\n options.rotated && (0, _iterator.each)(points, function(_, p) {\r\n p.reverse()\r\n });\r\n settings = that._getErrorBarSettings(errorBarOptions);\r\n if (!that._errorBar) {\r\n that._errorBar = renderer.path(points, \"line\").attr(settings).append(group)\r\n } else {\r\n settings.points = points;\r\n that._errorBar.attr(settings)\r\n }\r\n } else {\r\n that._errorBar && that._errorBar.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n },\r\n getTooltipParams: function() {\r\n var that = this;\r\n var graphic = that.graphic;\r\n return {\r\n x: that.x,\r\n y: that.y,\r\n offset: graphic ? graphic.getBBox().height / 2 : 0\r\n }\r\n },\r\n setPercentValue: function(absTotal, total, leftHoleTotal, rightHoleTotal) {\r\n var that = this;\r\n var valuePercent = that.value / absTotal || 0;\r\n var minValuePercent = that.minValue / absTotal || 0;\r\n var percent = valuePercent - minValuePercent;\r\n that._label.setDataField(\"percent\", percent);\r\n that._label.setDataField(\"total\", total);\r\n if (that.series.isFullStackedSeries() && that.hasValue()) {\r\n if (that.leftHole) {\r\n that.leftHole /= absTotal - leftHoleTotal;\r\n that.minLeftHole /= absTotal - leftHoleTotal\r\n }\r\n if (that.rightHole) {\r\n that.rightHole /= absTotal - rightHoleTotal;\r\n that.minRightHole /= absTotal - rightHoleTotal\r\n }\r\n that.value = that.properValue = valuePercent;\r\n that.minValue = !minValuePercent ? that.minValue : minValuePercent\r\n }\r\n },\r\n _storeTrackerR: function() {\r\n var that = this;\r\n var navigator = window.navigator;\r\n var r = that._options.styles.normal.r;\r\n var minTrackerSize = (0, _window.hasProperty)(\"ontouchstart\") || navigator.msPointerEnabled && navigator.msMaxTouchPoints || navigator.pointerEnabled && navigator.maxTouchPoints ? 20 : 6;\r\n that._options.trackerR = r < minTrackerSize ? minTrackerSize : r;\r\n return that._options.trackerR\r\n },\r\n _translateErrorBars: function() {\r\n var that = this;\r\n var options = that._options;\r\n var rotated = options.rotated;\r\n var errorBars = options.errorBars;\r\n var translator = that._getValTranslator();\r\n if (!errorBars) {\r\n return\r\n }(0, _type.isDefined)(that.lowError) && (that._lowErrorCoord = translator.translate(that.lowError));\r\n (0, _type.isDefined)(that.highError) && (that._highErrorCoord = translator.translate(that.highError));\r\n that._errorBarPos = _floor(rotated ? that.vy : that.vx);\r\n that._baseErrorBarPos = \"stdDeviation\" === errorBars.type ? that._lowErrorCoord + (that._highErrorCoord - that._lowErrorCoord) / 2 : rotated ? that.vx : that.vy\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var valTranslator = that._getValTranslator();\r\n var argTranslator = that._getArgTranslator();\r\n if (that._options.rotated) {\r\n that.vx = that.x = valTranslator.translate(that.value);\r\n that.vy = that.y = argTranslator.translate(that.argument);\r\n that.minX = valTranslator.translate(that.minValue);\r\n that.defaultX = valTranslator.translate(CANVAS_POSITION_DEFAULT)\r\n } else {\r\n that.vy = that.y = valTranslator.translate(that.value);\r\n that.vx = that.x = argTranslator.translate(that.argument);\r\n that.minY = valTranslator.translate(that.minValue);\r\n that.defaultY = valTranslator.translate(CANVAS_POSITION_DEFAULT)\r\n }\r\n that._translateErrorBars();\r\n that._calculateVisibility(that.x, that.y)\r\n },\r\n _updateData: function(data) {\r\n var that = this;\r\n that.value = that.properValue = that.initialValue = that.originalValue = data.value;\r\n that.minValue = that.initialMinValue = that.originalMinValue = (0, _type.isDefined)(data.minValue) ? data.minValue : CANVAS_POSITION_DEFAULT\r\n },\r\n _getImageSettings: function(image) {\r\n return {\r\n href: image.url || image.toString(),\r\n width: image.width || DEFAULT_IMAGE_WIDTH,\r\n height: image.height || DEFAULT_IMAGE_HEIGHT\r\n }\r\n },\r\n getCrosshairData: function() {\r\n var that = this;\r\n var r = that._options.rotated;\r\n var value = that.properValue;\r\n var argument = that.argument;\r\n return {\r\n x: that.vx,\r\n y: that.vy,\r\n xValue: r ? value : argument,\r\n yValue: r ? argument : value,\r\n axis: that.series.axis\r\n }\r\n },\r\n getPointRadius: function() {\r\n var style = this._getStyle();\r\n var options = this._options;\r\n var r = style.r;\r\n var extraSpace;\r\n var symbol = options.symbol;\r\n var isSquare = \"square\" === symbol;\r\n var isTriangle = \"triangle\" === symbol || \"triangleDown\" === symbol || \"triangleUp\" === symbol;\r\n if (options.visible && !options.image && r) {\r\n extraSpace = style[\"stroke-width\"] / 2;\r\n return (isSquare || isTriangle ? 1.4 * r : r) + extraSpace\r\n }\r\n return 0\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n var that = this;\r\n var options = that._options;\r\n var settings;\r\n var image = options.image;\r\n var visibility = !that.isVisible() ? {\r\n visibility: \"hidden\"\r\n } : {};\r\n if (that._checkImage(image)) {\r\n settings = _extend({}, {\r\n visibility: style.visibility\r\n }, visibility, that._getImageSettings(image))\r\n } else {\r\n settings = _extend({}, style, visibility, {\r\n points: that._populatePointShape(options.symbol, style.r)\r\n })\r\n }\r\n if (!animationEnabled) {\r\n settings.translateX = that.x;\r\n settings.translateY = that.y\r\n }\r\n that.graphic.attr(settings).sharp()\r\n },\r\n _getLabelFormatObject: function() {\r\n var that = this;\r\n return {\r\n argument: that.initialArgument,\r\n value: that.initialValue,\r\n originalArgument: that.originalArgument,\r\n originalValue: that.originalValue,\r\n seriesName: that.series.name,\r\n lowErrorValue: that.lowError,\r\n highErrorValue: that.highError,\r\n point: that\r\n }\r\n },\r\n _getLabelPosition: function() {\r\n var rotated = this._options.rotated;\r\n if (this.initialValue > 0) {\r\n return rotated ? \"right\" : \"top\"\r\n } else {\r\n return rotated ? \"left\" : \"bottom\"\r\n }\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var that = this;\r\n var labelFormatObject = that._label.getData();\r\n return _extend({}, labelFormatObject, {\r\n argumentText: tooltip.formatValue(that.initialArgument, \"argument\"),\r\n valueText: tooltip.formatValue(that.initialValue)\r\n }, (0, _type.isDefined)(labelFormatObject.percent) ? {\r\n percentText: tooltip.formatValue(labelFormatObject.percent, \"percent\")\r\n } : {}, (0, _type.isDefined)(labelFormatObject.total) ? {\r\n totalText: tooltip.formatValue(labelFormatObject.total)\r\n } : {})\r\n },\r\n getMarkerVisibility: function() {\r\n return this._options.visible\r\n },\r\n coordsIn: function(x, y) {\r\n var trackerRadius = this._storeTrackerR();\r\n return x >= this.x - trackerRadius && x <= this.x + trackerRadius && y >= this.y - trackerRadius && y <= this.y + trackerRadius\r\n },\r\n getMinValue: function(noErrorBar) {\r\n var errorBarOptions = this._options.errorBars;\r\n if (errorBarOptions && !noErrorBar) {\r\n var displayMode = errorBarOptions.displayMode;\r\n var lowValue = \"high\" !== displayMode && (0, _type.isDefined)(this.lowError) ? this.lowError : this.value;\r\n var highValue = \"low\" !== displayMode && (0, _type.isDefined)(this.highError) ? this.highError : this.value;\r\n return lowValue < highValue ? lowValue : highValue\r\n } else {\r\n return this.value\r\n }\r\n },\r\n getMaxValue: function(noErrorBar) {\r\n var errorBarOptions = this._options.errorBars;\r\n if (errorBarOptions && !noErrorBar) {\r\n var displayMode = errorBarOptions.displayMode;\r\n var lowValue = \"high\" !== displayMode && (0, _type.isDefined)(this.lowError) ? this.lowError : this.value;\r\n var highValue = \"low\" !== displayMode && (0, _type.isDefined)(this.highError) ? this.highError : this.value;\r\n return lowValue > highValue ? lowValue : highValue\r\n } else {\r\n return this.value\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/bar_point.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _floor = _math.floor;\r\nvar _abs = _math.abs;\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\nvar DEFAULT_BAR_TRACKER_SIZE = 9;\r\nvar CORRECTING_BAR_TRACKER_VALUE = 4;\r\nvar RIGHT = \"right\";\r\nvar LEFT = \"left\";\r\nvar TOP = \"top\";\r\nvar BOTTOM = \"bottom\";\r\n\r\nfunction getLabelOrientation(point) {\r\n var initialValue = point.initialValue;\r\n var invert = point._getValTranslator().getBusinessRange().invert;\r\n var isDiscreteValue = \"discrete\" === point.series.valueAxisType;\r\n var isFullStacked = point.series.isFullStackedSeries();\r\n var notAxisInverted = !isDiscreteValue && (initialValue >= 0 && !invert || initialValue < 0 && invert) || isDiscreteValue && !invert || isFullStacked;\r\n return notAxisInverted ? TOP : BOTTOM\r\n}\r\nvar _default = _extend({}, _symbol_point.default, {\r\n correctCoordinates: function(correctOptions) {\r\n var that = this;\r\n var correction = _floor(correctOptions.offset - correctOptions.width / 2);\r\n if (that._options.rotated) {\r\n that.height = correctOptions.width;\r\n that.yCorrection = correction;\r\n that.xCorrection = null\r\n } else {\r\n that.width = correctOptions.width;\r\n that.xCorrection = correction;\r\n that.yCorrection = null\r\n }\r\n },\r\n _getGraphicBBox: function(location) {\r\n var bBox = {\r\n x: this.x,\r\n y: this.y,\r\n width: this.width,\r\n height: this.height\r\n };\r\n if (location) {\r\n var isTop = \"top\" === location;\r\n if (!this._options.rotated) {\r\n bBox.y = isTop ? bBox.y : bBox.y + bBox.height;\r\n bBox.height = 0\r\n } else {\r\n bBox.x = isTop ? bBox.x + bBox.width : bBox.x;\r\n bBox.width = 0\r\n }\r\n }\r\n return bBox\r\n },\r\n _getLabelConnector: function(location) {\r\n return this._getGraphicBBox(location)\r\n },\r\n _getLabelPosition: function() {\r\n var position = getLabelOrientation(this);\r\n if (this._options.rotated) {\r\n position = position === TOP ? RIGHT : LEFT\r\n }\r\n return position\r\n },\r\n _getLabelCoords: function(label) {\r\n var that = this;\r\n var coords;\r\n if (0 === that.initialValue && that.series.isFullStackedSeries()) {\r\n if (!this._options.rotated) {\r\n coords = that._getLabelCoordOfPosition(label, TOP)\r\n } else {\r\n coords = that._getLabelCoordOfPosition(label, RIGHT)\r\n }\r\n } else {\r\n if (\"inside\" === label.getLayoutOptions().position) {\r\n coords = that._getLabelCoordOfPosition(label, \"inside\")\r\n } else {\r\n coords = _symbol_point.default._getLabelCoords.call(this, label)\r\n }\r\n }\r\n return coords\r\n },\r\n _drawLabel: function() {\r\n this._label.pointPosition = \"inside\" !== this._label.getLayoutOptions().position && getLabelOrientation(this);\r\n _symbol_point.default._drawLabel.call(this)\r\n },\r\n hideInsideLabel: function(label, coord) {\r\n var graphicBBox = this._getGraphicBBox();\r\n var labelBBox = label.getBoundingRect();\r\n if (this._options.resolveLabelsOverlapping) {\r\n if ((coord.y <= graphicBBox.y && coord.y + labelBBox.height >= graphicBBox.y + graphicBBox.height || coord.x <= graphicBBox.x && coord.x + labelBBox.width >= graphicBBox.x + graphicBBox.width) && !(coord.y > graphicBBox.y + graphicBBox.height || coord.y + labelBBox.height < graphicBBox.y || coord.x > graphicBBox.x + graphicBBox.width || coord.x + labelBBox.width < graphicBBox.x)) {\r\n label.draw(false);\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _showForZeroValues: function() {\r\n return this._options.label.showForZeroValues || this.initialValue\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled) {\r\n var that = this;\r\n var style = that._getStyle();\r\n var r = that._options.cornerRadius;\r\n var rotated = that._options.rotated;\r\n var _that$getMarkerCoords = that.getMarkerCoords(),\r\n x = _that$getMarkerCoords.x,\r\n y = _that$getMarkerCoords.y,\r\n width = _that$getMarkerCoords.width,\r\n height = _that$getMarkerCoords.height;\r\n if (animationEnabled) {\r\n if (rotated) {\r\n width = 0;\r\n x = that.defaultX\r\n } else {\r\n height = 0;\r\n y = that.defaultY\r\n }\r\n }\r\n that.graphic = renderer.rect(x, y, width, height).attr({\r\n rx: r,\r\n ry: r\r\n }).smartAttr(style).data({\r\n \"chart-data-point\": that\r\n }).append(group)\r\n },\r\n _getSettingsForTracker: function() {\r\n var that = this;\r\n var y = that.y;\r\n var height = that.height;\r\n var x = that.x;\r\n var width = that.width;\r\n if (that._options.rotated) {\r\n if (1 === width) {\r\n width = DEFAULT_BAR_TRACKER_SIZE;\r\n x -= CORRECTING_BAR_TRACKER_VALUE\r\n }\r\n } else {\r\n if (1 === height) {\r\n height = DEFAULT_BAR_TRACKER_SIZE;\r\n y -= CORRECTING_BAR_TRACKER_VALUE\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n }\r\n },\r\n getGraphicSettings: function() {\r\n var graphic = this.graphic;\r\n return {\r\n x: graphic.attr(\"x\"),\r\n y: graphic.attr(\"y\"),\r\n height: graphic.attr(\"height\"),\r\n width: graphic.attr(\"width\")\r\n }\r\n },\r\n _getEdgeTooltipParams: function() {\r\n var isPositive = this.value >= 0;\r\n var xCoord;\r\n var yCoord;\r\n var invertedBusinessRange = this._getValTranslator().getBusinessRange().invert;\r\n var x = this.x,\r\n y = this.y,\r\n width = this.width,\r\n height = this.height;\r\n if (this._options.rotated) {\r\n yCoord = y + height / 2;\r\n if (invertedBusinessRange) {\r\n xCoord = isPositive ? x : x + width\r\n } else {\r\n xCoord = isPositive ? x + width : x\r\n }\r\n } else {\r\n xCoord = x + width / 2;\r\n if (invertedBusinessRange) {\r\n yCoord = isPositive ? y + height : y\r\n } else {\r\n yCoord = isPositive ? y : y + height\r\n }\r\n }\r\n return {\r\n x: xCoord,\r\n y: yCoord,\r\n offset: 0\r\n }\r\n },\r\n getTooltipParams: function(location) {\r\n if (\"edge\" === location) {\r\n return this._getEdgeTooltipParams()\r\n }\r\n var center = this.getCenterCoord();\r\n center.offset = 0;\r\n return center\r\n },\r\n getCenterCoord: function() {\r\n var width = this.width,\r\n height = this.height,\r\n x = this.x,\r\n y = this.y;\r\n return {\r\n x: x + width / 2,\r\n y: y + height / 2\r\n }\r\n },\r\n _truncateCoord: function(coord, bounds) {\r\n if (null === coord) {\r\n return coord\r\n }\r\n if (coord < bounds[0]) {\r\n return bounds[0]\r\n }\r\n if (coord > bounds[1]) {\r\n return bounds[1]\r\n }\r\n return coord\r\n },\r\n _getErrorBarBaseEdgeLength: function() {\r\n return this._options.rotated ? this.height : this.width\r\n },\r\n _translateErrorBars: function(argVisibleArea) {\r\n _symbol_point.default._translateErrorBars.call(this);\r\n if (this._errorBarPos < argVisibleArea[0] || this._errorBarPos > argVisibleArea[1]) {\r\n this._errorBarPos = void 0\r\n }\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var valAxis = rotated ? \"x\" : \"y\";\r\n var argAxis = rotated ? \"y\" : \"x\";\r\n var valIntervalName = rotated ? \"width\" : \"height\";\r\n var argIntervalName = rotated ? \"height\" : \"width\";\r\n var argTranslator = that._getArgTranslator();\r\n var valTranslator = that._getValTranslator();\r\n var argVisibleArea = that.series.getArgumentAxis().getVisibleArea();\r\n var valVisibleArea = that.series.getValueAxis().getVisibleArea();\r\n var arg;\r\n var val;\r\n var minVal;\r\n arg = argTranslator.translate(that.argument);\r\n that[argAxis] = arg = null === arg ? arg : arg + (that[argAxis + \"Correction\"] || 0);\r\n val = valTranslator.translate(that.value, 1);\r\n minVal = valTranslator.translate(that.minValue);\r\n that[\"v\" + valAxis] = val;\r\n that[\"v\" + argAxis] = arg + that[argIntervalName] / 2;\r\n val = that._truncateCoord(val, valVisibleArea);\r\n minVal = that._truncateCoord(minVal, valVisibleArea);\r\n that[valIntervalName] = _abs(val - minVal);\r\n val = val < minVal ? val : minVal;\r\n that._calculateVisibility(rotated ? val : arg, rotated ? arg : val, that.width, that.height);\r\n that[valAxis] = null === val ? val : val + (that[valAxis + \"Correction\"] || 0);\r\n that[\"min\" + valAxis.toUpperCase()] = null === minVal ? minVal : minVal + (that[valAxis + \"Correction\"] || 0);\r\n that[\"default\" + valAxis.toUpperCase()] = valTranslator.translate(CANVAS_POSITION_DEFAULT);\r\n that._translateErrorBars(argVisibleArea);\r\n if (that.inVisibleArea && null !== that[argAxis]) {\r\n if (that[argAxis] < argVisibleArea[0]) {\r\n that[argIntervalName] = that[argIntervalName] - (argVisibleArea[0] - that[argAxis]);\r\n that[argAxis] = argVisibleArea[0]\r\n }\r\n if (that[argAxis] + that[argIntervalName] > argVisibleArea[1]) {\r\n that[argIntervalName] = argVisibleArea[1] - that[argAxis]\r\n }\r\n }\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n this.graphic.smartAttr(_extend({}, style, !animationEnabled ? this.getMarkerCoords() : {}))\r\n },\r\n getMarkerCoords: function() {\r\n var that = this;\r\n var x = that.x;\r\n var y = that.y;\r\n var width = that.width;\r\n var height = that.height;\r\n var argAxis = that.series.getArgumentAxis();\r\n var rotated = that._options.rotated;\r\n if (argAxis.getAxisPosition) {\r\n var axisOptions = argAxis.getOptions();\r\n var edgeOffset = Math.round(axisOptions.width / 2);\r\n var argAxisPosition = argAxis.getAxisPosition();\r\n if (axisOptions.visible) {\r\n if (!rotated) {\r\n height -= that.minY === that.defaultY && that.minY === argAxisPosition - argAxis.getAxisShift() ? edgeOffset : 0;\r\n height < 0 && (height = 0)\r\n } else {\r\n var isStartFromAxis = that.minX === that.defaultX && that.minX === argAxisPosition - argAxis.getAxisShift();\r\n x += isStartFromAxis ? edgeOffset : 0;\r\n width -= isStartFromAxis ? edgeOffset : 0;\r\n width < 0 && (width = 0)\r\n }\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n }\r\n },\r\n coordsIn: function(x, y) {\r\n var that = this;\r\n return x >= that.x && x <= that.x + that.width && y >= that.y && y <= that.y + that.height\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/line_series.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar DISCRETE = \"discrete\";\r\nvar round = Math.round,\r\n sqrt = Math.sqrt,\r\n pow = Math.pow,\r\n min = Math.min,\r\n max = Math.max,\r\n abs = Math.abs;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\n\r\nfunction clonePoint(point, newX, newY, newAngle) {\r\n var p = (0, _object.clone)(point);\r\n p.x = newX;\r\n p.y = newY;\r\n p.angle = newAngle;\r\n return p\r\n}\r\n\r\nfunction getTangentPoint(point, prevPoint, centerPoint, tan, nextStepAngle) {\r\n var correctAngle = point.angle + nextStepAngle;\r\n var cosSin = (0, _utils.getCosAndSin)(correctAngle);\r\n var x = centerPoint.x + (point.radius + tan * nextStepAngle) * cosSin.cos;\r\n var y = centerPoint.y - (point.radius + tan * nextStepAngle) * cosSin.sin;\r\n return clonePoint(prevPoint, x, y, correctAngle)\r\n}\r\n\r\nfunction obtainCubicBezierTCoef(p, p0, p1, p2, p3) {\r\n var d = p0 - p;\r\n var c = 3 * p1 - 3 * p0;\r\n var b = 3 * p2 - 6 * p1 + 3 * p0;\r\n var a = p3 - 3 * p2 + 3 * p1 - p0;\r\n return (0, _math.solveCubicEquation)(a, b, c, d)\r\n}\r\nvar lineMethods = {\r\n autoHidePointMarkersEnabled: function() {\r\n return true\r\n },\r\n _applyGroupSettings: function(style, settings, group) {\r\n var that = this;\r\n settings = (0, _extend.extend)(settings, style);\r\n that._applyElementsClipRect(settings);\r\n group.attr(settings)\r\n },\r\n _setGroupsSettings: function(animationEnabled) {\r\n var that = this;\r\n var style = that._styles.normal;\r\n that._applyGroupSettings(style.elements, {\r\n \"class\": \"dxc-elements\"\r\n }, that._elementsGroup);\r\n that._bordersGroup && that._applyGroupSettings(style.border, {\r\n \"class\": \"dxc-borders\"\r\n }, that._bordersGroup);\r\n _scatter_series.chart._setGroupsSettings.call(that, animationEnabled);\r\n animationEnabled && that._markersGroup && that._markersGroup.attr({\r\n opacity: .001\r\n })\r\n },\r\n _createGroups: function() {\r\n var that = this;\r\n that._createGroup(\"_elementsGroup\", that, that._group);\r\n that._areBordersVisible() && that._createGroup(\"_bordersGroup\", that, that._group);\r\n _scatter_series.chart._createGroups.call(that)\r\n },\r\n _areBordersVisible: function() {\r\n return false\r\n },\r\n _getDefaultSegment: function(segment) {\r\n return {\r\n line: (0, _utils.map)(segment.line || [], function(pt) {\r\n return pt.getDefaultCoords()\r\n })\r\n }\r\n },\r\n _prepareSegment: function(points) {\r\n return {\r\n line: points\r\n }\r\n },\r\n _parseLineOptions: function(options, defaultColor) {\r\n return {\r\n stroke: options.color || defaultColor,\r\n \"stroke-width\": options.width,\r\n dashStyle: options.dashStyle || \"solid\"\r\n }\r\n },\r\n _parseStyle: function(options, defaultColor) {\r\n return {\r\n elements: this._parseLineOptions(options, defaultColor)\r\n }\r\n },\r\n _applyStyle: function(style) {\r\n var that = this;\r\n that._elementsGroup && that._elementsGroup.attr(style.elements);\r\n (0, _iterator.each)(that._graphics || [], function(_, graphic) {\r\n graphic.line && graphic.line.attr({\r\n \"stroke-width\": style.elements[\"stroke-width\"]\r\n }).sharp()\r\n })\r\n },\r\n _drawElement: function(segment, group) {\r\n return {\r\n line: this._createMainElement(segment.line, {\r\n \"stroke-width\": this._styles.normal.elements[\"stroke-width\"]\r\n }).append(group)\r\n }\r\n },\r\n _removeElement: function(element) {\r\n element.line.remove()\r\n },\r\n _updateElement: function(element, segment, animate, animationComplete) {\r\n var params = {\r\n points: segment.line\r\n };\r\n var lineElement = element.line;\r\n animate ? lineElement.animate(params, {}, animationComplete) : lineElement.attr(params)\r\n },\r\n _animateComplete: function() {\r\n var that = this;\r\n _scatter_series.chart._animateComplete.call(that);\r\n that._markersGroup && that._markersGroup.animate({\r\n opacity: 1\r\n }, {\r\n duration: that._defaultDuration\r\n })\r\n },\r\n _animate: function() {\r\n var that = this;\r\n var lastIndex = that._graphics.length - 1;\r\n (0, _iterator.each)(that._graphics || [], function(i, elem) {\r\n var complete;\r\n if (i === lastIndex) {\r\n complete = function() {\r\n that._animateComplete()\r\n }\r\n }\r\n that._updateElement(elem, that._segments[i], true, complete)\r\n })\r\n },\r\n _drawPoint: function(options) {\r\n _scatter_series.chart._drawPoint.call(this, {\r\n point: options.point,\r\n groups: options.groups\r\n })\r\n },\r\n _createMainElement: function(points, settings) {\r\n return this._renderer.path(points, \"line\").attr(settings)\r\n },\r\n _sortPoints: function(points, rotated) {\r\n return rotated ? points.sort(function(p1, p2) {\r\n return p2.y - p1.y\r\n }) : points.sort(function(p1, p2) {\r\n return p1.x - p2.x\r\n })\r\n },\r\n _drawSegment: function(points, animationEnabled, segmentCount, lastSegment) {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var segment = that._prepareSegment(points, rotated, lastSegment);\r\n that._segments.push(segment);\r\n if (!that._graphics[segmentCount]) {\r\n that._graphics[segmentCount] = that._drawElement(animationEnabled ? that._getDefaultSegment(segment) : segment, that._elementsGroup)\r\n } else {\r\n if (!animationEnabled) {\r\n that._updateElement(that._graphics[segmentCount], segment)\r\n }\r\n }\r\n },\r\n _getTrackerSettings: function() {\r\n var that = this;\r\n var defaultTrackerWidth = that._defaultTrackerWidth;\r\n var strokeWidthFromElements = that._styles.normal.elements[\"stroke-width\"];\r\n return {\r\n \"stroke-width\": strokeWidthFromElements > defaultTrackerWidth ? strokeWidthFromElements : defaultTrackerWidth,\r\n fill: \"none\"\r\n }\r\n },\r\n _getMainPointsFromSegment: function(segment) {\r\n return segment.line\r\n },\r\n _drawTrackerElement: function(segment) {\r\n return this._createMainElement(this._getMainPointsFromSegment(segment), this._getTrackerSettings(segment))\r\n },\r\n _updateTrackerElement: function(segment, element) {\r\n var settings = this._getTrackerSettings(segment);\r\n settings.points = this._getMainPointsFromSegment(segment);\r\n element.attr(settings)\r\n },\r\n checkSeriesViewportCoord: function(axis, coord) {\r\n if (!_scatter_series.chart.checkSeriesViewportCoord.call(this)) {\r\n return false\r\n }\r\n var range = axis.isArgumentAxis ? this.getArgumentRange() : this.getViewport();\r\n var min = axis.getTranslator().translate(range.categories ? range.categories[0] : range.min);\r\n var max = axis.getTranslator().translate(range.categories ? range.categories[range.categories.length - 1] : range.max);\r\n var rotated = this.getOptions().rotated;\r\n var inverted = axis.getOptions().inverted;\r\n return axis.isArgumentAxis && (!rotated && !inverted || rotated && inverted) || !axis.isArgumentAxis && (rotated && !inverted || !rotated && inverted) ? coord >= min && coord <= max : coord >= max && coord <= min\r\n }\r\n};\r\nvar lineSeries = chart.line = (0, _extend.extend)({}, _scatter_series.chart, lineMethods, {\r\n getPointCenterByArg: function(arg) {\r\n var value = this.getArgumentAxis().getTranslator().translate(arg);\r\n return {\r\n x: value,\r\n y: value\r\n }\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var that = this;\r\n var oppositeCoord = null;\r\n var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n var needValueCoord = isArgument && !that._options.rotated || !isArgument && that._options.rotated;\r\n for (var i = 0; i < nearestPoints.length; i++) {\r\n var p = nearestPoints[i];\r\n var k = (p[1].vy - p[0].vy) / (p[1].vx - p[0].vx);\r\n var b = p[0].vy - p[0].vx * k;\r\n var tmpCoord = void 0;\r\n if (p[1].vx - p[0].vx === 0) {\r\n tmpCoord = needValueCoord ? p[0].vy : p[0].vx\r\n } else {\r\n tmpCoord = needValueCoord ? k * coord + b : (coord - b) / k\r\n }\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n }\r\n});\r\nchart.stepline = (0, _extend.extend)({}, lineSeries, {\r\n _calculateStepLinePoints: function(points) {\r\n var segment = [];\r\n var coordName = this._options.rotated ? \"x\" : \"y\";\r\n (0, _iterator.each)(points, function(i, pt) {\r\n var point;\r\n if (!i) {\r\n segment.push(pt);\r\n return\r\n }\r\n var step = segment[segment.length - 1][coordName];\r\n if (step !== pt[coordName]) {\r\n point = (0, _object.clone)(pt);\r\n point[coordName] = step;\r\n segment.push(point)\r\n }\r\n segment.push(pt)\r\n });\r\n return segment\r\n },\r\n _prepareSegment: function(points) {\r\n return lineSeries._prepareSegment(this._calculateStepLinePoints(points))\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var oppositeCoord;\r\n var rotated = this._options.rotated;\r\n var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\r\n var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n for (var i = 0; i < nearestPoints.length; i++) {\r\n var p = nearestPoints[i];\r\n var tmpCoord = void 0;\r\n if (isArgument) {\r\n tmpCoord = coord !== p[1][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]\r\n } else {\r\n tmpCoord = coord === p[0][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]\r\n }\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n }\r\n});\r\nchart.spline = (0, _extend.extend)({}, lineSeries, {\r\n _calculateBezierPoints: function(src, rotated) {\r\n var bezierPoints = [];\r\n var pointsCopy = src;\r\n var checkExtremum = function(otherPointCoord, pointCoord, controlCoord) {\r\n return otherPointCoord > pointCoord && controlCoord > otherPointCoord || otherPointCoord < pointCoord && controlCoord < otherPointCoord ? otherPointCoord : controlCoord\r\n };\r\n if (1 !== pointsCopy.length) {\r\n pointsCopy.forEach(function(curPoint, i) {\r\n var leftControlX;\r\n var leftControlY;\r\n var rightControlX;\r\n var rightControlY;\r\n var prevPoint = pointsCopy[i - 1];\r\n var nextPoint = pointsCopy[i + 1];\r\n var x1;\r\n var x2;\r\n var y1;\r\n var y2;\r\n var lambda = .5;\r\n var a;\r\n var b;\r\n var c;\r\n var xc;\r\n var yc;\r\n var shift;\r\n if (!i || i === pointsCopy.length - 1) {\r\n bezierPoints.push(curPoint, curPoint);\r\n return\r\n }\r\n var xCur = curPoint.x;\r\n var yCur = curPoint.y;\r\n x1 = prevPoint.x;\r\n x2 = nextPoint.x;\r\n y1 = prevPoint.y;\r\n y2 = nextPoint.y;\r\n var curIsExtremum = !!(!rotated && (yCur <= prevPoint.y && yCur <= nextPoint.y || yCur >= prevPoint.y && yCur >= nextPoint.y) || rotated && (xCur <= prevPoint.x && xCur <= nextPoint.x || xCur >= prevPoint.x && xCur >= nextPoint.x));\r\n if (curIsExtremum) {\r\n if (!rotated) {\r\n rightControlY = leftControlY = yCur;\r\n rightControlX = (xCur + nextPoint.x) / 2;\r\n leftControlX = (xCur + prevPoint.x) / 2\r\n } else {\r\n rightControlX = leftControlX = xCur;\r\n rightControlY = (yCur + nextPoint.y) / 2;\r\n leftControlY = (yCur + prevPoint.y) / 2\r\n }\r\n } else {\r\n a = y2 - y1;\r\n b = x1 - x2;\r\n c = y1 * x2 - x1 * y2;\r\n if (!rotated) {\r\n if (!b) {\r\n bezierPoints.push(curPoint, curPoint, curPoint);\r\n return\r\n }\r\n xc = xCur;\r\n yc = -1 * (a * xc + c) / b;\r\n shift = yc - yCur;\r\n y1 -= shift;\r\n y2 -= shift\r\n } else {\r\n if (!a) {\r\n bezierPoints.push(curPoint, curPoint, curPoint);\r\n return\r\n }\r\n yc = yCur;\r\n xc = -1 * (b * yc + c) / a;\r\n shift = xc - xCur;\r\n x1 -= shift;\r\n x2 -= shift\r\n }\r\n rightControlX = (xCur + lambda * x2) / (1 + lambda);\r\n rightControlY = (yCur + lambda * y2) / (1 + lambda);\r\n leftControlX = (xCur + lambda * x1) / (1 + lambda);\r\n leftControlY = (yCur + lambda * y1) / (1 + lambda)\r\n }\r\n if (!rotated) {\r\n leftControlY = checkExtremum(prevPoint.y, yCur, leftControlY);\r\n rightControlY = checkExtremum(nextPoint.y, yCur, rightControlY)\r\n } else {\r\n leftControlX = checkExtremum(prevPoint.x, xCur, leftControlX);\r\n rightControlX = checkExtremum(nextPoint.x, xCur, rightControlX)\r\n }\r\n var leftPoint = clonePoint(curPoint, leftControlX, leftControlY);\r\n var rightPoint = clonePoint(curPoint, rightControlX, rightControlY);\r\n bezierPoints.push(leftPoint, curPoint, rightPoint)\r\n })\r\n } else {\r\n bezierPoints.push(pointsCopy[0])\r\n }\r\n return bezierPoints\r\n },\r\n _prepareSegment: function(points, rotated) {\r\n return lineSeries._prepareSegment(this._calculateBezierPoints(points, rotated))\r\n },\r\n _createMainElement: function(points, settings) {\r\n return this._renderer.path(points, \"bezier\").attr(settings)\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var that = this;\r\n var oppositeCoord = null;\r\n var isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;\r\n var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n var bezierCoordName = !isOpposite ? \"x\" : \"y\";\r\n var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\r\n var bezierOppositeCoordName = !isOpposite ? \"y\" : \"x\";\r\n var axis = !isArgument ? that.getArgumentAxis() : that.getValueAxis();\r\n var visibleArea = axis.getVisibleArea();\r\n var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n var _loop = function(i) {\r\n var p = nearestPoints[i];\r\n if (1 === p.length) {\r\n visibleArea[0] <= p[0][oppositeCoordName] && visibleArea[1] >= p[0][oppositeCoordName] && (oppositeCoord = p[0][oppositeCoordName])\r\n } else {\r\n var ts = obtainCubicBezierTCoef(coord, p[0][coordName], p[1][bezierCoordName], p[2][bezierCoordName], p[3][coordName]);\r\n ts.forEach(function(t) {\r\n if (t >= 0 && t <= 1) {\r\n var tmpCoord = Math.pow(1 - t, 3) * p[0][oppositeCoordName] + 3 * Math.pow(1 - t, 2) * t * p[1][bezierOppositeCoordName] + 3 * (1 - t) * t * t * p[2][bezierOppositeCoordName] + t * t * t * p[3][oppositeCoordName];\r\n if (visibleArea[0] <= tmpCoord && visibleArea[1] >= tmpCoord) {\r\n oppositeCoord = tmpCoord\r\n }\r\n }\r\n })\r\n }\r\n if (null !== oppositeCoord) {\r\n return \"break\"\r\n }\r\n };\r\n for (var i = 0; i < nearestPoints.length; i++) {\r\n var _ret = _loop(i);\r\n if (\"break\" === _ret) {\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n },\r\n _getNearestPoints: function(point, nextPoint, bezierPoints) {\r\n var index = bezierPoints.indexOf(point);\r\n return [point, bezierPoints[index + 1], bezierPoints[index + 2], nextPoint]\r\n },\r\n _getBezierPoints: function() {\r\n return this._segments.length > 0 ? this._segments.reduce(function(a, seg) {\r\n return a.concat(seg.line)\r\n }, []) : []\r\n }\r\n});\r\npolar.line = (0, _extend.extend)({}, _scatter_series.polar, lineMethods, {\r\n _sortPoints: function(points) {\r\n return points\r\n },\r\n _prepareSegment: function(points, rotated, lastSegment) {\r\n var preparedPoints = [];\r\n var centerPoint = this.getValueAxis().getCenter();\r\n var i;\r\n lastSegment && this._closeSegment(points);\r\n if (this.argumentAxisType !== DISCRETE && this.valueAxisType !== DISCRETE) {\r\n for (i = 1; i < points.length; i++) {\r\n preparedPoints = preparedPoints.concat(this._getTangentPoints(points[i], points[i - 1], centerPoint))\r\n }\r\n if (!preparedPoints.length) {\r\n preparedPoints = points\r\n }\r\n } else {\r\n return lineSeries._prepareSegment.call(this, points)\r\n }\r\n return {\r\n line: preparedPoints\r\n }\r\n },\r\n _getRemainingAngle: function(angle) {\r\n var normAngle = (0, _utils.normalizeAngle)(angle);\r\n return angle >= 0 ? 360 - normAngle : -normAngle\r\n },\r\n _closeSegment: function(points) {\r\n var point;\r\n if (this._segments.length) {\r\n point = this._segments[0].line[0]\r\n } else {\r\n point = clonePoint(points[0], points[0].x, points[0].y, points[0].angle)\r\n }\r\n point = this._modifyReflectedPoint(point, points[points.length - 1]);\r\n if (point) {\r\n points.push(point)\r\n }\r\n },\r\n _modifyReflectedPoint: function(point, lastPoint) {\r\n if (lastPoint.angle === point.angle) {\r\n return\r\n }\r\n if ((0, _utils.normalizeAngle)(round(lastPoint.angle)) === (0, _utils.normalizeAngle)(round(point.angle))) {\r\n point.angle = lastPoint.angle\r\n } else {\r\n var differenceAngle = lastPoint.angle - point.angle;\r\n point.angle = lastPoint.angle + this._getRemainingAngle(differenceAngle)\r\n }\r\n return point\r\n },\r\n _getTangentPoints: function(point, prevPoint, centerPoint) {\r\n var tangentPoints = [];\r\n var betweenAngle = Math.round(prevPoint.angle - point.angle);\r\n var tan = (prevPoint.radius - point.radius) / betweenAngle;\r\n var i;\r\n if (0 === betweenAngle) {\r\n tangentPoints = [prevPoint, point]\r\n } else {\r\n if (betweenAngle > 0) {\r\n for (i = betweenAngle; i >= 0; i--) {\r\n tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, i))\r\n }\r\n } else {\r\n for (i = 0; i >= betweenAngle; i--) {\r\n tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, betweenAngle - i))\r\n }\r\n }\r\n }\r\n return tangentPoints\r\n },\r\n getSeriesPairCoord: function(params, isArgument) {\r\n var that = this;\r\n var argAxis = that.getArgumentAxis();\r\n var paramName = isArgument ? \"angle\" : \"radius\";\r\n var coordParam = params[paramName];\r\n var centerPoint = argAxis.getCenter();\r\n var getLengthByCoords = function(p1, p2) {\r\n return sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2))\r\n };\r\n var isInsideInterval = function(prevPoint, point, _ref) {\r\n var x = _ref.x,\r\n y = _ref.y;\r\n return getLengthByCoords({\r\n x: x,\r\n y: y\r\n }, centerPoint) <= argAxis.getRadius() && min(prevPoint.x, point.x) <= x && max(prevPoint.x, point.x) >= x && min(prevPoint.y, point.y) <= y && max(prevPoint.y, point.y) >= y\r\n };\r\n var coords;\r\n var neighborPoints = that.getNeighborPoints(coordParam, paramName);\r\n if (1 === neighborPoints.length) {\r\n coords = neighborPoints[0]\r\n } else {\r\n if (neighborPoints.length > 1) {\r\n var prevPoint = neighborPoints[0];\r\n var point = neighborPoints[1];\r\n if (that.argumentAxisType !== DISCRETE && that.valueAxisType !== DISCRETE) {\r\n var tan;\r\n var stepAngle;\r\n if (isArgument) {\r\n tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);\r\n stepAngle = coordParam - point.angle\r\n } else {\r\n tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);\r\n stepAngle = (coordParam - point.radius) / tan\r\n }\r\n coords = getTangentPoint(point, prevPoint, centerPoint, tan, stepAngle)\r\n } else {\r\n if (isArgument) {\r\n var cosSin = (0, _utils.getCosAndSin)(-coordParam);\r\n var k1 = (point.y - prevPoint.y) / (point.x - prevPoint.x);\r\n var b1 = prevPoint.y - prevPoint.x * k1;\r\n var k2 = cosSin.sin / cosSin.cos;\r\n var b2 = centerPoint.y - k2 * centerPoint.x;\r\n var x = (b2 - b1) / (k1 - k2);\r\n var y = k1 * x + b1;\r\n if (isInsideInterval(prevPoint, point, {\r\n x: x,\r\n y: y\r\n })) {\r\n var quarter = abs((0, _math.trunc)((360 + coordParam) / 90) % 4);\r\n if (0 === quarter && x >= centerPoint.x && y <= centerPoint.y || 1 === quarter && x <= centerPoint.x && y <= centerPoint.y || 2 === quarter && x <= centerPoint.x && y >= centerPoint.y || 3 === quarter && x >= centerPoint.x && y >= centerPoint.y) {\r\n coords = {\r\n x: x,\r\n y: y\r\n }\r\n }\r\n }\r\n } else {\r\n var k = (point.y - prevPoint.y) / (point.x - prevPoint.x);\r\n var y0 = prevPoint.y - prevPoint.x * k;\r\n var a = 1 + k * k;\r\n var b = -2 * centerPoint.x + 2 * k * y0 - 2 * k * centerPoint.y;\r\n var c = -pow(coordParam, 2) + pow(y0 - centerPoint.y, 2) + pow(centerPoint.x, 2);\r\n var d = b * b - 4 * a * c;\r\n if (d >= 0) {\r\n var x1 = (-b - sqrt(d)) / (2 * a);\r\n var x2 = (-b + sqrt(d)) / (2 * a);\r\n var y1 = k * x1 + y0;\r\n var y2 = k * x2 + y0;\r\n coords = isInsideInterval(prevPoint, point, {\r\n x: x1,\r\n y: y1\r\n }) ? {\r\n x: x1,\r\n y: y1\r\n } : isInsideInterval(prevPoint, point, {\r\n x: x2,\r\n y: y2\r\n }) ? {\r\n x: x2,\r\n y: y2\r\n } : void 0\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return coords\r\n },\r\n getNeighborPoints: function(param, paramName) {\r\n var points = this.getPoints();\r\n var neighborPoints = [];\r\n if (this.getOptions().closed) {\r\n points = (0, _extend.extend)(true, [], points);\r\n var lastPoint = points[points.length - 1];\r\n var firstPointCopy = clonePoint(points[0], points[0].x, points[0].y, points[0].angle);\r\n var lastPointCopy = clonePoint(lastPoint, lastPoint.x, lastPoint.y, lastPoint.angle);\r\n var rearwardRefPoint = this._modifyReflectedPoint(firstPointCopy, lastPoint);\r\n var forwardRefPoint = this._modifyReflectedPoint(lastPointCopy, points[0]);\r\n if (forwardRefPoint) {\r\n points.unshift(forwardRefPoint)\r\n }\r\n if (rearwardRefPoint) {\r\n points.push(rearwardRefPoint)\r\n }\r\n }\r\n for (var i = 1; i < points.length; i++) {\r\n if (points[i - 1][paramName] === param) {\r\n neighborPoints.push(points[i - 1])\r\n } else {\r\n if (points[i][paramName] === param) {\r\n neighborPoints.push(points[i])\r\n } else {\r\n if (points[i][paramName] > param && points[i - 1][paramName] < param || points[i - 1][paramName] > param && points[i][paramName] < param) {\r\n neighborPoints.push(points[i - 1]);\r\n neighborPoints.push(points[i])\r\n }\r\n }\r\n }\r\n if (neighborPoints.length > 0) {\r\n break\r\n }\r\n }\r\n return neighborPoints\r\n }\r\n});\r\n"],"sourceRoot":""}