python (3.12.0)

(root)/
lib/
python3.12/
__pycache__/
turtle.cpython-312.opt-2.pyc

ˑe;\	ddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZddlm
Z
ddlmZgdZgdZgdZdd	gZeezezezd
gzZgdZidd
ddddddddddddddddddddd d!d"d!d#d$d%d&d'd(d)d*d+d,d-d.Zd/Zd0Z	eeGd2d3eZd4Zd5Zd6Zdfd7ZGd8d9ej@Z!ee!ejDd:Gd;d<ejFZ$ejDZ"Gd=d>e%Z&Gd?d
eZ'Gd@dAeZ(GdBdCe%Z)GdDdEe%Z*GdFdGe&Z+GdHdIe%Z,GdJdKe%Z-GdLdMe%Z.GdNdOe-e,Z/e/Z0dPZ1GdQdRe+Z2GdSdTe/Z3e3Z4dgdUZ5dVZ6ed'Z7	e7d(k7re6e7dYZ9dZZ:d[Z;d\Z<d]Z=e=ee2d^d_e;e=ee3d`dae:e>Z?e@dbk(rdcZAddZBdeZCeBeCeDyy#e$red1YdwxYw#e8$redWe7Yqe$redXe7zYwxYw)hN)isfilesplitjoin)deepcopy)simpledialog)	ScrolledCanvasTurtleScreenScreen	RawTurtleTurtleRawPenPenShapeVec2D)addshapebgcolorbgpicbyeclearscreen	colormodedelayexitonclick	getcanvas	getshapeslistenmainloopmodenuminputonkey
onkeypressonkeyrelease
onscreenclickontimerregister_shaperesetscreen
screensizesetupsetworldcoordinates	textinputtitletracerturtlesupdate
window_heightwindow_width)Pbackbackward
begin_fill
begin_polybkcircleclear
clearstampclearstampsclonecolordegreesdistancedotdownend_fillend_polyfd	fillcolorfillingforwardget_polygetpen	getscreen
get_shapepoly	getturtlegotoheading
hideturtlehomehtisdown	isvisibleleftltonclickondrag	onreleasepdpenpencolorpendownpensizepenuppospositionpuradiansrightreset
resizemodertseth
setheadingsetpossetpositionsettiltangle
setundobuffersetxsetyshape	shapesizeshapetransformshearfactor
showturtlespeedststampteleporttilt	tiltangletowards
turtlesizeundoundobufferentriesupwidthwritexcorycorwrite_docstringdictdone
Terminator)rr1r4rArNrRrVr\r^rcrdrfrgrrrxr{r|r|?heightg?	canvwidthi
canvheighti,	leftright	topbottomrstandardr?r
undobuffersizeirlclassicrXblackrBrbnoresizevisibleTlanguageenglish
exampleturtleturtlescreenzPython Turtle GraphicsF)
examplescreenr*
using_IDLEc	t|d5}|j}dddi}D]}|j}|r|jdr'	|j	d\}}|j}|j}|dvrt|}n	d|vrt|}nt|}|||<|S#1swYxYw#t
$rt
d|d|YwxYw#t
$rY@wxYw)Nr#=zBad line in config-file z:
)TrueFalseNonez''z"".)
open	readlinesstrip
startswithr
ValueErrorprintevalfloatint)filenamefcfglinescfgdictlinekeyvalues       :/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/turtle.pyconfig_dictrs9	
h	!;;=!Gzz|ts+	CJCiik
99KE
%<!%LEJE+,N3!!	xEF	

s/B<CC(<CC%$C%(	C43C4c6	d}i}i}t|rt|}d|vrd|dz}	tt\}}t	||}t|rt|}tj|tj|y#t
$rd}YNwxYw)Nz
turtle.cfgimportconfigz
turtle_%s.cfg)rrr__file__r	Exception_CFGr-)rdefault_cfgcfgdict1cfgdict2headtail	cfg_file2s       r
readconfigrsKHH
k{+!%(@@8_
d{+	iy)KKKK	sB

BBz"No configfile read, reason unknowncJeZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
Zy)rc2tj|||fSN)tuple__new__)clsxys   rrz
Vec2D.__new__s}}S1a&))c>t|d|dz|d|dzSNrrselfothers  r__add__z
Vec2D.__add__)T!WU1X%tAwuQx'788rct|tr|d|dz|d|dzzSt|d|z|d|zSr)
isinstancerrs  r__mul__z
Vec2D.__mul__sNeU#758#DGE!H$444T!WU]DGEM22rc~t|tst|trt|d|z|d|zStSr)rrrrNotImplementedrs  r__rmul__zVec2D.__rmul__s8eS!Zu%=aQ
66rc>t|d|dz
|d|dz
Srrrs  r__sub__z
Vec2D.__sub__rrc*t|d|dSrrrs r__neg__z
Vec2D.__neg__sd1gXQx((rc&tj|Sr)mathhypotrs r__abs__z
Vec2D.__abs__szz4  rc	t|d|d}tj|}tj|tj|}}t|d|z|d|zz|d|z|d|zzS)Nrr)rrr_cossin)rangleperpcss     rrotatezVec2D.rotates{	d1gXtAw'U#xx1T!WQYtAwqy($q'!)DGAI*=>>rc|d|dfSrrs r__getnewargs__zVec2D.__getnewargs__sQa!!rcd|zS)Nz(%.2f,%.2f)rrs r__repr__zVec2D.__repr__s
t##rN)
__name__
__module____qualname__rrrrrrrrrrrrrrrs9*939)!?"$rrc	t|j}|j|D]}t|||jjD]'\}}t
|tjk(s#|||<)yr)	list	__bases__reverse__methodDict__dict__itemstypetypesFunctionType)r_dictbaseList_superrrs      rrrss-CMM"H$VU#$ll((*
U;%,,,E#Jrc@	i}t|||jSr)rkeys)rrs  r	__methodsr&s -Ee::<rzTdef %(method)s(self, *args, **kw): return self.%(attribute)s.%(method)s(*args, **kw)cPi}t||i}t|}|jD]#}|dddk(s|dddk(s||vs||vr||||<%|jD]B\}}	||	d}
t	|t
rt||dz}t|
t|||
|Dy)Nr_)methodfunc)r	attribute)	rrrrrstr__stringBodyexecsetattr)	fromClasstoClasstoPartexclude_dict_1rmfcexrrd
execStrings            r__forwardmethodsr0sG'"E
I
Clln$
bq6S=BrsGsNbGmrSyE"I	$
.t,fc"6HH
Z	61V9-
.rcReZdZ			ddZd
dZdZdZdZdZdZ	d	Z
d
ZdZy)rc
$tjj|||||j|_||c|_|_||c|_|_d|_	tj||||jtjd|_tj||jjtj|_tj||jj"|_|jj'|j j(|j$j(|j+dd	d
|j-dd	d
|jj/d	|d	ddd	d	d|j$j/d	|d	dd	d	d	d|j j/d	|d	d	dd	d	d|j1|jj3d
|j4y)N)r|rwhite)r|rbgreliefborderwidth)commandorient)r)xscrollcommandyscrollcommandrr)weightminsizenewspadxin_padyrowcolumnrowspan
columnspanstickyz<Configure>)TKFrame__init__winfo_toplevel_rootwindowr|rrrrCanvasSUNKEN_canvas	Scrollbarxview
HORIZONTALhscrollyviewvscroll	configuresetrowconfigurecolumnconfiguregridrabindonResize)rmasterr|rrrs      rr-zScrolledCanvas.__init__Ks
$eFC..0"'
DK*3Z'yyuV$(GGBII1N||FDLL4F4F+-==:||FDLL4F4FGdll.>.>.2ll.>.>		@!Aq1Qq!4q1!!&		Bq1!!&		Bq1!!&		B

mT]];rNc	|r||_|r||_|r||_|jj	||jdz|jdz|jdz|jdzf|jjd|j|jz
dzz|jz|jjd|j|jz
dzz|jz|jy)Nr)rscrollregionr)
rrrr2configxview_movetor|yview_movetor
adjustScrollsrrrrs    rrazScrolledCanvas.resetdsJ&DN(DO
DGr'+~~oq&84??:JA:M'+~~q'8$//1:L&N		O	
!!#t~~

'BR'G"H?C~~#N	O!!#t'Cb'H"I>Boo#N	Orc
	|jj}|jj}|jjd|j|z
z|jz|jjd|j|z
z|jz||jks||jkrG|jjd|dddddd|jjd|ddddddy|jj|jjy)Nrrrr!r")r2winfo_widthwinfo_heightrErrFrr6r=r8grid_forget)rcwidthcheights   rrGzScrolledCanvas.adjustScrollsvs	))+,,++-!!#t~~f'<"=dnn"LM!!#tw'>"?"OPDNN"g&?LL1Dqa%&a

PLL1Dqa%&a

P
LL$$&LL$$&rc&	|jyr)rG)revents  rr?zScrolledCanvas.onResizesrc6	|jj|Sr)r2bboxrargss  rrRzScrolledCanvas.bboxs	 t||  $''rc<	|jj|i|Sr)r2cgetrrTkwargss   rrVzScrolledCanvas.cgets#	 t||  $1&11rc>	|jj|i|yr)r2rDrWs   rrDzScrolledCanvas.config 	T,V,rc>	|jj|i|yr)r2r>rWs   rr>zScrolledCanvas.binds 	4*6*rc>	|jj|i|yr)r2unbindrWs   rr]zScrolledCanvas.unbindrZrc:	|jjyr)r2focus_forcers rr_zScrolledCanvas.focus_forces	  "r)i^iXr`NNN)
rrrr-rarGr?rRrVrDr>r]r_rrrrrEsA
25DG<2$' (
2
-
+
-
#rrr2c8eZdZ	dZdZdZdZdZdZdZ	y)	_RootcBtjj|yr)r+Tkr-rs rr-z_Root.__init__s
trcft||||||_|jjddy)Nrboth)expandfill)rr2pack)rr|rrMrNs     rsetupcanvasz_Root.setupcanvass-%dE667K0rc|jSr)r2rs r
_getcanvasz_Root._getcanvass||rc4|jd||||fzy)Nz%dx%d%+d%+d)geometry)rr|rstartxstartys     rset_geometryz_Root.set_geometrys

mUFFF$CCDrc(|jd|y)NWM_DELETE_WINDOW)wm_protocol)rdestroys  r	ondestroyz_Root.ondestroys+W5rc"|jSr)winfo_screenwidthrs r	win_widthz_Root.win_widths%%''rc"|jSr)winfo_screenheightrs r
win_heightz_Root.win_heights&&((rN)
rrrr-rkrmrrrwrzr}rrrrcrcs)11E6()rrcceZdZ	dZdZdZdZ		d#dZdZ		d#dZ	d	Z
d
ZdZdZ
d$d
ZdZd%dZd%dZd%dZd%dZdZd$dZdZdZdZdZdZdZdZdZdZd&dZdZ d Z!d!Z"d&d"Z#y)'TurtleScreenBasecl	tjdd|j}|j|S)Nr)r|rr@)r+
PhotoImagecvblank)rimgs  r_blankimagezTurtleScreenBase._blankimages+	mm!Adgg>		
rcF	tj||jS)N)filer@)r+rr)rrs  r_imagezTurtleScreenBase._images	}}(477;;rc||_t|tr-|jj}|jj}nvt|jj
d}t|jj
d}|jj|dz|dz|dz|dzf||_||_dx|_|_	y)Nr|rrrBr)
rrrrrrrVrDxscaleyscale)rrwhs    rr-zTurtleScreenBase.__init__sb.)!!A""ADGGLL)*ADGGLL*+AGGNNA2q51"a%Aq!t*ENF$''dkrc@	|jjdddS)N)rrrrrrrrioutline)rcreate_polygonrs r_createpolyzTurtleScreenBase._createpolys$	ww%%&8r2%NNrNc	g}|D]B\}}	|j||jz|j|	|jzD|jj|g|||jj||||jj||||jj|||r|jj
|yy)Nri)rr|appendrrrcoords
itemconfigure	tag_raise)
rpolyitem	coordlistrirr|topclrrs
          r	_drawpolyzTurtleScreenBase._drawpolys		(DAqIIa$++o&IIqb4;;&'	(	x%"%GG!!(!6GG!!(G!<GG!!(%!8GGh'rc	d	|jjddddddtjS)Nrrr)rir|capstyle)rcreate_liner+ROUNDrs r_createlinezTurtleScreenBase._createlines6	ww""1aABa.0hh#8	8rc	|fg}|D]B\}}|j||jz|j||jzD|jj|g|||jj||||jj|||r|jj
|yy)Nrrr)	rlineitemrrir|rrrrs	         r	_drawlinezTurtleScreenBase._drawlines	 B!
,1		!dkk/*		1"t{{*+
,
DGGNN8)b)GG!!(!6GG!!(%!8GGh'rc<	|jj|yr)rdeleteritems  r_deletezTurtleScreenBase._delete#s		
trc:	|jjyr)rr-rs r_updatezTurtleScreenBase._update)s	rc<	|jj|yr)rafterrrs  r_delayzTurtleScreenBase._delay.s;

erc|		|jj|}d}|S#tj$rd}Y|SwxYw)NTF)r	winfo_rgbr+TclError)rr:rgboks    r_iscolorstringzTurtleScreenBase._iscolorstring2sK		''##E*CB	{{	B		s";;c	|-|jj||jy|jjdS)N)rr)rrDrrV)rr:s  r_bgcolorzTurtleScreenBase._bgcolor<s;	(GGNNN&LLN77<<%%rc	|\}}||jz}||jz}dddd}|jj|dz
||||||}	|jj	|	\}
}}}
|	|dz
fS)Nswrse)rQcenterr`r)textanchorrifont)rrrcreate_textrR)rr\txtalignrrXrrrrx0y0x1y1s              r_writezTurtleScreenBase._writeEs	#1
O
OT;ww""1Q33/7#Fd+BBRTzrc	 jj|d|zyfd}jj|d|z||y)N<Button-%s>cjj|jjzjj	|j
jz}}||yrrcanvasxrrcanvasyrrrPrrfunrs   reventfunz+TurtleScreenBase._onclick.<locals>.eventfun\P0<11$++=Aq	rr
tag_unbindtag_bindrrrnumaddrs` `   r_onclickzTurtleScreenBase._onclickSsL	
;GGt]S%89

GGT=3#6#Frc	 jj|d|zyfd}jj|d|z||y)Nz<Button%s-ButtonRelease>cjj|jjzjj	|j
jz}}||yrrrs   rrz-TurtleScreenBase._onrelease.<locals>.eventfunnrrrrs` `   r
_onreleasezTurtleScreenBase._onreleasebsQ	;GGt%?#%EF

GGT#=#C%s
,rc	 jj|d|zyfd}jj|d|z||y)Nz<Button%s-Motion>c	jj|jjzjj	|j
jz}}||y#t$rYywxYwr)rrrrrrrrrs   rrz*TurtleScreenBase._ondrag.<locals>.eventfunsg GGOOEGG4T[[@ GGOOEGG44T[[@A1I sA.A22	A>=A>rrs` `   r_ondragzTurtleScreenBase._ondragusN	;GGt%83%>?

GGT#6#<hLrc	jjd|zyfd}jjd|z||y)Nrcjj|jjzjj	|j
jz}}||yrrrs   rrz1TurtleScreenBase._onscreenclick.<locals>.eventfunrrrr]r>)rrrrrs``   r_onscreenclickzTurtleScreenBase._onscreenclicksD	;GGNN=3./

GGLL,h<rc	 |jjd|zdyfd}|jjd|z|y)Nz<KeyRelease-%s>cyrrrPrs rrz0TurtleScreenBase._onkeyrelease.<locals>.eventfunrrrrrrs `  r
_onkeyreleasezTurtleScreenBase._onkeyreleasesD	;GGNN,s2D9
GGLL*S0(;rc	?||jjddy|jjd|zdyfd}||jjd|y|jjd|z|y)Nz
<KeyPress>z
<KeyPress-%s>cyrrrs rrz.TurtleScreenBase._onkeypress.<locals>.eventfunrrrrs `  r_onkeypresszTurtleScreenBase._onkeypresssp	;{|T24d;
{\84_s2H=rc:	|jjyr)rr_rs r_listenzTurtleScreenBase._listens	rc	|dk(r|jj|y|jj||yNr)r
after_idlerrrts   r_ontimerzTurtleScreenBase._ontimers2	6GGs#GGMM!S!rc@	|jjdd|S)Nrimage)rcreate_image)rrs  r_createimagezTurtleScreenBase._createimages#	ww##Aq#66rc	|\}}|jj|||jz||jzf|jj	||yNr)rrrr
itemconfig)rrr\rrrs      r
_drawimagezTurtleScreenBase._drawimagesS	1ta$++orDKK/?@A4u-rcv	|jj|||jj|yr)rr	tag_lower)rrrs   r	_setbgpiczTurtleScreenBase._setbgpics2		
4u-$rc:	|jj|Sr)rrrs  r_typezTurtleScreenBase._types	ww||D!!rc	|jj|}tdt|dDcgc]}||||dzf}}|Scc}w)Nrrr)rrrangelen)rrripls     r
_pointlistzTurtleScreenBase._pointlistsX	WW^^D
!).q#b'1)=
>Ar!ur!A#wh
>
>
?sAcD|jj||||fy)Nr)rrD)rsrx1sry1srx2sry2s     r_setscrollregionz!TurtleScreenBase._setscrollregionsT4t$<=rc@|jj}|D]}t|jj|}g}|r8|dd\}}|j	||z|j	||z|dd}|r8|jj|g|y)Nr)rfind_allrrr)	rxscalefactoryscalefactorrrcoordinatesnewcoordlistrrs	         r_rescalezTurtleScreenBase._rescales  "	0Dtww~~d34KL"2A1##A$45##A$45)!"o	

DGGNN4/,/	0rc>	t|jts|j|jfS||cxur|cxur/nn,|jj|jjfS|||_|||_|jj|||yr)rrrrrrarHs    r_resizezTurtleScreenBase._resizes	$''>2>>4??22
0b077$$dgg&8&888 &DN!(DO

iR0rc	|jj}|dkr|jd}|jj}|dkr|jd}||fS)Nrr|r)rrJrK)rr|rs   r_window_sizezTurtleScreenBase._window_sizes_	##%A:GGG$E%%'Q;WWX&Ff}rcN	|jjjyr)rtkrrs rrzTurtleScreenBase.mainloops		


rcH	tj|||jS)N)parent)r	askstringr)rr*prompts   rr)zTurtleScreenBase.textinput%s"	%%eVDGGDDrcN	tj||||||jS)N)initialvalueminvaluemaxvaluer)raskfloatr)rr*r!defaultminvalmaxvals      rrzTurtleScreenBase.numinput4s.	"$$UF.4v,0GG5	5r)NNNFrrNra)$rrrrrr-rrrrrrrrrrrrrrrrrrrrrrr
rrrrrr)rrrrrrs<(O
3705(28-1-2(.
&
G,&M*=$	<>$
"7
. "
>
0
1	

E5rrceZdZ	y)rNrrrrrrrrPs
	rceZdZy)TurtleGraphicsErrorNr,rrrr.r.Ysrr.ceZdZ	ddZddZy)rNcb||_|dk(r#t|trt|}||_y|dk(rWt|trd|jj
drEt|r:tj|}||_y|dk(r
g}||_ytd|z||_y)Npolygonr.gifcompoundzThere is no shape type %s)rrrrrlowerendswithrr	rr._data)rtype_datas   rr-zShape.__init__es
I$%T{
g
$$::<((0VD\'..t4D
	j
 D
&&AE&IJJ
rc	|jdk7rtd|jz||}|jj|||gy)Nr3z Cannot add component to %s Shape)rr.r6r)rpolyrirs    raddcomponentzShape.addcomponentusW	::#%&HBF**'MN
N?G

4w/0rr)rrrr-r;rrrrr^s 1rrc6eZdZ	ddZd	dZdZdZdZdZy)
TbuffercF||_dgg|z|_d|_d|_y)NrF)bufsizebufferptrcumulate)rr?s  rr-zTbuffer.__init__s'vh(
rNc|2t|jD]}dg|j|<d|_y||_dgg|z|_d|_y)Nr)rr?r@rA)rr?rs   rraz
Tbuffer.resetsW?4<<(
("&A
(
#DL 6(W,DKrc|jdkDrp|js;|jdz|jz|_||j|j<y|j|jj	|yyr)r?rBrAr@rrs  rpushzTbuffer.pushs_<<!== HHqLDLL8(,DHH%DHH%,,T2rc|jdkDrY|j|j}|ydg|j|j<|jdz
|jz|_|Syr)r?r@rArs  rpopzTbuffer.pops^<<!;;txx(D|)-DHH% HHqLDLL8
rcT|j|jjdgz
Sr)r?r@countrs rnr_of_itemszTbuffer.nr_of_itemss"||dkk//777rc^t|jdzt|jzS)N )rr@rArs rrzTbuffer.__repr__s#4;;#%DHH
55r)rr)	rrrr-rarErGrJrrrrr=r=s#?
386rr=ceZdZ	dZedededfdZdZd dZd	Zd d
Z	dZ
dZd d
ZdZ
dZdZd!dZd dZdZdZdZdZdZdZd"dZdZd dZd!dZd#dZd dZd$dZeZe
Z eZ!e	Z"eZ#y)%r	Trrrc
tj||tddtddtddtddtddtddtd|jd	|_d
di|_||_||_td|_	g|_
|jtjd
k(r;|j}|jddddd|jdddddyy)Nr1)rrrrr))r))rr))	)))rXr))r\)r\r`)rVr^rrX)r^)r`)r[r\)r]r_)rWr)rcr])rYr[)rWrY)rbrW)rr)rrU)rQ)Q#@Q@)Gz. @Q@)rgrf)rerdrR)Qrd)Qrf)Gz. rg)Q#rerO)rkrh)rjri)rirj)rhrk)gg$)rerk)rgrj)rfri)rdrh))rrP)rr)rPr)rPrP))rGz)rg'@)rPrl)rr)r^rZra)r]rZr)arrowrr5squaretrianglerrnopicrrdarwinwm
attributesrz-topmost10)rr-rr_shapes_bgpics_mode_delayvaluer
_colormode_keysr6sysplatformr.call)rrrrr
rootwindows      rr-zTurtleScreen.__init__s	!!$+#9.GH"9/&'
#9/HI#9/)*"9/+,"9.KL"7D,<,<,>?%* "~
 {+


<<8#**,JOOD,ZEOOD,ZE
$rc	td|_td|_|jd|j	d|_d|_d|_d|_g|_	|jdd	D]}|jd||jd|jddD]&}|jd||jd|(dt_y)
Nrrallrrqrrr)rr)rrzr{rr_bgpic
_bgpicname_tracing_updatecounter_turtlesrrSr r|rr_pen)rbtnrs   rr6zTurtleScreen.clears	 ={+U''+!

W	$CLLs#	$::a=	'CJJtS!OOD#&	'rNcL	||jS|j}|dvrtd|z||_|dvrX|j|jdz|j
dz|jdz|j
dzdx|_|_|jy)NrlogoworldzNo turtle-graphics-mode %s)rrrr)	ryr4r.rrrrrrarrs  rrzTurtleScreen.modes	*<::zz|44%&BT&IJJ
''!!4>>/1"4t6F6I'+~~q'8$//1:L
N(++DK$+

rcv	|jdk7r|jdt||z
}t||z
}|j\}}|j|dz
|dz
|j|j
}
}	|j|z|_|j|z|_||jz}||j
z}|j|z}
|j|z}|j|||
||j|j|	z|j
|
z|jy)Nr)rrrr&rrrrrrr-)rllxllyurxuryxspanyspanwxwy	oldxscale	oldyscalerr
rrs               rr(z TurtleScreen.setworldcoordinates$s	*99;'!IIgcCi cCi ""$B2r"u%#{{DKK9	nnu,oo-T[[ tdkk!~~$%dD$5

dkk)+T[[-BC
rc	|F|jjdrtd|j|}n't	dt|trtd|}||j|<y)Nr2rz;Bad arguments for register_shape.
Use  help(register_shape)r1)r4r5rrr.rrrw)rnamerls   rr$zTurtleScreen.register_shapeKsp	,=zz|$$V,gt{{4'89)+HJJ
u
%)U+E"Trc	t|dk(r|d}t|tr/|j|s|dk(r|St	dt|z	|\}}}|jdk(r#|||fDcgc]}td|zc}\}}}d|cxkrdkrnnd|cxkrdkrnn
d|cxkrdksnt	d	t|zd
|||fzS#t
tf$rt	dt|zwxYwcc}w)Nrrrzbad color string: %sbad color arguments: %sro@bad color sequence: %s
#%02x%02x%02x)	rrrrr.	TypeErrorrr{round)rr:rgbrs      r	_colorstrzTurtleScreen._colorstrns	u:?!HEeS!""5)Ub[)*@3u:*MNN	NGAq!??c!011ay9!uU1W~9GAq!a3Q!]s]a3%&>U&KLL!Q**
:&	N%&?#e*&LMM	N:sC1C?'C<c	@|jds|St|dk(r dDcgc]}t|||dzd}}n?t|dk(r#|ddDcgc]}dt||dz}}ntd|zt	fd	|DScc}wcc}w)
NrrW)rrr]rrSrbrzbad colorstring: %sc3BK|]}|jzdzyw)rN)r{).0rrs  r	<genexpr>z&TurtleScreen._color.<locals>.<genexpr>s9Q(,9s)rrrr.r)rcstrrrrs`    r_colorzTurtleScreen._colorss#Kt9>09:1#d1QqSk2&:B:
Y!^/3ABx8!"Sa"%%8B8%&;d&BCC9b999;8sBBcz	||jS|dk(rt||_y|dk(rt||_yy)Nrr)r{rr)rcmodes  rrzTurtleScreen.colormodesA	=??"C<#ElDO
c\!%jDOrc~	|jD]-}|j|j|j/yr)r_setmoderyra)rrs  rrazTurtleScreen.resets5	mm	FOODJJ'LLN	rc	|jSr)rrs rr,zTurtleScreen.turtless	}}rc|	|r|j|}nd}|j|}||j|}|Sr)rrrrrTr:s   rrzTurtleScreen.bgcolorsF	NN4(EE

e$KK&Erc	||jSt||_d|_|t||_|jr|j	yyr)rrrrzr-)rnrs   rr+zTurtleScreen.tracersR	$
9== A
"5zD==KKMrcB	||jSt||_yr)rzrrs  rrzTurtleScreen.delays&		=###u:rc	tjsdt_t|jdkDr5|xjdz
c_|xj|jzc_yy)NTrr)r	_RUNNINGrrrrs r
_incrementudczTurtleScreen._incrementudcsS'$$$(L!==11$4==0rc	|j}d|_|jD]"}|j|j$||_|j	yNT)rr,_update_data_drawturtler)rtracingrs   rr-zTurtleScreen.update	sQ	--
	A
NN
MMO	 
rc*	|jdSrrrs rr/zTurtleScreen.window_width	  "1%%rc*	|jdSNrrrs rr.zTurtleScreen.window_heightrrc	|jSr)rrs rrzTurtleScreen.getcanvas&s	wwrcJ	t|jjSr)sortedrwrrs rrzTurtleScreen.getshapes2s!	dll'')**rc,	|j|||yr)rrrrrs    rrSzTurtleScreen.onclick=s
		
Cc*rc	|*||jvrE|jj|n)||jvr|jj||j||yr)r|removerrrrrs   rrzTurtleScreen.onkeyNsZ	,;djj 

!!#&



"JJc"3$rc	|*||jvrG|jj|n+|)||jvr|jj||j||yr)r|rrrrs   rr zTurtleScreen.onkeypressls^	0;djj 

!!#&
_DJJ!6JJc"c"rc&	|jyr)r)rxdummyydummys   rrzTurtleScreen.listens		
rc*	|j||yr)rrs   rr#zTurtleScreen.ontimers	$	


c1rc	||jS||jvr|j||j|<|j|j|j|||_yr)rrxrrr)rpicnames  rrzTurtleScreen.bgpics]	 ???"$,,&$(KK$8DLL!t{{DLL$9:!rc*	|j|||Sr)rrHs    rr&zTurtleScreen.screensizes	 ||Iz266rrNNr*rra)$rrrrrr-r6rr(r$rrrrar,rr+rrr-r/r.rrrSrr rr#rr&r"r%rrr!rrrr	r	sH $V,DM&FP< D%N!#F+6	:)*
.8
&1	&&
	++"%<#@
*"07&MKKHLrr	cJeZdZ	eddeddedddZdZdZdZefdZdZ	d)d
Z
dZd*dZd
Z
dZdZdZd+dddedd	fdZdZdZdZdZdZdZdZd)dZdZdZd Zd)d!Zd)d"Zd#Z d$Z!d+d%Z"d,d&Z#d+d'Z$d)d(Z%eZ&eZ'eZ(eZ)eZ*eZ+eZ,eZ-e!Z.y	)-
TNavigatorr)rrrrrrc|j|_|j|_||_d|_|j
d|_|j|tj|yr)
DEFAULT_ANGLEOFFSET_angleOffsetDEFAULT_ANGLEORIENT_angleOrientry
undobufferr;rrrars  rr-zTNavigator.__init__sV 44 44



drcl	tdd|_tj|j|_y)Nr)r	_positionrSTART_ORIENTATIONry_orientrs rrazTNavigator.resets,	sC"44TZZ@rNc	||jS|dvry||_|dvrd|_d|_y|jdz|_d|_y)Nr)rrrr@r)ryrr_fullcirclers  rrzTNavigator._setmodes]	<::44
(( !D !D $ 0 0 3D "Drcj	||_d|z|_|jdk(rd|_y|dz|_y)Nihrrr)r
_degreesPerAUryrr
fullcircles  r_setDegreesPerAUzTNavigator._setDegreesPerAUs99% ^::# !D *2
Drc(	|j|yr)rrs  rr;zTNavigator.degreess	*	
j)rcD	|jtjyr)rrtaurs rr_zTNavigator.radians,s
		
dhh'rc`	|j|j|zz}|j|yr)rr_goto)rr<endes   r_gozTNavigator._go:s(7~~x 77

4rcd	||jz}|jj||_yr)rrrrrs  r_rotatezTNavigator._rotate?s+K
###||**51rc	||_yrr)rends  rrzTNavigator._gotoDs*rFfill_gaprreturnct	||n|jd}||n|jd}t|||_yr)rr)rrrrnew_xnew_ys      rrtzTNavigator.teleportHs=	(]q(9]q(9ue,rc(	|j|yrrrr<s  rrDzTNavigator.forwardOs	(	
rc*	|j|yrrrs  rr0zTNavigator.backfs	"	
(rc*	|j|yrrrs  rr`zTNavigator.rightzs	$	
eVrc(	|j|yrrrs  rrQzTNavigator.lefts	$	
Urc	|jSrrrs rr\zTNavigator.poss		~~rc"	|jdSrrrs rr~zTNavigator.xcor
	~~a  rc"	|jdSrrrs rrzTNavigator.ycorr	rcp	||jt|y|jt||yr)rr)rrrs   rrJzTNavigator.gotos0	:
9JJuay!JJuQ{#rcL	|jdd|jdyr)rJrers rrMzTNavigator.homes"			
		!QrcV	|jt||jdyrrrr)rrs  rrjzTNavigator.setxs%		

5DNN1-./rcV	|jt|jd|yrr)rrs  rrkzTNavigator.setys%		

5*A./rc	|t||}t|tr|}n5t|tr	t|}nt|tr|j}t|jz
Sr)rrrrrabs)rrrr\s    rr<zTNavigator.distance#sb	*
=1+CaC
5
!)C
:
&++C3'((rc	|t||}t|tr|}n5t|tr	t|}nt|tr|j}|jz
\}}tt
jt
j||ddz}||jz}|j|j|zz|jzSNrv@)
rrrrrrrr;atan2rrrr)rrrr\results     rrwzTNavigator.towardsCs	*
=1+CaC
5
!)C
:
&++CT^^#1t||DJJq!$45r:UB$$$$!!D$5$5f$<<@P@PPPrc	|j\}}ttjtj||ddz}||j
z}|j|j|zz|jzSr)	rrrr;rrrrr)rrrrs    rrKzTNavigator.headingfsr	||1t||DJJq!$45r:UB$$$$!!D$5$5f$<<@P@PPPrc	||jz
|jz}|j}||dzz|z|dzz
}|j|y)N@)rKrrr)rto_anglerfulls    rrezTNavigator.setheadingusV	,DLLN*D,=,==tBw$tBw.Urc		|jr-|jjdgd|j_|j}||j}|Bt||jz}dt
tdt|dzzd|zz}d|z|z}d|z}d	|ztjtj||jzz}|d
kr	|||}}}|j}	|j}
|d
k(r|jd
d
n|jd
|j|t|D]F}|j||j!||jd
|j|H|j||d
k(r|j|	|
|j||jrd|j_yy)NseqTrg@gM@rrrrF)rrErBrqrrrminrrr_r_tracerrrrr)rradiusextentstepsrqfracrw2ltrdlrs            rr5zTNavigator.circles	:??OO  %)'+DOO$

>%%F=v;t///Dc#bVS0$7<==E&L5 
1W&L488DLL$4T5G5G$GHHA:rA2s"qA
\\^
[[]A:LLAJJqMRu	AJJuHHQKJJqMLLO		
	
bSA:LLR 

5??',DOO$rcyrr)rrs  rrqzTNavigator.speed=rcyrr)rars   rr zTNavigator._tracerr*rcyrr)rrs  rrzTNavigator._delayr*rr)rrr)/rrrrrDEFAULT_MODErrr-rarrr;r_rrrboolrtrDr0r`rQr\r~rrJrMrjrkr<rwrKrer5rqr rrAr4r1rcrRr]rfrgrdrrrrrs#sO#sO#sO'L(A
#.*0(
2
-5-D-T-.(**!!!$F0$0$)@!QF
Q8=-B>>>
B	
BH	B	
BH
FKDrrceZdZ	edfdZededfdZddZddZd	Zd
Z	dZ
ddZd
ZdZ
dZddddeddfdZdZdZdZddZddZd dZdZdZeZeZeZe	Ze	ZeZeZy)!TPenrbcJ||_d|_tj|yr)_resizemoderr1_reset)rrbs  rr-z
TPen.__init__s%DrrXrBcd|_d|_||_||_d|_d|_d|_d|_d|_d|_	d|_
y)NrTr)rrr)rrrr)_pensize_shown	_pencolor
_fillcolor_drawing_speed_stretchfactor_shearfactor_tilt_shapetrafo
_outlinewidth)rrXrBs   rr4zTPen._resetsS
!#
&
+rNcp	||jS|j}|dvr|j|yy)N)autouserrrb)r3r4rW)rrmodes  rrbzTPen.resizemodesA	*=###
00HHH&1rcF	||jS|j|y)N)rZ)r6rW)rr|s  rrZzTPen.pensizes&	"=== rcD	|jsy|jdyNFrYr:rWrs rr[z
TPen.penup.s!	}}rcD	|jry|jdy)NTrIrJrs rrYzTPen.pendown<s!	==rc	|jSr)r:rs rrOzTPen.isdownJs	}}rc	dddddd}||jS||vr||}n%d|cxkrdkrnntt|}nd}|j|	y)
Nrrrcrr)fastestfastnormalslowslowestrg%@)rq)r;rrrW)rrqspeedss   rrqz
TPen.speedYsf	4b1Q!M=;;F?5ME
5
4
e%EEurc8	|rbt|}|dk(r|dx}}n|dk(r|\}}n	|dk(r|x}}|j}|j}|j||y|j|j|j|j
fS)Nrrrr)rXrB)rrrWrr8r9)rrTr&pcolorfcolors     rr:z
TPen.colors	>D	AAv"&q')a!%a"&&^^F+F^^F+FHHfH7;;t~~.DOO0LLLrc	|r4|j|}||jk(ry|j|y|j|jS)N)rX)rr8rWrrs   rrXz
TPen.pencolorsJ	8NN4(E&HHeH$;;t~~..rc	|r4|j|}||jk(ry|j|y|j|jS)N)rB)rr9rWrrs   rrBzTPen.fillcolorsJ	6NN4(E'HHuH%;;t//rFrrrcr	|j}|r|jd|j|yrH)rOrW)rrrrrYs     rrtz
TPen.teleports3	++-HHUH#!rc*	|jdy)NTshownrWrs rrpzTPen.showturtles			
trc*	|jdy)NFr[r]rs rrLzTPen.hideturtle	s		
urc	|jSr)r7rs rrPzTPen.isvisible	s	{{rc	|j|j|j|j|j|j
|j|j|j|j|jd}|s|s|St|tr|}ni}|j|i}|D]
}||||<|jr|jjd|fd}d|vr|j|dk7rd}d|vr?t|dt r|j#|df|d<|j|dk7rd}d|vr|j|dk7rd}|r|j%d|vr
|d|_d|vr
|d|_d|vr
|d|_d|vr5t|dt r|j#|df|d<|d|_d	|vr
|d	|_d
|vr
|d
|_d|vr&|d}t|t&t(fr||f}||_d|vr
|d|_d
|vr
|d
|_	d|vr
|d|_d|vr
|d|_
d|vsd|vsd|vr}|j\}	}
|j}t+j,|jt+j.|j}
}|	|
z|
||
z|zz|	|z|
|
||zz
zf|_|j3y)N)r\rYrXrBrZrqrb
stretchfactorrorrurWFrYTrXrZrBrqrbrarorr\ru)r7r:r8r9r6r;r3r<r=r@r>rdictr-rrErr_newLinerrrrrr?r)rrWpendict_pdp_p_bufrnewLinesfscxscyshfsacas              rrWzTPen.pen(	s-	\#'++"&--"&.."&//"&--"&++"&"2"2"&"5"5"&"3"3"&"4"4"&**wJc4 AA		#Cc(F3K	#??OO  %1>}}),?!J-/ $*
/? @*
~~:.>}}),MMO>iLDM?z]DN>iLDM!!K.%0!%;0A!B+nDOa<G*DK1 Da?#B"sEl+"X"$DA !- 0D>!"9Da<G*DKQ;6DJa6Q;-12D**HC##CXXdjj)488DJJ+?B!$Rc"frk):!$Rb3r6k): <DrcyrrrusePoss  rrcz
TPen._newLine	r*rcyrr)rrIforceds   rrzTPen._update	r*rcyrrrSs  rrzTPen._color	r*rcyrrrSs  rrzTPen._colorstr	r*rrrT)TF) rrrrr-r4rbrZr[rYrOrqr:rXrBr/rtrprLrPrWrcrrrr|r{r^rVr>rrrNrrrr1r1s#'|"4
#:.#K0'8 . 
$L,M\#/J"0H"5"D"T" 
{~>>>>
E	B	B	BD	B	Brr1ceZdZ	dZdZy)_TurtleImagecB||_d|_|j|yr)rr	_setshape)rr
shapeIndexs   rr-z_TurtleImage.__init__	s
z"rc6|j}||_|jdcxk(r|j|jk(ry|jdcxk(r|j|jk(ry|jdvr|j	|j
n1|jdk(r"|j
D]}|j	||j|j|_|jdk(r|j
|_y|jdk(r.|j|jdj|_y|jdk(r;|j|jDcgc]}|j
c}|_yycc}w)Nr1r)rr1r3r)	rr{rrwr_itemrrr6)rr{rrs    rrzz_TurtleImage._setshape	sR$::FfnnZ&@&F&FFG::DFNN:$>$D$DDE::--NN4::&
ZZ:
%


%t$
%^^J/55
::"++-DJ
ZZ7
",,V^^G-D-J-JKDJ
ZZ:
%*0..*D*J*JL4&,,.LDJ&Ls5FN)rrrr-rzrrrrxrx	s#
LrrxceZdZ	gZdedededfdZdZdZdZd	Z	d
Z
dZdZd;d
Z
dZdZdZd;dddeddfdZdZd<dZd=dZd<dZdZd<dZdZd>dZdZdZd?d Zd!Zd"Zd#Z d$Z!d<d%Z"d&Z#d'Z$d(Z%d@d)Z&d*Z'd+Z(d,Z)d<d-Z*d.Z+dAd/Z,d0Z-d1Z.d2Z/d3Z0d4Z1e1Z2d<d5Z3dBd6Z4dBd7Z5dBd8Z6d9Z7d:Z8eZ9y)CrNrlrrc
t|tr||_nt|tr9|tj
vrtj
j
|||_nt|ttfrgtj
D]}|j|k(s||_nIt||_tj
j
|jntd|z|j}tj||jtj||jj
||j!|_t%|||_d|_d|_dx|_|_||_d|_|j!|_|j6g|_|j4g|_g|_||_tA||_!|jEy)Nzbad canvas argument %sF)#r_Screenrr	rscreensrrr0rr.rr-rr1rrdrawingLineItemrxr_poly
_creatingPoly	_fillitem	_fillpathr7_hidden_from_screencurrentLineItemrcurrentLiner
stampItems_undobuffersizer=rr)rcanvasrlrrrs      rr-zRawTurtle.__init__	sfg& DK

-Y...!!((0 DK
 8
9#++
699&"(DK
6
+62!!((5%&>&GHHD&++-0

dt$%113"651
"*..#( %113 NN+**+
-!.1rc	tj|tj||j	|j|j
yr)rrar1r4_clearrrrs rrazRawTurtle.reset
sA	$	D
rcD	||dkrd|_yt||_yr)rr=)rsizes  rrizRawTurtle.setundobuffer 
s&	<419"DO%dmDOrcR	|jy|jjSr)rrJrs rrzzRawTurtle.undobufferentries3
s)	??"**,,rc	dx|_|_|jD]}|jj	||jj|_g|_|jr%|jj|j|jg|_|j|j|jyr)rrrrrrrrr:rrr8rirrs  rrzRawTurtle._clear@
s**..JJ	&DKK%	&#{{668==##DNN3**+
4//0rcF	|j|jyr)rrrs rr6zRawTurtle.clearN
s
		

rc*|jj|jjdk7ryt|jdkDrG|jj|j|j|j|jyyr)	rrrrrrrr8r6rs rrzRawTurtle._update_data]
so!!#;;%%*t "KK!!$"6"68H8H"&..$--
A#rc	|j}|jdk(ry|jdk(rL|j|j|j	|j|jy|j|jdk(r6|jD]}|j|j	yyr)	rrrrrrrzrr,)rrrs   rrzRawTurtle._updatee
s	??a
__
!NNMM&,,-$$))$AMMO$ *rc<	|jj||Sr)rr+)rflagrs   rr zRawTurtle._tracerw
s 	${{!!$..rc8|jj|Sr)rrrSs  rrzRawTurtle._color
s{{!!$''rc8|jj|Sr)rrrSs  rrzRawTurtle._colorstr
s{{$$T**rc	t|tr|S	|\}}}|j
jdk(r#|||fDcgc]}td|zc}\}}}d|cxkrdkrnnd|cxkrdkrnn
d|cxkrdksnt	dt|zd|||fzS#ttf$rt	dt|zwxYwcc}w)Nrrrrrrr)rrrrr.rr{r)rrTrrrrs      r_ccz
RawTurtle._cc
s	dC K	MGAq!;;!!S(011ay9!uU1W~9GAq!a3Q!]s]a3%&>T&JKK!Q**
:&	M%&?#d)&KLL	M:sBC	'CFrrrcT	|j}|j}|r|jd|r|s|j||n|jd}||n|jd}t|||_|j||r|s|j
yyy)NFrIrr)rOrCrWr?rrr2)rrrrrYwas_fillingrrs        rrtzRawTurtle.teleport
s!	D++-llnHHUH#xMMO]q(9]q(9ue,!xOO (;rcv	|j}|j|j|j}d|_d|_t	|}||_||_||_t||jj|_|jj||j|jjj}|dk(r |j|j_n|dk(r8|j|jdj|j_n]|dk(rX|j|jjjDcgc]}|jc}|j_|j|_|j#|Scc}w)Nr1rrr3)rrcr:rrrxr{rrrwrrr}rr6rrr)rrrqttypers      rr9zRawTurtle.clone
sS
	

dmm$TN(>(>?q!t{{556<<I#//1AHHN
g
#001H1N1NOAHHN
j
 $nnT[[-C-CDJJLtf002LAHHN"..0				Ls&F6c	||jjS||jjvrt	d|z|jj||j
y)NzThere is no shape named %s)rr{rrr.rzr)rrs  rrlzRawTurtle.shape
s_	&<;;)))t{{,,..%&BT&IJJd#rc*	||cxur|cxur!nn|j\}}|||jfS|dk(s|dk(rtd||||f}n%||f}n ||jd|f}n|j}||j}|jd||y)Nrz(stretch_wid/stretch_len must not be zerorC)rbrar)r<r@r.rW)rstretch_widstretch_lenrras     rrmzRawTurtle.shapesizes	(+88'+':':$KT-?-???!{a/%&PQQ"" +[ 8
 +[ 8


$ //2K?M //M?((GF,g		?rcH	||jS|jd|y)NrC)rbro)r=rW)rshears  rrozRawTurtle.shearfactor<s*	$=$$$F6rcX	tjddd|j|y)Nzturtle.RawTurtle.settiltangle()zn{name!r} is deprecated since Python 3.1 and scheduled for removal in Python {remove}. Use tiltangle() instead.)r
)r)warnings_deprecatedrvrs  rrhzRawTurtle.settiltangleSs1	(	>X$+	-	
urcH	|Itj|j|jz}||jz|j
zS||jz|jz}tj|tjz}|jd|y)NrC)rbru)	rr;r>rrrr_rrW)rrrus   rrvzRawTurtle.tiltanglens	<=LL,,t/@/@@D4---1A1AAA6D...1B1BBD<<%0DHHTH2rcJ	|j||jzyr)rvrs  rruzRawTurtle.tilts!	 	
ut~~//0rc&	||cxur|cxur|cxur

|jS|j\}}}}||}||}||}||}||z||zz
dk(rtd||||f|_tj||tjz}	tj
|	tj|	}}
||z|
|zz
||z|
|zz
|
|z||zz|
|z||zzf\}}
}}||f|_|
|z|_|	|_	|jdy)Nrz0Bad shape transform matrix: must not be singularrCrD)r?r.rrrrrr<r=r>rW)rt11t12t21t22m11m12m21m22alfarmrna11a12a21a22s                rrnzRawTurtle.shapetransformsB	&#+++###,!--S#s?#C?#C?#C?#C9sSy A%%&XYYc3/zz3$$txx/$$B fr#vor#v3 fr#vor#v3@S#s!3hG
F#rc	l	|j}|j\}}|j\}}t|||jz|j
z}dt
|z|z\}}|D	cgc]<\}}	|||z||	zz|j
zz|||z||	zz|jzzf>c}	}Scc}	}w)Nr)rrrrrrr)
rr:rp0p1e0e1errs
          r
_polytrafozRawTurtle._polytrafos	BB"b6==(6==89A,!#BIMO?E1RT"Q$Y

--rB3q5A:v}}2L/LMO	OOs+AB0c	|jj|jj}|jdk(r)|j|j|jdk(Sy)Nr1r3)rrwrr{r
_getshapepolyr6)rrls  rrHzRawTurtle.get_shapepolysX
	##DKK$:$:;;;)#%%ekk5;;*3LMM$rc
	|jdk(s|r|j\nE|jdk(r%td|jdz}|dd|f\n|jdk(r|St	fd|DS)NrCrBrg@rrc3PK|]\}}|z|zz|z|zzfywrr)rrrrrrrs   rrz*RawTurtle._getshapepoly.<locals>.<genexpr>s2JAc!ec!emSUSU]3Js#&)r3r?maxr6r)rr1r3r&rrrrs    @@@@rrzRawTurtle._getshapepolys	v%!%!1!1Cc3



'At}}S()A!"Aq!Cc3



+NJ'JJJrc		|j}|j|jj}|j}|jj
}|jrd|jdk(rT|jdkDrDd|_	|j}|dk(r|jdk(rd}n(|jdk(r
|j}n|j}|j|j|}|j |j"}}|j%|||||dy|d	k(r|j'||j(|y|d
k(ryt+||D]i\}	\}
}}|j|j|
d}
|j%|	|
|j-||j-||jdkyy|jry|dk(r|j%|dddnZ|d	k(r5|j'||j(|jd
jn |d
k(r|D]}	|j%|	dddd|_	y)NrFr1rrrBTrirr|rrr3rmrmrmrr)rrwrr{rr}r7rrrr6r3r6r@rrr9r8rrrzipr)rrrlrtitemtshaperfcocrr:s           rrzRawTurtle._drawturtles)	8t{{556!!;;600A5&//A:M',D$[[F	!##z1q1%%/T]]++a(:(:6(BC$..B  B<=4!I'!!!%@*$,/v,>_(D.4R??4+=+=dD+IJD$$T4dhhrl-1XXb\ASASY]%__%''	!  (@"bI'!!!%*0..*A*G*GI*$!MD$$T+CRLM'+D$rc		|j}|j|jj}|j}|j
}|dk(r|j
}|jdk(rd}n(|jdk(r
|j}n|j}|j|j|}|j|j}}|j|||||dn|dk(r/|jd}|j!||j"|n|d	k(rg}|D]#}	|j
}
|j%|
%t'|}t)||D]i\}
\}}}|j|j|d}|j|
||j+||j+||jdk|j,j%|j.j1d
|f|S)Nr1rrrBTrrrr3rs)rrwrr{rr6rr3r6r@rrr9r8rrrrrrrrrrrE)rrrlrrstitemrrrelementrr:s            rrszRawTurtle.stamp"s
	t{{556I'')F:-1q!!V+Q''!OOD$6$6v$>?E__dnnBVUR89t

E
g
((,Ffdnnf=
j
 F!
$))+

d#
$6]F(+FF(;
[$ntRt'9'9$'EF  t$((2,)-"T=O=OUY![
[	
v&gv./
rcl	||jvrit|tr#|D]}|jj	|n|jj	||jj|d|f}|j}||jvry|jj|}|jj|||jkr!|jdz
|jz|_	|jj|jdz|jzdgy)Nrsr)rrrrrrrr@indexrAr?insert)rstampidsubitemrbufrs      r_clearstampzRawTurtle._clearstampOs	doo%'5)&1GKK''01##G,OO""7+!ooszz!

  &

$CGGww{ckk1CG

37719ckk1D6:rcH	|j||jyr)rr)rrs  rr7zRawTurtle.clearstampes 
		
!rc	||jdd}n$|dk\r|jd|}n|j|d}|D]}|j||jyr)rrr)rrtoDeleters    rr8zRawTurtle.clearstampstsi	"
9q)H
!Vr*Hqr*H	#DT"	#rc
	|j|j|jt|jt
f}|j}d|j|||j|jdd|j|j|jddff}|jr|jj||j}|jr1|jdk(r!||z
}|d|j zdz|d|j"zdzz}dt%|dzdd|jzz|jzzz}|d|zz}	t'd|D]t}
|
dk(rd	}nd
}||	|
zz|_|jr?|j)|j*||jf|j|j||j-v|jr)|j)|j*dd|j
|jr|jj/|t|jt
r|jj/|||_|j0r|j2j/|t5|jdkDr|j7|j-y)Ngorrrrr皙?rTFrmrmrrir|*)r:r8r6rrrrrrrr
rrrEr;rrrrrrrrrrrrrc)rrgo_modesr
undo_entrystartdiffdiffsqnhopsdeltarrs            rrzRawTurtle._gotosf	
]]^^]]57DNNC++&&q)''(<(<=jjm%
??OO  ,;;6??a/ID1gfmm+a/476==3H12LLFc63;C,<)=dkk)IJKKECI&E1e_

6CC!&!2==$$T%9%9&+T^^%<%)^^T]]CI

}}  !5!57G46dmm!M==##C(dnnd+NN!!#&JJc"t 2%MMOrcV	|\}}}}|\}}}}	|\}
}}}
|j}t|j|z
dkDrtd|
|_||_|ddgk(rd}n|}|j
|
||||jDcgc]}||
vs|j|dk(r|}}|D].}|j||jj|0|}|jr|jdk(r||z
}|d|jzd	z|d|jzd	zz}dt|dzd
d|jzz|jzzz}|d|zz}t!d|D]V}|dk(rd
}nd}|||zz|_|r+|j
|j"||jf||||j%X|r|j
|j"dd|||_|j&rOt)|j*dkDr|j*j-|j*gk(rd|_d|_|	rH|j.gk(rd|_tdn&|j.|j.j-|j%ycc}w)Nrz$undogoto: HALLO-DA-STIMMT-WAS-NICHT!rmrrrrrrrrrTFrzUnwahrscheinlich in _undogoto!)rrrrrrrrrrrr;rrrrrrrrrrrGr)rentryoldnewrcoodatadrawingpcpsrCcLIcLr	rrusepcrtodeleterrrrrrrs                         r	_undogotozRawTurtle._undogotos	&+#S(G#+ R$RUt~~#$s*9:"
&&!!EEbuB7#zzD!aun(.Q6(ADD	!ANN1JJa 	!;;6??a/9D1gfmm+a/476==3H12LLFc63;C,<)=dkk)IJKKECI&E1e_

6CC!$uqy$$T%9%9&+T^^%<%'S2

  !5!57G46b!B
4::"

 zzR%*"!
~~#!%67+""$YDs	J&J&c&	|jr(|jjd||jf||jz}|jj	|}|j
j}|dk(r|jdkDrqd|jz}dtt||zz}d|z|z}t|D]2}|jj	||_|j4||_|jy)Nrotrrg@r)rrErrrrrr;rrrr)rr	neworientranglevelr#rrs        rrzRawTurtle._rotate
s	??OO  %0B0B!CD
###LL''.	++&&a<DKK!OT[[(HCJx/00EIeOE5\
#||2259
!rc	t|jdkDr|jj|j|j|j
|j|jj|_|jj|jn'|jj|jdg|_|r|jg|_yy)NrT)r)rrrrrr8r6rrrrrps  rrczRawTurtle._newLine
s	t 1$KK!!$"6"68H8H&*nndmm
E#';;#:#:#<D JJd223KK!!$"6"6D!A $/Drc8	t|jtSr)rrrrs rrCzRawTurtle.filling(
s
	$..$//rcx	|jsD|jj|_|jj|j|jg|_|j|jr'|jjd|jf|jy)N	beginfill)rCrrrrrrrrcrrErrs rr2zRawTurtle.begin_fill6
s~		||~![[446DNJJdnn-..)

??OO  +t~~!>?rcr	|jrt|jdkDro|jj	|j
|j|j|jr'|jjd|j
fdx|_|_|jyy)Nrrdofill)
rCrrrrrr9rrErrs rr?zRawTurtle.end_fillK
s		<<>4>>"Q&%%dnndnn+/??&<??OO(((DNN)CD.22DNT^LLNrcZ	|s}t|ttfr5|j|}|jt|jdz}nh|j}|sZ|jt|jdz}n6|#|jt|jdz}|j|}|j}|jr-|jjdgd|j_
	|jdk(r|j|j|j||j||j!d|j||jrd|j_
yy#|j|wxYw)NrbrTrBrF)rrrrr6rr8rWrrErBrbrNrYrZrXrD)rrr:rWs    rr=z
RawTurtle.dot_
s?	$e-t,}}s4==!'<<==3t}}a+@@D|}}s4==!'<<NN5)Ehhj??OO  %)'+DOO$	 F*	LLNLLMM% LLOHHSM??',DOO$
HHSMs
A&FF*c	|jj|j||||j\}}|j	|j
j
||jr|jjd|f|S)Nwri)	rrrr8rrrrrE)rrrrrrs      rrzRawTurtle._write
sp	KK&&t~~sE4:>..J	c

$??OO  %/
rcV	|jr-|jjdgd|j_|jt	||j|}|r%|j
\}}|j|||jrd|j_yy)NrTF)rrErBrrr4r\rf)rargmoverrrrrs        rr}zRawTurtle.write
s	$??OO  %)'+DOO$kk#c(EKKM4888:DAqKKQ??',DOO$rc8	|jg|_d|_yr)rrrrs rr3zRawTurtle.begin_poly
s		nn%
!rc	d|_yNF)rrs rr@zRawTurtle.end_poly
s		#rcH	|jt|jSyr)rrrs rrEzRawTurtle.get_poly
s'	::!$$"rc	|jSr)rrs rrGzRawTurtle.getscreen
s	{{rc	|Srrrs rrIzRawTurtle.getturtle
s
	rc:	|jj|Sr)rrrs  rrzRawTurtle._delays	{{  ''rc	|jj|jj||||j	yr)rrrr}rrs    rrSzRawTurtle.onclicks4	"	
T[[..S#>rc	|jj|jj||||j	yr)rrrr}rrs    rrUzRawTurtle.onreleases4	*	
t{{00#sC@rcj	|jj|jj|||yr)rrrr}rs    rrTzRawTurtle.ondrag5s+	"	
DKK--sC=rc	|jy|dk(rB|\}}|j||z|jz|jj}y|dk(r|d}|j	|y|dk(r|j|y|dvr<|d}|jj||jj|y|dk(r%|d}|jj|ddd	y|d
k(rY|d}dx|_|_||jvr7|jj||jj|yy|dk(r4tj||d|jjyy)Nrrsrr)rr=rrrrrrW)rrrrGr7rrrrrrrrr1rW)ractionr8rdegPAUdummyrrs        r_undozRawTurtle._undoJsn	??"U? ME6LL%t'9'99:OO'')E
w
!WFOOF#
t^NN4 
~
%7DKK%JJd#
x
7DKK!!$(>')2
"
7
{
"7D.22DNT^tzz!##D)

!!$'"u_HHT47#OO!rc	|jy|jj}|d}|dd}|dk(r/|r,|j}|j|d|dd|r+yy|j||y)Nrrr)rrGr)rrrr8s    rryzRawTurtle.undojs~	 ??"""$aABxU?xxz

47DH-
JJvt$rrrra)NNNN)Frv)FrQ)Arialr[rPr*):rrrrrr-rarirzrr6rrr rrrr/rtr9rlrmrorhrvrurnrrHrrrsrr7r8rrrrcrCr2r?r=rr}r3r@rErGrIrFrrSrUrTrryrxrrrrr	sUG"G} $%5 6i&P2,&-1
A!$/*(+
+.5.D.T.`&P6&?P7.6%3N1&%$P
ON"K$,P+Z;,
83j?B$0 0*()-V	-:"#% "F(
*2>*"@%:Jrrcj	tjtt_tjSr)r_screenrrrrr
r
s&%~~ >>rcdeZdZdZdZedZdZededededfdZd	Z	d
Z
dZdZy)
rNr*cttjhtxt_|_|jjtj|jj|jtjtd}td}td}td}td}td}|jj|||||jjt_tj|tj|j||||yy)Nr|rrrrr)r_rootrcr*_titlerw_destroyr2rrkrmr	r-r')rr|rrrrrs       rr-z_Screen.__init__s== ).0GMDJJJW^^,JJ  /??"ME(^F[)Il+J[)I[)IJJ""5&)ZH"jj335GO!!$8JJufi;#rr|rrrc	t|jdsy|jj}|jj}t	|t
rd|cxkrdkrnn||z}|||z
dz}t	|t
rd|cxkrdkrnn||z}|||z
dz}|jj
|||||jy)Nrrrrr)hasattrrrzr}rrrrr-)rr|rrprqrshs       rr'z
_Screen.setups	.tzz>2
ZZ
!
!
#
ZZ
"
"
$eU#UauHE>5jA%Ffe$f)9)9YF>6kQ&F

vvv>
rcz	tjtjj||t_yr)rrr*r)rtitlestrings  rr*z
_Screen.titles,	==$MM,$rc|j}|tjur,dt_dt_dt_dt_dt_|jyr)	rrrrrr2r	rrv)rroots  rrz_Screen._destroysDzz7== FK!FN GM"GO %rc&	|jyr)rrs rrz_Screen.byes	
	


rc	fd}j|tdry	ty#t$rt	dYywxYw)Nc(	jyr)r)rrrs  rexitGracefullyz+_Screen.exitonclick.<locals>.exitGracefully
s8HHJrrr)rSrrAttributeErrorexit)rr(s` rrz_Screen.exitonclicksF	$		
^$	J	G	s
/AA)
rrrrr2rrr-r'r*rrrrrrrrsREG
']F<"w-X+&tK/@&P%"rrc6eZdZ	dZdZedededfdZy)rNrlrrctjtt_tj	|tj|||y)N)rlrr)rrr
rr-)rrlrrs    rr-zTurtle.__init__s;>>!#XFN4!&*8#*		,r)rrrrrrr-rrrrrs1
DGG} $%5 6i	,rrch	i}tD]}d|z}t|j||<!tD]}d|z}t|j||<!t	d|zd5}td|D}|j
d|ddD]6}|j
dt|z|j
d	||z8|d}|j
dt|z|j
d
||z|j
d|jdddy#1swYyxYw)Nz_Screen.zTurtle.z%s.pyrc3TK|] }|jddtvr|"yw)rrN)r_alias_list)rrs  rrz&write_docstringdict.<locals>.<genexpr>As+=Aa;=s&(zdocsdict = {

rz%s :
z        """%s
""",

z        """%s
"""

z}
)	_tg_screen_functionsr__doc___tg_turtle_functionsrrr}reprclose)rdocsdict
methodnamerrrs      rrr+s=
H**
#S	))
*+*

"S	))
*
g 	%===	"#9	?C
GGHtCy()
GG-
=>	?2h	49$%	(8C=89			s
#B<D((D1c	dd|jiz}t|}|j}|D]}	||t|_y#t
$rt
d|zY3wxYw)Nz!turtle_docstringdict_%(language)srzBad docstring-entry: %s)r4
__import__r5rr1rr)langmodnamemoduler5rs     rread_docstringsr<Mst2Z

4MMG

 FH3	3 (
DI3	3+c12	3sA

A$#A$zCannot find docsdict forz;Unknown Error when trying to import %s-docstring-dictionaryc	tj|}|jt|jjdd}g}|jjD]B}|jxxtjjk(rn xtjjk(rnn|j|jlxtjjk(r |jd|jxtjjk(r,|j|jd|jtjjk(r |jd|j.	td|jddj!|d	}t#||fS)
Nr)
parameters*rz**zUnsupported parameter kind(z, ))inspect	signaturereplacerr>valueskind	ParameterPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrrVAR_POSITIONALKEYWORD_ONLYVAR_KEYWORDRuntimeErrorrr)oborig_sigfunc_sig	call_argsparam	call_texts      rgetmethparlistrTjs~  $H++2245ab9 HI$$++-Mjj:1!!119'##99:  ,1""11  1UZZL!12/""//  EJJ<q!=>""..  2ejj\!23"#?LLMDIIi()+Ix=)##rc	ddl}|ytd}|jd|zd}|jd|z}|j	d|}|S)Nrr%s.r \(.+ %s\)::rerrDcompilesub)docstrrZ
turtlename	newdocstrparexps     r_turtle_docreviseraZ

~o&Juz1"5I
ZZ3
4F

3	*Irc	ddl}|ytd}|jd|zd}|jd|z}|j	d|}|S)NrrrVrrWrXrY)r]rZ
screennamer_r`s     r_screen_docrevisererbrardef {name}{paramslist}:
    if {obj} is None:
        if not TurtleScreen._RUNNING:
            TurtleScreen._RUNNING = True
            raise Terminator
        {obj} = {init}
    try:
        return {obj}.{name}{argslist}
    except TK.TclError:
        if not TurtleScreen._RUNNING:
            TurtleScreen._RUNNING = True
            raise Terminator
        raise
c|D]}t||}t|\}}|dk(rtd||0tj	|||||}	t|	t
||jt
|_y)Nrz>>>>>>)objinitr
paramslistargslist)getattrrTr__func_bodyformatrglobalsr1)
	functionsrrgrh	docreviser6rpl1pl2defstrs
          r_make_global_funcsrts	B
j)!&)S"9(C%##$Z/2S$BVWY(1&..(A	*%	BrzTurtle._screenzScreen()zTurtle._penzTurtle()__main__cBtrtytyr)rOr^rVrrr	switchpenrws8DDrc	ttdttdt	tdt
dD]p}|dk(r
tt
dD]}tdtd|dk(rtdtttd	t	rtd
tdtdttdtdtdtdtd
t	tdd
tdd
tdt
dD].}tdtdtdtd0tdtt
dD].}tdtdtdtd0ty)NTdrrrbrZmaroonrCrrF
startstartrredr])rar+r{r1r>r|rr2rDrQr:r?r`r})rrs  rdemo1rsa,
t


aq	AAv1X
R
Avh
DBKF		a
gu


b	
b	
c

lA
gq
eq	ABKHBK"I			tq	ABKHBK"I		
	
rc		tdttdtt	ddtdddz}t
dtdD]}tt|dtdtrttrttdtd	d}t!d
tdtdtdd
D]}|dkDr t#t%d	d|zz
dd|ztdD]}t'|tdt)|dz
}tdttdzdztdt+t'dt
dt-t/ddtdt#tdD]/}tddt
dt'dt
d1t)tdt+t'dt-t1dt3}|j5dt7}|j5d|j1d|j|j9d|jd|j;|j=dd|jd|j?|jd|j/dd|jd|jdtt	|d}|j|dkDr|j'd|jd |j|j	||j'd|d!zdk(r*|jA|jAt|dz
}|j|dkDr|jd"d#d$%|j!d&|j!dd'}tCjDdtr+|j|jtr+|j'd|jd(d)*|jG|dy)+Nrrrrrzrzwait a moment...rgreenr|rTrSxFrCr~yellowrb2rrBi(rcblueorangerg@g333333?rzCAUGHT! )rrSboldr`)rrrc,ttyr)rr)rrs  rbabazdemo2.<locals>.baba`sMErz  Click me!)Courierrr)r)$rqrrrZrerwr<rcrrwr5r}rzryrarRrrXr2rBrAr?r^rVr:rlrIrbrrQr{rJr>rstimesleeprS)r!rlaengertrirrIrs        rdemo2r
s(
a

71a=!!Q#
2r	AK62		 !!F !

2#

3r2
	"A1u#bd(Ar!t,1X
6
3

JbLFrF5719b.!
	"	3

2
2

eH
aq	A2rNrFrFrF		
	

2

2

hkv&!XBQ		C		"

QVH%q		!76?#ll6"Q&IIcNIIcNNN3;;v./FF1IrzQ		QJEll6"Q&			*#8	HWU		

1
!HHJKKM !	r
		-(?	AD!r)r)turtle_docstringdict)Etkinterr+rrrrBr}ros.pathrrrcopyrr_tg_classesr0r2
_tg_utilities__all__r/rrrrrrrrrrrr,rr0rercobjectrrr.rr=r	rr1rxrr
r
rrrrr<	_LANGUAGEImportErrorrTrarerlrtrrrrwrrrrrr<module>rs0KZ
'' I)!'/
--0DD(>*,	#	4	c		c		T		
	T		

		S				$				W		g		z		D		I	 	!	"")'	,:<1t
*$E*$j1
.*a#RXXa#FI6)BEE)0
B5vB5T	)	)
,1F,1^"6f"6Li#iVCCLR6RjL6L>ojob%
~l~@,Y,(
 D3"
	MI	""$H

  
B'#Z1BD' *.?Az2jaF
G	GMCWw1	/01@t1	
$i0M	HBKLMMs*G5
H	5
HH	H+H+*H+