-
- All Implemented Interfaces:
-
android.graphics.drawable.Drawable.Callback,android.view.KeyEvent.Callback,android.view.accessibility.AccessibilityEventSource,com.androidplot.ui.Resizable
public abstract class Plot<SeriesType extends Series, FormatterType extends Formatter, RendererType extends SeriesRenderer, BundleType extends SeriesBundle<SeriesType, FormatterType>, RegistryType extends SeriesRegistry<BundleType, SeriesType, FormatterType>> extends View implements Resizable
Base class for all Plot implementations.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description public enumPlot.BorderStylepublic enumPlot.RenderModeThe RenderMode used by a Plot to draw it's self onto the screen. The RenderMode can be setin two ways.In an xml layout:
Programatically:XYPlot myPlot = new XYPlot(context "MyPlot", Plot.RenderMode.USE_MAIN_THREAD);A Plot's RenderMode cannot be changed after the plot has been initialized.
-
Field Summary
Fields Modifier and Type Field Description private Plot.BorderStyleborderStyleprivate PaintborderPaintprivate PaintbackgroundPaintprivate LayoutManagerlayoutManagerprivate TextLabelWidgettitleprivate Plot.RenderModerenderModeprivate HashMap<Class<out RendererType>, RendererType>renderersprivate RegistryTyperegistry
-
Constructor Summary
Constructors Constructor Description Plot(Context context, String title)Convenience constructor - wraps Plot. Plot(Context context, String title, Plot.RenderMode mode)Used for programmatic instantiation. Plot(Context context, AttributeSet attrs)Required by super-class. Plot(Context context, AttributeSet attrs, int defStyle)Required by super-class.
-
Method Summary
Modifier and Type Method Description voidsetBorderStyle(Plot.BorderStyle style, Float radiusX, Float radiusY)Sets the visual style of the plot's border. PaintgetBorderPaint()voidsetBorderPaint(Paint borderPaint)Set's the paint used to draw the border. PaintgetBackgroundPaint()voidsetBackgroundPaint(Paint backgroundPaint)LayoutManagergetLayoutManager()voidsetLayoutManager(LayoutManager layoutManager)TextLabelWidgetgetTitle()voidsetTitle(TextLabelWidget title)Plot.RenderModegetRenderMode()voidsetRenderMode(Plot.RenderMode mode)Sets the render mode used by the Plot.WARNING: This method is not currently designed for general use outside of Configurator.Attempting to reassign the render mode at runtime will result in unexpected behavior. HashMap<Class<out RendererType>, RendererType>getRenderers()Used for caching renderer instances. RegistryTypegetRegistry()Associates lists series and getFormatter pairs with the class of the Renderer used to render them. voidsetRegistry(RegistryType registry)DisplayDimensionsgetDisplayDimensions()synchronized booleanaddListener(PlotListener listener)synchronized booleanremoveListener(PlotListener listener)synchronized booleanaddSeries(FormatterType formatter, Array<SeriesType> series)Convenience method to add a multiple series at once using the same formatter.If a problem is encountered, the method immediately returns false and the plotwill contain whatever series were added before the failure. synchronized booleanaddSeries(SeriesType series, FormatterType formatter)Add a new Series to the Plot. synchronized booleanremoveSeries(SeriesType series, Class<out RendererType> rendererClass)Remove a series for a specific Renderer only. synchronized voidremoveSeries(SeriesType series)Remove all occurrences of series regardless of the associated Renderer. voidclear()Remove all series from the plot. booleanisEmpty()FormatterTypegetFormatter(SeriesType series, Class<out RendererType> rendererClass)<T extends RendererType> TgetRenderer(Class<T> rendererClass)List<RendererType>getRendererList()voidsetMarkupEnabled(boolean enabled)voidredraw()Causes the plot to be redrawn. synchronized voidlayout(DisplayDimensions dims)Called when a change to the class' dimensions is made. voidsetPlotMargins(float left, float top, float right, float bottom)Convenience method - wraps the individual setMarginXXX methods into a single method. voidsetPlotPadding(float left, float top, float right, float bottom)Convenience method - wraps the individual setPaddingXXX methods into a single method. floatgetPlotMarginTop()voidsetPlotMarginTop(float plotMarginTop)floatgetPlotMarginBottom()voidsetPlotMarginBottom(float plotMarginBottom)floatgetPlotMarginLeft()voidsetPlotMarginLeft(float plotMarginLeft)floatgetPlotMarginRight()voidsetPlotMarginRight(float plotMarginRight)floatgetPlotPaddingTop()voidsetPlotPaddingTop(float plotPaddingTop)floatgetPlotPaddingBottom()voidsetPlotPaddingBottom(float plotPaddingBottom)floatgetPlotPaddingLeft()voidsetPlotPaddingLeft(float plotPaddingLeft)floatgetPlotPaddingRight()voidsetPlotPaddingRight(float plotPaddingRight)-
Methods inherited from class android.view.View
addChildrenForAccessibility, addExtraDataToAccessibilityNodeInfo, addFocusables, addKeyboardNavigationClusters, addOnAttachStateChangeListener, addOnLayoutChangeListener, addOnUnhandledKeyEventListener, addTouchables, animate, announceForAccessibility, autofill, bringToFront, buildDrawingCache, buildLayer, callOnClick, canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, canScrollHorizontally, canScrollVertically, cancelDragAndDrop, cancelLongPress, cancelPendingInputEvents, checkInputConnectionProxy, clearAnimation, clearFocus, clearViewTranslationCallback, combineMeasuredStates, computeScroll, computeSystemWindowInsets, createAccessibilityNodeInfo, createContextMenu, destroyDrawingCache, dispatchApplyWindowInsets, dispatchCapturedPointerEvent, dispatchConfigurationChanged, dispatchCreateViewTranslationRequest, dispatchDisplayHint, dispatchDragEvent, dispatchDrawableHotspotChanged, dispatchFinishTemporaryDetach, dispatchGenericMotionEvent, dispatchKeyEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, dispatchNestedFling, dispatchNestedPreFling, dispatchNestedPrePerformAccessibilityAction, dispatchNestedPreScroll, dispatchNestedScroll, dispatchPointerCaptureChanged, dispatchPopulateAccessibilityEvent, dispatchProvideAutofillStructure, dispatchProvideStructure, dispatchScrollCaptureSearch, dispatchStartTemporaryDetach, dispatchSystemUiVisibilityChanged, dispatchTouchEvent, dispatchTrackballEvent, dispatchUnhandledMove, dispatchWindowFocusChanged, dispatchWindowInsetsAnimationEnd, dispatchWindowInsetsAnimationPrepare, dispatchWindowInsetsAnimationProgress, dispatchWindowInsetsAnimationStart, dispatchWindowSystemUiVisiblityChanged, dispatchWindowVisibilityChanged, draw, drawableHotspotChanged, findFocus, findOnBackInvokedDispatcher, findViewById, findViewWithTag, findViewsWithText, focusSearch, forceHasOverlappingRendering, forceLayout, gatherTransparentRegion, generateDisplayHash, generateViewId, getAccessibilityClassName, getAccessibilityDelegate, getAccessibilityLiveRegion, getAccessibilityNodeProvider, getAccessibilityPaneTitle, getAccessibilityTraversalAfter, getAccessibilityTraversalBefore, getAllowedHandwritingDelegatePackageName, getAllowedHandwritingDelegatorPackageName, getAlpha, getAnimation, getAnimationMatrix, getApplicationWindowToken, getAttributeResolutionStack, getAttributeSourceResourceMap, getAutofillHints, getAutofillId, getAutofillType, getAutofillValue, getBackground, getBackgroundTintBlendMode, getBackgroundTintList, getBackgroundTintMode, getBaseline, getBottom, getCameraDistance, getClipBounds, getClipBounds, getClipToOutline, getContentCaptureSession, getContentDescription, getContext, getDefaultFocusHighlightEnabled, getDefaultSize, getDisplay, getDrawableState, getDrawingCache, getDrawingCacheBackgroundColor, getDrawingCacheQuality, getDrawingRect, getDrawingTime, getElevation, getExplicitStyle, getFilterTouchesWhenObscured, getFitsSystemWindows, getFocusable, getFocusables, getFocusedRect, getForeground, getForegroundGravity, getForegroundTintBlendMode, getForegroundTintList, getForegroundTintMode, getGlobalVisibleRect, getHandler, getHandwritingBoundsOffsetBottom, getHandwritingBoundsOffsetLeft, getHandwritingBoundsOffsetRight, getHandwritingBoundsOffsetTop, getHandwritingDelegatorCallback, getHasOverlappingRendering, getHeight, getHitRect, getHorizontalFadingEdgeLength, getHorizontalScrollbarThumbDrawable, getHorizontalScrollbarTrackDrawable, getId, getImportantForAccessibility, getImportantForAutofill, getImportantForContentCapture, getKeepScreenOn, getKeyDispatcherState, getLabelFor, getLayerType, getLayoutDirection, getLayoutParams, getLeft, getLocalVisibleRect, getLocationInSurface, getLocationInWindow, getLocationOnScreen, getMatrix, getMeasuredHeight, getMeasuredHeightAndState, getMeasuredState, getMeasuredWidth, getMeasuredWidthAndState, getMinimumHeight, getMinimumWidth, getNextClusterForwardId, getNextFocusDownId, getNextFocusForwardId, getNextFocusLeftId, getNextFocusRightId, getNextFocusUpId, getOnFocusChangeListener, getOutlineAmbientShadowColor, getOutlineProvider, getOutlineSpotShadowColor, getOverScrollMode, getOverlay, getPaddingBottom, getPaddingEnd, getPaddingLeft, getPaddingRight, getPaddingStart, getPaddingTop, getParent, getParentForAccessibility, getPivotX, getPivotY, getPointerIcon, getPreferKeepClearRects, getReceiveContentMimeTypes, getResources, getRevealOnFocusHint, getRight, getRootSurfaceControl, getRootView, getRootWindowInsets, getRotation, getRotationX, getRotationY, getScaleX, getScaleY, getScrollBarDefaultDelayBeforeFade, getScrollBarFadeDuration, getScrollBarSize, getScrollBarStyle, getScrollCaptureHint, getScrollIndicators, getScrollX, getScrollY, getSolidColor, getSourceLayoutResId, getStateDescription, getStateListAnimator, getSystemGestureExclusionRects, getSystemUiVisibility, getTag, getTextAlignment, getTextDirection, getTooltipText, getTop, getTouchDelegate, getTouchables, getTransitionAlpha, getTransitionName, getTranslationX, getTranslationY, getTranslationZ, getUniqueDrawingId, getVerticalFadingEdgeLength, getVerticalScrollbarPosition, getVerticalScrollbarThumbDrawable, getVerticalScrollbarTrackDrawable, getVerticalScrollbarWidth, getViewTranslationResponse, getViewTreeObserver, getVisibility, getWidth, getWindowId, getWindowInsetsController, getWindowSystemUiVisibility, getWindowToken, getWindowVisibility, getWindowVisibleDisplayFrame, getX, getY, getZ, hasExplicitFocusable, hasFocus, hasFocusable, hasNestedScrollingParent, hasOnClickListeners, hasOnLongClickListeners, hasOverlappingRendering, hasPointerCapture, hasTransientState, hasWindowFocus, inflate, invalidate, invalidateDrawable, invalidateOutline, isAccessibilityDataSensitive, isAccessibilityFocused, isAccessibilityHeading, isActivated, isAttachedToWindow, isAutoHandwritingEnabled, isClickable, isContextClickable, isCredential, isDirty, isDrawingCacheEnabled, isDuplicateParentStateEnabled, isEnabled, isFocusable, isFocusableInTouchMode, isFocused, isFocusedByDefault, isForceDarkAllowed, isHandwritingDelegate, isHapticFeedbackEnabled, isHardwareAccelerated, isHorizontalFadingEdgeEnabled, isHorizontalScrollBarEnabled, isHovered, isImportantForAccessibility, isImportantForAutofill, isImportantForContentCapture, isInEditMode, isInLayout, isInTouchMode, isKeyboardNavigationCluster, isLaidOut, isLayoutDirectionResolved, isLayoutRequested, isLongClickable, isNestedScrollingEnabled, isOpaque, isPaddingRelative, isPivotSet, isPreferKeepClear, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScreenReaderFocusable, isScrollContainer, isScrollbarFadingEnabled, isSelected, isShowingLayoutBounds, isShown, isSoundEffectsEnabled, isTemporarilyDetached, isTextAlignmentResolved, isTextDirectionResolved, isVerticalFadingEdgeEnabled, isVerticalScrollBarEnabled, isVisibleToUserForAutofill, jumpDrawablesToCurrentState, keyboardNavigationClusterSearch, layout, measure, offsetLeftAndRight, offsetTopAndBottom, onApplyWindowInsets, onCancelPendingInputEvents, onCapturedPointerEvent, onCheckIsTextEditor, onCreateInputConnection, onCreateViewTranslationRequest, onCreateVirtualViewTranslationRequests, onDragEvent, onDrawForeground, onFilterTouchEventForSecurity, onFinishTemporaryDetach, onGenericMotionEvent, onHoverChanged, onHoverEvent, onInitializeAccessibilityEvent, onInitializeAccessibilityNodeInfo, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyPreIme, onKeyShortcut, onKeyUp, onPointerCaptureChange, onPopulateAccessibilityEvent, onProvideAutofillStructure, onProvideAutofillVirtualStructure, onProvideContentCaptureStructure, onProvideStructure, onProvideVirtualStructure, onReceiveContent, onResolvePointerIcon, onRtlPropertiesChanged, onScreenStateChanged, onScrollCaptureSearch, onStartTemporaryDetach, onTouchEvent, onTrackballEvent, onViewTranslationResponse, onVirtualViewTranslationResponses, onVisibilityAggregated, onWindowFocusChanged, onWindowSystemUiVisibilityChanged, performAccessibilityAction, performClick, performContextClick, performHapticFeedback, performLongClick, performReceiveContent, playSoundEffect, post, postDelayed, postInvalidate, postInvalidateDelayed, postInvalidateOnAnimation, postOnAnimation, postOnAnimationDelayed, refreshDrawableState, releasePointerCapture, removeCallbacks, removeOnAttachStateChangeListener, removeOnLayoutChangeListener, removeOnUnhandledKeyEventListener, requestApplyInsets, requestFitSystemWindows, requestFocus, requestFocusFromTouch, requestLayout, requestPointerCapture, requestRectangleOnScreen, requestUnbufferedDispatch, requireViewById, resetPivot, resolveSize, resolveSizeAndState, restoreDefaultFocus, restoreHierarchyState, saveAttributeDataForStyleable, saveHierarchyState, scheduleDrawable, scrollBy, scrollTo, sendAccessibilityEvent, sendAccessibilityEventUnchecked, setAccessibilityDataSensitive, setAccessibilityDelegate, setAccessibilityHeading, setAccessibilityLiveRegion, setAccessibilityPaneTitle, setAccessibilityTraversalAfter, setAccessibilityTraversalBefore, setActivated, setAllowClickWhenDisabled, setAllowedHandwritingDelegatePackage, setAllowedHandwritingDelegatorPackage, setAlpha, setAnimation, setAnimationMatrix, setAutoHandwritingEnabled, setAutofillHints, setAutofillId, setBackground, setBackgroundColor, setBackgroundDrawable, setBackgroundResource, setBackgroundTintBlendMode, setBackgroundTintList, setBackgroundTintMode, setBottom, setCameraDistance, setClickable, setClipBounds, setClipToOutline, setContentCaptureSession, setContentDescription, setContextClickable, setDefaultFocusHighlightEnabled, setDrawingCacheBackgroundColor, setDrawingCacheEnabled, setDrawingCacheQuality, setDuplicateParentStateEnabled, setElevation, setEnabled, setFadingEdgeLength, setFilterTouchesWhenObscured, setFitsSystemWindows, setFocusable, setFocusableInTouchMode, setFocusedByDefault, setForceDarkAllowed, setForeground, setForegroundGravity, setForegroundTintBlendMode, setForegroundTintList, setForegroundTintMode, setHandwritingBoundsOffsets, setHandwritingDelegatorCallback, setHapticFeedbackEnabled, setHasTransientState, setHorizontalFadingEdgeEnabled, setHorizontalScrollBarEnabled, setHorizontalScrollbarThumbDrawable, setHorizontalScrollbarTrackDrawable, setHovered, setId, setImportantForAccessibility, setImportantForAutofill, setImportantForContentCapture, setIsCredential, setIsHandwritingDelegate, setKeepScreenOn, setKeyboardNavigationCluster, setLabelFor, setLayerPaint, setLayerType, setLayoutDirection, setLayoutParams, setLeft, setLeftTopRightBottom, setLongClickable, setMinimumHeight, setMinimumWidth, setNestedScrollingEnabled, setNextClusterForwardId, setNextFocusDownId, setNextFocusForwardId, setNextFocusLeftId, setNextFocusRightId, setNextFocusUpId, setOnApplyWindowInsetsListener, setOnCapturedPointerListener, setOnClickListener, setOnContextClickListener, setOnCreateContextMenuListener, setOnDragListener, setOnFocusChangeListener, setOnGenericMotionListener, setOnHoverListener, setOnKeyListener, setOnLongClickListener, setOnReceiveContentListener, setOnScrollChangeListener, setOnSystemUiVisibilityChangeListener, setOnTouchListener, setOutlineAmbientShadowColor, setOutlineProvider, setOutlineSpotShadowColor, setOverScrollMode, setPadding, setPaddingRelative, setPivotX, setPivotY, setPointerIcon, setPreferKeepClear, setPreferKeepClearRects, setPressed, setRenderEffect, setRevealOnFocusHint, setRight, setRotation, setRotationX, setRotationY, setSaveEnabled, setSaveFromParentEnabled, setScaleX, setScaleY, setScreenReaderFocusable, setScrollBarDefaultDelayBeforeFade, setScrollBarFadeDuration, setScrollBarSize, setScrollBarStyle, setScrollCaptureCallback, setScrollCaptureHint, setScrollContainer, setScrollIndicators, setScrollX, setScrollY, setScrollbarFadingEnabled, setSelected, setSoundEffectsEnabled, setStateDescription, setStateListAnimator, setSystemGestureExclusionRects, setSystemUiVisibility, setTag, setTextAlignment, setTextDirection, setTooltipText, setTop, setTouchDelegate, setTransitionAlpha, setTransitionName, setTransitionVisibility, setTranslationX, setTranslationY, setTranslationZ, setVerticalFadingEdgeEnabled, setVerticalScrollBarEnabled, setVerticalScrollbarPosition, setVerticalScrollbarThumbDrawable, setVerticalScrollbarTrackDrawable, setViewTranslationCallback, setVisibility, setWillNotCacheDrawing, setWillNotDraw, setWindowInsetsAnimationCallback, setX, setY, setZ, showContextMenu, startActionMode, startAnimation, startDrag, startDragAndDrop, startNestedScroll, stopNestedScroll, toString, transformMatrixToGlobal, transformMatrixToLocal, unscheduleDrawable, updateDragShadow, willNotCacheDrawing, willNotDraw -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
-
Constructor Detail
-
Plot
Plot(Context context, String title)
Convenience constructor - wraps Plot.- Parameters:
title- The display title of this Plot.
-
Plot
Plot(Context context, String title, Plot.RenderMode mode)
Used for programmatic instantiation.- Parameters:
title- The display title of this Plot.
-
Plot
Plot(Context context, AttributeSet attrs)
Required by super-class.
-
Plot
Plot(Context context, AttributeSet attrs, int defStyle)
Required by super-class.
-
-
Method Detail
-
setBorderStyle
void setBorderStyle(Plot.BorderStyle style, Float radiusX, Float radiusY)
Sets the visual style of the plot's border.
- Parameters:
radiusX- Sets the X radius for BorderStyle.ROUNDED.radiusY- Sets the Y radius for BorderStyle.ROUNDED.
-
getBorderPaint
Paint getBorderPaint()
-
setBorderPaint
void setBorderPaint(Paint borderPaint)
Set's the paint used to draw the border. Note that this methodcopies borderPaint and set's the copy's Paint.Style attribute toPaint.Style.STROKE.
-
getBackgroundPaint
Paint getBackgroundPaint()
-
setBackgroundPaint
void setBackgroundPaint(Paint backgroundPaint)
-
getLayoutManager
LayoutManager getLayoutManager()
-
setLayoutManager
void setLayoutManager(LayoutManager layoutManager)
-
getTitle
TextLabelWidget getTitle()
-
setTitle
void setTitle(TextLabelWidget title)
-
getRenderMode
Plot.RenderMode getRenderMode()
-
setRenderMode
void setRenderMode(Plot.RenderMode mode)
Sets the render mode used by the Plot.WARNING: This method is not currently designed for general use outside of Configurator.Attempting to reassign the render mode at runtime will result in unexpected behavior.
-
getRenderers
HashMap<Class<out RendererType>, RendererType> getRenderers()
Used for caching renderer instances. Note that once a renderer is initialized it remains initializedfor the life of the application; does not and should not be destroyed until the application exits.
-
getRegistry
RegistryType getRegistry()
Associates lists series and getFormatter pairs with the class of the Renderer used to render them.
-
setRegistry
void setRegistry(RegistryType registry)
-
getDisplayDimensions
DisplayDimensions getDisplayDimensions()
-
addListener
synchronized boolean addListener(PlotListener listener)
-
removeListener
synchronized boolean removeListener(PlotListener listener)
-
addSeries
synchronized boolean addSeries(FormatterType formatter, Array<SeriesType> series)
Convenience method to add a multiple series at once using the same formatter.If a problem is encountered, the method immediately returns false and the plotwill contain whatever series were added before the failure.
-
addSeries
synchronized boolean addSeries(SeriesType series, FormatterType formatter)
Add a new Series to the Plot.
-
removeSeries
synchronized boolean removeSeries(SeriesType series, Class<out RendererType> rendererClass)
Remove a series for a specific Renderer only. Use removeSeries to remove the seriesfrom the plot completely.
-
removeSeries
synchronized void removeSeries(SeriesType series)
Remove all occurrences of series regardless of the associated Renderer.
-
clear
void clear()
Remove all series from the plot.
-
isEmpty
boolean isEmpty()
-
getFormatter
FormatterType getFormatter(SeriesType series, Class<out RendererType> rendererClass)
-
getRenderer
<T extends RendererType> T getRenderer(Class<T> rendererClass)
-
getRendererList
List<RendererType> getRendererList()
-
setMarkupEnabled
void setMarkupEnabled(boolean enabled)
-
redraw
void redraw()
Causes the plot to be redrawn.
-
layout
synchronized void layout(DisplayDimensions dims)
Called when a change to the class' dimensions is made. This method is responsiblefor cascading calls to update for any logical children of this class, for examplethe Plot class is responsible for updating the LayoutManager. Note that while dimsis marked final in this interface, the compiler will not enforce it. Implementors ofthis method should take care not to make changes to dims as this will affect parentResizables in likely undesired ways.
-
setPlotMargins
void setPlotMargins(float left, float top, float right, float bottom)
Convenience method - wraps the individual setMarginXXX methods into a single method.
-
setPlotPadding
void setPlotPadding(float left, float top, float right, float bottom)
Convenience method - wraps the individual setPaddingXXX methods into a single method.
-
getPlotMarginTop
float getPlotMarginTop()
-
setPlotMarginTop
void setPlotMarginTop(float plotMarginTop)
-
getPlotMarginBottom
float getPlotMarginBottom()
-
setPlotMarginBottom
void setPlotMarginBottom(float plotMarginBottom)
-
getPlotMarginLeft
float getPlotMarginLeft()
-
setPlotMarginLeft
void setPlotMarginLeft(float plotMarginLeft)
-
getPlotMarginRight
float getPlotMarginRight()
-
setPlotMarginRight
void setPlotMarginRight(float plotMarginRight)
-
getPlotPaddingTop
float getPlotPaddingTop()
-
setPlotPaddingTop
void setPlotPaddingTop(float plotPaddingTop)
-
getPlotPaddingBottom
float getPlotPaddingBottom()
-
setPlotPaddingBottom
void setPlotPaddingBottom(float plotPaddingBottom)
-
getPlotPaddingLeft
float getPlotPaddingLeft()
-
setPlotPaddingLeft
void setPlotPaddingLeft(float plotPaddingLeft)
-
getPlotPaddingRight
float getPlotPaddingRight()
-
setPlotPaddingRight
void setPlotPaddingRight(float plotPaddingRight)
-
-
-
-