Update: 2026-06-21 18:58:05

This commit is contained in:
Hamza-Ayed
2026-06-21 18:58:13 +03:00
parent b492b5076b
commit e73be65a72
8755 changed files with 92977 additions and 99 deletions

View File

@@ -0,0 +1,702 @@
€ÁmagnifierConfiguration focusNodechildcontextMenuBuilderselectionControlsonSelectionChangedgetSelectableButtonItems createState_actions_gestureRecognizers_selectionOverlay_startHandleLayerLink_endHandleLayerLink_toolbarLayerLink_selectionDelegate _selectable_hasSelectionOverlayGeometry_lastOrientation_lastSelectedContent_webContextMenuEnabledselectionOverlay_processTextService_processTextActions_localFocusNode
_focusNode_selectionStatusNotifier initState_initProcessTextActionsdidChangeDependenciesdidUpdateWidget_makeOverridable_handleFocusChanged_updateSelectionStatus_isShiftPressed_lastSecondaryTapDownPosition_lastPointerDeviceKind_isPrecisePointerDevice_finalizeSelectableRegionStatus _getEffectiveConsecutiveTapCount_initMouseGestureRecognizer_onTapTrackStart_onTapTrackReset_initTouchGestureRecognizer_doubleTapOffset_startNewMouseSelectionGesture_handleMouseDragStart_handleMouseDragUpdate_handleMouseDragEnd_handleMouseTapUp_updateSelectedContentIfNeeded_handleTouchLongPressStart_handleTouchLongPressMoveUpdate_handleTouchLongPressEnd_positionIsOnActiveSelection_handleRightClickDown_selectionEndPosition_userDraggingSelectionEnd _scheduledSelectionEndEdgeUpdate_triggerSelectionEndEdgeUpdate
_onAnyDragEnd_stopSelectionEndEdgeUpdate_selectionStartPosition_userDraggingSelectionStart"_scheduledSelectionStartEdgeUpdate _triggerSelectionStartEdgeUpdate_stopSelectionStartEdgeUpdate!_selectionStartHandleDragPosition_selectionEndHandleDragPosition$_handleSelectionStartHandleDragStart%_handleSelectionStartHandleDragUpdate"_handleSelectionEndHandleDragStart#_handleSelectionEndHandleDragUpdate_buildInfoForMagnifier_createSelectionOverlay_updateSelectionOverlay _showHandles _showToolbar _selectEndTo_selectStartTo_collapseSelectionAt
_selectWordAt_selectParagraphAt_finalizeSelectionclearSelection_copy_sharecontextMenuAnchors_adjustingSelectionEnd!_determineIsAdjustingSelectionEnd_granularlyExtendSelection_directionalHorizontalBaseline_directionallyExtendSelectioncontextMenuButtonItems _textProcessingActionButtonItemsstartGlyphHeightendGlyphHeightselectionEndpoints
cutEnabled pasteEnabled hideToolbar selectAll
copySelectiontextEditingValue
bringIntoView cutSelectionuserUpdateTextEditingValue pasteTextaddremovedisposebuild invokeActioninvokestate granularity_hasReceivedStartEvent_hasReceivedEndEvent"_lastStartEdgeUpdateGlobalPosition _lastEndEdgeUpdateGlobalPositiondidReceiveSelectionEventFor!didReceiveSelectionBoundaryEventsupdateLastSelectionEdgeLocation/_updateLastSelectionEdgeLocationsFromGeometriesclearInternalSelectionState(clearInternalSelectionStateForSelectablehandleSelectAllhandleSelectWordhandleSelectParagraphhandleClearSelectionhandleSelectionEdgeUpdatedispatchSelectionEventToChildensureChildUpdateddidChangeSelectables selectables$_kSelectionHandleDrawableAreaPaddingcurrentSelectionEndIndexcurrentSelectionStartIndex_startHandleLayer_startHandleLayerOwner_endHandleLayer_endHandleLayerOwner_isHandlingSelectionEvent_scheduledSelectableUpdate_selectionInProgress
_additions_extendSelectionInProgresslayoutDidChange_scheduleSelectableUpdate_updateSelectables_flushAdditions_removeSelectablevalue_selectionGeometry_updateSelectionGeometry_getBoundingBox compareOrder_compareScreenOrder_compareVertically_compareHorizontally_handleSelectableGeometryChangegetSelectionGeometry-_adjustSelectionIndexBasedOnSelectionGeometrypushHandleLayers_updateHandleLayersAndOwnersgetSelectedContent
contentLength_calculateLocalRange getSelection_flushInactiveSelections_handleSelectBoundaryhandleGranularlyExtendSelection"handleDirectionallyExtendSelectiondispatchSelectionEvent_initSelection_adjustSelectionchanging finalized _selectableRegionSelectionStatusselectionStatusNotifiermaybeOfupdateShouldNotifyselectionNotifier_initialSelectionGeometry_selectionNotifier _setNotifiernotifyListenersrangestatus selection
registered"_registerSelectionListenerDelegate$_unregisterSelectionListenerDelegate addListener_kLongPressSelectionDevices&_kSelectableVerticalComparingThresholdSelectableRegionSelectableRegionState_NonOverrideAction_SelectAllAction_CopySelectionAction _GranularlyExtendSelectionAction%_GranularlyExtendCaretSelectionAction(_DirectionallyExtendCaretSelectionAction StaticSelectionContainerDelegate)MultiSelectableSelectionContainerDelegate_SelectionInfo"SelectableRegionContextMenuBuilderSelectableRegionSelectionStatus(_SelectableRegionSelectionStatusNotifier$SelectableRegionSelectionStatusScopeSelectionListener_SelectionListenerState_SelectionListenerDelegateSelectionDetailsSelectionListenerNotifier<65>¾SetPointerDeviceKindtouchstylusinvertedStylusdoubleText
SelectionAreamaterial
SelectableSelectionContainerSelectionEventSelectionRegistrarScopedelegateSelectionRegistrarmaybeOfSelectionRegistrantdisabledchanging finalizedValueListenable addListenerStatedidChangeDependenciesdisposeremoveListener WidgetTesterdragFrom GlobalKeySelectableTextSelectionHandlerStatefulWidgetTextMagnifierConfiguration FocusNodeWidgetemptyTextSelectionControlsTextSelectionControls ValueChangedSelectedContentContextMenuButtonItemcontextMenuButtonItems EditableTextgetEditableButtonItemsAdaptiveTextSelectionToolbar buttonItemsgetAdaptiveButtonsListSelectionGeometry VoidCallbackselectionGeometrystatusSelectionStatus uncollapsedbool
hasContentkIsWebdefaultTargetPlatformTargetPlatformandroidmacOSfuchsialinuxwindowsiOSonShare onPressedonCopytypeContextMenuButtonTypecopyshare onSelectAll selectAlloverrideTextSelectionDelegateMapTypeActionIntentSelectAllTextIntentCopySelectionTextIntent6ExtendSelectionToNextWordBoundaryOrCaretLocationIntent granularityTextGranularityword'ExpandSelectionToDocumentBoundaryIntentdocument ExpandSelectionToLineBreakIntentline ExtendSelectionByCharacterIntent character'ExtendSelectionToNextWordBoundaryIntent ExtendSelectionToLineBreakIntent-ExtendSelectionVerticallyToAdjacentLineIntent'ExtendSelectionToDocumentBoundaryIntentGestureRecognizerFactorySelectionOverlay LayerLinkvaluestartSelectionPointendSelectionPoint OrientationBrowserContextMenuenabledvisibleForTestingProcessTextServiceDefaultProcessTextServiceProcessTextActionwidget focusNode
debugLabel_ protectedvoid initStateTapGestureRecognizer$GestureRecognizerFactoryWithHandlers
debugOwnerinstanceonSecondaryTapDownFutureclearaddAllqueryTextActions
MediaQuery
orientationOfcontextdidUpdateWidgethasFocus overridable
defaultAction#PlatformSelectableRegionContextMenudetachSchedulerBindinglifecycleStateAppLifecycleStateresumedattach
TextSelection collapsed
baseOffset extentOffsetnoneoffsetTextEditingValuetext selectionPointerDownEventBaseTapAndDragGestureRecognizerOffsetmousetrackpadunknownintminTapAndPanGestureRecognizersupportedDevicesonTapTrackStartonTapTrackReset onTapDownonTapUp onDragStart onDragUpdate onDragEndonCanceldragStartBehaviorDragStartBehaviordownHardwareKeyboardlogicalKeysPressed intersectionLogicalKeyboardKey shiftLeft
shiftRight
isNotEmpty%TapAndHorizontalDragGestureRecognizervalueswheredevicetoSeteagerVictoryOnDragLongPressGestureRecognizeronLongPressStartonLongPressMoveUpdateonLongPressEndTapDragDownDetailskindconsecutiveTapCount requestFocusisShiftPressedValidglobalPositionTapDragStartDetailsTapDragUpdateDetails
continuoustextGranularity paragraphTapDragEndDetailsTapDragUpDetailstoolbarIsVisibleisPointerPreciseonSelectionChangedgetSelectedContent plainTextcallLongPressStartDetailsHapticFeedbackselectionClickLongPressMoveUpdateDetailsLongPressEndDetailsRectselectionRectsMatrix4getTransformTo MatrixUtils
transformRect
selectionRectcontainsTapDownDetails0lastSecondaryTapDownPositionWasOnActiveSelectionlocationSelectionEdgeUpdateEventSelectionResultpendingdispatchSelectionEventforEndaddPostFrameCallbackDurationDragEndDetailsisDraggingStartHandleisDraggingEndHandle
hideMagnifierforStartDragStartDetails
localPositiontransformPoint
showMagnifierDragUpdateDetailsdelta
lineHeightupdateMagnifier
MagnifierInfoSelectionPointVector3getTranslationxyfromLTWHdxdyglobalGesturePosition caretRect fieldBoundssizecurrentLineBoundariesdebugRequiredForstartHandleType
handleTypeTextSelectionHandleTypelineHeightAtStartonStartHandleDragStartonStartHandleDragUpdateonStartHandleDragEnd
endHandleTypelineHeightAtEndonEndHandleDragStartonEndHandleDragUpdateonEndHandleDragEndselectionEndpointsselectionControlsselectionDelegateclipboardStatusstartHandleLayerLinkendHandleLayerLinktoolbarLayerLinkmagnifierConfigurationleftright showHandlesOverlaytoolbarLocationTextSelectionHandleControls showToolbar hideToolbarcontextMenuBuilder BuildContextSelectWordSelectionEventSelectParagraphSelectionEventClearSelectionEvent ClipboardsetData
ClipboardDataSystemChannelsplatform invokeMethodTextSelectionToolbarAnchors
primaryAnchorfindRenderObject RenderBox
fromSelection renderBoxstartGlyphHeightendGlyphHeight hasSelectionGranularlyExtendSelectionEventforwardisEnd!DirectionallyExtendSelectionEvent directionSelectionExtendDirectionnextLine previousLinegetSelectableButtonItemsEditableTextStateSelectionChangedCausetoolbaraddlabelactionStringprocessTextActionidTextSelectionPoint
TextDirectionltr
Deprecated hideHandlesSelectAllSelectionEventcause TextPositionpushHandleLayersdebugCheckHasOverlayselectionStatusNotifierchild registrar TapRegiongroupId onTapOutsideunfocusCompositedTransformTargetlinkRawGestureDetectorgesturesbehaviorHitTestBehavior translucentexcludeFromSemanticsActionsactionsFocuswithExternalFocusNodeincludeSemantics
ContextActionObject
callingActioninvokekeyboard_copyDirectionalTextEditingIntent_granularlyExtendSelectionDirectionalCaretMovementIntentcollapseSelection_directionallyExtendSelectionSelectionContainerDelegate
selectablecurrentSelectionStartIndexcurrentSelectionEndIndexmaxindex selectablesglobalSelectionEdgeLocationforEachremovehandleSelectAllhandleSelectWordhandleSelectParagraphhandleClearSelectionSelectionEventType
endEdgeUpdatehandleSelectionEdgeUpdatestartEdgeUpdate
selectWordselectParagraphgranularlyExtendSelectiondirectionallyExtendSelectiondispatchSelectionEventToChild removeWheredidChangeSelectablesChangeNotifier kFlutterMemoryAllocationsEnabledmaybeDispatchObjectCreationschedulerPhaseSchedulerPhasepostFrameCallbacksscheduleMicrotasktoListsortlengthindexOfremoveAt
mustCallSupernotifyListeners
boundingBoxesfirstexpandToInclude
ComparatortopbottomabsprecisionErrorToleranceisEmptygetTransformFromisFinitehasSize
containerSizewidthheightmap intersectinflatedata StringBufferwritetoString
contentLengthfoldsumSelectedContentRange getSelection endOffset startOffsetrangetargetrectnextpreviousendbackwardcopyWithEditableTextContextMenuBuilderInheritedWidget"dependOnInheritedWidgetOfExactTypeselectionNotifier _setNotifier"_registerSelectionListenerDelegate$_unregisterSelectionListenerDelegate Exception
StatefulWidgetStateTextSelectionDelegateSelectionRegistrar
ContextAction_NonOverrideAction)MultiSelectableSelectionContainerDelegateSelectionContainerDelegateChangeNotifierValueListenableInheritedWidget StaticSelectionContainerDelegateSelectionDetails
íp?büÅ3«=0¡<00>^
dart:async<00>s dart:math<00>ˆpackage:flutter/foundation.dart<00>²package:flutter/gestures.dart<00>Úpackage:flutter/rendering.dartpackage:flutter/scheduler.dart,package:flutter/services.dartT'package:vector_math/vector_math_64.dart‚‡ actions.dart‚ž
basic.dart‚³context_menu_button_item.dart‚Û
debug.dart‚ðfocus_manager.dartƒ
focus_scope.dartƒ(framework.dartƒAgesture_detector.dartƒamagnifier.dartƒzmedia_query.dartƒ• overlay.dartƒ¬,platform_selectable_region_context_menu.dartƒãselection_container.darttap_region.darttext_editing_intents.dart„Dtext_selection.dart„b#text_selection_toolbar_anchors.dartÀáÀ:bŽM<€†€¤€¥€Õ<E282AC><0E><12>7<EFBFBD>S<EFBFBD>\<5C>]<5D>r<EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>Ù+S<E280A0>²Úïƒ ƒ'ƒ@ƒ`ƒyƒ”ƒ«ƒâ„„C„a„<61><EFBFBD>„¨„¿„À……+…G…k…n…o…½† †L†‡†ˆ†Â†Æ‡‡c‡³‡ÿˆFˆˆ¼ˆÀ‰‰9‰=‰…‰ÑŠŠlŠpŠœŠ Šñ'+|‹¿‹ä‹èŒ)ŒsŒÂ<C592><11>b<EFBFBD>°<EFBFBD>Ü<EFBFBD>àŽ1ŽŽÅ<C5BD><15>3<EFBFBD>7<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD> <09>
<EFBFBD>;<3B>?<3F>S<EFBFBD>W<EFBFBD>c<EFBFBD>t<EFBFBD><EFBFBD>Ì<EFBFBD>å)Ci©éø'7;?dªÌï““8“^“Ž“º“å””>”s”©”­”±”Ӕו'•i•<69>•…•ÏSW¦ñ—<—[—_—s—¿—Ü—à˜;˜K˜O˜e˜i˜¸™C™G™[™§™í™ñšPš`šdšµšý $8ŠòœœœPœ£œò<C593>@<40>D<EFBFBD>\<5C>`<60>¸žžhžÄŸŸŸQŸ…Ÿ‰ŸÜ / J N ž¡ ¡\¡ª¡ø¢¢"¢/¢3¢„¢Õ££££v£~££<E2809A>£”£Ô¤¤K¤ž¤¹¥ ¥W¥p¥¾¦ ¦Y¦<59>¦±¦ß¦å§3§U§p§§œ§°§÷¨¨9¨R¨X¨Y¨¨¨®¨ÿ©J©|©‚©±©ì©íªª:ª;ªrªxª©ª¿ªÀªÿ«?«@«‰«˜«ž«è¬'¬X¬Y¬‰¬Å¬Æ­­;­A­­­­³­Ã­É®®S®¤®Þ¯/¯d¯˜¯ë°4°t°¬°Ô±±+±2±±»±ð²²%²N²«²Í²ñ³³>³<>³æ´´Y´´´Ê´Ëµµfµgµ¸µþ¶¶5¶”¶Ä··2·<32>·Á¸¸¸"¸#¸/¸q¸s¸t¸˜¸Ô¸ó¹¹a¹¤¹ïº=º<>º«ºÖºßºæ»%»v»„»³»¼»Ã»û¼E¼S¼~¼‡¼Ž¼Æ½½#½S½\½c½¢½ø¾¾1¾:¾A¾y¾È¾Ö¿¿
¿¿V¿»¿ÂÀ@À@WÀ@eÀ@”À@<40>À@¤À@©À@ªÀ@ìÀAÀA=ÀAtÀA©ÀAÜÀB>ÀBŽÀB©ÀBªÀBÕÀCÀCMÀCNÀCoÀC˜ÀC™ÀCÓÀDÀDXÀDjÀD<>ÀDŸÀDÃÀDüÀE/ÀE0ÀEvÀE|ÀE¹ÀEÎÀF
ÀFÀFeÀF³ÀF´ÀFýÀGJÀGKÀG‡ÀG¥ÀGÃÀHÀHÀHyÀHÅÀHùÀHúÀIÀIÀI(ÀI?ÀIpÀI“ÀI¶ÀIËÀIûÀJ?ÀJwÀJ£ÀJäÀJñÀJüÀKÀKÀK ÀKqÀKÀKÇÀKèÀL6ÀL:ÀL;ÀLHÀLTÀLuÀL˜ÀL½ÀLàÀLÿÀMÀM1ÀMRÀMsÀMÀM¦ÀM¬ÀM­ÀMøÀN?ÀNcÀN‰ÀN—ÀN<>ÀNÈÀNîÀO2ÀO8ÀO<ÀO=ÀOJÀOVÀOÀO±ÀOäÀP)ÀPgÀPÀP«ÀP÷ÀQ9ÀQAÀQtÀQ¶ÀQÕÀQÝÀQãÀQçÀQèÀR2ÀR„ÀRˆÀR‰ÀR¨ÀRÈÀRìÀS4ÀS<ÀS<>ÀSÞÀT*ÀT{ÀTÆÀUÀUhÀUŒÀU¦ÀUùÀV$ÀV,ÀV2ÀVTÀVšÀV ÀV¤ÀV¥ÀVÇÀWÀWGÀWlÀWÄÀX ÀXÀX^ÀX†ÀX§ÀX´ÀXØÀXøÀXþÀYÀYÀYÀYÀYcÀYŸÀY¿ÀYÀÀZÀZÀZFÀZGÀZÀZ­ÀZÚÀZÛÀ[(À[IÀ[mÀ[‚À[©À[ÎÀ[ûÀ\À\EÀ\[À\aÀ\eÀ\fÀ\‘À\çÀ]4À]BÀ]HÀ]˜À]œÀ]<5D>À]íÀ^@À^<5E>À^ÕÀ^ÚÀ_,À_@À_wÀ_À_»À_ÞÀ`À`dÀ`²À`þÀa4ÀaUÀa_Àa¬ÀbÀbKÀbÀbèÀc1Àc^ÀcuÀc¦ÀcÌÀcÿÀd ÀdmÀdÂÀeÀe^Àe°ÀeùÀf&Àf=ÀfnÀf”ÀfÇÀfæÀgÀg*ÀgwÀgÌÀhÀhDÀhuÀh{ÀhÀh€Àh§ÀhÝÀi'ÀiSÀiqÀi½ÀiÊÀiüÀjÀjDÀjwÀj²ÀjÞÀkÀkHÀkxÀk¢ÀkÞÀkëÀköÀkúÀkûÀlÀlhÀlÁÀlÓÀl×ÀlØÀlôÀmÀmÀmÀm=Àm•ÀmíÀnLÀn<>ÀnâÀoÀo7ÀoÀoÉÀoáÀoîÀp+Àp@ÀpƒÀpÐÀqÀqSÀqÀqØÀrÀr^Àr ÀrÞÀsÀs`Às„ÀsÕÀtÀt<ÀtpÀt¦ÀtÖÀuÀu<ÀuIÀuTÀuŠÀuÔÀvÀvÀvYÀvfÀv˜Àv­ÀvëÀw3ÀwnÀw{Àw†ÀwŠÀwÀw§ÀwëÀxÀxcÀxqÀx”Àx½ÀxäÀy Ày.Ày~ÀyÀy¥ÀyÊÀyïÀzÀz1ÀzÀzÏÀ{À{EÀ{rÀ{ËÀ{òÀ|.À|‡À|œÀ|ªÀ|ÈÀ}
À}aÀ}kÀ}yÀ}¢À}ÅÀ~"À~{À~´À~ÉÀ~×ÀÀ¼ÀÚÀèÀÀ€6À€[À€€À€§À€âÀ<00><00><00><00><00>¡À<00>ÈÀ<00>ëÀ‚„À‚¿ÀƒÀƒZÀƒhÀƒ<>Àƒ²ÀƒÙÀÀ„pÀ„zÀ„€À„¦À„ªÀ„«À„çÀ…4À…BÀ…‘À…ÜÀ…îÀ…øÀ†0À†ƒÀ†‰À†¯À†³À†´À†òÀ‡?À‡MÀ‡œÀ‡çÀ‡ùÀˆÀˆˆžÀˆ¬ÀˆÕÀˆüÀ‰#À‰vÀ‰¬ÀŠ ÀŠ%ÀŠUÀŠwÀŠ®ÀŠ¿ÀÀ‹‹À‹ÆÀ‹òÀŒEÀŒpÀŒ¨ÀŒÏÀŒÝÀŒ÷À<00><00><00><00>‰À<00>àÀŽ3ÀŽQÀŽ_ÀŽ„ÀŽ©ÀŽÐÀŽêÀ<00>À<00><00><00><00>ÓÀ<00>ÝÀ<00>ëÀ<00>À<00><00><00>…À<00>ÕÀ<00>þÀ‘œÀ‘¾À‘úÀ À’—À’¼À’ãÀ’ýÀ“+À“KÀ“…À“”À“ëÀ“õÀ“ûÀ”!À”%À”&À”^À”ŠÀ”ÞÀ•-À•À•ÐÀ•ðÀ–À–¢À–ÔÀ–îÀÀÀ—1À—cÀ—}À—‡À—¨À—ÉÀ—ìÀ˜˜˜˜˜’À˜¹À˜½À˜¾À˜óÀ™*À™zÀ™ÄÀšÀšWÀšuÀš‘Àš Àš¸ÀšÀÀšÎÀšÔÀ›À›¦À›ÉÀ›äÀœ&Àœ}Àœ¢ÀœÇÀœîÀ<00><00><00><00>—À<00>ÀÀ<00>çÀžÀž3ÀžˆÀžÛÀžùÀŸÀŸ%ÀŸHÀŸmÀŸ‰ÀŸéÀ À À  ´À ÒÀ àÀ¡À¡*À¡QÀ¡˜À¡ºÀ¡ÍÀ¡×À¡ÝÀ¢À¢*À¢.À¢/À¢YÀ¢†À¢”À¢šÀ¢âÀ£#À£IÀ£†À£ŒÀ£<>À£‘À£ÔÀ£ùÀ¤À¤KÀ¤šÀ¤åÀ¥7À¥†À¥ÁÀ¥×À¥ÝÀ¦À¦À¦À¦UÀ¦®À¦ýÀ§#À§'À§(À§gÀ§<>À§§À§ÎÀ§âÀ¨À¨3À¨9À¨=À¨>À¨†À¨ÖÀ©À©lÀ©<>À©²À©ºÀ©ÀÀ©ÒÀ©ÖÀ©×ÀªÀªbÀª²ÀªîÀ«
À«2À«UÀ«xÀ«›À«ìÀ¬,À¬<>À¬ÂÀ¬ÍÀ­
À­­ŒÀ­ÎÀ­èÀ®)À®UÀ®gÀ®qÀ®·À®ÖÀ¯À¯6À¯›À¯´À¯ÆÀ¯ÐÀ°À°0À°PÀ°iÀ°{À°…À°ÖÀ±À±zÀ±¬À±·À±øÀ²@À²JÀ²PÀ²ŸÀ²ÆÀ³À³9À³uÀ³‰À³ÄÀ³êÀ³îÀ³ïÀ´À´À´´´¯À´°À´öÀ´üÀµMÀµžÀµÐÀÀ¶hÀ¶³À·À·JÀ·”À·¢À·¨À·ÕÀ¸À¸¸¸¸¸›À¸ÊÀ¹À¹GÀ¹YÀ¹cÀ¹•À¹ßÀºÀº%Àº+Àº/Àº0Àº_Àº€Àº¥À»À»À»IÀ»_À»eÀ»À»¥À»ÌÀ»ÐÀ»ÑÀ»øÀ¼&À¼HÀ¼LÀ¼MÀ¼pÀ¼»À¼îÀ¼ïÀ½7À½=À½ŽÀ½ßÀ¾À¾_À¾«À¾öÀ¿EÀ¿<>À¿ÛÀ¿éÀ¿ïÀÀÀÀIÀÀÀÀ©ÀÀ¶ÀÀÃÀÀæÀÁÀÁcÀÁ–ÀÁ¨ÀÁ²ÀÁæÀÂ2ÀÂlÀÂzÀ€À„ÀÂ…À®ÀÂÞÀÃÀÃÀÃÀÃ+ÀÃ,ÀÃ]ÀÃŒÀÃ<>ÀÃÕÀÄÀÄÀÄvÀĽÀÅ!ÀÅ"ÀÅHÀÅ­ÀÅ´ÀÅÚÀÅÞÀÅßÀÆ)ÀÆ„ÀÆÎÀÇÀÇ5ÀÇaÀDzÀÇÚÀÇÛÀÈÀÈhÀÈoÀÈ•ÀÈäÀÈèÀÈéÀÉ/ÀÉoÀÉËÀÊÀÊtÀÊuÀÊ›ÀÊþÀËÀË+ÀË/ÀË0ÀËxÀËÏÀÌÀÌbÀÌ~Ą̀ÀÌ÷ÀÍÀÍÀÍFÀÍ©ÀͰÀÍÖÀÎ%ÀÎ)ÀÎ*ÀÎRÀÎtÀΗÀÎ<>ÀÎõÀÏGÀÏwÀÏ·ÀÏÜÀÐÀÐFÀÐOÀÐpÀÐwÀÐxÀÐ’ÀÐÆÀÐâÀÑ"ÀÑlÀÑsÀÑwÀÑxÀÑ›ÀÑÅÀÑêÀÑøÀÑþÀÒNÀÒšÀÒÄÀÒÜÀÒüÀÓKÀÓŠÀÓÎÀÔÀÔ?ÀÔŠÀÔÇÀÕÀÕIÀÕrÀÕ ÀÕÓÀÕòÀÖÀÖBÀÖqÀÖœÀÖÙÀÖàÀÖäÀÖåÀ×À×××××»ÀØÀØÀØjÀØ«ÀØôÀÙ3ÀÙdÀÙhÀÙiÀÙŒÀÙ’ÀÙÝÀÙêÀÚÀÚ'ÀÚOÀÚbÀÚhÀÚiÀÚ’ÀÚ¦ÀÚ¬ÀÚ­ÀÚÌÀÚòÀÛÀÛÀÛÀÛ0ÀÛ6ÀÛ<>ÀÛÑÀÜÀÜ/ÀÜ5À܆ÀܰÀÜöÀÝ
ÀÝÀÝÀÝbÀݲÀÞÀÞMÀÞŽÀÞ°ÀÞÄÀÞÊÀÞËÀÞðÀßÀßÀßÀßKÀß—ÀßåÀà3ÀàwÀàŸÀà²Àà¸Àà¹ÀàßÀààÀáÀáÀáOÀá‰Àá’Àá™ÀáªÀá®Àá¯ÀáòÀáøÀâFÀâ˜ÀâàÀâæÀã*ÀãhÀãnÀã¸ÀäÀäOÀäuÀä{Àä®Àä´ÀäáÀäçÀå;ÀåƒÀå¹Àå¿ÀåÏÀæÀæ[ÀæšÀæàÀç2Àç‚ÀçºÀçÐÀçìÀè Àè/Àè6ÀèMÀèxÀè×ÀèàÀèîÀèôÀéÀéEÀé<>Àé“Àé—Àé˜ÀéÝÀéãÀê1ÀêƒÀêËÀêÑÀëÀëUÀë[Àë¥ÀëôÀì<ÀìbÀìhÀì›Àì¡ÀìÎÀìÔÀí(ÀípÀí¦Àí¬Àí¼ÀíÿÀîDÀîƒÀîÉÀïÀïkÀï£Àï»Àï×ÀïôÀðÀð!Àð8ÀðcÀðÄÀðÍÀðÛÀðáÀñÀñ6Àñ€Àñ†ÀñŠÀñ‹ÀñÉÀñÏÀñüÀòÀòÀòYÀòœÀòáÀó ÀófÀó¸ÀóðÀô(ÀôUÀôoÀô“ÀôµÀô¹ÀôºÀôïÀôõÀõ"Àõ(ÀõuÀõÀÀö ÀöÀödÀö‹Àö‘Àö¡ÀöèÀ÷+À÷pÀ÷¯À÷ÿÀøQÀø‰ÀøºÀøçÀùÀù\Àù`ÀùaÀùžÀù¤ÀùÑÀù×Àú#ÀúnÀú¿ÀúÅÀûÀû>ÀûDÀûTÀû›ÀûÞÀü#ÀüaÀü§ÀüßÀýÀýBÀý\Àý¼ÀýÀÀýÁÀýìÀýòÀþ?Àþ‚ÀþˆÀþÖÀÿ&ÀÿoÀÿ€ÀÿžÀÿÁÀÿæÀÿêÀÿëÀ‹À®ÀôÀÀÀÀƒÀ›À©À¯ÀñÀõÀöÀÀ<02>À‡À×ÀÛÀÜÀÀÀ­ÀäÀÀÌÀ«ÀáÀýÀ‚À†À‡À§ÀàÀ
À¡ÀíÀ™À¦ÀèÀîÀ ÇÀ òÀ




‡À
¡À
ÜÀ
þÀ À À  ƒÀ ªÀ ®À ¯À ÙÀ ÚÀ À    «À íÀ


£À
íÀ‡À°ÀØÀóÀƒÀŒÀ“À¹ÀÀ©ÀÒÀØÀèÀîÀ<11>ÀáÀ<12>ÀÞÀÀ“ÀãÀÀ‡ÀšÀ«À¬ÀãÀ ÀÏÀþÀ‹À²ÀÍÀ×ÀàÀøÀ’ÀÈÀíÀÀ€À”À¦À§ÀàÀ ÀÌÀûÀÀˆÀ¯ÀÊÀÔÀÝÀÀÀÀ‹ÀÐÀèÀÀÀ À<1C>À ÀÀÀøÀšÀ¨ÀµÀÀÀÉÀÏÀçÀëÀìÀŽÀ’À“ÀÎÀìÀƒÀ·À À ÏÀ!À!VÀ!{À!¼À!ÿÀ"À"À":À"}À"¾À"ÇÀ"ÍÀ"àÀ"äÀ"åÀ#
À#OÀ#{À#±À#²À#ÁÀ#êÀ$#À$'À$3À$SÀ$TÀ$cÀ$ŒÀ$ÅÀ$ÉÀ$ÕÀ$÷À$øÀ%À%4À%ZÀ%qÀ%™À%ŸÀ%£À%¤À%°À%ãÀ%ùÀ&CÀ&uÀ&‹À&¡À&§À&ÍÀ'À'CÀ'GÀ'HÀ'WÀ'€À'¹À'½À'ÉÀ'ýÀ(
À( À(oÀ(–À(šÀ(›À(ªÀ(ÓÀ) À)À)À)eÀ)fÀ)uÀ)žÀ)×À)ÛÀ)çÀ*À*OÀ*SÀ*TÀ*cÀ*ŒÀ*ÅÀ*ÉÀ*ÕÀ+À+À+À+ À+/À+XÀ+‘À+•À+¡À+úÀ,-À,1À,2À,AÀ,jÀ,£À,§À,³À,ñÀ-À-À- À--À-.À-:À-^À-À-<2D>À-ÓÀ."À.&À.'À.3À.ZÀ.<2E>À.ºÀ.éÀ/À/À/À/À/À/2À/kÀ/šÀ/¼À/äÀ02À0lÀ0”À0¶À0ÔÀ1À1IÀ1iÀ1~À1À1ƒÀ1<>À1œÀ1ÃÀ1îÀ2*À2cÀ2ÈÀ2ÏÀ2ñÀ34À3:À3PÀ3qÀ3 À3çÀ40À4IÀ4TÀ4À4ÂÀ4ØÀ4øÀ5À5 À53À5TÀ5wÀ5 À5ÑÀ5÷À6À60À6`À6‡À6¬À6ÉÀ6ØÀ6åÀ6ðÀ6ùÀ7À7À7À7À7UÀ7YÀ7§À7øÀ8 À8[À8À8—À8£À8ÙÀ8úÀ9&À9,À9VÀ9ZÀ9\À9]À9¦À9ÆÀ9ÇÀ9ìÀ9íÀ9ùÀ:DÀ:yÀ:}À:À:€À:ÑÀ:õÀ:öÀ;À;À;(À;wÀ;ŠÀ;ŽÀ;<3B>À;‘À;àÀ<À<QÀ<RÀ<wÀ<œÀ<<3C>À<©À<âÀ=%À=)À=+À=,À=‚À=¦À=øÀ=ùÀ>À>CÀ>DÀ>PÀ>‰À>­À>ãÀ>ñÀ>÷À?:À?>À?@À?AÀ?šÀ?¾À?öÀ?÷À@À@À@)À@bÀ@†À@¼À@ÊÀ@ÐÀA ÀA
ÀAÀAÀA^ÀA™ÀA<>ÀAëÀB8ÀB<>ÀB…ÀBÕÀC#ÀCtÀCÉÀCïÀCóÀDKÀD¦ÀDÿÀEfÀEjÀExÀE|ÀEÌÀFÀFrÀF²ÀFóÀFôÀG2ÀGqÀGrÀGµÀGãÀGäÀH%ÀHQÀHRÀH¬ÀH²ÀIÀIXÀImÀIsÀIÌÀIèÀIîÀJIÀJaÀJgÀJÅÀKÀK+ÀK€ÀKÀK§ÀKÕÀKçÀLÀL(ÀLXÀL†ÀLŒÀL<>ÀLÀLÚÀMÀM^ÀMdÀM®ÀNÀNPÀNmÀNsÀNÑÀO*ÀO7ÀOdÀO²ÀOÀÀOÆÀPÀPfÀPžÀPáÀPçÀQÀQ"ÀQ#ÀQtÀQ©ÀQ¶ÀQßÀRÀR*ÀR1ÀRCÀR‰ÀRÀRÞÀRäÀRèÀRéÀS9ÀSiÀS¤ÀSÐÀTÀT^ÀTÀT½ÀUÀU+ÀUlÀUÀU¬ÀU·ÀUÎÀU×ÀUÝÀVÀVKÀV<>ÀV±ÀVèÀW+ÀWRÀW“ÀW·ÀWÏÀWÚÀWðÀWùÀWÿÀXÀXÀX/ÀX5ÀXyÀX¿ÀXþÀY ÀY2ÀYuÀY¤ÀYÑÀYÕÀYÖÀZÀZ ÀZhÀZ˜ÀZžÀZâÀ[/À[<À[…À[´À[áÀ[åÀ[æÀ[òÀ\À\SÀ\qÀ\uÀ\vÀ\‚À\ÅÀ]À]/À]BÀ]FÀ]GÀ]SÀ]˜À]ÚÀ^À^À^À^À^'À^vÀ^½À^æÀ^ùÀ^ýÀ^þÀ_
À_NÀ_”À_·À_ÊÀ_ÎÀ_ÏÀ_ÛÀ`)À`NÀ`‡À`ÅÀ`ÌÀ`ÿÀaÀaÀaÀa#ÀaFÀa[Àa_Àa`ÀalÀaËÀaåÀbÀb`ÀbˆÀbµÀcÀc(ÀcMÀcÀc´ÀcÞÀd
ÀdÀdUÀdÀdÎÀdöÀdüÀe?ÀeCÀeDÀeœÀe¢ÀeÄÀfÀf?ÀflÀf¾ÀfùÀgAÀgbÀgnÀg¡ÀgýÀh=ÀhxÀh<>Àh­ÀhâÀhêÀi%Ài+ÀiÀiÍÀj
ÀjÀjAÀjvÀj~Àj¹Àj¿ÀjÃÀjÄÀjÐÀjðÀk$ÀkEÀk¡ÀkªÀk°ÀkæÀlÀlgÀlpÀlvÀlµÀlÛÀm!Àm(ÀmPÀmÀm<>Àm¿ÀmÃÀmÅÀmÆÀnÀnÀn!ÀnrÀnÀÀoÀo\ÀovÀoÀÀoðÀpÀpTÀpZÀp^Àp_ÀpŸÀpÐÀpÑÀqÀq*Àq0Àq~ÀqÎÀqéÀqïÀr5ÀrnÀrtÀr¹ÀrûÀrüÀsAÀsNÀssÀstÀs»ÀsÈÀsïÀsðÀtÀt6ÀtTÀtxÀtyÀt£ÀtÎÀtóÀu"Àu#ÀuNÀuOÀu[ÀuÀu®ÀuÎÀuïÀuóÀuôÀvÀv'ÀvPÀv˜ÀvÄÀvÍÀwÀw(Àw.ÀwQÀwrÀwvÀwwÀw¾ÀwÙÀwùÀwýÀwþÀx#ÀxJÀxsÀx§ÀxÒÀxäÀxîÀyÀy8Ày@ÀyAÀyœÀyíÀz9Àz…Àz¿ÀzìÀzûÀ{3À{OÀ{ŒÀ{—À{ŸÀ{¥À{©À{ªÀ{ÈÀ{ìÀ|
À|&À|,À|HÀ|LÀ|MÀ|hÀ|ÁÀ|ÿÀ}!À};À}VÀ}<7D>À}ÆÀ}åÀ~JÀ~<7E>À~ºÀÀ¤À®ÀçÀÀ€#À€`À€|À€ŽÀ€–À€—À€èÀ<01>À<01><01>ªÀÀ‚¨À‚ÁÀ‚ÇÀ‚ÓÀƒÀƒ?Àƒ}Àƒ„Àƒ×À„&À„tÀ„ÃÀÀ…@À…vÀ…—À…›À…œÀ…ÎÀ†(À†_À†€À†­À†ÒÀ†ØÀÀ‡.À‡4À‡tÀ‡xÀ‡yÀ‡¾À‡ËÀ‡ÜÀ‡üÀˆÀˆ Àˆˆˆˆ¤Àˆ»ÀˆÝÀˆâÀˆãÀ‰0À‰TÀ‰“À‰½À‰âÀ‰ûÀŠÀŠ%ÀŠ)ÀŠ*ÀŠaÀŠ“ÀŠâÀ‹”À‹´À‹ºÀ‹ÚÀ‹çÀŒ)ÀŒ*ÀŒiÀŒÇÀ<01><01><01><01>ŠÀ<01><>À<01>¿À<01>ÃÀ<01>ÄÀŽÀŽ ÀŽ&ÀŽpÀ޲ÀŽäÀ<01><01><01>¶À<01>ùÀ<01><01><01><01>§À<01>ÌÀ<01>ÒÀ<01>ûÀ<01>ÿÀÀ‘˜À‘žÀ‘ÝÀÀ’‹À’œÀ’¢À’·ÀÀ“,À“2À“oÀ“–À“œÀ“ÃÀ“ÇÀ“ÈÀ“óÀ”DÀ”’À”ÜÀÀÀÀ•5À•9À•:À•À•ŒÀ•¹ÀÀ–¦À–¬À–­À–ÔÀ—&À—JÀ—lÀ—uÀ—ÅÀ—çÀ˜ À˜À˜À˜À˜˜¨ÀÀ™9À™tÀ™©À™ÞÀšÀšÀš Àš@ÀšuÀšËÀÀÀ›•À›±À›ÖÀ›öÀœ;Àœ€Àœ‹Àœ“Àœ™ÀœšÀœÐÀ<01><01><01>¸À<01>ëÀž"Àž(ÀžFÀžwÀžÉÀžþÀŸÀŸJÀŸSÀŸ‹ÀŸ¥ÀŸÈÀŸæÀ     <>À ‚À ËÀ¡À¡3À¡ZÀ¡£À¡³À¢À¢qÀ¢ÈÀ¢îÀ£:À£’À£ÖÀ£ãÀ¤ À¤PÀ¤]À¤rÀ¤±À¤·À¤¸À¤ÖÀ¤ýÀ¥ À¥FÀ¥§À¥ÚÀ¥òÀ¥ùÀ¥ýÀ¥þÀ¦IÀ¦–À¦äÀ§1À§€À§<>À§¢À§òÀ¨KÀ¨€À¨ªÀ¨ûÀ©#À©)À©BÀ©FÀ©GÀ©SÀ©›À©çÀ©õÀ©ûÀª ÀªAÀªeÀªiÀªjÀª»ÀªÁÀ«À«UÀ«¤À«¾À«æÀ¬À¬TÀ¬šÀ¬ÃÀ¬ÞÀ¬ïÀ­À­­­ƒÀ­•À­¸À­çÀ® À®UÀ®vÀ®£À®ÅÀ¯À¯XÀ¯›À¯¡À¯ïÀ° À°8À°vÀ°<>À°¥À°ÏÀ± À±0À±8À±FÀ±LÀ±MÀ±šÀ±ÖÀ±ÜÀ²%À²_À²eÀ²fÀ²¬À²­À²ïÀ³#À³XÀ³²À³ÀÀ³ÆÀ³ÇÀ´À´´™À´<>À´žÀ´×À´ãÀµ
Àµ7ÀµnÀµÁÀµÈÀµæÀµùÀµÿÀ¶"À¶LÀ¶uÀ¶{À¶µÀ¶¹À¶ºÀ· À·À·dÀ·„À·<>À·«À¸À¸À¸¸³À¸ÿÀ¹PÀ¹mÀ¹½Àº ÀºÀº$Àº=ÀºTÀºpÀºÄÀ»À»xÀ»èÀ¼(À¼kÀ¼„À¼âÀ¼èÀ½&À½`À½…À½ŸÀ½ÆÀ¾ À¾NÀ¾[À¾eÀ¾•À¾¶À¾ÈÀ¾ÐÀ¿À¿&À¿JÀ¿SÀ¿<>À¿§À¿ËÀ¿ÔÀ¿íÀÀÀÀ{ÀÀ–ÀÀ¥ÀÀõÀÀýÀÁÀÁÀÁ!ÀÁÄÀÁËÀÁìÀÂ+ÀÂhÀÂoÀÂsÀÂtÀÂÂÀÃÀÃÀÃRÀÃxÀÄÀíÀÃÖÀÄ
ÀÄbÀÄiÀÄ–ÀÄšÀÄ›ÀÄÜÀÅÀÅÀÅoÀÅ¡ÀŦÀÅêÀÆÀÆ\ÀÆjÀÆpÀƾÀÆûÀÇ ÀÇHÀÇZÀǤÀǸÀÇÛÀÈ/ÀÈ<ÀÈJÀÈPÀÈ¥ÀÈøÀÉ:ÀÉnÀÉ€ÀɈÀÉÞÀÉäÀÉèÀÉéÀÊÀÊ'ÀÊjÀÊ¡ÀÊÙÀÊßÀËÀË:ÀË[ÀË_ÀË`ÀË ÀˬÀËÿÀÌWÀÌ^ÀÌ<>ÀÌÄÀÍÀÍ[ÀÍ´ÀͺÀÍäÀÎ&ÀÎTÀÎ<>ÀÎÑÀÏÀÏCÀÏUÀÏbÀÏ ÀÏÏÀÏâÀÏîÀÏøÀÐÀÐ(ÀÐuÀÐÍÀÑ+ÀÑRÀÑ\ÀÑ—ÀÑ«ÀѵÀÒÀÒ-ÀÒ7ÀÒsÀÒÃÀÓ
ÀÓ ÀÓjÀÓ‚ÀÓ©ÀÔÀÔÀÔ[ÀÔeÀÔ‰ÀÔ˜ÀÔÓÀÕ ÀÕFÀÕPÀÕXÀÕ^ÀÕ‡ÀÕ§ÀÕ«ÀÕ¬ÀÕãÀÖÀÖ!ÀÖfÀÖ<>ÀÖ“ÀÖ”ÀÖÐÀ×À×À×׋À×<>À×<>ÀרÀ×åÀØ)ÀØ`ÀؘÀØžÀØÁÀØæÀÙÀÙ ÀÙ ÀÙKÀÙXÀÙ²ÀÚÀÚ2ÀÚMÀÚ<>ÀÚŸÀÚ÷ÀÚÿÀÛÀÛ`ÀÛ½ÀÛÖÀÜÀÜ_ÀÜyÀÜÊÀÜþÀÝÀÝÀÝAÀ݇ÀÝ¡ÀÝòÀÞ"ÀÞ*ÀÞ0ÀÞGÀÞuÀÞ‚ÀÞ²ÀÞ¸ÀÞËÀÞÏÀÞÐÀßÀßÀß|ÀßÐÀßüÀàUÀà†ÀàËÀáÀá(Àá.Àá‰ÀáæÀâÀâ7ÀâŒÀâ¾ÀâßÀâýÀã1ÀãYÀã¥Àã´ÀãçÀãóÀãýÀä+Àä|ÀäªÀäàÀäþÀå2ÀåZÀå¥Àå´ÀåçÀåóÀåýÀæ*ÀæXÀæ‡Àæ<>Àæ¤ÀæÒÀæßÀçÀçÀç(Àç,Àç-ÀçPÀç]Àç«ÀçåÀèÀè@ÀèrÀèxÀè¤ÀèÒÀéÀéÀéÀéÀéUÀéšÀéØÀêÀê9Àê?ÀêuÀê›Àê¼ÀêÖÀëÀë2Àë^Àë­ÀëÒÀëþÀìCÀìlÀì˜ÀìÜÀíÀí2ÀíxÀí§ÀíÓÀî#Àî\Àî‡ÀîâÀïÀïIÀïªÀï°Àï×Àï÷Àð
ÀðÀðÀðÀð.ÀðeÀð§Àð­ÀðÕÀðýÀñÀñÀñÀñeÀñkÀñ¹ÀñúÀòÀòPÀòdÀòqÀò£Àò¤ÀòãÀòéÀó8ÀópÀó}ÀóÜÀôÀôÀôÀôRÀôXÀô©ÀôöÀõHÀõ‘ÀõÉÀõÏÀöÀöoÀö|ÀöÖÀöâÀ÷CÀ÷JÀ÷aÀ÷„À÷¡À÷ùÀø,ÀøƒÀø ÀøÃÀøæÀùÀù$Àù@ÀùhÀùŒÀù³Àù×ÀùóÀú
Àú<ÀúHÀúrÀú˜Àú´ÀúàÀûÀû ÀûÀûÀû-ÀûPÀûsÀûyÀûŠÀûµÀûÂÀûïÀûõÀüÀüaÀü±ÀüÿÀý*Àý.Àý/Àý}ÀýÃÀýÉÀþÀþaÀþ¡ÀþýÀÿ
Àÿ Àÿ€Àÿ•Àÿ<>ÀÿÿÀÀÀ‹ÀÛÀÀ‚ÀÏÀþÀÀ­ÀäÀÀ†À¾ÀÀŒÀÅÀæÀÀ‘À³ÀºÀÍÀÿÀÅÀëÀ†ÀÏÀóÀúÀÀ“ÀÐÀ <09>À ªÀ ÌÀ òÀ
À


‹À
¦À
ÕÀ À    <0B>À ™À ÀÀ âÀ ýÀ   …À ˜À µÀ ÐÀ ÜÀ äÀ êÀ ûÀ




†À
ŸÀ
£À
¥À
¦À
ðÀ
þÀ˜ÀµÀ¹ÀÇÀËÀÀ±À²ÀîÀòÀ«ÀëÀÀÂÀ À“ÀÜÀèÀéÀƒÀÊÀÀ©ÀèÀõÀ÷ÀøÀÙÀÀ©ÀÙÀÚÀÀ¬ÀÉÀÏÀÀÀ½ÀÕÀÛÀÀ¬ÀïÀƒÀµÀÌÀÐÀÒÀÓÀÀ¶ÀÀ¶ÀçÀÀ™ÀŸÀûÀ§À¨ÀòÀøÀªÀúÀ ¼À ßÀ ãÀ äÀ ðÀ!<À!…À!‰À!‹À!ŒÀ!áÀ"8À"SÀ"WÀ"©À#À#À#UÀ#¨À#öÀ$DÀ$zÀ$~À$’À$éÀ%À% À%uÀ%…À%‰À%<25>À%âÀ&
À&À&fÀ&vÀ&zÀ&ˆÀ&ŒÀ&ÜÀ'
À'<À'šÀ'›À'ÔÀ( À(
À(EÀ(KÀ(|À(’À(“À(ŸÀ(æÀ(èÀ(éÀ)*À)ƒÀ)´À)¹À)ºÀ)ÆÀ)üÀ*"À*eÀ*¦À*¬À*°À*±À*½À*ÐÀ*òÀ+À+ À+ À+À+?À+‘À+•À+—À+˜À+èÀ,
À,_À,ŽÀ,ÏÀ,ÓÀ,ÔÀ-À-À-5À-rÀ-±À-×À.À.À.À.)À.DÀ.aÀ.<2E>À.áÀ/
À/À/À/HÀ/LÀ/MÀ/YÀ/lÀ/«À/ÑÀ/æÀ/êÀ/ëÀ/÷À0,À0-À09À0gÀ0iÀ0jÀ0ÊÀ0ÎÀ1À1kÀ1»À1ÙÀ1ÝÀ2.À2<>À2¸À3À3
À3@À3cÀ3dÀ3ÉÀ3çÀ3éÀ3êÀ49À4FÀ4JÀ4ŠÀ4ÉÀ4ûÀ4üÀ5VÀ5\À5¹À6À69À6UÀ6¬À6­À7
À7?À7@À7šÀ7¦À7¹À8DÀ8KÀ8wÀ8{À8|À8¬À8ËÀ8ÏÀ8ÐÀ8êÀ8öÀ9 À95À9JÀ9NÀ9OÀ9ªÀ9ÇÀ9ÍÀ:À:À:;À:\À:`À:b€­/// @docImport 'package:flutter/material.dart';
/// @docImport 'package:flutter_test/flutter_test.dart';
///
/// @docImport 'editable_text.dart';
/// @docImport 'text.dart';<19>]<00>r<00><00>±<00>Ù+S‚†<>‚²‚Ú‚ïƒ ƒ'ƒ@ƒ`ƒyƒ”ƒ«ƒâ„C„a§]§m§t§t §z§ƒ§ƒ§ˆ§ § §¥§´§´A§¹§û§û¨¨¨¨&¨=¨=¨K§Ò§ì§í¦³¦³<C2A6>¤€›/// Create a new [SelectableRegion] widget.
///
/// The [selectionControls] are used for building the selection handles and
/// toolbar for mobile devices.©Ô¨[<5B><>©Ô<C2A9>I/// The configuration for the magnifier used with selections in this region.
///
/// By default, [SelectableRegion]'s [TextMagnifierConfiguration] is disabled.
/// For a version of [SelectableRegion] that adapts automatically to the
/// current platform, consider [SelectionArea].
///
/// {@macro flutter.widgets.magnifier.intro}ª/©ïIª/,/// {@macro flutter.widgets.Focus.focusNode}ª¸ª=€€ª¸g/// The child widget this selection area applies to.
///
/// {@macro flutter.widgets.ProxyWidget.child}«+ªÂ{«+</// {@macro flutter.widgets.EditableText.contextMenuBuilder}¬E«B<C2AB>¬E€Ü/// The delegate to build the selection handles and toolbar for mobile
/// devices.
///
/// The [emptyTextSelectionControls] global variable provides a default
/// [TextSelectionControls] implementation with no controls.¬±¬[h¬±-/// Called when the selected content changes.°x°x2°™°°°°"°Ì°Ø°Ø'°ô±±$±"¬È¬ÈY°YƒK/// Returns the [ContextMenuButtonItem]s representing the buttons in this
/// platform's default selection menu.
///
/// For example, [SelectableRegion] uses this to generate the default buttons
/// for its context menu.
///
/// See also:
///
/// * [SelectableRegionState.contextMenuButtonItems], which gives the
/// [ContextMenuButtonItem]s for a specific SelectableRegion.
/// * [EditableText.getEditableButtonItems], which performs a similar role but
/// for content that is both selectable and editable.
/// * [AdaptiveTextSelectionToolbar], which builds the toolbar itself, and can
/// take a list of [ContextMenuButtonItem]s with
/// [AdaptiveTextSelectionToolbar.buttonItems].
/// * [AdaptiveTextSelectionToolbar.getAdaptiveButtons], which builds the button
/// Widgets for the current platform given [ContextMenuButtonItem]s.¸%¸&¸%¸%K¸G†ˆ†ˆ±ê¦‡Ÿø/// A widget that introduces an area for user selections.
///
/// Flutter widgets are not selectable by default. Wrapping a widget subtree
/// with a [SelectableRegion] widget enables selection within that subtree (for
/// example, [Text] widgets automatically look for selectable regions to enable
/// selection). The wrapped subtree can be selected by users using mouse or
/// touch gestures, e.g. users can select widgets by holding the mouse
/// left-click and dragging across widgets, or they can use long press gestures
/// to select words on touch devices.
///
/// A [SelectableRegion] widget requires configuration; in particular specific
/// [selectionControls] must be provided.
///
/// The [SelectionArea] widget from the [material] library configures a
/// [SelectableRegion] in a platform-specific manner (e.g. using a Material
/// toolbar on Android, a Cupertino toolbar on iOS), and it may therefore be
/// simpler to use that widget rather than using [SelectableRegion] directly.
///
/// ## An overview of the selection system.
///
/// Every [Selectable] under the [SelectableRegion] can be selected. They form a
/// selection tree structure to handle the selection.
///
/// The [SelectableRegion] is a wrapper over [SelectionContainer]. It listens to
/// user gestures and sends corresponding [SelectionEvent]s to the
/// [SelectionContainer] it creates.
///
/// A [SelectionContainer] is a single [Selectable] that handles
/// [SelectionEvent]s on behalf of child [Selectable]s in the subtree. It
/// creates a [SelectionRegistrarScope] with its [SelectionContainer.delegate]
/// to collect child [Selectable]s and sends the [SelectionEvent]s it receives
/// from the parent [SelectionRegistrar] to the appropriate child [Selectable]s.
/// It creates an abstraction for the parent [SelectionRegistrar] as if it is
/// interacting with a single [Selectable].
///
/// The [SelectionContainer] created by [SelectableRegion] is the root node of a
/// selection tree. Each non-leaf node in the tree is a [SelectionContainer],
/// and the leaf node is a leaf widget whose render object implements
/// [Selectable]. They are connected through [SelectionRegistrarScope]s created
/// by [SelectionContainer]s.
///
/// Both [SelectionContainer]s and the leaf [Selectable]s need to register
/// themselves to the [SelectionRegistrar] from the
/// [SelectionContainer.maybeOf] if they want to participate in the
/// selection.
///
/// An example selection tree will look like:
///
/// {@tool snippet}
///
/// ```dart
/// MaterialApp(
/// home: SelectableRegion(
/// selectionControls: materialTextSelectionControls,
/// child: Scaffold(
/// appBar: AppBar(title: const Text('Flutter Code Sample')),
/// body: ListView(
/// children: const <Widget>[
/// Text('Item 0', style: TextStyle(fontSize: 50.0)),
/// Text('Item 1', style: TextStyle(fontSize: 50.0)),
/// ],
/// ),
/// ),
/// ),
/// )
/// ```
/// {@end-tool}
///
///
/// SelectionContainer
/// (SelectableRegion)
/// / \
/// / \
/// / \
/// Selectable \
/// ("Flutter Code Sample") \
/// \
/// SelectionContainer
/// (ListView)
/// / \
/// / \
/// / \
/// Selectable Selectable
/// ("Item 0") ("Item 1")
///
///
/// ## Making a widget selectable
///
/// Some leaf widgets, such as [Text], have all of the selection logic wired up
/// automatically and can be selected as long as they are under a
/// [SelectableRegion].
///
/// To make a custom selectable widget, its render object needs to mix in
/// [Selectable] and implement the required APIs to handle [SelectionEvent]s
/// as well as paint appropriate selection highlights.
///
/// The render object also needs to register itself to a [SelectionRegistrar].
/// For the most cases, one can use [SelectionRegistrant] to auto-register
/// itself with the register returned from [SelectionContainer.maybeOf] as
/// seen in the example below.
///
/// {@tool dartpad}
/// This sample demonstrates how to create an adapter widget that makes any
/// child widget selectable.
///
/// ** See code in examples/api/lib/material/selectable_region/selectable_region.0.dart **
/// {@end-tool}
///
/// ## Complex layout
///
/// By default, the screen order is used as the selection order. If a group of
/// [Selectable]s needs to select differently, consider wrapping them with a
/// [SelectionContainer] to customize its selection behavior.
///
/// {@tool dartpad}
/// This sample demonstrates how to create a [SelectionContainer] that only
/// allows selecting everything or nothing with no partial selection.
///
/// ** See code in examples/api/lib/material/selection_container/selection_container.0.dart **
/// {@end-tool}
///
/// In the case where a group of widgets should be excluded from selection under
/// a [SelectableRegion], consider wrapping that group of widgets using
/// [SelectionContainer.disabled].
///
/// {@tool dartpad}
/// This sample demonstrates how to disable selection for a Text in a Column.
///
/// ** See code in examples/api/lib/material/selection_container/selection_container_disabled.0.dart **
/// {@end-tool}
///
/// To create a separate selection system from its parent selection area,
/// wrap part of the subtree with another [SelectableRegion]. The selection of the
/// child selection area can not extend past its subtree, and the selection of
/// the parent selection area can not extend inside the child selection area.
///
/// ## Selection status
///
/// A [SelectableRegion]s [SelectableRegionSelectionStatus] is used to indicate whether
/// the [SelectableRegion] is actively changing the selection, or has finalized it. For
/// example, during a mouse click + drag, the [SelectableRegionSelectionStatus] will be
/// set to [SelectableRegionSelectionStatus.changing], and when the mouse click is released
/// the status will be set to [SelectableRegionSelectionStatus.finalized].
///
/// The default value of [SelectableRegion]s selection status
/// is [SelectableRegionSelectionStatus.finalized].
///
/// To access the [SelectableRegionSelectionStatus] of a parent [SelectableRegion]
/// use [SelectableRegionSelectionStatusScope.maybeOf] and retrieve the value from
/// the [ValueListenable].
///
/// One can also listen for changes to the [SelectableRegionSelectionStatus] by
/// adding a listener to the [ValueListenable] retrieved from [SelectableRegionSelectionStatusScope.maybeOf]
/// through [ValueListenable.addListener]. In Stateful widgets this is typically
/// done in [State.didChangeDependencies]. Remove the listener when no longer
/// needed, typically in your Stateful widgets [State.dispose] method through
/// [ValueListenable.removeListener].
///
/// ## Tests
///
/// In a test, a region can be selected either by faking drag events (e.g. using
/// [WidgetTester.dragFrom]) or by sending intents to a widget inside the region
/// that has been given a [GlobalKey], e.g.:
///
/// ```dart
/// Actions.invoke(key.currentContext!, const SelectAllTextIntent(SelectionChangedCause.keyboard));
/// ```
///
/// See also:
///
/// * [SelectionArea], which creates a [SelectableRegion] with
/// platform-adaptive selection controls.
/// * [SelectableText], which enables selection on a single run of text.
/// * [SelectionHandler], which contains APIs to handle selection events from the
/// [SelectableRegion].
/// * [Selectable], which provides API to participate in the selection system.
/// * [SelectionRegistrar], which [Selectable] needs to subscribe to receive
/// selection events.
/// * [SelectionContainer], which collects selectable widgets in the subtree
/// and provides api to dispatch selection event to the collected widget.
/// * [SelectionListener], which enables accessing the [SelectionDetails] of
/// the selectable subtree it wraps.€ž¹_À@¦¹I¹^¹J¹P¹V¹]¹W¹x¹e¹z¹Š¹¡¹¹¹ ¹œ¹¿¹¨¹Á¹Ñ¹ì¹Ò¹æ¹ë¹çº)¹óº+º;ºãºCºcºšºdººÜº¥º¾º³ºÀºÏºÐ»ºê»»#»À»+»K»s»L»t»¹»~»—»Œ»™»¨»©»ç»Ç»é»ù¼‹¼¼!¼B¼"¼C¼„¼M¼f¼[¼h¼w¼x¼²¼¼´¼Ä½`¼Ì¼ñ½¼ò½½Y½½6½+½8½G½H½Ž½g½<67>½ ¾>½¨½Í½õ½Î½ö¾7¾¾¾¾¾*¾+¾e¾E¾g¾w¿¾¾¤¾Å¾¥¾Æ¿¾Ð¾é¾Þ¾ë¾ú¾û¿B¿¿D¿T¿¿¿\¿„¿²¿…¿³¿¸¿´¿í¿Æ¿ï¿ÿÀ@¡À@À@,À@TÀ@-À@UÀ@šÀ@_À@xÀ@mÀ@zÀ@‰À@й>¹‡Ž¹>ÀAÀAÀ@òÀAÀ@óÀ@ùÀ@ÖÀ@¬hÀÀA*ÀA#ÀA*ÀAgÀApÀAqÀAOÀA?3ÀAOÀAœÀA¥ÀA¦ÀA†ÀAv1ÀA†ÀAÏÀAØÀAÙÀA»ÀA«/ÀÀBÀB:ÀB;ÀBÀAÞ^ÀBÀBœÀB<>ÀÀC]ÀCPÀC]ÀCÀCq%ÀCÀFÀF¯ÀF°ÀF€ÀF€¡ÀF€T/// The text processing service used to retrieve the native text processing actions.ÀGFÀGGÀG3ÀGEÀG4ÀGÀF¶€ÀGF/// The list of native text processing actions provided by the engine.ÀG”ÀG‰ÀG”ÀHËÀHóÀHôÀHõÀHöÀHªÀH!€ÖÀHªW/// Notifies its listeners when the selection state in this [SelectableRegion] changes.ÀY¸ÀY¦ÀY€¨ÀY¦€‡/// Whether the Shift key was pressed when the most recent [PointerDownEvent]
/// was tracked by the [BaseTapAndDragGestureRecognizer].ÀZ'ÀZ%ÀZ'ÀZÂÀZ¯)ÀÀw•Àw<>Àw•À´ À´À´ À´¨À´…À´€-À´…À¼WÀ¼OÀ¼WÀ¼çÀ¼ÂÀ¼½/À¼ÂÀÃ:ÀÃ.-ÀÃ:ÀÃkÀÃ_+ÀÃkÀ<06>ÀÀ<06>À ¹À ±&À ¹À(<28>À(žÀ(¨À)À(®À(×À)À)À)BÀ)HÀ)XÀ)bÀ)]À)YÀ)_À)/À(<28>€ÆÀ)/ÀB¬ÀB¬€ ÀÀCÀC<43>ÀDu7/// Whether the native browser context menu is enabled.ÀE»ÀE¼ÀE2ÀE2€ÚÀEæ€/// The [SelectionOverlay] that is currently visible on the screen.
///
/// Can be null if there is no visible [SelectionOverlay].ÀG§ÀG§vÀÀ´´9DÀ´BÀ¼rÀ¼rHÀ¼{ÀÞÀÞƒ§ÀÏ€Ä/// {@macro flutter.widgets.EditableText.getAnchors}
///
/// See also:
///
/// * [contextMenuButtonItems], which provides the [ContextMenuButtonItem]s
/// for the default context menu buttons.À_вÀƒe/// Returns the [ContextMenuButtonItem]s representing the buttons in this
/// platform's default selection menu.
///
/// See also:
///
/// * [SelectableRegion.getSelectableButtonItems], which performs a similar role,
/// but for any selectable text, not just specifically SelectableRegion.
/// * [EditableTextState.contextMenuButtonItems], which performs a similar role
/// but for content that is not just selectable but also editable.
/// * [contextMenuAnchors], which provides the anchor points for the default
/// context menu.
/// * [AdaptiveTextSelectionToolbar], which builds the toolbar itself, and can
/// take a list of [ContextMenuButtonItem]s with
/// [AdaptiveTextSelectionToolbar.buttonItems].
/// * [AdaptiveTextSelectionToolbar.getAdaptiveButtons], which builds the
/// button Widgets for the current platform given [ContextMenuButtonItem]s.ÀÀ‚ÕÀ5ÀîÀÀ6:/// The line height at the start of the current selection.À•À•€<E280A2>ÀÛ8/// The line height at the end of the current selection.À­À¢L/// Returns the local coordinates of the endpoints of the current selection.À#´À#µÀ#¿À$%À#ÅÀ#îÀ$)À$*À#´À#´€žÀ$>À$VÀ$WÀ$aÀ$ÇÀ$gÀ$<24>À$ËÀ$ÌÀ$VÀ$V€ À>ÀHüÀHýÀI ÀI
ÀHüÀ"ÀIÀK"ÀK"<22>ÀK¥q/// Query the engine to initialize the list of text processing actions to show
/// in the text selection toolbar.ÀL=ÀL>ÀLJÀLKÀL=ÀL=‚þÀL[ÀOmÀOmÀO~ÀO?ÀO@ÀOLÀOMÀO?ÀO?‚§ÀO]ÀRÀRÀRÀRÀRÀR!ÀQêÀQê€<C3AA>ÀÀRÀRÀR<>ÀV§ÀZÀÀ[À[#À[ÀZÝÀ<5A>ÀÀ\hÀ\h<>3À\mÀ_gÀ_g À_kÀ_BÀ_B‰<À_FÀhÀhƒwÀh‡ÀkýÀký€ÙÀlÀlÚÀlÚ:ÀÀmÀmŠqÀmÀwÍÀÀÀw©À<77>ÀÀ„ÈÀ„ÈÀ„ÜÀ„­À„­‚À„²À†ÒÀ†ÒÀ†çÀ†¶À†¶<E280A0>nÀ†»À”AÀ”AÀ”SÀ”(À”(„”À”-À˜×À˜×À˜èÀ˜ÀÀ˜À‰mÀ˜ÅÀ¢1À¢1<C2A2>^À¢6À£³À£³À£ÉÀ£“À£“sÀ£˜À¦/À¦/"À¦JÀ¦
À¦
<EFBFBD>À¦À§HÀ§HÀ§\À§*À§*<2A>À§/À¨cÀ¨cÀ¨sÀ¨@À¨@<40>À¨EÀ©ôÀ©ôÀªÀ©ÙÀ©ÙŠÀ©ÞÀµ÷Àµ÷ ÀÀ´²À´²…|Àµ×<C2B5>/// Sends end [SelectionEdgeUpdateEvent] to the selectable subtree.
///
/// If the selectable subtree returns a [SelectionResult.pending], this method
/// continues to send [SelectionEdgeUpdateEvent]s every frame until the result
/// is not pending or users end their gestures.ÀºEÀºEÀºTÀº2Àº2<C2BA><32>Àº7À»ÓÀ»ÓxÀ»ØÀ¾:À¾: À¾KÀ¼ñÀ¼ñ…’À¾<18>/// Sends start [SelectionEdgeUpdateEvent] to the selectable subtree.
///
/// If the selectable subtree returns a [SelectionResult.pending], this method
/// continues to send [SelectionEdgeUpdateEvent]s every frame until the result
/// is not pending or users end their gestures.À‡À‡|ÀÂŒÀùÀùÀÃÊÀÃ<>ÀÃ<>NÀÔÀÆ ÀÆ ÀÆÀÅáÀÅáƒÀÅæÀÉÀÉÀÉ$ÀÈëÀÈëCÀÈðÀË[ÀË[ÀËmÀË2ÀË2öÀË7ÀÎVÀÎVÀÎ]ÀÎxÀÎxÀ·ÀÎ,ÀÎ,ƒJÀÎ:ÀÑzÀÑz…iÀÑÀÖçÀÖç‚€ÀÖìÀÙkÀÙk<C399>ÀÙñx/// Shows the selection handles.
///
/// Returns true if the handles are shown, false if the handles can't be
/// shown.ÀÜ›ÀÜ›ÀÜ£ÀÛ
ÀÛ
†£ÀÜ<><C39C>m/// Shows the text selection toolbar.
///
/// If the parameter `location` is set, the toolbar will be shown at the
/// location. Otherwise, the toolbar location will be calculated based on the
/// handles' locations. The `location` is in the coordinates system of the
/// [Overlay].
///
/// Returns true if the toolbar is shown, false if the toolbar can't be shown.ÀçÔÀçÔÀçäÀçðÀçðÀçõÀè
Àè
ÀèÀèÀá±À᱇åÀçÁ…Î/// Sets or updates selection end edge to the `offset` location.
///
/// A selection always contains a select start edge and selection end edge.
/// They can be created by calling both [_selectStartTo] and [_selectEndTo], or
/// use other selection APIs, such as [_selectWordAt] or [selectAll].
///
/// This method sets or updates the selection end edge by sending
/// [SelectionEdgeUpdateEvent]s to the child [Selectable]s.
///
/// If `continuous` is set to true and the update causes scrolling, the
/// method will continue sending the same [SelectionEdgeUpdateEvent]s to the
/// child [Selectable]s every frame until the scrolling finishes or a
/// [_finalizeSelection] is called.
///
/// The `continuous` argument defaults to false.
///
/// The `offset` is in global coordinates.
///
/// Provide the `textGranularity` if the selection should not move by the default
/// [TextGranularity.character]. Only [TextGranularity.character] and
/// [TextGranularity.word] are currently supported.
///
/// See also:
/// * [_selectStartTo], which sets or updates selection start edge.
/// * [_finalizeSelection], which stops the `continuous` updates.
/// * [clearSelection], which clears the ongoing selection.
/// * [_selectWordAt], which selects a whole word at the location.
/// * [_selectParagraphAt], which selects an entire paragraph at the location.
/// * [_collapseSelectionAt], which collapses the selection at the location.
/// * [selectAll], which selects the entire content.Àï¿Àï¿ÀïÏÀïÛÀïÛÀïàÀïøÀïø Àð ÀïíÀéšÀ隇ïÀ徭Î/// Sets or updates selection start edge to the `offset` location.
///
/// A selection always contains a select start edge and selection end edge.
/// They can be created by calling both [_selectStartTo] and [_selectEndTo], or
/// use other selection APIs, such as [_selectWordAt] or [selectAll].
///
/// This method sets or updates the selection start edge by sending
/// [SelectionEdgeUpdateEvent]s to the child [Selectable]s.
///
/// If `continuous` is set to true and the update causes scrolling, the
/// method will continue sending the same [SelectionEdgeUpdateEvent]s to the
/// child [Selectable]s every frame until the scrolling finishes or a
/// [_finalizeSelection] is called.
///
/// The `continuous` argument defaults to false.
///
/// The `offset` is in global coordinates.
///
/// Provide the `textGranularity` if the selection should not move by the default
/// [TextGranularity.character]. Only [TextGranularity.character] and
/// [TextGranularity.word] are currently supported.
///
/// See also:
/// * [_selectEndTo], which sets or updates selection end edge.
/// * [_finalizeSelection], which stops the `continuous` updates.
/// * [clearSelection], which clears the ongoing selection.
/// * [_selectWordAt], which selects a whole word at the location.
/// * [_selectParagraphAt], which selects an entire paragraph at the location.
/// * [_collapseSelectionAt], which collapses the selection at the location.
/// * [selectAll], which selects the entire content.Àô
Àô
ÀôÀñ<>Àñ<>ƒ+Àó÷L/// Collapses the selection at the given `offset` location.
///
/// The `offset` is in global coordinates.
///
/// See also:
/// * [_selectStartTo], which sets or updates selection start edge.
/// * [_selectEndTo], which sets or updates selection end edge.
/// * [_finalizeSelection], which stops the `continuous` updates.
/// * [clearSelection], which clears the ongoing selection.
/// * [_selectWordAt], which selects a whole word at the location.
/// * [_selectParagraphAt], which selects an entire paragraph at the location.
/// * [selectAll], which selects the entire content.ÀøŸÀøŸÀø¯Àô¼Àô¼„£Àø<>ƒ¨/// Selects a whole word at the `offset` location.
///
/// The `offset` is in global coordinates.
///
/// If the whole word is already in the current selection, selection won't
/// change. One call [clearSelection] first if the selection needs to be
/// updated even if the word is already covered by the current selection.
///
/// One can also use [_selectEndTo] or [_selectStartTo] to adjust the selection
/// edges after calling this method.
///
/// See also:
/// * [_selectStartTo], which sets or updates selection start edge.
/// * [_selectEndTo], which sets or updates selection end edge.
/// * [_finalizeSelection], which stops the `continuous` updates.
/// * [clearSelection], which clears the ongoing selection.
/// * [_collapseSelectionAt], which collapses the selection at the location.
/// * [_selectParagraphAt], which selects an entire paragraph at the location.
/// * [selectAll], which selects the entire content.ÀüúÀüúÀý
ÀùcÀùc„\ÀüæƒY/// Selects the entire paragraph at the `offset` location.
///
/// The `offset` is in global coordinates.
///
/// If the paragraph is already in the current selection, selection won't
/// change. One call [clearSelection] first if the selection needs to be
/// updated even if the paragraph is already covered by the current selection.
///
/// One can also use [_selectEndTo] or [_selectStartTo] to adjust the selection
/// edges after calling this method.
///
/// See also:
/// * [_selectStartTo], which sets or updates selection start edge.
/// * [_selectEndTo], which sets or updates selection end edge.
/// * [_finalizeSelection], which stops the `continuous` updates.
/// * [clearSelection], which clear the ongoing selection.
/// * [_selectWordAt], which selects a whole word at the location.
/// * [selectAll], which selects the entire content.ÀýÃÀýÂ&Àÿ‡<C3BF>¬/// Stops any ongoing selection updates.
///
/// This method is different from [clearSelection] that it does not remove
/// the current selection. It only stops the continuous updates.
///
/// A continuous update can happen as result of calling [_selectStartTo] or
/// [_selectEndTo] with `continuous` sets to true which causes a [Selectable]
/// to scroll. Calling this method will stop the update as well as the
/// scrolling.ÀÿíÀÿí<C3BF>0À3>/// Removes the ongoing selection for this [SelectableRegion].À!€ÓÀ.ÀøÀø€âÀÀÐÀÐ ÀÕÀ©À©‚ÍÀ®À šÀ šÀ ªÀ ·À · À ¼À z3À À ÿÀ ÿ À À ÜÀ Ü„VÀ áÀ%À%À%À$úÀ$ûÀ%+À$úÀ$ú€¨À% À%ÂÀÀÀ%¦À%§À%¦À<> ÀÀ'ÞÀÀÀ'JÀ'KÀ'UÀ'»À'[À'„À'¿À'ÀÀ'JÀ'J<>OÀÀ)üÀÀ* À)hÀ)iÀ)sÀ)ÙÀ)yÀ)¢À)ÝÀ)ÞÀ)hÀ)h€êÀÀ*éÀÀ*ÿÀ*VÀ*WÀ*aÀ*ÇÀ*gÀ*<2A>À*ËÀ*ÌÀ*VÀ*V€ÈÀÀ+ÃÀÀÀ+ÛÀÀÀ+"À+#À+-À+“À+3À+\À+—À+˜À+"À+"<22>ÀÀ,ÌÀÀÀ,4À,5À,?À,¥À,EÀ,nÀ,©À,ªÀ,4À,4€ÓÀÀ-EÀ-EÀ-PÀ-0À-1À-0À-0€õÀ-AÀ.AÀ.AÀ.LÀ.)À.*À.)À.)€ÛÀ.:À/À/ À/À/À/À/yÀ/&À1«ÀÀ1¸À1…À1†À1À1“À1…À1……~À¸t¸þ‘¸ž#/// State for a [SelectableRegion].À8.À8.À8.À8rÀ8rÀ8tÀ8}À8}À8À8]À8]8À8eÀ8´À8´ÀÀ8¿À8¿ÀÀ8™À8šÀ8™À8™€ÀÀ8­À7À7TÀ8<1B>/// An action that does not override any [Action.overridable] in the subtree.
///
/// If this action is invoked by an [Action.overridable], it will immediately
/// invoke the [Action.overridable] and do nothing else. Otherwise, it will call
/// [invokeAction].ÀÀ9¸À9¹À
ÀÀ9¨ÀÀ9åÀ9É!ÀÀ:
À:
À:!À:*À:*À:8À9ïÀ9ðÀ9ïÀ9ï€<C3AF>À:À9]À9]<5D>!À9cÀÀÀ:èÀ
ÀÀ:ÓÀ:Ó!À;À:ø!À;À;<À;<À;TÀ;]À;]À;kÀ;À;À;À;oÀ;/À:€À:€<>À:†À<À<&À<'À<'
À<,À<4À<4À<BÀ<À<JÀ;¸À;¸&À;¸À<pÀ<T!À<pÀ<<3C>À<y!À<<3C>À<½ÀÀ<¿À<ÈÀÀÀ<ŸÀ< À<ŸÀ<Ÿ€‰ÀÀ;‘À;<>À;—ÀÀÀ=ÎÀ
ÀÀ=ÛÀÀÀ=¨À=¨OÀ=XÀ=X(À=XÀ>À=û!À>À>6À> !À>6À>dÀ>dÀ>fÀ>oÀ>oÀ>}À>FÀ>GÀ>FÀ>F€÷À>WÀ=,À=,À=2ÀÀÀ?éÀ
ÀÀ?ÀÀ?À5À?pÀ?p(À?pÀ@À?ù!À@À@=À@=À@?À@HÀ@HÀ@VÀ@À@ À@À@€íÀ@0À?AÀ?A<>ÍÀ?GÀFïÀFðÀFãÀFîÀFäÀFÊÀFt}ÀFÊ=/// The set of [Selectable]s that have received start events.ÀGmÀGnÀGaÀGlÀGbÀGJÀFöyÀGJ;/// The set of [Selectable]s that have received end events.ÀG¿ÀGtmÀG¿@/// The global position of the last selection start edge update.ÀH/ÀGæiÀH/>/// The global position of the last selection end edge update.ÀKOÀKOÀKcÀKoÀKo ÀKuÀK ÀK!ÀHTÀHT„;ÀK2¯/// Tracks whether a selection edge update event for a given [Selectable] was received.
///
/// When `forEnd` is true, the [Selectable] will be registered as having received
/// an end event. When false, the [Selectable] is registered as having received
/// a start event.
///
/// When `forEnd` is null, the [Selectable] will be registered as having received both
/// start and end events.
///
/// Call this method when a [SelectionEvent] is dispatched to a child selectable managed
/// by this delegate.
///
/// Subclasses should call [clearInternalSelectionStateForSelectable] to clean up any state
/// added by this method, for example when removing a [Selectable] from this delegate.ÀO,ÀO-ÀL“ÀL“„ŽÀO>/// Updates the internal selection state after a [SelectionEvent] that
/// selects a boundary such as: [SelectWordSelectionEvent],
/// [SelectParagraphSelectionEvent], and [SelectAllSelectionEvent].
///
/// Call this method after determining the new selection as a result of
/// a [SelectionEvent] that selects a boundary. The [currentSelectionStartIndex]
/// and [currentSelectionEndIndex] should be set to valid values at the time
/// this method is called.
///
/// Subclasses should call [clearInternalSelectionStateForSelectable] to clean up any state
/// added by this method, for example when removing a [Selectable] from this delegate.ÀQãÀQã+ÀÀRÀRÀR"ÀQ«ÀQ¬ÀQ%ÀQ%<25>ÂÀQ½€<C2BD>/// Updates the last selection edge location of the edge specified by `forEnd`
/// to the provided `globalSelectionEdgeLocation`.ÀRëÀRë…ÀSp{/// Updates the last selection edge locations of both start and end selection
/// edges based on their [SelectionGeometry].ÀYÀYÀXÀX<06>ÎÀY€ï/// Clears the internal selection state.
///
/// This indicates that no [Selectable] child under this delegate
/// has received start or end events, and resets any tracked global
/// locations for start and end [SelectionEdgeUpdateEvent]s.À[lÀ[lÀ[wÀ[1À[2ÀYØÀ À[C<>J/// Clears the internal selection state for a given [Selectable].
///
/// This indicates that the given `selectable` has neither received a
/// start or end [SelectionEdgeUpdateEvent]s.
///
/// Subclasses should call this method to clean up state added in
/// [didReceiveSelectionEventFor] and [didReceiveSelectionBoundaryEvents].À\À\À\ À[èÀ[éÀ[èÀ[而ÀÀ\¤ÀÀÀ\xÀ\yÀ\xÀ\x€ÍÀ\”À]vÀ]vÀ]<5D>À]IÀ]JÀ]IÀ]I€ÐÀ]eÀ^OÀ^O#À^mÀ^À^À^À^€ßÀ^9À_1À_1À_EÀ_À_À_À_€ÍÀ_À`À`À` À_ÑÀ_ÒÀ_ÑÀ<5F>1ÀÀaÀaÀaÀaXÀaÀaœÀÀÀa³ÀÀÀabÀacÀabÀabƒàÀa~ÀgˆÀgˆÀg“ÀgdÀgeÀeFÀeF…|Àgu /// Ensures the `selectable` child has received the most up to date selection events.
///
/// This method is called when:
/// 1. A new [Selectable] is added to the delegate, and its screen location
/// falls into the previous selection.
/// 2. Before a [SelectionEvent] of type
/// [SelectionEventType.startEdgeUpdate], [SelectionEventType.endEdgeUpdate],
/// [SelectionEventType.granularlyExtendSelection], or
/// [SelectionEventType.directionallyExtendSelection] is dispatched
/// to a [Selectable] child.ÀjÆÀjÇÀjÆÀüÀj×ÀAÀA¬´ÀF/// A delegate that manages updating multiple [Selectable] children where the
/// [Selectable]s do not change or move around frequently.
///
/// This delegate keeps track of the [Selectable]s that received start or end
/// [SelectionEvent]s and the global locations of those events to accurately
/// synthesize [SelectionEvent]s for children [Selectable]s when needed.
///
/// When a new [SelectionEdgeUpdateEvent] is dispatched to a [Selectable], this
/// delegate checks whether the [Selectable] has already received a selection
/// update for each edge that currently exists, and synthesizes an event for the
/// edges that have not yet received an update. This synthesized event is dispatched
/// before dispatching the new event.
///
/// For example, if we have an existing start edge for this delegate and a [Selectable]
/// child receives an end [SelectionEdgeUpdateEvent] and the child hasn't received a start
/// [SelectionEdgeUpdateEvent], we synthesize a start [SelectionEdgeUpdateEvent] for the
/// child [Selectable] and dispatch it before dispatching the original end [SelectionEdgeUpdateEvent].
///
/// See also:
///
/// * [MultiSelectableSelectionContainerDelegate], for the class that provides
/// the main implementation details of this [SelectionContainerDelegate].ÀÀÀoxÀox€åG/// Creates an instance of [MultiSelectableSelectionContainerDelegate].ÀpÌÀpÍÀpÀÀpËÀpÁÀp²ÀpamÀp²=/// Gets the list of [Selectable]s this delegate is managing.ÀröÀrÏÀ&À<72>Ñ/// The number of additional pixels added to the selection handle drawable
/// area.
///
/// Selection handles that are outside of the drawable area will be hidden.
/// That logic prevents handles that get scrolled off the viewport from being
/// drawn on the screen.
///
/// The drawable area = current rectangle of [SelectionContainer] +
/// _kSelectionHandleDrawableAreaPadding on each side.
///
/// This was an eyeballed value to create smooth user experiences.ÀsCÀsDÀsoÀspÀsTÀrþsÀsTB/// The current [Selectable] that contains the selection end edge.Às½Às¾ÀsëÀsìÀsÎÀsvwÀsÎD/// The current [Selectable] that contains the selection start edge.ÀsýÀÀÀtÀt"ÀtÀtCÀt8ÀtCÀtbÀtV ÀtbÀtœÀt€Àt{&Àt€ÀtÇÀtªÀt¥'ÀÀtìÀtÕÀtÐ!ÀÀuÀuÀuÀuÀuÀuÀtõ+ÀuÀuGÀu*Àu%'Àu* Àˆ‹Àˆ‘Àˆ¢ÀˆßÀˆ²Àˆ¨Àˆ´ÀˆÅÀˆ¿ÀˆÇÀˆÖÀˆ×Àˆˆd|ÀˆvÀˆˆˆˆ#>ÀˆEÀ‹ÜÀ‹ÝÀJ€ÞÀŒ€‰/// The compare function this delegate used for determining the selection
/// order of the selectables.
///
/// Defaults to screen order.À·†À·‡À¶¼À¶¼<C2B6>RÀ·š€Á/// The total length of the content under this [SelectionContainerDelegate].
///
/// This value is derived from the [Selectable.contentLength] of each [Selectable]
/// managed by this delegate.$ÀufÀufÀuqÀuQÀuRÀuQÀuQ€¡ÀubÀvÀvÀvÀuöÀu÷ÀuöÀ<75>ÀvÀwyÀwy€ƒÀwÅD/// Notifies this delegate that layout of the container has changed.ÀxÀxƒ¨ÀxÀ{¬À{¬€ŸÀÀ|OÀ|O‰KÀ|TÀ…µÀ…µÀ…ÀÀ…žÀ…ž<E280A6>ÙÀ…£À‡ÀÀ‡ÁÀ‡ÍÀ‡ÎÀ‡{À‡{€¤À‡ãB/// Called when this delegate finishes updating the [Selectable]s.ÀˆåÀˆå<CB86>CÀ‰7J/// Updates the [value] in this class and notifies listeners if necessary.ÀŠHÀŠHÀŠSÀŠ,ÀŠ,<2C>ÀŠ8ÀŒKÀŒK ÀŒVÀŒYÀŒY ÀŒdÀŒ,ÀŒ,<2C>ÀŒ7ÀŽÒÀŽÒÀŽ×ÀŽÚÀŽÚÀŽßÀ<01>ÆÀ<01>ƃ8ÀŽ¿€ã/// Compares two rectangles in the screen order solely by their vertical
/// positions.
///
/// Returns positive if a is lower, negative if a is higher, 0 if their
/// order can't be determine solely by their vertical position.À‘ÿÀ‘ÿÀÀÀÀ ÀÀ‚ÄÀ‘ê€Ô/// Compares two rectangles in the screen order by their horizontal positions
/// assuming one of the rectangles enclose the other rect vertically.
///
/// Returns positive if a is lower, negative if a is higher.À“ÊÀ“Ê<E2809C>nÀ“ÏÀ<>À•‚À•<À•<<3C>ÀÀ B/// Gets the combined [SelectionGeometry] for child [Selectable]s.À¨&À¨&À¨*À¨8À¨8À¨<À§ôÀ§ô<C2A7>QÀ§øÀ©kÀ©kÀ©vÀ©ƒÀ©ƒÀ©ŽÀ©IÀ©JÀ©IÀ©I<C2A9>À©ZÀªlÀªlŠ0À«Å<C2AB>G/// Pushes both handle layers to the selectables that contain selection edges.
///
/// This method needs to be called every time the selectables that contain the
/// selection edges change, i.e. [currentSelectionStartIndex] or
/// [currentSelectionEndIndex] changes. Otherwise, the handle may be painted
/// in the wrong place.À´ÙÀ´ÚÀ´ À´ À´ö6/// Copies the selected contents of all [Selectable]s.À¹šÀ¹šÀ¹¯À¸À¸Š`À¹…<C2B9>R/// This method calculates a local [SelectedContentRange] based on the list
/// of [selections] that are accumulated from the [Selectable] children under this
/// delegate. This calculation takes into account the accumulated content
/// length before the active selection, and returns null when either selection
/// edge has not been set.ÀÃzÀÃ{ÀÂvÀÂv#ÀÜ€ù/// Returns a [SelectedContentRange] considering the [SelectedContentRange]
/// from each [Selectable] child managed under this delegate.
///
/// When nothing is selected or either selection edge has not been set,
/// this method will return `null`.ÀÅìÀÅìƒûÀÅñÀÊIÀÊIÀÊaÀÊÀÊÀÉëÀÉë<C389>sÀÊ9./// Selects all contents of all [Selectable]s.ÀˈÀˈÀË—ÀËbÀËbŠHÀËrÀÖDÀÖDÀÖ]ÀÖÀÖÀÕ®ÀÕ®€äÀÖ3c/// Selects a word in a [Selectable] at the location
/// [SelectWordSelectionEvent.globalPosition].À××;#À×YÀ×À× ÀÖ–ÀÖ–€øÀ×%m/// Selects a paragraph in a [Selectable] at the location
/// [SelectParagraphSelectionEvent.globalPosition].ÀØ ÀØ ÀØ À×ÚÀ×ÛÀ×’À×<C397>xÀ×÷E/// Removes the selection of all [Selectable]s this delegate manages.ÀÙŠÀÙŠ$ÀÙ©ÀÙMÀÙNÀÙÀÙ…ÀÀÙj</// Extend current selection in a certain [TextGranularity].ÀßQÀßQ'ÀßsÀßÀßÀÞÒÀÞÒˆYÀß.</// Extend current selection in a certain [TextGranularity].Àç‰Àç‰Àç¢ÀçRÀçSÀç/Àç/<2F>×Àço /// Updates the selection edges.Àé=Àé=ÀéLÀé
Àé Àé
Àé
Àé&ÀðÀðÀðÀð<11>Àð"Àò‹Àò‹Àò–ÀòfÀògÀñÀñ<19>Àòx<C3B2>>/// Ensures the [Selectable] child has received up to date selection event.
///
/// This method is called when a new [Selectable] is added to the delegate,
/// and its screen location falls into the previous selection.
///
/// Subclasses are responsible for updating the selection of this newly added
/// [Selectable].Àó­Àó­Àó¸ÀóÄÀóÄÀóÓÀórÀósÀò¦Àò¦<C3B2>nÀó<>€Ã/// Dispatches a selection event to a specific [Selectable].
///
/// Override this method if subclasses need to generate additional events or
/// treatments prior to sending the [SelectionEvent].Àö<>Àö<>Àö¶Àö¾Àö¾ÀöÌÀôÀôÀöŽO/// Initializes the selection of the selectable children.
///
/// The goal is to find the selectable child that contains the selection edge.
/// Returns [SelectionResult.end] if the selection edge ends on any of the
/// children. Otherwise, it returns [SelectionResult.previous] if the selection
/// does not reach any of its children. Returns [SelectionResult.next]
/// if the selection reaches the end of its children.
///
/// Ideally, this method should only be called twice at the beginning of the
/// drag selection, once for start edge update event, once for end edge update
/// event.ÀþÄÀþÄÀþÝÀþåÀþåÀþóÀý1Àý1<C3BD>qÀþ³<C3BE>e/// Adjusts the selection based on the drag selection update event if there
/// is already a selectable child that contains the selection edge.
///
/// This method starts by sending the selection event to the current
/// selectable that contains the selection edge, and finds forward or backward
/// if that selectable no longer contains the selection edge.ÀmÆÀmÆÀŸÞÀo<0F>9/// A delegate that handles events and updates for multiple [Selectable]
/// children.
///
/// Updates are optimized by tracking which [Selectable]s reside on the edges of
/// a selection. Subclasses should implement [ensureChildUpdated] to describe
/// how a [Selectable] should behave when added to a selection.À«ÀÓÀÕÀ«À«-ÀÔÀüÀÜrÀüÀÀÀS<>À@€´/// The current value of the [SelectableRegionSelectionStatus] of the [SelectableRegion]
/// that owns this object.
///
/// Defaults to [SelectableRegionSelectionStatus.finalized].À3)ÀSÀÀÀnaÀ-€¥/// Sets the [SelectableRegionSelectionStatus] for the [SelectableRegion] that
/// owns this object.
///
/// Listeners are notified even if the value did not change.ÀøÀø…ÙÀ'<27>"/// Notifies its listeners when the [SelectableRegion] that created this object
/// is changing or finalizes its selection.
///
/// To access the [_SelectableRegionSelectionStatusNotifier] from the nearest [SelectableRegion]
/// ancestor, use [SelectableRegionSelectionStatusScope.maybeOf].À¾ÀâÀäÀëÀë%ÀùÀÀÀ%À¸À¸yÀãÀŽÀ5<>pÀŽ<>/// Tracks updates to the [SelectableRegionSelectionStatus] of the owning
/// [SelectableRegion].
///
/// Listeners will be called even when the value of the [SelectableRegionSelectionStatus]
/// does not change. The selection under the [SelectableRegion] still may have changed.À =À JÀªÀª8À 5<>C/// The closest instance of this class that encloses the given context.
///
/// If there is no enclosing [SelectableRegion] or [SelectionArea] widget, then null is
/// returned.
///
/// Calling this method will create a dependency on the closest
/// [SelectableRegionSelectionStatusScope] in the [context], if there is one.À!
À!
.À!/À æÀ çÀ æÀ 怢À ÷ÀÓÀÓ†·Àw<>—/// Notifies its listeners when the selection under a [SelectableRegion] or
/// [SelectionArea] is being changed or finalized.
///
/// Use [SelectableRegionSelectionStatusScope.maybeOf], to access the [ValueListenable] of type
/// [SelectableRegionSelectionStatus] under a [SelectableRegion]. Its listeners
/// will be called even when the value of the [SelectableRegionSelectionStatus]
/// does not change.À'DÀ'UÀ'WÀ'W À']À'bÀ'bÀ'pÀ'ƒÀÀ'À'À'€Š,/// Create a new [SelectionListener] widget.À'öÀ'<27>jÀ'ö6/// Notifies listeners when the selection has changed.À(‹À( €„À(k/// The child widget this selection listener applies to.
///
/// {@macro flutter.widgets.ProxyWidget.child}À(•À(–À(•À(•PÀÀ!ŒÀ!Œ‡[À&â…O/// A [SelectionContainer] that allows the user to access the [SelectionDetails] and
/// listen to selection changes for the child subtree it wraps under a [SelectionArea]
/// or [SelectableRegion].
///
/// The selection updates are provided through the [selectionNotifier], to listen
/// to these updates attach a listener through [SelectionListenerNotifier.addListener].
///
/// This widget does not listen to selection changes of nested [SelectionArea]s
/// or [SelectableRegion]s in its subtree because those widgets are self-contained
/// and do not bubble up their selection. To listen to selection changes of a
/// [SelectionArea] or [SelectableRegion] under this [SelectionListener], add
/// an additional [SelectionListener] under each one.
///
/// {@tool dartpad}
/// This example shows how to use [SelectionListener] to access the [SelectionDetails]
/// under a [SelectionArea] or [SelectableRegion].
///
/// ** See code in examples/api/lib/material/selection_area/selection_area.1.dart **
/// {@end-tool}
///
/// {@tool dartpad}
/// This example shows how to color the active selection red under a
/// [SelectionArea] or [SelectableRegion].
///
/// ** See code in examples/api/lib/material/selection_area/selection_area.2.dart **
/// {@end-tool}
///
/// See also:
///
/// * [SelectableRegion], which provides an overview of the selection system.À)gÀ)<29>À)¶À)˜À)‡À)šÀ) À)¡À)RÀ),€‹À)RÀ)ÝÀÀÀ)¼À)½À)¼À)¼€óÀÀ*³À*´À*³À*³WÀÀ+'À+'À+4À+À+À+À+€†À+!À(éÀ(é‚­ÀÀ, À,&À,(À,(4À,KÀ,xÀ,eÀ,zÀ, À, €ÆÀ,éÀ,Ö,ÀÀ-!À-,À-!À/íÀ/îÀ/íÀ/í>À0À0/À00À0/À0/7À0OÀ-IÀ-I%À-cÀ-7À-7€äÀ-<À.À. À.À.<1F>,À.0À/OÀ/PÀ/OÀ/O€šÀ/`À+˜À+˜„ÐÀÀ2ºÀ2º€¨À3\€<>/// The computed selection range of the owning [SelectionListener]s subtree.
///
/// Returns `null` if there is nothing selected.À3fÀ3f€€À3ßb/// The status that indicates whether there is a selection and whether the selection is collapsed.À0jÀ0jƒ~À%/// A read-only interface for accessing the details of a selection under a [SelectionListener].
///
/// This includes information such as the status of the selection indicating
/// if it is collapsed or uncollapsed, the [SelectedContentRange] that includes
/// the start and end offsets of the selection local to the [SelectionListener]