Ë [á®Úª×ì°ãóP—dZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z d„Zd„Zd „Zd „Zej$d „«ZGd „d «ZGd„de «ZGd„de«ZGd„de «ZGd„de«Zd„Zedk(r ddlmZeddd¬«ddlmZee«yy)z†Line numbering implementation for IDLE as an extension. Includes BaseSideBar which can be extended for other sidebar based extensions éN)ÚFont)ÚidleConf)Ú Delegator)ÚmacosxcóT—|j|«}|rtt|««SdS)z7Return the line number of an index in a Tk text widget.N)ÚindexÚintÚfloat)ÚtextrÚ text_indexs ú&/usr/lib/python3.12/idlelib/sidebar.pyÚ get_linenors'€à—‘˜EÓ"€JÙ%/Œ3Œu�ZÓ Ó !Ð9°TÐ9ócó—t|d«S)z7Return the number of the last line in a Tk text widget.zend-1c)r©r s r Úget_end_linenumberrs€ä �d˜HÓ %Ð%rcóF—|j|›d�|›d�d«}|r|dSdS)z@Display height, in lines, of a logical line in a Tk text widget.z linestartz lineendÚ displaylinesr)Úcount)r rÚress r Úget_displaylinesrs9€à �*‰*˜�w˜jÐ)Ø�w˜hÐ'Ø#ó %€Cñˆ3ˆq‰6ИaÐrc óÒ—|j«}|dk(r|j«}n$|dk(r|j«}ntd|›�«‚t t |j j|d|jd«|jd«g««}t t |j j|d|jd«|jd«g««}||fS)z;Get the total padding of a Tk widget, including its border.ÚpackÚgridzUnsupported geometry manager: ÚpadxÚborderÚpady) Ú winfo_managerÚ pack_infoÚ grid_infoÚ ValueErrorÚsumÚmapÚtkÚgetintÚcget)ÚwidgetÚmanagerÚinforrs r Úget_widget_paddingr*!sã€ð×"Ñ"Ó$€GØ�&ÒØ×ÑÓ!‰Ø �FÒ Ø×ÑÓ!‰äÐ9¸'¸ÐCÓDÐDô Œs�6—9‘9×#Ñ#Ø ˆV‰ Ø� ‰ �FÓØ� ‰ �HÓð&óó €Dô Œs�6—9‘9×#Ñ#Ø ˆV‰ Ø� ‰ �FÓØ� ‰ �HÓð&óó €Dð �ˆ:Ðrc#óàK—|jtj¬« d–—|jtj¬«y#|jtj¬«wxYw­w)N©Ústate)Ú configurer$ÚNORMALÚDISABLEDrs r Útemp_enable_text_widgetr1;sDèø€à‡N�NœŸ™€NÔ#ð*Û à �‰œRŸ[™[ˆÕ)øˆ�‰œRŸ[™[ˆÕ)üs‚!A.¤A ¨!A.Á "A+Á+A.có^—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zy)Ú BaseSideBarz%A base class for sidebars using Text.cóî—||_|j|_|j|_d|_|j «|_|j«|j«|j«y©NF) ÚeditwinÚ text_frameÚparentr Úis_shownÚ init_widgetsÚ main_widgetÚ bind_eventsÚ update_fontÚ update_colors)Úselfr6s r Ú__init__zBaseSideBar.__init__Fs]€ØˆŒ Ø×(Ñ(ˆŒ Ø—L‘LˆŒ àˆŒ à×,Ñ,Ó.ˆÔà ×ÑÔà ×ÑÔØ ×ÑÕrcó—t‚)zzBaseSideBar.update_colors\rErcó—t‚)z,Layout the widget, always using grid layout.rBrDs r rzBaseSideBar.grid`rErcóL—|js|j«d|_yy)NT)r9rrDs r Ú show_sidebarzBaseSideBar.show_sidebards€Ø�}Š}Ø �I‰IŒKØ ˆD�Mðrcó`—|jr"|jj«d|_yyr5)r9r;Ú grid_forgetrDs r Ú hide_sidebarzBaseSideBar.hide_sidebaris'€Ø �=Š=Ø × Ñ × (Ñ (Ô *Ø!ˆD�Mð rcó—t‚)z8Hook for vertical scrolling for sub-classes to override.rB©r?ÚargsÚkwargss r Ú yscroll_eventzBaseSideBar.yscroll_eventnrErcól—|jjj|Ž|j|i|¤ŽS)úmRedirect vertical scrolling to the main editor text widget. The scroll bar is also updated. )r6ÚvbarÚsetrTrQs r Úredirect_yscroll_eventz"BaseSideBar.redirect_yscroll_eventrs6€ð ˆ� ‰ ×Ñ×јtÑ$Ø!ˆt×!Ñ! 4Ð2¨6Ñ2Ð2rcó8—|jj«y)z8Redirect focus-in events to the main editor text widget.Úbreak)r Ú focus_set©r?Úevents r Úredirect_focusin_eventz"BaseSideBar.redirect_focusin_eventzs€à � ‰ ×ÑÔØrcóˆ—|jj«|jj|d|j¬«y)zr)rbrcÚdeltar[)r rdrcrir]s r Úredirect_mousewheel_eventz%BaseSideBar.redirect_mousewheel_event…s.€à � ‰ × Ñ  Ø#$¨¯©°u·{±{ð !ô Dàrc󸇇 ‡ ‡ ‡ ‡ —‰j‰jd<‰jjd‰j«‰jjd‰j «ˆfd„}dD]A}d|›d�d|›d�d |›d �fD] }|||¬ «Œd |›d�d |›d�fD]}||d|›d�¬ «ŒŒCdŠ dŠ dŠ ˆˆ fd„Š ˆ ˆ ˆˆ fd„}‰jjd|«ˆ ˆˆ fd„}‰jjd|«ˆ ˆ fd„}‰jjd|«ˆ ˆ ˆ ˆˆ fd„Š ˆ ˆ ˆˆ fd„}‰jjd|«ˆ ˆfd„}‰jjd|«y)NÚyscrollcommandz rhc󀕗tj‰j|¬«}‰jj ||«y)N)re)Ú functoolsÚpartialrfr;Úbind)reÚtarget_event_nameÚhandlerr?s €r Úbind_mouse_eventz1BaseSideBar.bind_events..bind_mouse_event›s5ø€Ü×'Ñ'¨×(GÑ(GØ3DôFˆGà × Ñ × !Ñ ! *¨gÕ 6r)éééézz)rqz.drag_update_selection_and_insert_mark¿s”ø€ä § ¡ ¨S°° ¨?Ó;ˆFܘ: vÐ.Ó/‰DˆAˆqØ �I‰I× Ñ  ¨¨uÔ 5Ø �I‰I× Ñ ˜e¨ s¨" X°!°A±#°°b¨zÔ :Ø �I‰I× Ñ ˜xØ,2°aªK¡&¸VÀa¹ZÐ!HÈÐKõ Mrcó¶•—tt‰jjd|j›�«««Š|jЉ|j«y)Nrz)r r r rrc)r^r‰Úlast_yr?rˆs €€€€r Úb1_mousedown_handlerz5BaseSideBar.bind_events..b1_mousedown_handlerÈs@ø€ôœU 4§9¡9§?¡?°S¸¿¹¸ °?Ó#CÓDÓEˆJØ—W‘WˆFá 1°%·'±'Õ :rz có^•—dŠdЉjjdd|j¬«y)Núrra)r rdrc)r^r‹r?rˆs €€€r Úb1_mouseup_handlerz3BaseSideBar.bind_events..b1_mouseup_handlerÑs-ø€ð ˆJ؈FØ �I‰I× $Ñ $Ð%8¸AÀÇÁÐ $Õ IrrŽcóH•—‰€y|jЉ|j«y©N)rc)r^r‰r‹s €€r Úb1_drag_handlerz0BaseSideBar.bind_events..b1_drag_handlerÛs ø€àˆ~ØØ—W‘WˆFÙ 1°%·'±'Õ :rz cóš•—‰}|€‰jj‰«dŠy|dkr(‰jjd|zd«‰|«n_|‰jj «kDrB‰jjd|z‰jj «z d«‰|«‰jj d‰«Šy)z6Mimic Text auto-scrolling when dragging outside of it.NréÿÿÿÿÚpixelsr~é2)r;Ú after_cancelr Ú yview_scrollÚ winfo_heightÚafter)rcÚauto_scrolling_after_idr‰r‹r?Útext_auto_scrolls €€€€€r rœz1BaseSideBar.bind_events..text_auto_scrollãs¾ø€ðˆA؈yØ× Ñ ×-Ñ-Ð.EÔFØ*.Ð'ØØ�Q’Ø— ‘ ×&Ñ& r¨A¡v¨xÔ8Ù5°aÕ8Ø�T×%Ñ%×2Ñ2Ó4Ò4Ø— ‘ ×&Ñ& q¨1¡u¨t×/?Ñ/?×/LÑ/LÓ/NÑ'NØ'/ô1á5°aÔ8à× Ñ ×&Ñ& rÐ+;Ó<ñ $rcó\•—‰€)|jЉjjd‰«Šyy)Nr)rcr;rš)r^r›r‹r?rœs €€€€r Úb1_leave_handlerz1BaseSideBar.bind_events..b1_leave_handlerös5ø€ð'Ð.àŸ™�à×$Ñ$×*Ñ*¨1Ð.>Ó?ñ(ð/rz cóF•—‰�‰jj‰«dŠyyr‘)r;r—)r^r›r?s €€r Úb1_enter_handlerz1BaseSideBar.bind_events..b1_enter_handlers+ø€ð'Ð2Ø× Ñ ×-Ñ-Ð.EÔFØ*.Ñ'ð3rz )rYr r;rpr_rj)r?rsÚbuttonrerŒr�r’ržr r›r‰r‹rˆrœs` @@@@@r r<zBaseSideBar.bind_events‹sžý€Ø&*×&AÑ&Aˆ� ‰ Ð"Ñ#ð ×Ñ×јk¨4×+FÑ+FÔGð ×Ñ×јn¨d×.LÑ.LÔMô  7ó #ˆFØ!)¨&¨°Ð3Ø!0°°¸Ð:Ø!# F 8¨8Ð4ó!� ñ! ¸zÖJð !ð"1°°¸Ð:Ø!0°°¸Ð:ó!� ñ! Ø5=¸f¸XÀQÐ3GöIñ!ð#ð"ˆ ð ˆð #'Ðõ M÷ ;ð ×Ñ×јlÐ,@ÔAö Jð ×Ñ×ÑÐ1Ð3EÔFõ ;ð ×Ñ×јm¨_Ô=÷ =ð =÷& @ð ×Ñ×јlÐ,<Ô=õ /ð ×Ñ×јlÐ,<Õ=rN)Ú__name__Ú __module__Ú __qualname__Ú__doc__r@r:r=r>rrLrOrTrYr_rfrjr<©rr r3r3DsG„Ù/ò ò"ò"ò"ò"ò!ò "ò "ò3òò ò ó |>rr3có&—eZdZdZd„Zdd„Zdd„Zy)ÚEndLineDelegatorz}Generate callbacks with the current end line number. The provided callback is called after every insert and delete. có<—tj|«||_yr‘)rr@Úchanged_callback)r?rªs r r@zEndLineDelegator.__init__s€Ü×ј4Ô Ø 0ˆÕrNcó†—|jj|||«|jt|j««yr‘)Údelegaterrªr)r?rÚcharsÚtagss r rzEndLineDelegator.inserts0€Ø � ‰ ×јU E¨4Ô0Ø ×ÑÔ0°·±Ó?Õ@rcó„—|jj||«|jt|j««yr‘)r¬Údeleterªr)r?Úindex1Úindex2s r r°zEndLineDelegator.deletes.€Ø � ‰ ×јV VÔ,Ø ×ÑÔ0°·±Ó?Õ@rr‘)r¢r£r¤r¥r@rr°r¦rr r¨r¨ s„ñò1óAôArr¨cóF‡—eZdZdZˆfd„Zd„Zd„Zd„Zd„Zd„Z d„Z ˆxZ S) Ú LineNumbersz(Line numbers support for editor windows.cóÄ•—t‰|�|«t|j«}|jj j ||jj¬«y)N©rš)Úsuperr@r¨Úupdate_sidebar_textr6ÚperÚinsertfilterafterÚundo)r?r6Úend_line_delegatorÚ __class__s €r r@zLineNumbers.__init__sQø€Ü ‰Ñ˜Ô!ä-¨d×.FÑ.FÓGÐð � ‰ ×Ñ×*Ñ*Ð+=Ø15·±×1BÑ1Bð +õ Drc ó—t|j«\}}tj|jdtj d|dd¬«|_|j jtj¬«d|_ t|j d«|_ t|j «5|j jddd «ddd«|j jd d ¬ «|j jd tj¬ «t!|j«}|j#|«|j S#1swYŒƒxYw) Nr~rtr)ÚwidthÚwraprrÚ borderwidthÚhighlightthicknessr,r¿rÚ1Ú linenumberF)Ú takefocusÚexportselection)Újustify)r*r r$ÚTextr8ÚNONEÚ sidebar_textÚconfigr0Úprev_endÚtypeÚ_sidebar_width_typer1rÚ tag_configÚRIGHTrr¸)r?Ú_padxrr}s r r:zLineNumbers.init_widgets's €Ü(¨¯©Ó3‰ ˆˆtÜŸG™G D§K¡K°q¼r¿w¹wØ)*°Ø01ÀaôIˆÔð ×Ñ× Ñ ¤r§{¡{Ð Ô3àˆŒ Ü#'¨×(9Ñ(9¸'Ñ(BÓ#CˆÔ Ü $ T×%6Ñ%6Õ 7Ø × Ñ × $Ñ $ X¨s°LÔ A÷8à ×Ñ× Ñ ¨5À%Ð ÔHØ ×Ñ×$Ñ$ \¼2¿8¹8Ð$ÔDä  §¡Ó+ˆØ × Ñ  Ô%à× Ñ Ð ÷8Ð 7ús Â5EÅEcó\—|jjddtj¬«y)Nr~r©ÚrowÚcolumnÚsticky)rÊrr$ÚNSEWrDs r rzLineNumbers.grid:s!€Ø ×Ñ×Ñ 1¨Q´r·w±wÐÕ?rcód—tj|jdd«}||jd<y)NÚmainÚ EditorWindowÚfont)rÚGetFontr rÊ)r?rÛs r r=zLineNumbers.update_font=s*€Ü×Ñ § ¡ ¨6°>ÓBˆØ$(ˆ×ј&Ò!rcó¨—tjtj«d«}|d}|d}|jj |||||¬«y)rIrÄÚ foregroundÚ background)ÚfgÚbgÚselectforegroundÚselectbackgroundÚinactiveselectbackgroundN)rÚ GetHighlightÚ CurrentThemerÊrË)r?ÚcolorsrÞrßs r r>zLineNumbers.update_colorsAsW€ä×&Ñ&¤x×'<Ñ'<Ó'>À ÓMˆØ˜LÑ)ˆ ؘLÑ)ˆ Ø ×Ñ× Ñ Ø˜jØ'¸*Ø%/ð !õ rcóÀ—||jk(rytt|««tt|j««z }|rDtt |j d««}||z}|j |«|j d<t|j «5||jkDrldjtjdgttt|jdz|dz««««}|j jd|d«n"|j j|dz›d�d«ddd«||_y#1swY||_yxYw) zå Perform the following action: Each line sidebar_text contains the linenumber for that line Synchronize with editwin.text so that both sidebar_text and editwin.text contain the same number of linesNr¿Ú Úr~zend -1crÄz.0 -1c)rÌÚlenÚstrr r rÊrÎr1ÚjoinÚ itertoolsÚchainr#Úrangerr°)r?r}Úwidth_differenceÚ cur_widthÚ new_widthÚnew_texts r r¸zLineNumbers.update_sidebar_textLs%€ð �$—-‘-Ò Ø äœs 3›x›=¬3¬s°4·=±=Ó/AÓ+BÑBÐÙ ÜœE $×"3Ñ"3°GÑ"<Ó=Ó>ˆIØ!Ð$4Ñ4ˆIØ)-×)AÑ)AÀ)Ó)LˆD× Ñ ˜gÑ &ä $ T×%6Ñ%6Õ 7Ø�T—]‘]Ò"ØŸ9™9¤Y§_¡_Ø�DÜœœU 4§=¡=°1Ñ#4°c¸A±gÓ>Ó?ó&ó�ð×!Ñ!×(Ñ(¨7°X¸|ÕLà×!Ñ!×(Ñ(¨C°©E¨7°&Ð)9¸9ÔE÷8ðˆ� ÷8ðˆ� ús ÂBE Å Ecó@—|jj|d«y)Nrr[)rÊÚ yview_movetorQs r rTzLineNumbers.yscroll_eventgs€Ø ×Ñ×&Ñ& t¨A¡wÔ/Ør) r¢r£r¤r¥r@r:rr=r>r¸rTÚ __classcell__©r½s@r r´r´s+ø„Ù2ôDò!ò&@ò)ò  òö6rr´có"—eZdZd„Zdd„Zdd„Zy)Ú WrappedLineHeightChangeDelegatorcó<—tj|«||_y)z¿ callback - Callable, will be called when an insert, delete or replace action on the text widget may require updating the shell sidebar. N)rr@Úcallback)r?rüs r r@z)WrappedLineHeightChangeDelegator.__init__ms€ô ×ј4Ô Ø ˆ� rNcóª—d|v}|r t||«}|jj|||«|rt||«}|k(ry|j«y)Nré)rr¬rrü)r?rr­r®Úis_single_lineÚbefore_displaylinesÚafter_displayliness r rz'WrappedLineHeightChangeDelegator.insertvsW€Ø UÐ*ˆÙ Ü"2°4¸Ó"?Ð à � ‰ ×јU E¨4Ô0á Ü!1°$¸Ó!>Ð Ø!Ð%8Ò8Øà � ‰ �rcóà—|€|dz}t||«t||«k(}|r t||«}|jj||«|rt||«}|k(ry|j «y)Nz+1c)rrr¬r°rü)r?r±r²rþrÿrs r r°z'WrappedLineHeightChangeDelegator.delete„sq€Ø ˆ>ؘe‘^ˆFÜ# D¨&Ó1´ZÀÀfÓ5MÑMˆÙ Ü"2°4¸Ó"@Ð à � ‰ ×јV VÔ,á Ü!1°$¸Ó!?Ð Ø!Ð%8Ò8Øà � ‰ �rr‘)r¢r£r¤r@rr°r¦rr rúrúls„ò!ó ôrrúcó\‡—eZdZdZˆfd„Zd„Zˆfd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z ˆxZS) Ú ShellSidebarz0Sidebar for the PyShell window, for prompts etc.có•—d|_i|_t‰|� |«t |j «}|j jj}|j|jure|j|j jjur9|j}|j|j jjurŒ9|j jj||¬«d|_ y)Nr¶T)ÚcanvasÚ line_promptsr·r@rúÚchange_callbackr6r¹Útopr¬r Úbottomrºr9)r?r6Úchange_delegatorÚdr½s €r r@zShellSidebar.__init__—sÃø€ØˆŒ ؈Ôä ‰Ñ˜Ô!ô -¨T×-AÑ-AÓ Bð ð �L‰L× Ñ × Ñ ˆØ �:‰:˜TŸY™YÑ &Ø—*‘* D§L¡L×$4Ñ$4×$;Ñ$;Ñ;Ø—J‘J�ð—*‘* D§L¡L×$4Ñ$4×$;Ñ$;Ò;à � ‰ ×Ñ×*Ñ*Ð+;À1Ð*ÔEàˆ� rcó¬—tj|jdddd¬«|_|j «|j «|jS)NérF)r¿rÁrÂrÅ)r$ÚCanvasr8rÚupdate_sidebarrrDs r r:zShellSidebar.init_widgets©sC€Ü—i‘i § ¡ °2Ø,-À!Ø*/ô1ˆŒ ð ×ÑÔØ � ‰ Œ Ø�{‰{Ðrcóš•—t‰|�«|jjt j «rdnd|j «y)Nz z )r·r<r;rprÚisAquaTkÚcontext_menu_event)r?r½s €r r<zShellSidebar.bind_events±s9ø€Ü ‰ÑÔà ×Ñ×Ñä"ŸO™OÔ-‰L°<Ø × #Ñ #õ rcó`‡—tj‰jd¬«}t‰jj dd««}ˆfd„}|j d|d«|rdnd ¬ «|j d |d «|rdnd ¬ «|j|j|j«y )Nr)Útearoffr{r|c󕇗ˆˆfd„S)Ncó:•—‰jj‰«Sr‘)r rd©Ú eventnamer?s€€r Úz@ShellSidebar.context_menu_event..mkcmd..¾sø€˜4Ÿ9™9×3Ñ3°IÔ>rr¦rs`€r Úmkcmdz.ShellSidebar.context_menu_event..mkcmd½s ù€Ü>Ð >rÚCopyz<>ÚnormalÚdisabled)ÚlabelÚcommandr-zCopy with promptsz<>r[) r$ÚMenur;Úboolr Ú tag_nextrangeÚ add_commandÚtk_popupÚx_rootÚy_root)r?r^ÚrmenuÚ has_selectionrs` r rzShellSidebar.context_menu_eventºs¢ø€Ü—‘˜×(Ñ(°!Ô4ˆÜ˜TŸY™Y×4Ñ4°U¸EÓBÓCˆ ô ?à ×Ñ Ù"'¨ Ó"3Ù,9¡¸zð ô Kð ×ÑÐ 3Ù"'Ð(?Ó"@Ù,9¡¸zð ô Kð �‰�u—|‘| U§\¡\Ô2Ørcó`—|jjddtjdd¬«y)Nr~rrt)rÔrÕrÖrr)rrr$r×rDs r rzShellSidebar.gridÈs#€Ø � ‰ ×јQ q´·±¸qÀqÐÕIrcó>—|jr|j«yyr‘)r9rrDs r rzShellSidebar.change_callbackËs€Ø �=Š=Ø × Ñ Õ !ð rc óh—|j}|j}|j}ix}|_|j t j «|jd«}|jdd«ddk7r|j|›d�«}|j|«x}�–|d}||›d�«}d|vrdnd |vrd nd} | rM|jd |t j| |j|jd ¬ «t||«} | || <|j|›d�«}|j|«x}�Œ•yy)Nz@0,0Ú.r~Ú0z+1line linestartz linestart -1cÚconsolez>>>Ústdinz...rtr)Úanchorr rÛÚfillz+1line)r Ú tag_namesrrr°r$ÚALLrÚsplitÚ dlineinfoÚ create_textÚNWrÛrçr) r?r Ú text_tagnamesrrrÚlineinforcÚprev_newline_tagnamesÚpromptr…s r rzShellSidebar.update_sidebarÏs:€Ø�y‰yˆØŸ™ˆ Ø—‘ˆØ+-Ð-ˆ �tÔ(à� ‰ ”b—f‘fÔà— ‘ ˜6Ó"ˆØ �;‰;�s˜AÓ ˜qÑ ! SÒ (Ø—J‘J % Ð(8Ð9Ó:ˆEØŸ>™>¨%Ó0Ð0ˆxÐ=ؘ‘ ˆAÙ$1°U°G¸>Ð2JÓ$KÐ !à"Ð&;Ñ;‘Ø Ð$9Ñ9‘Øð ñ Ø×"Ñ" 1 a´·±¸FØ(,¯ © ¸¿ ¹ ÀA¹ð#ôHä# D¨%Ó0�Ø'-� ˜VÑ$Ø—J‘J % ¨Ð/Ó0ˆEð Ÿ>™>¨%Ó0Ð0ˆxÓ=rcó$—|j«y)rVr[)rrQs r rTzShellSidebar.yscroll_eventés€ð ×ÑÔØrcó‡—tj|jdd«}t|j|¬«Št ˆfd„dD««}|j j |dzdz¬«||_|j«y ) rGrÙrÚ)rÛc3ó@•K—|]}‰j|«–—Œy­wr‘)Úmeasure)Ú.0ÚcharÚtk_fonts €r Ú z+ShellSidebar.update_font..õsøèø€ÐF¹:°4˜Ÿ™¨×.¹:ùsƒ)rxr,rurv)r¿N) rrÜr rÚmaxrr.rÛr)r?rÛÚ char_widthrBs @r r=zShellSidebar.update_fontñslø€ä×Ñ § ¡ ¨6°>ÓBˆÜ�t—y‘y tÔ,ˆÜÓF¹:ÓFÓFˆ Ø � ‰ ×Ñ J°¡N°QÑ$6ÐÔ7؈Œ Ø ×ÑÕrcó"—tjtj«d«}tjtj«d«}|d}|d}||f|_|jj |¬«|j «y)rIrÄr.rÞrß)rßN)rrårærçrr.r)r?Úlinenumbers_colorsÚ prompt_colorsrÞrßs r r>zShellSidebar.update_colorsúsz€ä%×2Ñ2´8×3HÑ3HÓ3JÈLÓYÐÜ ×-Ñ-¬h×.CÑ.CÓ.EÀyÓQˆ Ø" <Ñ0ˆ Ø'¨ Ñ5ˆ Ø! :Ð.ˆŒ Ø � ‰ ×ѨÐÔ4Ø ×ÑÕr)r¢r£r¤r¥r@r:r<rrrrrTr=r>r÷røs@r rr•s9ø„Ù:ôò$ô ò òJò"ò1ò4òörrc ó°—ddlm}tj|«}tj|«}|j tj tjd¬«|jdd¬«|jdd¬«tj|dd«}tj|d d tj|¬ «}|jddtj¬ «||«}tj |«|_t%|«}|j'«|j)d dj+d„t-dd«D«««y)Nr)Ú Dummy_editwinT)Úsider1Úexpandr~)ÚweightrÙrÚéPé)r¿ÚheightrÀrÛrÓr|réc3ó&K—|] }d|z–—Œ y­w)r†Nr¦)r@Úis r rCz,_sidebar_number_scrolling..sèø€Ð >± ¨1  Q¥± ùs‚ée)Úidlelib.idle_test.test_sidebarrJr$ÚToplevelÚFramerÚLEFTÚBOTHÚ rowconfigureÚcolumnconfigurerrÜrÈrÉrr×Ú ScrollbarrWr´rLrrírð)r8rJrr7rÛr r6Ú linenumberss r Ú_sidebar_number_scrollingr]s÷€Ý<ä �+‰+�fÓ €CÜ—‘˜#“€J؇O�OœŸ™¤r§w¡w°t€OÔ<Ø×јA aÐÔ(Ø×јq¨ÐÔ+ä × Ñ ˜C ¨Ó 8€DÜ �7‰7�: R°¼¿¹ÀtÔ L€D؇I�I�!˜A¤b§g¡g€IÔ.á˜DÓ!€GÜ—<‘<  Ó+€G„Lä˜gÓ&€KØ×ÑÔà‡K�K��t—y‘yÑ >´°a¸´ Ó >Ó>Õ?rÚ__main__)rÙzidlelib.idle_test.test_sidebarrtF)Ú verbosityÚexit)Úrun)r¥Ú contextlibrnrîÚtkinterr$Ú tkinter.fontrÚidlelib.configrÚidlelib.delegatorrÚidlelibrrrrr*Úcontextmanagerr1r3r¨r´rúrr]r¢ÚunittestrÙÚidlelib.idle_test.htestrar¦rr ÚrksÉðñóÛÛãÝÝ#Ý'Ýò:ò &ò  òð4 ×Ññ*óð*÷C>ñC>ôLA�yôAô$M�+ôMô`& yô&ôRm�;ômò`@ð, ˆzÒÝÙÐ )°Q¸UÕCå+ÙÐ!Õ"ð r