Java StarLogo 2.1 English `turtle` ; airplanes will fly from one airport to another ; the arrival and departure of an airplane to a certain airport is chosen proportionally based on the variable pass% ; which represents the percentage of passengers that usually fly through that airport ;Atlanta Chicago LosAngeles Dallas Denver Phoenix LasVegas Houston Minneapolis Detroit SanFrancisco Miami ;atlx atly chix chiy lax lay dalx daly denx deny lvx lvy phox phoy houx houy minx miny detx dety sfx sfy miax miay ;each airplane will be represented as a turtle which will carry the following characteristics: ; - number of passengers: pass ; - the number of passenger who can spread the virus: infected ; - the current location of the airplane: location ; - the next destination of the airplane: destination turtles-own [ pass infected location [Atlanta Chicago LosAngeles Dallas Denver Phoenix LasVegas Houston Minneapolis Detroit SanFrancisco Miami] destination [Atlanta Chicago LosAngeles Dallas Denver Phoenix LasVegas Houston Minneapolis Detroit SanFrancisco Miami] capacity ; plane capacities ] ; called by setup in Observer ; this is based on product information gathered from: ; United Airlines Fleet information - http://www.unitedcargo.com/imggallery/United%20Fleet%20Mar03.pdf ; Airplane capacity information - http://www.thetravelinsider.info/airplanetypes.htm#Boeing to init setcapacity (160 + (random 8) * 20) ; set the plane capacity (between 160 - 300 passengers) setpass (130 + random (capacity - 130 + 1)) ; decide what is the initial number of passenger for each airplane (turtle) ; the range for internal flights is 160 - 300 (estimate) ; decide what is the initial location of each airplane (turtle) ; these percentages are based on the number of passsengers / year / city init-loc end ; initialize the locations of the planes based on the loccp array ; called by init to init-loc let [:prob ((1 + random 10000) / 100)] ; this value is used to decide WHERE the plane is initially located let [:counter 0] ; this counter remembers the position of :i in the list dolist [:i loccp] [ if :prob <= :i [ case :counter [ 0 [setlocation Atlanta stop] 1 [setlocation Chicago stop] 2 [setlocation LosAngeles stop] 3 [setlocation Dallas stop] 4 [setlocation Denver stop] 5 [setlocation Phoenix stop] 6 [setlocation LasVegas stop] 7 [setlocation Houston stop] 8 [setlocation Minneapolis stop] 9 [setlocation Detroit stop] 10 [setlocation SanFrancisco stop] 11 [setlocation Miami] ] ] set :counter (:counter + 1) ] end ; called by track-flights in Observer ; increments the flights counter in the city the turtle is in to update-flights setflights flights + 1 end ; USAGE: for debugging if planes are moving from city to city ; called in update-location like so: ; if who = 0 [ print-route ] to print-route type "(" type location-of 0 type ", " type destination-of 0 print ")" end ; called in go to move planes to fly case location [ Atlanta [get-dest atlcp ; decide what the destination will be update-dest atlx atly] Chicago [get-dest chicp update-dest chix chiy] LosAngeles [get-dest lacp update-dest lax lay] Dallas [get-dest dalcp update-dest dalx daly] Denver [get-dest dencp update-dest denx deny] Phoenix [get-dest phocp update-dest phox phoy] LasVegas [get-dest lvcp update-dest lvx lvy] Houston [get-dest houcp update-dest houx houy] Minneapolis [get-dest mincp update-dest minx miny] Detroit [get-dest detcp update-dest detx dety] SanFrancisco [get-dest sfcp update-dest sfx sfy] Miami [get-dest miacp update-dest miax miay] ] end ; called by fly to move the plane and update the plane's destination to update-dest :xl :yl case destination [ Atlanta [update-location :xl :yl atlx atly] Chicago [update-location :xl :yl chix chiy] LosAngeles [update-location :xl :yl lax lay] Dallas [update-location :xl :yl dalx daly] Denver [update-location :xl :yl denx deny] Phoenix [update-location :xl :yl phox phoy] LasVegas [update-location :xl :yl lvx lvy] Houston [update-location :xl :yl houx houy] Minneapolis [update-location :xl :yl minx miny] Detroit [update-location :xl :yl detx dety] SanFrancisco [update-location :xl :yl sfx sfy] Miami [update-location :xl :yl miax miay] ] end ; called in update-location ; used to count the people departing from a city to update-from case location [ Atlanta [setfromatl (fromatl + pass)] Chicago [setfromchi (fromchi + pass)] LosAngeles [setfromla (fromla + pass)] Dallas [setfromdal (fromdal + pass)] Denver [setfromden (fromden + pass)] Phoenix [setfrompho (frompho + pass)] LasVegas [setfromlv (fromlv + pass)] Houston [setfromhou (fromhou + pass)] Minneapolis [setfrommin (frommin + pass)] Detroit [setfromdet (fromdet + pass)] SanFrancisco [setfromsf (fromsf + pass)] Miami [setfrommia (frommia + pass)] ] end ; called in update-location ; used to count the people arriving at a city to update-to case destination [ Atlanta [settoatl (toatl + pass)] Chicago [settochi (tochi + pass)] LosAngeles [settola (tola + pass)] Dallas [settodal (todal + pass)] Denver [settoden (toden + pass)] Phoenix [settopho (topho + pass)] LasVegas [settolv (tolv + pass)] Houston [settohou (tohou + pass)] Minneapolis [settomin (tomin + pass)] Detroit [settodet (todet + pass)] SanFrancisco [settosf (tosf + pass)] Miami [settomia (tomia + pass)] ] end ; called by update-dest to move the plane and update the destination to update-location :xl :yl :xd :yd ; xl, yl - location coordinates, xd, yd - destination coordinates update-from ; count the people departing a city set pop (pop - pass) ; decrease the population in location by the number of passengers in the plane set poplatent (poplatent - infected) ; decrease the infected popultation in location by the number of infected passengers in the plane ifelse ((flight-on = 1) and (who >= 24)) ; if a plane has a who number of 23 or less, it is tracked and must "jump" to the next city instead of being animated - fix for a bug in the flight tracking [go-to :xd :yd ] ; move the plane to the destination [ setxy :xd :yd ] setlocation destination ; update the current location setpop (pop + pass) ; increase the population in destination by the number of passengers in the plane setpoplatent (poplatent + infected) ; increase the infected popultation in destination by the number of infected passengers in the plane setpass (130 + random (capacity - 130 + 1)) ; fill up the plane with new passengers setinfected ((poplatent / pop) * pass) ; find out the number of infected passengers on the plane update-to ; count the people arriving in a city end ; called by fly to get a destination for each plane ; :x is the cumulative probablilty array for the city to get-dest :x let [:prob ((1 + random 10000) / 100)] ; this value is used to decide WHERE the plane is supposed to fly let [:counter 0] ; this counter remembers the position of :i in the list dolist [:i :x] [ if :prob <= :i [ case :counter [ 0 [setdestination Atlanta stop] 1 [setdestination Chicago stop] 2 [setdestination LosAngeles stop] 3 [setdestination Dallas stop] 4 [setdestination Denver stop] 5 [setdestination Phoenix stop] 6 [setdestination LasVegas stop] 7 [setdestination Houston stop] 8 [setdestination Minneapolis stop] 9 [setdestination Detroit stop] 10 [setdestination SanFrancisco stop] 11 [setdestination Miami] ] ] set :counter (:counter + 1) ] end ; called by go-to and draw-to ; gets a heading to head toward to head-to :x :y ; destination at (x, y) seth towards-nowrap :x :y end ; called by update-location ; if flights-on == 1 then it is used to animate the flights to go-to :x :y head-to :x :y fd (distance-nowrap :x :y) end ; called by draw-usa ; used to draw lines between points to draw-to :x :y head-to :x :y pd fd (distance-nowrap :x :y) pu end ; called by setup in Observer ; draws the map of the USA to draw-usa setxy -48 46 draw-to -48 46 draw-to -61 50 draw-to -61 49 draw-to -61 49 draw-to -61 48 draw-to -61 48 draw-to -61 47 draw-to -61 46 draw-to -61 46 draw-to -62 45 draw-to -62 44 draw-to -62 45 draw-to -62 46 draw-to -62 47 draw-to -63 47 draw-to -64 48 draw-to -66 49 draw-to -67 50 draw-to -67 49 draw-to -67 48 draw-to -66 47 draw-to -66 45 draw-to -66 44 draw-to -66 44 draw-to -67 43 draw-to -66 43 draw-to -67 41 draw-to -67 41 draw-to -66 41 draw-to -65 40 draw-to -65 40 draw-to -65 39 draw-to -64 38 draw-to -63 37 draw-to -61 37 draw-to -61 36 draw-to -59 36 draw-to -59 36 draw-to -57 36 draw-to -56 36 draw-to -54 36 draw-to -52 35 draw-to -51 35 draw-to -50 35 draw-to -50 36 draw-to -50 38 draw-to -49 40 draw-to -49 43 draw-to -48 45 setxy -46 46 draw-to -48 46 draw-to -46 46 draw-to -46 45 draw-to -46 44 draw-to -46 43 draw-to -46 42 draw-to -46 41 draw-to -46 40 draw-to -45 38 draw-to -45 37 draw-to -44 36 draw-to -44 36 draw-to -43 36 draw-to -44 35 draw-to -44 34 draw-to -44 33 draw-to -45 32 draw-to -44 32 draw-to -44 32 draw-to -43 32 draw-to -43 30 draw-to -42 30 draw-to -42 28 draw-to -42 28 draw-to -42 27 draw-to -41 27 draw-to -39 27 draw-to -38 27 draw-to -37 27 draw-to -37 25 draw-to -38 16 draw-to -46 18 draw-to -54 20 draw-to -52 27 draw-to -51 28 draw-to -52 29 draw-to -51 31 draw-to -50 33 draw-to -49 34 draw-to -50 35 draw-to -50 36 draw-to -50 38 draw-to -49 40 draw-to -49 40 draw-to -49 43 draw-to -48 45 setxy -67 41 draw-to -67 41 draw-to -67 41 draw-to -67 39 draw-to -68 38 draw-to -68 37 draw-to -69 36 draw-to -69 35 draw-to -70 33 draw-to -70 32 draw-to -71 31 draw-to -71 31 draw-to -71 30 draw-to -72 29 draw-to -72 28 draw-to -72 27 draw-to -72 26 draw-to -72 25 draw-to -61 22 draw-to -54 20 draw-to -52 27 draw-to -51 28 draw-to -52 29 draw-to -51 31 draw-to -50 33 draw-to -49 34 draw-to -50 35 draw-to -50 35 draw-to -51 35 draw-to -52 35 draw-to -54 36 draw-to -56 36 draw-to -57 36 draw-to -59 36 draw-to -59 36 draw-to -61 36 draw-to -61 37 draw-to -63 37 draw-to -64 38 draw-to -65 39 draw-to -65 40 draw-to -65 40 draw-to -66 41 setxy -72 25 draw-to -61 22 draw-to -72 25 draw-to -72 25 draw-to -72 23 draw-to -73 22 draw-to -73 21 draw-to -74 21 draw-to -74 19 draw-to -74 19 draw-to -74 17 draw-to -74 16 draw-to -74 15 draw-to -74 14 draw-to -74 13 draw-to -74 12 draw-to -73 11 draw-to -73 9 draw-to -72 8 draw-to -72 8 draw-to -72 9 draw-to -72 8 draw-to -71 8 draw-to -71 7 draw-to -72 7 draw-to -72 8 draw-to -72 8 draw-to -73 7 draw-to -73 5 draw-to -72 5 draw-to -71 4 draw-to -72 3 draw-to -72 1 draw-to -72 1 draw-to -71 0 draw-to -71 -2 draw-to -70 -2 draw-to -70 -3 draw-to -70 -4 draw-to -70 -6 draw-to -69 -7 draw-to -68 -7 draw-to -67 -8 draw-to -67 -9 draw-to -66 -9 draw-to -65 -10 draw-to -65 -11 draw-to -64 -11 draw-to -63 -13 draw-to -62 -14 draw-to -62 -16 draw-to -62 -17 draw-to -57 -17 draw-to -54 -17 draw-to -54 -17 draw-to -55 -16 draw-to -54 -16 draw-to -54 -15 draw-to -53 -14 draw-to -53 -13 draw-to -52 -12 draw-to -52 -11 draw-to -53 -10 draw-to -53 -9 draw-to -64 10 setxy -50 -2 draw-to -46 18 draw-to -50 -2 draw-to -50 -2 draw-to -50 -3 draw-to -50 -4 draw-to -51 -5 draw-to -51 -5 draw-to -51 -4 draw-to -52 -4 draw-to -52 -7 draw-to -53 -9 draw-to -64 10 draw-to -61 22 draw-to -54 20 draw-to -54 20 draw-to -54 20 setxy -40 -3 draw-to -50 -2 draw-to -40 -3 draw-to -36 -4 draw-to -38 -18 draw-to -38 -20 draw-to -38 -23 draw-to -39 -26 draw-to -42 -26 draw-to -45 -25 draw-to -50 -22 draw-to -55 -18 draw-to -55 -17 draw-to -54 -17 draw-to -54 -17 draw-to -55 -16 draw-to -54 -16 draw-to -54 -15 draw-to -53 -14 draw-to -53 -13 draw-to -52 -12 draw-to -52 -11 draw-to -53 -10 draw-to -53 -9 draw-to -52 -7 draw-to -52 -4 draw-to -51 -4 draw-to -51 -5 draw-to -51 -5 draw-to -50 -4 draw-to -50 -3 draw-to -50 -2 setxy -39 14 draw-to -38 16 draw-to -39 14 draw-to -39 12 draw-to -34 11 draw-to -35 2 draw-to -36 -4 draw-to -40 -3 draw-to -50 -2 draw-to -49 1 draw-to -46 18 draw-to -40 17 setxy -42 45 draw-to -46 46 draw-to -42 45 draw-to -38 44 draw-to -35 43 draw-to -30 42 draw-to -26 42 draw-to -22 41 draw-to -17 41 draw-to -18 37 draw-to -18 32 draw-to -19 25 draw-to -36 28 draw-to -37 25 draw-to -37 27 draw-to -38 27 draw-to -38 27 draw-to -39 27 draw-to -40 27 draw-to -41 27 draw-to -41 27 draw-to -42 27 draw-to -42 28 draw-to -42 28 draw-to -42 30 draw-to -43 30 draw-to -43 32 draw-to -44 32 draw-to -44 32 draw-to -45 32 draw-to -44 33 draw-to -44 34 draw-to -43 36 draw-to -44 36 draw-to -44 36 draw-to -45 37 draw-to -45 38 draw-to -46 40 draw-to -46 41 draw-to -46 42 draw-to -46 43 draw-to -46 45 setxy -20 10 draw-to -19 25 draw-to -20 10 draw-to -26 10 draw-to -34 11 draw-to -39 12 draw-to -39 14 draw-to -38 16 draw-to -37 25 draw-to -36 28 setxy -26 10 draw-to -34 11 draw-to -26 10 draw-to -20 10 draw-to -15 9 draw-to -15 0 draw-to -16 -7 draw-to -19 -7 draw-to -36 -4 draw-to -35 2 draw-to -34 11 setxy -19 -9 draw-to -19 -7 draw-to -19 -9 draw-to -19 -9 draw-to -19 -17 draw-to -20 -21 draw-to -21 -26 draw-to -28 -25 draw-to -31 -25 draw-to -31 -26 draw-to -34 -26 draw-to -36 -25 draw-to -36 -27 draw-to -39 -26 draw-to -38 -23 draw-to -38 -20 draw-to -38 -18 draw-to -36 -4 setxy -10 -9 draw-to -19 -9 draw-to -10 -9 draw-to -11 -17 draw-to -10 -18 draw-to -9 -18 draw-to -8 -19 draw-to -7 -19 draw-to -5 -19 draw-to -5 -20 draw-to -4 -20 draw-to -3 -20 draw-to -2 -21 draw-to -2 -20 draw-to -1 -20 draw-to 0 -21 draw-to 2 -20 draw-to 3 -20 draw-to 4 -20 draw-to 5 -21 draw-to 6 -22 draw-to 7 -21 draw-to 7 -28 draw-to 8 -29 draw-to 8 -29 draw-to 8 -31 draw-to 8 -33 draw-to 8 -33 draw-to 8 -34 draw-to 8 -35 draw-to 7 -36 draw-to 7 -37 draw-to 6 -37 draw-to 5 -37 draw-to 5 -37 draw-to 4 -37 draw-to 4 -38 draw-to 4 -39 draw-to 3 -39 draw-to 1 -40 draw-to 0 -41 draw-to 0 -41 draw-to -1 -41 draw-to -1 -42 draw-to -1 -42 draw-to -2 -42 draw-to -2 -43 draw-to -3 -42 draw-to -3 -43 draw-to -3 -44 draw-to -4 -44 draw-to -4 -44 draw-to -4 -46 draw-to -4 -47 draw-to -4 -48 draw-to -4 -50 draw-to -3 -51 draw-to -4 -51 draw-to -4 -51 draw-to -5 -51 draw-to -7 -51 draw-to -9 -49 draw-to -9 -49 draw-to -10 -48 draw-to -10 -47 draw-to -10 -46 draw-to -11 -45 draw-to -11 -44 draw-to -11 -44 draw-to -13 -41 draw-to -14 -39 draw-to -14 -38 draw-to -16 -36 draw-to -17 -36 draw-to -19 -35 draw-to -20 -35 draw-to -21 -37 draw-to -22 -38 draw-to -26 -35 draw-to -26 -34 draw-to -26 -33 draw-to -27 -32 draw-to -27 -31 draw-to -28 -30 draw-to -30 -28 draw-to -30 -27 draw-to -31 -26 draw-to -31 -26 draw-to -31 -25 draw-to -21 -26 draw-to -20 -21 draw-to -19 -17 setxy 5 -8 draw-to -16 -7 draw-to 5 -8 draw-to 5 -10 draw-to 5 -13 draw-to 6 -19 draw-to 5 -21 draw-to 4 -20 draw-to 3 -20 draw-to 2 -20 draw-to 2 -20 draw-to 0 -21 draw-to -1 -20 draw-to -2 -20 draw-to -2 -21 draw-to -3 -20 draw-to -4 -20 draw-to -5 -20 draw-to -5 -19 draw-to -7 -19 draw-to -8 -19 draw-to -9 -18 draw-to -10 -18 draw-to -11 -17 draw-to -10 -9 draw-to -19 -9 draw-to -19 -7 setxy 0 4 draw-to -15 5 draw-to 0 4 draw-to 3 4 draw-to 4 3 draw-to 4 3 draw-to 4 2 draw-to 4 2 draw-to 5 1 draw-to 5 1 draw-to 5 -8 draw-to -16 -7 draw-to -16 -3 draw-to -15 0 setxy -12 17 draw-to -19 18 draw-to -12 17 draw-to -6 16 draw-to -5 16 draw-to -5 16 draw-to -4 16 draw-to -3 15 draw-to -3 15 draw-to -2 15 draw-to -1 15 draw-to -1 14 draw-to 0 14 draw-to 0 13 draw-to 1 13 draw-to 1 12 draw-to 1 11 draw-to 2 10 draw-to 2 9 draw-to 2 8 draw-to 2 8 draw-to 2 7 draw-to 2 6 draw-to 3 5 draw-to 3 4 draw-to -5 4 draw-to -15 5 draw-to -15 9 draw-to -20 10 setxy 0 27 draw-to -18 29 draw-to 0 27 draw-to 0 27 draw-to 0 26 draw-to 0 26 draw-to 0 25 draw-to 1 25 draw-to 1 18 draw-to 0 18 draw-to 0 17 draw-to 0 16 draw-to 0 15 draw-to 0 14 draw-to -1 14 draw-to -1 15 draw-to -2 15 draw-to -3 15 draw-to -3 15 draw-to -4 16 draw-to -5 16 draw-to -5 16 draw-to -6 16 draw-to -12 17 draw-to -19 18 draw-to -19 25 draw-to -19 27 setxy -6 40 draw-to -17 40 draw-to -6 40 draw-to -1 39 draw-to -1 39 draw-to -1 37 draw-to -1 36 draw-to -1 35 draw-to 0 34 draw-to 0 30 draw-to 0 30 draw-to 0 29 draw-to 0 27 draw-to -18 29 draw-to -18 32 draw-to -18 37 setxy 4 39 draw-to -1 39 draw-to 4 39 draw-to 4 40 draw-to 4 41 draw-to 5 41 draw-to 5 40 draw-to 5 39 draw-to 6 38 draw-to 7 38 draw-to 7 37 draw-to 8 37 draw-to 8 38 draw-to 9 38 draw-to 10 37 draw-to 10 37 draw-to 11 36 draw-to 11 37 draw-to 12 36 draw-to 12 36 draw-to 13 36 draw-to 14 36 draw-to 15 36 draw-to 16 36 draw-to 17 36 draw-to 17 35 draw-to 16 35 draw-to 16 35 draw-to 15 34 draw-to 14 34 draw-to 13 32 draw-to 11 30 draw-to 11 28 draw-to 10 27 draw-to 10 26 draw-to 10 25 draw-to 10 23 draw-to 10 22 draw-to 11 22 draw-to 12 21 draw-to 12 21 draw-to 12 21 draw-to 13 20 draw-to 14 19 draw-to 14 18 draw-to 1 18 draw-to 1 25 draw-to 0 26 draw-to 0 26 draw-to 0 27 draw-to 0 27 draw-to 0 29 draw-to 0 30 draw-to 0 34 draw-to -1 35 draw-to -1 36 draw-to -1 37 draw-to -1 39 setxy 13 6 draw-to 2 6 draw-to 13 6 draw-to 14 6 draw-to 14 7 draw-to 15 7 draw-to 15 8 draw-to 14 9 draw-to 15 10 draw-to 16 10 draw-to 17 11 draw-to 17 13 draw-to 16 14 draw-to 15 15 draw-to 14 15 draw-to 14 17 draw-to 14 17 draw-to 14 18 draw-to 1 18 draw-to 0 18 draw-to 0 17 draw-to 0 16 draw-to 0 15 draw-to 0 14 draw-to 0 13 draw-to 1 13 draw-to 1 12 draw-to 1 12 draw-to 2 10 draw-to 2 9 draw-to 2 8 draw-to 2 8 draw-to 2 7 setxy 18 -10 draw-to 5 -10 draw-to 18 -10 draw-to 18 -10 draw-to 18 -11 draw-to 17 -11 draw-to 17 -12 draw-to 19 -12 draw-to 20 -10 draw-to 20 -9 draw-to 21 -9 draw-to 21 -8 draw-to 20 -8 draw-to 20 -7 draw-to 20 -6 draw-to 19 -5 draw-to 18 -3 draw-to 17 -3 draw-to 17 -2 draw-to 17 -2 draw-to 17 0 draw-to 17 0 draw-to 17 0 draw-to 16 0 draw-to 16 0 draw-to 16 1 draw-to 15 2 draw-to 14 3 draw-to 14 4 draw-to 14 6 draw-to 13 6 draw-to 2 6 draw-to 3 6 draw-to 3 5 draw-to 3 4 draw-to 3 4 draw-to 4 3 draw-to 4 2 draw-to 4 2 draw-to 5 1 draw-to 5 1 draw-to 5 -8 setxy 7 -21 draw-to 7 -24 draw-to 7 -21 draw-to 6 -22 draw-to 5 -21 draw-to 6 -19 draw-to 5 -13 draw-to 5 -10 draw-to 18 -10 draw-to 18 -10 draw-to 18 -11 draw-to 17 -11 draw-to 17 -12 draw-to 19 -12 draw-to 19 -12 draw-to 19 -13 draw-to 19 -13 draw-to 18 -14 draw-to 18 -16 draw-to 17 -17 draw-to 17 -18 draw-to 16 -18 draw-to 16 -19 draw-to 16 -20 draw-to 15 -21 draw-to 15 -22 draw-to 16 -22 draw-to 15 -23 draw-to 15 -24 setxy 9 -36 draw-to 7 -37 draw-to 9 -36 draw-to 10 -36 draw-to 11 -37 draw-to 12 -37 draw-to 13 -37 draw-to 13 -36 draw-to 14 -36 draw-to 14 -37 draw-to 15 -37 draw-to 16 -37 draw-to 17 -38 draw-to 17 -39 draw-to 18 -38 draw-to 19 -38 draw-to 19 -38 draw-to 20 -38 draw-to 20 -37 draw-to 20 -37 draw-to 20 -38 draw-to 21 -38 draw-to 22 -39 draw-to 23 -39 draw-to 23 -38 draw-to 21 -37 draw-to 21 -37 draw-to 21 -36 draw-to 22 -35 draw-to 22 -35 draw-to 21 -35 draw-to 21 -36 draw-to 20 -35 draw-to 20 -35 draw-to 20 -35 draw-to 20 -35 draw-to 19 -35 draw-to 18 -35 draw-to 18 -34 draw-to 19 -34 draw-to 19 -34 draw-to 19 -34 draw-to 20 -34 draw-to 20 -34 draw-to 20 -34 draw-to 21 -34 draw-to 20 -33 draw-to 20 -31 draw-to 15 -31 draw-to 14 -30 draw-to 15 -29 draw-to 15 -28 draw-to 16 -27 draw-to 16 -27 draw-to 16 -26 draw-to 16 -25 draw-to 16 -24 draw-to 15 -24 draw-to 15 -24 draw-to 7 -24 draw-to 7 -28 draw-to 8 -29 draw-to 8 -29 draw-to 8 -31 draw-to 8 -33 draw-to 8 -33 draw-to 8 -34 draw-to 8 -35 draw-to 7 -36 setxy 24 -18 draw-to 24 -15 draw-to 24 -18 draw-to 24 -28 draw-to 24 -33 draw-to 24 -34 draw-to 23 -34 draw-to 22 -34 draw-to 21 -34 draw-to 21 -34 draw-to 20 -34 draw-to 20 -34 draw-to 21 -34 draw-to 20 -33 draw-to 20 -31 draw-to 15 -31 draw-to 14 -30 draw-to 15 -29 draw-to 15 -28 draw-to 16 -27 draw-to 16 -27 draw-to 16 -26 draw-to 16 -25 draw-to 16 -24 draw-to 15 -24 draw-to 15 -23 draw-to 16 -22 draw-to 15 -22 draw-to 15 -21 draw-to 16 -20 draw-to 16 -19 draw-to 16 -18 draw-to 17 -18 draw-to 17 -17 draw-to 18 -16 setxy 31 -15 draw-to 24 -15 draw-to 31 -15 draw-to 32 -18 draw-to 33 -23 draw-to 34 -24 draw-to 34 -24 draw-to 34 -24 draw-to 34 -25 draw-to 34 -26 draw-to 34 -27 draw-to 34 -28 draw-to 34 -29 draw-to 35 -30 draw-to 28 -31 draw-to 27 -31 draw-to 26 -31 draw-to 27 -32 draw-to 27 -32 draw-to 27 -33 draw-to 26 -34 draw-to 26 -33 draw-to 26 -32 draw-to 25 -33 draw-to 25 -33 draw-to 24 -33 draw-to 24 -28 draw-to 24 -18 draw-to 24 -16 setxy 23 -9 draw-to 20 -9 draw-to 23 -9 draw-to 24 -9 draw-to 24 -9 draw-to 24 -8 draw-to 25 -9 draw-to 27 -9 draw-to 31 -8 draw-to 36 -8 draw-to 38 -7 draw-to 41 -7 draw-to 41 -8 draw-to 41 -9 draw-to 40 -10 draw-to 39 -10 draw-to 38 -10 draw-to 38 -11 draw-to 37 -12 draw-to 36 -12 draw-to 35 -13 draw-to 35 -13 draw-to 34 -14 draw-to 34 -14 draw-to 31 -15 draw-to 24 -15 draw-to 18 -16 draw-to 18 -14 draw-to 19 -13 draw-to 19 -13 draw-to 19 -12 draw-to 19 -12 draw-to 20 -10 setxy 38 -7 draw-to 36 -8 draw-to 38 -7 draw-to 39 -6 draw-to 39 -5 draw-to 40 -5 draw-to 41 -4 draw-to 41 -3 draw-to 40 -3 draw-to 39 -2 draw-to 39 -1 draw-to 39 0 draw-to 38 0 draw-to 37 1 draw-to 37 0 draw-to 36 0 draw-to 36 1 draw-to 35 0 draw-to 35 1 draw-to 34 1 draw-to 33 2 draw-to 32 2 draw-to 32 1 draw-to 31 0 draw-to 31 0 draw-to 31 0 draw-to 31 -1 draw-to 30 -2 draw-to 30 -2 draw-to 29 -3 draw-to 29 -3 draw-to 28 -2 draw-to 28 -3 draw-to 28 -3 draw-to 27 -4 draw-to 27 -3 draw-to 26 -4 draw-to 26 -4 draw-to 25 -4 draw-to 24 -4 draw-to 23 -4 draw-to 23 -5 draw-to 23 -6 draw-to 23 -7 draw-to 22 -7 draw-to 21 -7 draw-to 21 -7 draw-to 20 -8 draw-to 21 -8 draw-to 21 -9 draw-to 20 -9 draw-to 23 -9 draw-to 24 -9 draw-to 24 -9 draw-to 24 -8 draw-to 25 -9 draw-to 27 -9 draw-to 31 -8 setxy 24 -3 draw-to 24 -4 draw-to 24 -3 draw-to 24 -2 draw-to 25 -1 draw-to 25 -1 draw-to 25 0 draw-to 25 1 draw-to 24 11 draw-to 25 11 draw-to 25 11 draw-to 25 11 draw-to 26 12 draw-to 26 12 draw-to 31 12 draw-to 32 2 draw-to 32 1 draw-to 31 0 draw-to 31 0 draw-to 31 0 draw-to 31 -1 draw-to 30 -2 draw-to 29 -3 draw-to 29 -3 draw-to 28 -2 draw-to 28 -3 draw-to 28 -3 draw-to 27 -4 draw-to 27 -3 draw-to 26 -4 draw-to 26 -4 draw-to 25 -4 draw-to 24 -4 draw-to 24 -4 setxy 23 14 draw-to 16 14 draw-to 23 14 draw-to 23 14 draw-to 24 13 draw-to 24 12 draw-to 24 11 draw-to 25 1 draw-to 25 0 draw-to 25 -1 draw-to 25 -1 draw-to 24 -2 draw-to 24 -3 draw-to 24 -4 draw-to 24 -4 draw-to 23 -4 draw-to 23 -5 draw-to 23 -6 draw-to 23 -7 draw-to 22 -7 draw-to 21 -7 draw-to 21 -7 draw-to 20 -8 draw-to 20 -7 draw-to 20 -6 draw-to 19 -5 draw-to 18 -3 draw-to 17 -3 draw-to 17 -2 draw-to 17 -2 draw-to 17 0 draw-to 17 0 draw-to 17 0 draw-to 16 0 draw-to 16 0 draw-to 16 1 draw-to 15 2 draw-to 14 3 draw-to 14 4 draw-to 14 6 draw-to 15 7 draw-to 15 8 draw-to 14 9 draw-to 15 10 draw-to 16 10 draw-to 17 11 draw-to 17 13 draw-to 16 14 setxy 12 30 draw-to 12 30 draw-to 12 30 draw-to 13 31 draw-to 14 31 draw-to 14 30 draw-to 15 30 draw-to 16 30 draw-to 16 29 draw-to 18 29 draw-to 19 28 draw-to 20 28 draw-to 20 28 draw-to 22 27 draw-to 22 27 draw-to 22 26 draw-to 23 25 draw-to 23 25 draw-to 23 24 draw-to 22 24 draw-to 22 23 draw-to 22 22 draw-to 23 23 draw-to 24 24 draw-to 24 25 draw-to 25 25 draw-to 25 25 draw-to 24 24 draw-to 24 23 draw-to 23 22 draw-to 23 21 draw-to 23 19 draw-to 23 18 draw-to 23 16 draw-to 23 14 draw-to 16 14 draw-to 15 15 draw-to 14 15 draw-to 14 17 draw-to 14 17 draw-to 14 18 draw-to 14 19 draw-to 13 20 draw-to 12 21 draw-to 12 21 draw-to 12 21 draw-to 11 22 draw-to 10 22 draw-to 10 23 draw-to 10 25 draw-to 10 26 draw-to 10 27 draw-to 11 28 draw-to 11 30 setxy 17 31 draw-to 16 30 draw-to 17 31 draw-to 17 31 draw-to 19 32 draw-to 19 32 draw-to 20 32 draw-to 20 33 draw-to 21 34 draw-to 21 34 draw-to 22 34 draw-to 21 33 draw-to 21 32 draw-to 20 32 draw-to 20 31 draw-to 21 32 draw-to 22 32 draw-to 22 31 draw-to 23 30 draw-to 24 30 draw-to 25 30 draw-to 26 31 draw-to 27 31 draw-to 28 31 draw-to 29 32 draw-to 29 31 draw-to 29 31 draw-to 31 31 draw-to 31 30 draw-to 31 29 draw-to 33 29 draw-to 33 29 draw-to 32 29 draw-to 30 29 draw-to 30 28 draw-to 29 29 draw-to 28 29 draw-to 27 28 draw-to 26 28 draw-to 26 27 draw-to 25 27 draw-to 25 28 draw-to 25 27 draw-to 25 27 draw-to 24 28 draw-to 24 27 draw-to 23 26 draw-to 23 25 draw-to 23 25 draw-to 22 26 draw-to 22 27 draw-to 20 28 draw-to 20 28 draw-to 19 28 draw-to 18 29 draw-to 16 29 setxy 30 28 draw-to 30 28 draw-to 30 28 draw-to 29 27 draw-to 29 27 draw-to 29 26 draw-to 29 25 draw-to 29 25 draw-to 28 24 draw-to 28 25 draw-to 28 25 draw-to 27 24 draw-to 27 24 draw-to 27 23 draw-to 26 22 draw-to 26 21 draw-to 26 19 draw-to 26 18 draw-to 27 17 draw-to 27 16 draw-to 27 15 draw-to 27 13 draw-to 26 12 draw-to 25 11 draw-to 25 11 draw-to 25 11 draw-to 24 11 draw-to 24 12 draw-to 24 13 draw-to 23 14 draw-to 23 14 draw-to 23 16 draw-to 23 18 draw-to 23 19 draw-to 23 22 draw-to 24 23 draw-to 24 24 draw-to 25 25 draw-to 25 25 draw-to 24 25 draw-to 24 24 draw-to 23 23 draw-to 22 22 draw-to 22 23 draw-to 22 24 draw-to 23 25 draw-to 23 26 draw-to 24 27 draw-to 24 28 draw-to 25 27 draw-to 25 27 draw-to 25 28 draw-to 25 27 draw-to 26 27 draw-to 26 28 draw-to 27 28 draw-to 28 29 draw-to 29 29 setxy 31 27 draw-to 30 28 draw-to 31 27 draw-to 32 27 draw-to 33 27 draw-to 33 27 draw-to 34 26 draw-to 34 25 draw-to 33 25 draw-to 34 24 draw-to 34 23 draw-to 34 23 draw-to 33 22 draw-to 33 21 draw-to 33 20 draw-to 33 20 draw-to 34 20 draw-to 34 21 draw-to 35 22 draw-to 36 22 draw-to 36 20 draw-to 36 20 draw-to 37 19 draw-to 37 18 draw-to 37 16 draw-to 36 16 draw-to 36 15 draw-to 35 15 draw-to 35 14 draw-to 35 13 draw-to 35 12 draw-to 31 12 draw-to 26 12 draw-to 27 13 draw-to 27 15 draw-to 27 16 draw-to 27 17 draw-to 26 18 draw-to 26 19 draw-to 26 21 draw-to 26 22 draw-to 27 23 draw-to 27 24 draw-to 27 24 draw-to 28 25 draw-to 28 25 draw-to 28 24 draw-to 29 25 draw-to 29 25 draw-to 29 26 draw-to 29 27 draw-to 29 27 setxy 36 12 draw-to 35 12 draw-to 36 12 draw-to 37 12 draw-to 38 11 draw-to 38 12 draw-to 39 12 draw-to 40 13 draw-to 41 14 draw-to 42 14 draw-to 43 9 draw-to 43 9 draw-to 43 8 draw-to 43 8 draw-to 43 7 draw-to 43 6 draw-to 43 5 draw-to 42 5 draw-to 42 4 draw-to 41 4 draw-to 41 3 draw-to 41 2 draw-to 40 2 draw-to 40 2 draw-to 40 1 draw-to 39 1 draw-to 39 0 draw-to 39 0 draw-to 38 0 draw-to 37 1 draw-to 37 0 draw-to 36 0 draw-to 36 1 draw-to 35 0 draw-to 35 1 draw-to 34 1 draw-to 33 2 draw-to 32 2 draw-to 31 12 draw-to 35 12 setxy 39 -14 draw-to 34 -14 draw-to 39 -14 draw-to 38 -15 draw-to 38 -15 draw-to 39 -16 draw-to 40 -16 draw-to 40 -17 draw-to 40 -17 draw-to 41 -18 draw-to 42 -19 draw-to 43 -19 draw-to 43 -20 draw-to 44 -21 draw-to 44 -21 draw-to 45 -22 draw-to 45 -22 draw-to 46 -23 draw-to 46 -24 draw-to 47 -24 draw-to 47 -25 draw-to 46 -26 draw-to 46 -28 draw-to 45 -28 draw-to 45 -30 draw-to 45 -30 draw-to 45 -30 draw-to 44 -30 draw-to 44 -30 draw-to 44 -31 draw-to 44 -31 draw-to 43 -31 draw-to 43 -31 draw-to 35 -31 draw-to 35 -30 draw-to 34 -29 draw-to 34 -28 draw-to 34 -27 draw-to 34 -26 draw-to 34 -25 draw-to 34 -24 draw-to 34 -24 draw-to 34 -24 draw-to 33 -23 draw-to 32 -18 draw-to 31 -15 setxy 46 -31 draw-to 45 -30 draw-to 46 -31 draw-to 46 -32 draw-to 46 -32 draw-to 47 -34 draw-to 47 -35 draw-to 48 -36 draw-to 49 -37 draw-to 49 -38 draw-to 50 -39 draw-to 49 -39 draw-to 50 -39 draw-to 50 -40 draw-to 51 -42 draw-to 51 -43 draw-to 52 -44 draw-to 52 -47 draw-to 52 -48 draw-to 52 -49 draw-to 52 -49 draw-to 52 -50 draw-to 51 -51 draw-to 51 -51 draw-to 50 -51 draw-to 49 -51 draw-to 49 -50 draw-to 50 -51 draw-to 49 -50 draw-to 48 -49 draw-to 47 -48 draw-to 47 -47 draw-to 46 -47 draw-to 45 -45 draw-to 45 -45 draw-to 44 -45 draw-to 44 -44 draw-to 43 -43 draw-to 43 -43 draw-to 44 -42 draw-to 44 -42 draw-to 44 -41 draw-to 44 -41 draw-to 44 -41 draw-to 44 -42 draw-to 43 -41 draw-to 43 -41 draw-to 43 -41 draw-to 43 -42 draw-to 43 -42 draw-to 43 -42 draw-to 43 -42 draw-to 42 -41 draw-to 43 -40 draw-to 43 -39 draw-to 43 -38 draw-to 42 -36 draw-to 41 -36 draw-to 40 -35 draw-to 39 -34 draw-to 38 -34 draw-to 37 -34 draw-to 37 -34 draw-to 36 -34 draw-to 35 -35 draw-to 34 -35 draw-to 34 -35 draw-to 34 -35 draw-to 34 -35 draw-to 33 -34 draw-to 32 -34 draw-to 32 -33 draw-to 30 -33 draw-to 30 -33 draw-to 29 -33 draw-to 28 -33 draw-to 28 -33 draw-to 29 -33 draw-to 28 -33 draw-to 28 -33 draw-to 27 -34 draw-to 27 -33 draw-to 27 -32 draw-to 27 -32 draw-to 26 -31 draw-to 27 -31 draw-to 35 -30 draw-to 35 -31 draw-to 43 -31 draw-to 43 -31 draw-to 44 -31 draw-to 44 -31 draw-to 44 -30 draw-to 44 -30 draw-to 45 -30 draw-to 45 -30 setxy 40 -13 draw-to 39 -14 draw-to 40 -13 draw-to 41 -13 draw-to 41 -13 draw-to 44 -12 draw-to 45 -13 draw-to 45 -13 draw-to 45 -14 draw-to 49 -13 draw-to 50 -14 draw-to 52 -16 draw-to 52 -17 draw-to 51 -18 draw-to 51 -19 draw-to 50 -20 draw-to 50 -21 draw-to 49 -21 draw-to 48 -22 draw-to 48 -22 draw-to 47 -23 draw-to 47 -23 draw-to 47 -24 draw-to 47 -24 draw-to 46 -24 draw-to 46 -23 draw-to 45 -22 draw-to 45 -22 draw-to 44 -21 draw-to 44 -21 draw-to 43 -20 draw-to 43 -19 draw-to 42 -19 draw-to 41 -18 draw-to 40 -17 draw-to 40 -17 draw-to 40 -16 draw-to 39 -16 draw-to 38 -15 draw-to 38 -15 setxy 42 -7 draw-to 41 -7 draw-to 42 -7 draw-to 54 -5 draw-to 58 -4 draw-to 58 -4 draw-to 59 -5 draw-to 59 -5 draw-to 59 -6 draw-to 58 -6 draw-to 57 -6 draw-to 58 -6 draw-to 57 -7 draw-to 57 -7 draw-to 58 -6 draw-to 59 -7 draw-to 59 -7 draw-to 60 -8 draw-to 59 -9 draw-to 59 -9 draw-to 58 -9 draw-to 57 -9 draw-to 57 -9 draw-to 58 -10 draw-to 57 -10 draw-to 57 -11 draw-to 56 -11 draw-to 57 -11 draw-to 58 -11 draw-to 58 -10 draw-to 58 -11 draw-to 58 -12 draw-to 57 -12 draw-to 56 -13 draw-to 55 -13 draw-to 55 -14 draw-to 54 -15 draw-to 54 -16 draw-to 52 -16 draw-to 50 -14 draw-to 49 -13 draw-to 45 -14 draw-to 45 -13 draw-to 45 -13 draw-to 44 -12 draw-to 41 -13 draw-to 41 -13 draw-to 39 -14 draw-to 34 -14 draw-to 34 -14 draw-to 35 -13 draw-to 35 -13 draw-to 36 -12 draw-to 37 -12 draw-to 38 -11 draw-to 38 -10 draw-to 39 -10 draw-to 40 -10 draw-to 41 -9 draw-to 41 -8 setxy 41 -3 draw-to 41 -3 draw-to 41 -3 draw-to 41 -4 draw-to 41 -4 draw-to 42 -4 draw-to 42 -4 draw-to 43 -4 draw-to 44 -4 draw-to 44 -3 draw-to 45 -3 draw-to 46 -2 draw-to 46 -1 draw-to 46 -1 draw-to 46 0 draw-to 47 1 draw-to 47 2 draw-to 47 2 draw-to 47 1 draw-to 48 1 draw-to 48 2 draw-to 49 3 draw-to 49 3 draw-to 49 4 draw-to 50 5 draw-to 50 5 draw-to 50 5 draw-to 51 5 draw-to 51 5 draw-to 51 5 draw-to 52 5 draw-to 52 5 draw-to 52 5 draw-to 53 5 draw-to 53 4 draw-to 54 4 draw-to 54 3 draw-to 53 3 draw-to 53 2 draw-to 54 2 draw-to 55 1 draw-to 56 1 draw-to 57 1 draw-to 56 0 draw-to 56 0 draw-to 57 -1 draw-to 56 -2 draw-to 56 -2 draw-to 57 -2 draw-to 57 -2 draw-to 56 -3 draw-to 57 -3 draw-to 58 -3 draw-to 58 -3 draw-to 58 -4 draw-to 58 -4 draw-to 58 -4 draw-to 54 -5 draw-to 42 -7 draw-to 41 -7 draw-to 38 -7 draw-to 39 -6 draw-to 39 -5 draw-to 40 -5 draw-to 41 -4 setxy 43 9 draw-to 43 9 draw-to 43 9 draw-to 44 6 draw-to 47 6 draw-to 47 4 draw-to 47 5 draw-to 48 6 draw-to 49 6 draw-to 49 6 draw-to 49 6 draw-to 50 6 draw-to 51 7 draw-to 51 6 draw-to 52 5 draw-to 51 5 draw-to 51 5 draw-to 50 5 draw-to 50 5 draw-to 50 5 draw-to 49 4 draw-to 49 3 draw-to 49 3 draw-to 48 2 draw-to 48 1 draw-to 47 1 draw-to 47 2 draw-to 47 2 draw-to 47 1 draw-to 46 0 draw-to 46 -1 draw-to 46 -1 draw-to 46 -2 draw-to 45 -3 draw-to 44 -3 draw-to 44 -4 draw-to 43 -4 draw-to 42 -4 draw-to 42 -4 draw-to 41 -4 draw-to 41 -4 draw-to 41 -3 draw-to 41 -3 draw-to 40 -3 draw-to 39 -2 draw-to 39 -1 draw-to 39 0 draw-to 39 0 draw-to 39 1 draw-to 40 2 draw-to 40 2 draw-to 41 2 draw-to 41 3 draw-to 41 4 draw-to 42 4 draw-to 42 5 draw-to 43 5 draw-to 43 6 draw-to 43 7 draw-to 43 8 draw-to 43 8 setxy 43 15 draw-to 42 14 draw-to 43 15 draw-to 44 16 draw-to 44 15 draw-to 45 15 draw-to 56 17 draw-to 56 17 draw-to 57 16 draw-to 57 16 draw-to 58 15 draw-to 58 14 draw-to 58 14 draw-to 57 14 draw-to 58 13 draw-to 58 13 draw-to 57 12 draw-to 57 12 draw-to 58 12 draw-to 58 11 draw-to 59 11 draw-to 59 10 draw-to 58 10 draw-to 58 9 draw-to 58 9 draw-to 57 9 draw-to 56 8 draw-to 47 6 draw-to 44 6 draw-to 43 9 setxy 56 8 draw-to 47 6 draw-to 56 8 draw-to 56 7 draw-to 56 7 draw-to 56 7 draw-to 56 7 draw-to 56 7 draw-to 55 6 draw-to 55 6 draw-to 55 6 draw-to 55 5 draw-to 55 4 draw-to 55 3 draw-to 56 2 draw-to 56 2 draw-to 55 2 draw-to 54 2 draw-to 54 2 draw-to 53 2 draw-to 53 3 draw-to 54 3 draw-to 54 4 draw-to 53 4 draw-to 53 5 draw-to 52 5 draw-to 52 5 draw-to 52 5 draw-to 51 7 draw-to 50 6 draw-to 49 6 draw-to 49 6 draw-to 49 6 draw-to 48 6 draw-to 47 5 draw-to 47 4 setxy 56 7 draw-to 57 7 draw-to 56 7 draw-to 56 6 draw-to 56 5 draw-to 56 5 draw-to 56 4 draw-to 56 4 draw-to 56 4 draw-to 56 4 draw-to 56 3 draw-to 56 2 draw-to 57 3 draw-to 57 2 draw-to 58 1 draw-to 58 1 draw-to 59 2 draw-to 59 3 draw-to 59 4 draw-to 58 3 setxy 57 8 draw-to 57 9 draw-to 57 8 draw-to 58 7 draw-to 58 6 draw-to 58 5 draw-to 59 5 draw-to 59 4 draw-to 59 4 draw-to 58 3 draw-to 57 7 draw-to 56 8 draw-to 57 9 setxy 58 1 draw-to 58 1 draw-to 58 1 draw-to 58 0 draw-to 58 -1 draw-to 58 -2 draw-to 58 -1 draw-to 58 0 draw-to 59 0 draw-to 58 1 setxy 58 15 draw-to 58 15 draw-to 58 15 draw-to 61 14 draw-to 61 14 draw-to 60 12 draw-to 60 12 draw-to 61 12 draw-to 61 9 draw-to 60 7 draw-to 60 6 draw-to 59 6 draw-to 59 7 draw-to 58 7 draw-to 57 8 draw-to 57 9 draw-to 58 9 draw-to 58 9 draw-to 58 10 draw-to 59 10 draw-to 59 11 draw-to 58 11 draw-to 58 12 draw-to 57 12 draw-to 57 12 draw-to 58 13 draw-to 57 14 draw-to 58 14 draw-to 58 14 setxy 45 17 draw-to 44 16 draw-to 45 17 draw-to 46 18 draw-to 46 18 draw-to 46 19 draw-to 46 19 draw-to 46 20 draw-to 46 21 draw-to 47 21 draw-to 48 21 draw-to 49 21 draw-to 51 21 draw-to 52 22 draw-to 52 23 draw-to 52 23 draw-to 52 24 draw-to 52 25 draw-to 52 25 draw-to 53 26 draw-to 53 27 draw-to 54 28 draw-to 55 29 draw-to 59 30 draw-to 59 29 draw-to 59 28 draw-to 59 27 draw-to 59 27 draw-to 59 26 draw-to 60 25 draw-to 60 25 draw-to 60 24 draw-to 60 23 draw-to 61 21 draw-to 61 18 draw-to 61 16 draw-to 61 15 draw-to 61 15 draw-to 61 14 draw-to 58 15 draw-to 57 16 draw-to 57 16 draw-to 56 17 draw-to 56 17 draw-to 45 15 draw-to 44 15 setxy 61 14 draw-to 61 14 draw-to 61 14 draw-to 61 13 draw-to 61 13 draw-to 63 15 draw-to 64 15 draw-to 64 15 draw-to 64 15 draw-to 64 16 draw-to 65 16 draw-to 65 16 draw-to 65 15 draw-to 65 15 draw-to 65 16 draw-to 66 16 draw-to 66 16 draw-to 66 15 draw-to 65 15 draw-to 64 14 draw-to 63 13 draw-to 62 13 draw-to 62 13 draw-to 61 12 draw-to 61 12 draw-to 60 13 draw-to 61 14 setxy 64 19 draw-to 63 19 draw-to 64 19 draw-to 65 19 draw-to 66 18 draw-to 66 17 draw-to 65 17 draw-to 64 16 draw-to 63 16 draw-to 62 15 draw-to 62 15 draw-to 61 15 draw-to 61 15 draw-to 61 16 draw-to 61 19 setxy 66 22 draw-to 61 21 draw-to 66 22 draw-to 67 23 draw-to 67 23 draw-to 67 23 draw-to 67 22 draw-to 67 22 draw-to 67 21 draw-to 68 21 draw-to 68 20 draw-to 69 20 draw-to 70 20 draw-to 70 20 draw-to 69 21 draw-to 69 21 draw-to 69 21 draw-to 69 21 draw-to 70 21 draw-to 70 20 draw-to 70 20 draw-to 70 19 draw-to 70 19 draw-to 70 19 draw-to 69 19 draw-to 69 18 draw-to 68 19 draw-to 68 19 draw-to 68 19 draw-to 68 18 draw-to 68 18 draw-to 67 18 draw-to 67 19 draw-to 67 19 draw-to 67 19 draw-to 66 20 draw-to 65 19 draw-to 63 19 draw-to 61 19 setxy 66 17 draw-to 65 17 draw-to 66 17 draw-to 67 18 draw-to 67 18 draw-to 67 18 draw-to 67 18 draw-to 67 18 draw-to 67 18 draw-to 67 18 draw-to 67 18 draw-to 68 18 draw-to 67 18 draw-to 67 19 draw-to 67 19 draw-to 67 19 draw-to 66 20 draw-to 65 19 draw-to 66 18 draw-to 66 17 setxy 63 31 draw-to 59 30 draw-to 63 31 draw-to 63 30 draw-to 64 29 draw-to 63 29 draw-to 63 28 draw-to 63 28 draw-to 63 28 draw-to 63 27 draw-to 63 26 draw-to 62 25 draw-to 62 24 draw-to 63 23 draw-to 63 22 draw-to 61 21 draw-to 60 23 draw-to 60 24 draw-to 60 25 draw-to 60 25 draw-to 59 26 draw-to 59 27 draw-to 59 27 draw-to 59 28 draw-to 59 29 setxy 63 32 draw-to 63 31 draw-to 63 32 draw-to 64 32 draw-to 64 32 draw-to 66 26 draw-to 66 25 draw-to 67 25 draw-to 67 23 draw-to 67 23 draw-to 66 22 draw-to 63 22 draw-to 63 23 draw-to 62 24 draw-to 62 25 draw-to 63 26 draw-to 63 27 draw-to 63 27 draw-to 63 28 draw-to 63 28 draw-to 63 28 draw-to 63 28 draw-to 63 28 draw-to 63 28 draw-to 63 29 draw-to 64 29 draw-to 63 30 setxy 65 33 draw-to 64 32 draw-to 65 33 draw-to 65 33 draw-to 65 34 draw-to 65 34 draw-to 66 35 draw-to 65 36 draw-to 65 37 draw-to 66 37 draw-to 66 38 draw-to 65 38 draw-to 67 42 draw-to 67 42 draw-to 67 41 draw-to 68 41 draw-to 68 42 draw-to 69 42 draw-to 71 41 draw-to 71 39 draw-to 72 37 draw-to 72 36 draw-to 73 36 draw-to 73 35 draw-to 73 35 draw-to 74 35 draw-to 74 34 draw-to 74 33 draw-to 73 32 draw-to 73 31 draw-to 72 31 draw-to 72 31 draw-to 71 30 draw-to 71 30 draw-to 70 29 draw-to 70 29 draw-to 69 28 draw-to 69 28 draw-to 69 27 draw-to 68 27 draw-to 68 27 draw-to 68 26 draw-to 67 25 draw-to 67 25 draw-to 67 24 draw-to 67 23 draw-to 67 25 draw-to 66 25 draw-to 66 26 draw-to 64 32 draw-to 64 32 end `observer` ; ###x - x coordinate of city ; ###y - y coordinate of city ; ###p - percentage of total passengers for city globals [ atlx atly chix chiy lax lay dalx daly denx deny lvx lvy phox phoy houx houy minx miny detx dety sfx sfy miax miay totaldays toatl tochi tola todal toden tolv topho tohou tomin todet tosf tomia ; people arriving in each city fromatl fromchi fromla fromdal fromden fromlv frompho fromhou frommin fromdet fromsf frommia ; people departing from each city loccp ; cumulative probability for the initial location of a plane atlcp chicp lacp dalcp dencp phocp lvcp houcp mincp detcp sfcp miacp ; q-matrix as a cumulative probability matrix with 12 arrays ];end globals ; globals from the slidebars: ; beta - influences infect rate for unvaccinated individuals H -> L ; betaprime - influences infect rate for vaccinated individuals H -> L ; f - influences infect rate (proportion of vaccinated individuals) ; mu-prime - influences latent getting sick L -> S ; delta - recover rate S -> R ; deltaprime - chance to lose immunity R -> H ; birthrate - not used currently ; deathrate - not used currently ; temperature - for the graph scale ; bbar - connectedness factor influences infect rate also ; ; each of the 12 major airports in US is represented by a colored patch. ; the position of the patches on the grid is similar with the location of each airport on the US map ; since all these airports are also major hubs we assume that there exist flights from any of them to any of them with no restrictions ; every patch (city) has the following variables: ; - name of the city: city ; - number of population: pop ; - number of healthy: pophealthy ; - number of latent: poplatent ; - number of sick: popsick ; - number of recovered: poprecovered ; - the area in square miles area ; - the population density density ; - chance of being infected alpha ; - number of visits flights (visits by tracked planes - (turtles 0 - 23) - used to check steady state) ; - number of deaths: deaths (this is computed using the US anually death-rate and the population size of the city) ; - number of births: births (this is computed using the US anually birth-rate and the population size of the city) patches-own [ city [Atlanta Chicago LosAngeles Dallas Denver Phoenix LasVegas Houston Minneapolis Detroit SanFrancisco Miami] pop ; total number of people in a city pophealthy ; number of healthy people in a city poplatent ; number of latent people popsick ; number of sick people poprecovered ; number of recovered people area ; area of the city is square miles density ; population density in the city flights alpha ; probability of becoming latent, given you are healthy and not vaccinated (1-(1-beta)^(l+s)*bbar) alphaprime ; probability of becoming latent given you are healthy and vaccinated (1-(1-betaprime)^(l+s)*bbar) alphabar ; probability of becoming latent given you are healthy (f*alphaprime + (1-f) * alpha) deaths births] ;called by pressing the "Go" button to go init-departures init-arrivals ifelse (graph-on = 1) [ startGraph ] [ stopGraph ] ask-turtles [fly] update-pops ; update the population (healthy, latent, sick, recovered) at the end of the day settotaldays (totaldays + 1) track-flights ;print-flight ;for examining steady state ;if (totaldays mod 50 = 0) [co] ;clear the output window every 50 lines ;wait delay ;to make it easier to read data print-Atlanta-pops ;print the pops in atlanta ; if (totaldays mod 2 = 0) ;print pictures :) ; [ ; export-picture-interface-name getiframe ; export-picture-patches-name getpframe ; ] end ; called by go ; uses the first 24 turtles to demonstrate the steady state behavior (24 used to expedite the process) to track-flights let [:i 0] repeat 24 [ask-turtle :i [update-flights] set :i (:i + 1)] end ; called by go ; currently commmented out for perfromance reasons - mainly a debugging tool ; prints the percentage of flights to a city to print-flight type ((flights-at atlx atly) / totaldays) type " " type ((flights-at chix chiy) / totaldays) type " " type ((flights-at lax lay) / totaldays) type " " type ((flights-at dalx daly) / totaldays) type " " type ((flights-at denx deny) / totaldays) type " " type ((flights-at lvx lvy) / totaldays) type " " type ((flights-at phox phoy) / totaldays) type " " type ((flights-at houx houy) / totaldays) type " " type ((flights-at minx miny) / totaldays) type " " type ((flights-at detx dety) / totaldays) type " " type ((flights-at sfx sfy) / totaldays) type " " print ((flights-at miax miay) / totaldays) end ;this method is called by the "Flights" monitors to update-flights :x :y output (flights-at :x :y) / totaldays / 24 end ; initialize the cumulative probabilities arrays ; initial locations (loccp) ; q-matrix (atlcp, chicp, lacp, dalcp, dencp, phocp, lvcp, houcp, mincp, detcp, sfcp, miacp) ; called by setup to initcp set loccp [14.81 27.63 38.46 48.63 55.5 62.35 69.09 75.62 81.9 88.15 94.21 100.00] set atlcp [0.00 10.61 19.70 31.31 42.93 50.00 55.05 66.16 74.75 82.83 90.40 100.00] set chicp [9.09 9.09 17.27 27.27 35.45 44.55 52.73 61.36 71.36 81.36 91.36 100.00] set lacp [9.66 19.89 19.89 31.82 42.05 53.98 63.07 71.59 78.41 82.39 92.05 100.00] set dalcp [10.61 21.72 31.82 31.82 41.41 50.51 60.10 69.19 77.78 84.85 95.45 100.00] set dencp [11.28 22.05 30.77 41.03 41.03 51.28 61.54 70.77 81.54 86.67 95.90 100.00] set phocp [8.14 19.77 30.81 42.44 54.07 54.07 60.47 69.77 79.07 86.05 98.84 100.00] set lvcp [8.03 20.44 32.12 45.99 60.58 68.61 68.61 73.72 79.56 84.67 97.81 100.00] set houcp [14.38 25.63 35.00 45.00 56.25 66.25 75.63 75.63 81.25 86.88 95.00 100.00] set mincp [12.24 27.21 34.69 46.26 59.86 70.75 76.19 82.31 82.31 92.52 97.96 100.00] set detcp [14.17 31.67 37.50 49.17 57.50 67.50 73.33 80.83 92.50 92.50 95.00 100.00] set sfcp [7.50 21.25 32.50 45.00 56.88 70.63 81.25 89.38 94.38 96.25 96.25 100.00] set miacp [20.83 38.54 53.13 62.50 71.88 73.96 77.08 85.42 88.54 94.79 100.00 100.00] end ; called when "Setup" button is pressed to setup setup-graph1 ; Graph 1: Track the current percentage of latent people per city setup-graph2 ; Graph 2: Track the current percentage of sick people per city setup-graph3 ; Graph 3: Track the current percentage of recovered people per city setup-graph4 ; Graph 4: Track the evolution of the percentage of infected (sick + latent) people over time setup-graph5 ; Graph 5: Track the evolution of infected people (latent people + sick people), healthy people and recovered people for Atlanta setup-graph6 ; Graph 6: Track populations in Atlanta settotaldays 0 ; initialize the time counter ca ;clear the map if (usamap-on = 1) [ ; draw USA map crt 1 ask-turtle 0 [setc grey draw-usa] ct ] init-cities ; initialize the city globals and patches crt numplanes initcp ; initialize the cumulative probabilities arrays ask-turtles [init] ; initialize the turtles end ; called when the "Reset Infected Bars" button is pressed ; reset the infected people bars to init-infbars setatllatent 0 setchilatent 0 setlalatent 0 setdallatent 0 setdenlatent 0 setlvlatent 0 setpholatent 0 sethoulatent 0 setminlatent 0 setdetlatent 0 setsflatent 0 setmialatent 0 end ; called by go ; calls update-city method for each city to update-pops update-city atlx atly update-city chix chiy update-city lax lay update-city dalx daly update-city denx deny update-city lvx lvy update-city phox phoy update-city houx houy update-city minx miny update-city detx dety update-city sfx sfy update-city miax miay end ; called by update-pops ; update the population variables and the alpha for the given city at x,y to update-city :x :y ;set alpha ;ask-patch-at :x :y [ setalpha ( 1 - ( 1 - beta / 100 )^(((poplatent + popsick) / pop) * bbar )) ] ;changed range of beta to 1000 for finer granularity ask-patch-at :x :y [ setalpha ( 1 - ( 1 - beta / 1000 )^(((poplatent + popsick) / pop) * bbar )) setalphaprime ( 1 - ( 1 - betaprime / 1000 )^(((poplatent + popsick) / pop) * bbar )) setalphabar (f / 100 * alphaprime + (1 - f / 100) * alpha) ] ;store the previous values in temp variables let [:poph (pophealthy-at :x :y)] let [:popr (poprecovered-at :x :y)] let [:popl (poplatent-at :x :y)] let [:pops (popsick-at :x :y)] ;figure out the new values based on the old ones let [:h (update-healthy :poph :popr :x :y)] ask-patch-at :x :y [set pophealthy :h] let [:l (update-latent :popl :poph :x :y)] ask-patch-at :x :y [set poplatent :l] let [:s (update-sick :popl :pops)] ask-patch-at :x :y [set popsick :s] let [:r (update-recovered :pops :popr)] ask-patch-at :x :y [set poprecovered :r] update-pop :x :y end ; called by update-city ; updates the population of the city (if people are traveling this value is changed). to update-pop :x :y ask-patch-at :x :y [set pop (pophealthy + poplatent + popsick + poprecovered)] end ; this is based on Markov models of viral spread - "Modeling Viral Epidemiology in Connected Networks", W. M. Spears, L. Billings, I. B. Schwartz ; called by update-city to update-healthy :poph :popr :x :y output (:poph + (:popr * (deltaprime / 1000)) - (:poph * (alphabar-at :x :y))) end ; called by update-city to update-latent :popl :poph :x :y ;old ; output (:popl + (:poph * (alpha1 / 10000)) - (:popl * (mu-prime / 100))) ;new output (:popl + (:poph * (alphabar-at :x :y)) - (:popl * (mu-prime / 100))) end ; called by update-city to update-sick :popl :pops output (:pops + (:popl * (mu-prime / 100)) - (:pops * (delta / 100))) end ; called by update-city to update-recovered :pops :popr output (:popr + (:pops * (delta / 100)) - (:popr * (deltaprime / 1000))) end ; called by go ; resets the outgoing passengers for all cities to zero to init-departures setfromatl 0 setfromchi 0 setfromla 0 setfromdal 0 setfromden 0 setfromlv 0 setfrompho 0 setfromhou 0 setfrommin 0 setfromdet 0 setfromsf 0 setfrommia 0 end ; called by go ; resets the incoming passenger for all cities to zero to init-arrivals settoatl 0 settochi 0 settola 0 settodal 0 settoden 0 settolv 0 settopho 0 settohou 0 settomin 0 settodet 0 settosf 0 settomia 0 end ; called by starting or pressing the "Graph" button ; if graph-on = 1, then it is called by go, else it is turned off by go to graph graph1 graph2 graph3 graph4 graph5 graph6 end ; called by setup to setup-graph1 plotid 5 setplot-yrange 0 0.5 setplot-ymax 0.5 setplot-xrange 1 12 setplot-title "Percentage of latent people / city" pp 1 ppreset setppc red ;Atlanta pp 2 ppreset setppc orange ;Chicago pp 3 ppreset setppc brown ;LosAngeles pp 4 ppreset setppc yellow ;Dallas pp 5 ppreset setppc green ;Denver pp 6 ppreset setppc turquoise ;Phoenix pp 7 ppreset setppc lime ;LasVegas pp 8 ppreset setppc cyan ;Houston pp 9 ppreset setppc sky ;Minneapolis pp 10 ppreset setppc blue ;Detroit pp 11 ppreset setppc purple ;SanFrancisco pp 12 ppreset setppc magenta ;Miami end ; called by graph to graph1 plotid 5 pp 1 ppd plot (1 / (1 + exp (temperature * ((poplatent-at atlx atly) / (pop-at atlx atly))))) - 0.5 pp 2 ppd plot (1 / (1 + exp (temperature * ((poplatent-at chix chiy) / (pop-at chix chiy))))) - 0.5 pp 3 ppd plot (1 / (1 + exp (temperature * ((poplatent-at lax lay) / (pop-at lax lay))))) - 0.5 pp 4 ppd plot (1 / (1 + exp (temperature * ((poplatent-at dalx daly) / (pop-at dalx daly))))) - 0.5 pp 5 ppd plot (1 / (1 + exp (temperature * ((poplatent-at denx deny) / (pop-at denx deny))))) - 0.5 pp 6 ppd plot (1 / (1 + exp (temperature * ((poplatent-at phox phoy) / (pop-at phox phoy))))) - 0.5 pp 7 ppd plot (1 / (1 + exp (temperature * ((poplatent-at lvx lvy) / (pop-at lvx lvy))))) - 0.5 pp 8 ppd plot (1 / (1 + exp (temperature * ((poplatent-at houx houy) / (pop-at houx houy))))) - 0.5 pp 9 ppd plot (1 / (1 + exp (temperature * ((poplatent-at minx miny) / (pop-at minx miny))))) - 0.5 pp 10 ppd plot (1 / (1 + exp (temperature * ((poplatent-at detx dety) / (pop-at detx dety))))) - 0.5 pp 11 ppd plot (1 / (1 + exp (temperature * ((poplatent-at sfx sfy) / (pop-at sfx sfy))))) - 0.5 pp 12 ppd plot (1 / (1 + exp (temperature * ((poplatent-at miax miay) / (pop-at miax miay))))) - 0.5 end ; called by setup to setup-graph2 plotid 6 setplot-yrange 0 0.5 ;(alpha1 + alpha2 + alpha3) / 10000 setplot-xrange 1 12 setplot-title "Percentage of sick people / city" pp 1 ppreset setppc red ;Atlanta pp 2 ppreset setppc orange ;Chicago pp 3 ppreset setppc brown ;LosAngeles pp 4 ppreset setppc yellow ;Dallas pp 5 ppreset setppc green ;Denver pp 6 ppreset setppc turquoise ;Phoenix pp 7 ppreset setppc lime ;LasVegas pp 8 ppreset setppc cyan ;Houston pp 9 ppreset setppc sky ;Minneapolis pp 10 ppreset setppc blue ;Detroit pp 11 ppreset setppc purple ;SanFrancisco pp 12 ppreset setppc magenta ;Miami end ; called by graph to graph2 plotid 6 pp 1 ppd plot (1 / (1 + exp (temperature * ((popsick-at atlx atly) / (pop-at atlx atly))))) - 0.5 pp 2 ppd plot (1 / (1 + exp (temperature * ((popsick-at chix chiy) / (pop-at chix chiy))))) - 0.5 pp 3 ppd plot (1 / (1 + exp (temperature * ((popsick-at lax lay) / (pop-at lax lay))))) - 0.5 pp 4 ppd plot (1 / (1 + exp (temperature * ((popsick-at dalx daly) / (pop-at dalx daly))))) - 0.5 pp 5 ppd plot (1 / (1 + exp (temperature * ((popsick-at denx deny) / (pop-at denx deny))))) - 0.5 pp 6 ppd plot (1 / (1 + exp (temperature * ((popsick-at phox phoy) / (pop-at phox phoy))))) - 0.5 pp 7 ppd plot (1 / (1 + exp (temperature * ((popsick-at lvx lvy) / (pop-at lvx lvy))))) - 0.5 pp 8 ppd plot (1 / (1 + exp (temperature * ((popsick-at houx houy) / (pop-at houx houy))))) - 0.5 pp 9 ppd plot (1 / (1 + exp (temperature * ((popsick-at minx miny) / (pop-at minx miny))))) - 0.5 pp 10 ppd plot (1 / (1 + exp (temperature * ((popsick-at detx dety) / (pop-at detx dety))))) - 0.5 pp 11 ppd plot (1 / (1 + exp (temperature * ((popsick-at sfx sfy) / (pop-at sfx sfy))))) - 0.5 pp 12 ppd plot (1 / (1 + exp (temperature * ((popsick-at miax miay) / (pop-at miax miay))))) - 0.5 end ; called by setup to setup-graph3 plotid 7 setplot-yrange 0 0.5 setplot-xrange 1 12 setplot-title "Percentage of recovered people / city" pp 1 ppreset setppc red ;Atlanta pp 2 ppreset setppc orange ;Chicago pp 3 ppreset setppc brown ;LosAngeles pp 4 ppreset setppc yellow ;Dallas pp 5 ppreset setppc green ;Denver pp 6 ppreset setppc turquoise ;Phoenix pp 7 ppreset setppc lime ;LasVegas pp 8 ppreset setppc cyan ;Houston pp 9 ppreset setppc sky ;Minneapolis pp 10 ppreset setppc blue ;Detroit pp 11 ppreset setppc purple ;SanFrancisco pp 12 ppreset setppc magenta ;Miami end ; called by graph to graph3 plotid 7 pp 1 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at atlx atly) / (pop-at atlx atly))))) - 0.5 pp 2 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at chix chiy) / (pop-at chix chiy))))) - 0.5 pp 3 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at lax lay) / (pop-at lax lay))))) - 0.5 pp 4 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at dalx daly) / (pop-at dalx daly))))) - 0.5 pp 5 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at denx deny) / (pop-at denx deny))))) - 0.5 pp 6 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at phox phoy) / (pop-at phox phoy))))) - 0.5 pp 7 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at lvx lvy) / (pop-at lvx lvy))))) - 0.5 pp 8 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at houx houy) / (pop-at houx houy))))) - 0.5 pp 9 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at minx miny) / (pop-at minx miny))))) - 0.5 pp 10 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at detx dety) / (pop-at detx dety))))) - 0.5 pp 11 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at sfx sfy) / (pop-at sfx sfy))))) - 0.5 pp 12 ppd plot (1 / (1 + exp (temperature * ((poprecovered-at miax miay) / (pop-at miax miay))))) - 0.5 end ; called by setup to setup-graph4 plotid 8 setplot-yrange 0 0.5 setplot-xrange 0 1 setplot-title "Percentage of infected people / city" pp 1 ppreset setppc red ;Atlanta pp 2 ppreset setppc orange ;Chicago pp 3 ppreset setppc brown ;LosAngeles pp 4 ppreset setppc yellow ;Dallas pp 5 ppreset setppc green ;Denver pp 6 ppreset setppc turquoise ;Phoenix pp 7 ppreset setppc lime ;LasVegas pp 8 ppreset setppc cyan ;Houston pp 9 ppreset setppc sky ;Minneapolis pp 10 ppreset setppc blue ;Detroit pp 11 ppreset setppc purple ;SanFrancisco pp 12 ppreset setppc magenta ;Miami end ; called by graph to graph4 plotid 8 pp 1 ppd plot (1 / (1 + exp (temperature * (((poplatent-at atlx atly) + (popsick-at atlx atly)) / (pop-at atlx atly))))) - 0.5 pp 2 ppd plot (1 / (1 + exp (temperature * (((poplatent-at chix chiy) + (popsick-at chix chiy)) / (pop-at chix chiy))))) - 0.5 pp 3 ppd plot (1 / (1 + exp (temperature * (((poplatent-at lax lay) + (popsick-at lax lay)) / (pop-at lax lay))))) - 0.5 pp 4 ppd plot (1 / (1 + exp (temperature * (((poplatent-at dalx daly) + (popsick-at dalx daly)) / (pop-at dalx daly))))) - 0.5 pp 5 ppd plot (1 / (1 + exp (temperature * (((poplatent-at denx deny) + (popsick-at denx deny)) / (pop-at denx deny))))) - 0.5 pp 6 ppd plot (1 / (1 + exp (temperature * (((poplatent-at phox phoy) + (popsick-at phox phoy)) / (pop-at phox phoy))))) - 0.5 pp 7 ppd plot (1 / (1 + exp (temperature * (((poplatent-at lvx lvy) + (popsick-at lvx lvy)) / (pop-at lvx lvy))))) - 0.5 pp 8 ppd plot (1 / (1 + exp (temperature * (((poplatent-at houx houy) + (popsick-at houx houy)) / (pop-at houx houy))))) - 0.5 pp 9 ppd plot (1 / (1 + exp (temperature * (((poplatent-at minx miny) + (popsick-at minx miny)) / (pop-at minx miny))))) - 0.5 pp 10 ppd plot (1 / (1 + exp (temperature * (((poplatent-at detx dety) + (popsick-at detx dety)) / (pop-at detx dety))))) - 0.5 pp 11 ppd plot (1 / (1 + exp (temperature * (((poplatent-at sfx sfy) + (popsick-at sfx sfy)) / (pop-at sfx sfy))))) - 0.5 pp 12 ppd plot (1 / (1 + exp (temperature * (((poplatent-at miax miay) + (popsick-at miax miay)) / (pop-at miax miay))))) - 0.5 end ; called by setup to setup-graph5 plotid 10 setplot-yrange 0 1 setplot-xrange 1 1000 setplot-title "Population Distribution in Atlanta" pp 1 ppreset setppc green ;healthy people pp 2 ppreset setppc red ;infected people pp 3 ppreset setppc blue ;recovered people end ; called by graph to graph5 plotid 10 pp 1 ppd plot ((pophealthy-at atlx atly) / (pop-at atlx atly)) pp 2 ppd plot (((poplatent-at atlx atly) + (popsick-at atlx atly)) / (pop-at atlx atly)) pp 3 ppd plot ((poprecovered-at atlx atly) / (pop-at atlx atly)) end to setup-graph6 plotid 12 setplot-yrange 0 1 setplot-xrange 1 1000 setplot-title "Population Distribution in Atlanta" pp 1 ppreset setppc green ;healthy people pp 2 ppreset setppc orange ;latent people pp 3 ppreset setppc red ;sick people pp 4 ppreset setppc blue ;recovered people end to graph6 plotid 12 pp 1 ppd plot ((pophealthy-at atlx atly) / (pop-at atlx atly)) pp 2 ppd plot ((poplatent-at atlx atly) / (pop-at atlx atly)) pp 3 ppd plot ((popsick-at atlx atly) / (pop-at atlx atly)) pp 4 ppd plot ((poprecovered-at atlx atly) / (pop-at atlx atly)) end ; called by setup ; initializes the populations, areas, locations, colors, and names of each city to init-cities setatlx 35 setatly -19 setchix 23 setchiy 13 setlax -67 setlay -7 setdalx -4 setdaly -23 setdenx -25 setdeny 5 setphox -28 setphoy -12 setlvx -53 setlvy -4 sethoux 3 sethouy -36 setminx 9 setminy 23 setdetx 34 setdety 13 setsfx -70 setsfy 8 setmiax 51 setmiay -49 ; set up the population monitors for each city ; sources of population statistics: ; actual (used): http://www.demographia.com/db-worldua.pdf ; estimates (commented out): http://eire.census.gov/popest/archives/metro/ma99-02.txt setatlpop 3500000; 3857097 setchipop 8307000 ;8885919 setlapop 13296000 ;16036587 setdalpop 4146000 ;4909523 setdenpop 1985000 ;2417908 setphopop 2907000 ;3013696 setlvpop 1314000 ;1381086 sethoupop 3823000 ;4493741 setminpop 2389000 ;2872109 setdetpop 3903000 ;5469312 setsfpop 4767000 ;6873645 setmiapop 4919000 ;3711102 ; initialize each city patch ; source of area and population statistics: http://www.demographia.com/db-worldua.pdf create-city atlx atly red Atlanta 3500000 atllatent 1963 create-city chix chiy orange Chicago 8307000 chilatent 2123 create-city lax lay brown LosAngeles 13296000 lalatent 2107 create-city dalx daly yellow Dallas 4146000 dallatent 1407 create-city denx deny green Denver 1985000 denlatent 499 create-city phox phoy turquoise Phoenix 2907000 pholatent 799 create-city lvx lvy lime LasVegas 1314000 lvlatent 286 create-city houx houy cyan Houston 3823000 houlatent 1295 create-city minx miny sky Minneapolis 2389000 minlatent 894 create-city detx dety blue Detroit 3903000 detlatent 1261 create-city sfx sfy purple SanFrancisco 4767000 sflatent 787 create-city miax miay magenta Miami 4919000 mialatent 1116 end ; called by init-cities ; initializes a patch with the values passed in ; :x, :y are the patch coordinates, :color is the color for the city, :city is the name of the city ; :pop is the city's population, :popl is the city's latent population (passed from the "L" slidebars in init-cities) ; :area is the city's area to create-city :x :y :color :city :pop :popl :area stamp-at :x :y :color ask-patch-at :x :y [ setcity :city setpop :pop setarea :area ; source - USA birth and death rates: CIA World Factbook - http://www.cia.gov/cia/publications/factbook/geos/us.html setpoplatent :popl setpophealthy (pop - poplatent) setpopsick 0 setpoprecovered 0 setdensity (pop / area) setflights 0 setdeaths (pop / 1000 * 8.44) ; how many people will die in a year in this city setbirths (pop / 1000 * 14.14) ; how many people will be born in a year in this city ] end ; called when the "Stop" button is pressed ; stops the simulation to stopit stopGraph ;stop the Graph button stopGo ;stop the Go button ;update-bars ;set the bars to reflect current values of latent and total pop for the cities ;save-output ; saves the output in the output window - for debugging purposes end ; called in stopit ; updates the "L" bars with the current value of poplatent for each city and ; also sets the "P" bars to update-bars setatllatent poplatent-at atlx atly setatlpop pop-at atlx atly setchilatent poplatent-at chix chiy setchipop pop-at chix chiy setlalatent poplatent-at lax lay setlapop pop-at lax lay setdallatent poplatent-at dalx daly setdalpop pop-at dalx daly setdenlatent poplatent-at denx deny setdenpop pop-at denx deny setpholatent poplatent-at phox phoy setphopop pop-at phox phoy setlvlatent poplatent-at lvx lvy setlvpop pop-at lvx lvy sethoulatent poplatent-at houx houy sethoupop pop-at houx houy setminlatent poplatent-at minx miny setminpop pop-at minx miny setdetlatent poplatent-at detx dety setdetpop pop-at detx dety setsflatent poplatent-at sfx sfy setsfpop pop-at sfx sfy setmialatent poplatent-at miax miay setmiapop pop-at miax miay end ; called by the "Total Pop" monitor ; finds the total population to get-pop output (pop-at atlx atly) + (pop-at chix chiy) + (pop-at lax lay) + (pop-at dalx daly) + (pop-at denx deny) + (pop-at phox phoy) + (pop-at lvx lvy) + (pop-at houx houy) + (pop-at minx miny) + (pop-at detx dety) + (pop-at sfx sfy) + (pop-at miax miay) end ; finds the total latent population to get-poplatent output (poplatent-at atlx atly) + (poplatent-at chix chiy) + (poplatent-at lax lay) + (poplatent-at dalx daly) + (poplatent-at denx deny) + (poplatent-at phox phoy) + (poplatent-at lvx lvy) + (poplatent-at houx houy) + (poplatent-at minx miny) + (poplatent-at detx dety) + (poplatent-at sfx sfy) + (poplatent-at miax miay) end to get-pophealthy output (pophealthy-at atlx atly) + (pophealthy-at chix chiy) + (pophealthy-at lax lay) + (pophealthy-at dalx daly) + (pophealthy-at denx deny) + (pophealthy-at phox phoy) + (pophealthy-at lvx lvy) + (pophealthy-at houx houy) + (pophealthy-at minx miny) + (pophealthy-at detx dety) + (pophealthy-at sfx sfy) + (pophealthy-at miax miay) end to getHProp output (get-pophealthy / get-pop) end ; used to find the density (expressed as a number of turtles) to use in the micro-level simulation (which has a fixed area) to get-num-turtles output (density-at atlx atly) / (density-at lax lay) * 500 end ; called when the "Refresh" button is pressed ; causes monitors and bars to reveal their actual values if they differ from displayed ones to refresh-bars end ; called when the "Update" button is pressed ; allows users to inject latent people into the population during and before running the simulation to update ask-patch-at atlx atly [let [:i poplatent] setpoplatent (:i + atllatent) setpophealthy (pophealthy - atllatent) setpop atlpop] ask-patch-at chix chiy [let [:i poplatent] setpoplatent (:i + chilatent) setpophealthy (pophealthy - chilatent) setpop chipop] ask-patch-at lax lay [let [:i poplatent] setpoplatent (:i + lalatent) setpophealthy (pophealthy - lalatent) setpop lapop ] ask-patch-at dalx daly [let [:i poplatent] setpoplatent (:i + dallatent) setpophealthy (pophealthy - dallatent) setpop dalpop] ask-patch-at denx deny [let [:i poplatent] setpoplatent (:i + denlatent) setpophealthy (pophealthy - denlatent) setpop denpop] ask-patch-at phox phoy [let [:i poplatent] setpoplatent (:i + pholatent) setpophealthy (pophealthy - pholatent) setpop phopop] ask-patch-at lvx lvy [let [:i poplatent] setpoplatent (:i + lvlatent) setpophealthy (pophealthy - lvlatent) setpop lvpop] ask-patch-at houx houy [let [:i poplatent] setpoplatent (:i + houlatent) setpophealthy (pophealthy - houlatent) setpop houpop] ask-patch-at minx miny [let [:i poplatent] setpoplatent (:i + minlatent) setpophealthy (pophealthy - minlatent) setpop minpop] ask-patch-at detx dety [let [:i poplatent] setpoplatent (:i + detlatent) setpophealthy (pophealthy - detlatent) setpop detpop] ask-patch-at sfx sfy [let [:i poplatent] setpoplatent (:i + sflatent) setpophealthy (pophealthy - sflatent) setpop sfpop] ask-patch-at miax miay [let [:i poplatent] setpoplatent (:i + mialatent) setpophealthy (pophealthy - mialatent) setpop miapop] end ; a convenience function to get the name of a city from its location - not used currently, but useful to get-name :x :y if ((:x = atlx) and (:y = atly)) [output "Atlanta"] if ((:x = chix) and (:y = chiy)) [output "Chicago"] if ((:x = lax) and (:y = lay)) [output "Los Angeles"] if ((:x = dalx) and (:y = daly)) [output "Dallas"] if ((:x = denx) and (:y = deny)) [output "Denver"] if ((:x = phox) and (:y = phoy)) [output "Phoenix"] if ((:x = lvx) and (:y = lvy)) [output "Las Vegas"] if ((:x = houx) and (:y = houy)) [output "Houston"] if ((:x = minx) and (:y = miny)) [output "Minneapolis"] if ((:x = detx) and (:y = dety)) [output "Detroit"] if ((:x = sfx) and (:y = sfy)) [output "San Francisco"] if ((:x = miax) and (:y = miay)) [output "Miami"] end to demo1 setbeta 2 setbbar 10 setmu-prime 32 setdelta 10 setdeltaprime 0 setatllatent 100 end to demo2 setbeta 2 setbbar 5 setmu-prime 32 setdelta 10 setdeltaprime 0 setatllatent 100 end to demo3 setbeta 2 setbbar 10 setmu-prime 33 setdelta 10 setdeltaprime 5 setatllatent 100 end to demo4 setbeta 2 setbbar 10 setmu-prime 33 setdelta 10 setdeltaprime 1 setatllatent 100 end to demo5 setbeta 2 setbbar 10 setmu-prime 33 setdelta 10 setdeltaprime 10 setatllatent 100 end to print-Atlanta-pops type (pophealthy-at atlx atly) type " " type (poplatent-at atlx atly) type " " type (popsick-at atlx atly) type " " print (poprecovered-at atlx atly) end ;to getiframe ; let [:fnum (totaldays mod 2)] ; output (to-string("iframe" + :fnum)) ;end ;to getpframe ; let [:fnum (totaldays mod 2)] ; output ("iframe":fnum) ;end to steady-h output ((delta / 100 * mu-prime / 100) / ((delta / 100 + mu-prime / 100) * bbar * (f / 100 * betaprime / 1000 + (1 - f / 100) * beta / 1000))) end to steady-l output ((1 - steady-h)/(1 + mu-prime / delta + mu-prime / deltaprime * 10)) end to steady-s output (steady-l * mu-prime / delta) end to steady-r output (steady-s * delta * 10 / deltaprime) end to steady-f output (((delta / 100 * mu-prime / 100) / ((delta / 100 + mu-prime / 100) * bbar) - beta / 1000) / ((betaprime - beta) / 1000)) end to actual-steady-f output (((delta / 100 * mu-prime / 100) / ((delta / 100 + mu-prime / 100) * bbar * getHProp) - beta / 1000) / ((betaprime - beta) / 1000)) end `information` `interface` SLCanvas top-left 0 0 SLMonitor top-left 670 0 width-height 80 36 name "Pass / day" list-to-run "fromatl + toatl" digits 0 delay 0.5 monitor-number 93 show-name? true whichip 81 onewhichip 82 SLMonitor top-left 670 80 width-height 80 36 name "Pass / day" list-to-run "fromchi + tochi" digits 0 delay 0.5 monitor-number 95 show-name? true whichip 83 onewhichip 84 SLMonitor top-left 670 160 width-height 80 36 name "Pass / day" list-to-run "fromla + tola" digits 0 delay 0.5 monitor-number 96 show-name? true whichip 85 onewhichip 86 SLMonitor top-left 670 240 width-height 80 36 name "Pass / day" list-to-run "fromdal + todal" digits 0 delay 0.5 monitor-number 97 show-name? true whichip 87 onewhichip 88 SLMonitor top-left 670 320 width-height 80 36 name "Pass / day" list-to-run "fromden + toden" digits 0 delay 0.5 monitor-number 98 show-name? true whichip 89 onewhichip 90 SLMonitor top-left 670 560 width-height 80 36 name "Pass / day" list-to-run "fromhou + tohou" digits 0 delay 0.5 monitor-number 101 show-name? true whichip 91 onewhichip 92 SLMonitor top-left 670 720 width-height 80 36 name "Pass / day" list-to-run "fromdet + todet" digits 0 delay 0.5 monitor-number 103 show-name? true whichip 93 onewhichip 94 SLMonitor top-left 670 880 width-height 80 36 name "Pass / day" list-to-run "frommia + tomia" digits 0 delay 0.5 monitor-number 105 show-name? true whichip 95 onewhichip 96 SLMonitor top-left 670 960 width-height 80 36 name "Total Pass/Day" list-to-run "toatl + tochi + tola + todal + toden + tolv + topho + tohou + tomin + todet + tosf + tomia" digits 0 delay 0.5 monitor-number 169 show-name? true whichip 97 onewhichip 98 SLLegend top-left 386 0 width-height 80 16 name "Atlanta " shape 1 color -65536 show-border? true legend-number 2 SLMonitor top-left 626 0 width-height 80 36 name "Recovered" list-to-run "poprecovered-at atlx atly" digits 0 delay 0.5 monitor-number 110 show-name? true whichip 99 onewhichip 100 SLMonitor top-left 586 0 width-height 80 36 name "Sick" list-to-run "popsick-at atlx atly" digits 0 delay 0.5 monitor-number 109 show-name? true whichip 101 onewhichip 102 SLSlider top-left 406 80 width-height 80 25 name "P" variable "chipop" min-value 0 max-value 20000000 current-value 8307000 slider-number 9 show-name? true SLLegend top-left 386 80 width-height 80 16 name "Chicago " shape 1 color -43776 show-border? true legend-number 1 SLMonitor top-left 466 80 width-height 80 36 name "Pop. Chi" list-to-run "pop-at chix chiy" digits 0 delay 0.5 monitor-number 11 show-name? true whichip 103 onewhichip 104 SLMonitor top-left 546 80 width-height 80 36 name "Latent" list-to-run "poplatent-at chix chiy" digits 0 delay 0.5 monitor-number 55 show-name? true whichip 105 onewhichip 106 SLMonitor top-left 586 80 width-height 80 36 name "Sick" list-to-run "popsick-at chix chiy" digits 0 delay 0.5 monitor-number 123 show-name? true whichip 107 onewhichip 108 SLMonitor top-left 506 80 width-height 80 36 name "Healthy" list-to-run "pophealthy-at chix chiy" digits 0 delay 0.5 monitor-number 112 show-name? true whichip 109 onewhichip 110 SLSlider top-left 406 160 width-height 80 25 name "P" variable "lapop" min-value 0 max-value 20000000 current-value 13296000 slider-number 10 show-name? true toolTip-text "Population in Los Angeles" SLMonitor top-left 466 160 width-height 80 36 name "Pop. LA" list-to-run "pop-at lax lay" digits 0 delay 0.5 monitor-number 14 show-name? true whichip 111 onewhichip 112 SLMonitor top-left 546 160 width-height 79 36 name "Latent" list-to-run "poplatent-at lax lay" digits 0 delay 0.5 monitor-number 56 show-name? true whichip 113 onewhichip 114 SLMonitor top-left 586 160 width-height 80 36 name "Sick" list-to-run "popsick-at lax lay" digits 0 delay 0.5 monitor-number 125 show-name? true whichip 115 onewhichip 116 SLSlider top-left 406 240 width-height 80 25 name "P" variable "dalpop" min-value 0 max-value 20000000 current-value 4146000 slider-number 11 show-name? true toolTip-text "Population in Dallas" SLLegend top-left 386 250 width-height 67 16 name "Dallas " shape 1 color -256 show-border? true legend-number 4 SLMonitor top-left 466 240 width-height 81 36 name "Pop. Dal" list-to-run "pop-at dalx daly" digits 0 delay 0.5 monitor-number 26 show-name? true whichip 117 onewhichip 118 SLMonitor top-left 506 240 width-height 80 36 name "Healthy" list-to-run "pophealthy-at dalx daly" digits 0 delay 0.5 monitor-number 114 show-name? true whichip 119 onewhichip 120 SLMonitor top-left 626 240 width-height 80 36 name "Recovered" list-to-run "poprecovered-at dalx daly" digits 0 delay 0.5 monitor-number 126 show-name? true whichip 121 onewhichip 122 SLMonitor top-left 586 240 width-height 80 36 name "Sick" list-to-run "popsick-at dalx daly" digits 0 delay 0.5 monitor-number 127 show-name? true whichip 123 onewhichip 124 SLSlider top-left 406 320 width-height 80 25 name "P" variable "denpop" min-value 0 max-value 20000000 current-value 1985000 slider-number 12 show-name? true toolTip-text "Population in Denver" SLMonitor top-left 466 320 width-height 80 36 name "Pop. Denver" list-to-run "pop-at denx deny" digits 0 delay 0.5 monitor-number 27 show-name? true whichip 125 onewhichip 126 SLMonitor top-left 546 320 width-height 80 36 name "Latent" list-to-run "poplatent-at denx deny" digits 0 delay 0.5 monitor-number 58 show-name? true whichip 127 onewhichip 128 SLMonitor top-left 506 320 width-height 80 36 name "Healthy" list-to-run "pophealthy-at denx deny" digits 0 delay 0.5 monitor-number 121 show-name? true whichip 129 onewhichip 130 SLMonitor top-left 626 320 width-height 80 36 name "Recovered" list-to-run "poprecovered-at denx deny" digits 0 delay 0.5 monitor-number 128 show-name? true whichip 131 onewhichip 132 SLMonitor top-left 586 320 width-height 80 36 name "Sick" list-to-run "popsick-at denx deny" digits 0 delay 0.5 monitor-number 129 show-name? true whichip 133 onewhichip 134 SLSlider top-left 406 560 width-height 80 25 name "P" variable "houpop" min-value 0 max-value 20000000 current-value 3823000 slider-number 16 show-name? true toolTip-text "Population in Houston" SLLegend top-left 386 560 width-height 76 16 name "Houston " shape 1 color -16711681 show-border? true legend-number 8 SLMonitor top-left 466 560 width-height 80 36 name "Pop. Houston" list-to-run "pop-at houx houy" digits 0 delay 0.5 monitor-number 30 show-name? true whichip 135 onewhichip 136 SLMonitor top-left 546 560 width-height 80 36 name "Latent" list-to-run "poplatent-at houx houy" digits 0 delay 0.5 monitor-number 61 show-name? true whichip 137 onewhichip 138 SLMonitor top-left 506 560 width-height 80 36 name "Healthy" list-to-run "pophealthy-at houx houy" digits 0 delay 0.5 monitor-number 120 show-name? true whichip 139 onewhichip 140 SLMonitor top-left 586 560 width-height 80 36 name "Sick" list-to-run "popsick-at houx houy" digits 0 delay 0.5 monitor-number 135 show-name? true whichip 141 onewhichip 142 SLLegend top-left 386 630 width-height 96 16 name "Minneapolis " shape 1 color -16744449 show-border? true legend-number 9 SLMonitor top-left 466 640 width-height 80 36 name "Population" list-to-run "pop-at minx miny" digits 0 delay 0.5 monitor-number 52 show-name? true whichip 143 onewhichip 144 SLMonitor top-left 546 640 width-height 80 36 name "Latent" list-to-run "poplatent-at minx miny" digits 0 delay 0.5 monitor-number 62 show-name? true whichip 145 onewhichip 146 SLMonitor top-left 506 640 width-height 80 36 name "Healthy" list-to-run "pophealthy-at minx miny" digits 0 delay 0.5 monitor-number 115 show-name? true whichip 147 onewhichip 148 SLMonitor top-left 586 640 width-height 80 36 name "Sick" list-to-run "popsick-at minx miny" digits 0 delay 0.5 monitor-number 137 show-name? true whichip 149 onewhichip 150 SLSlider top-left 406 720 width-height 80 25 name "P" variable "detpop" min-value 0 max-value 20000000 current-value 3903000 slider-number 18 show-name? true toolTip-text "Population in Detroit" SLLegend top-left 386 720 width-height 69 16 name "Detroit " shape 1 color -16776961 show-border? true legend-number 10 SLMonitor top-left 466 720 width-height 80 36 name "Pop. Detroit" list-to-run "pop-at detx dety" digits 0 delay 0.5 monitor-number 53 show-name? true whichip 151 onewhichip 152 SLMonitor top-left 546 720 width-height 80 36 name "Latent" list-to-run "poplatent-at detx dety" digits 0 delay 0.5 monitor-number 63 show-name? true whichip 153 onewhichip 154 SLMonitor top-left 506 720 width-height 80 36 name "Healthy" list-to-run "pophealthy-at detx dety" digits 0 delay 0.5 monitor-number 116 show-name? true whichip 155 onewhichip 156 SLMonitor top-left 586 720 width-height 80 36 name "Sick" list-to-run "popsick-at detx dety" digits 0 delay 0.5 monitor-number 139 show-name? true whichip 157 onewhichip 158 SLSlider top-left 406 800 width-height 80 25 name "P" variable "sfpop" min-value 0 max-value 20000000 current-value 4767000 slider-number 19 show-name? true toolTip-text "Population in San Francisco" SLLegend top-left 386 780 width-height 106 16 name "San Francisco " shape 1 color -8453889 show-border? true legend-number 11 SLMonitor top-left 466 800 width-height 80 36 name "Pop. SanFran" list-to-run "pop-at sfx sfy" digits 0 delay 0.5 monitor-number 54 show-name? true whichip 159 onewhichip 160 SLMonitor top-left 586 800 width-height 80 36 name "Sick" list-to-run "popsick-at sfx sfy" digits 0 delay 0.5 monitor-number 141 show-name? true whichip 161 onewhichip 162 SLMonitor top-left 626 800 width-height 80 36 name "Recovered" list-to-run "poprecovered-at sfx sfy" digits 0 delay 0.5 monitor-number 140 show-name? true whichip 163 onewhichip 164 SLMonitor top-left 506 800 width-height 80 36 name "Healthy" list-to-run "pophealthy-at sfx sfy" digits 0 delay 0.5 monitor-number 117 show-name? true whichip 165 onewhichip 166 SLSlider top-left 406 880 width-height 80 25 name "P" variable "miapop" min-value 0 max-value 20000000 current-value 4919000 slider-number 20 show-name? true toolTip-text "Population in Miami" SLMonitor top-left 546 880 width-height 80 36 name "Latent" list-to-run "poplatent-at miax miay" digits 0 delay 0.5 monitor-number 65 show-name? true whichip 167 onewhichip 168 SLMonitor top-left 626 880 width-height 80 36 name "Recovered" list-to-run "poprecovered-at miax miay" digits 0 delay 0.5 monitor-number 142 show-name? true whichip 169 onewhichip 170 SLMonitor top-left 586 880 width-height 80 36 name "Sick" list-to-run "popsick-at miax miay" digits 0 delay 0.5 monitor-number 143 show-name? true whichip 171 onewhichip 172 SLMonitor top-left 466 880 width-height 70 36 name "Pop. Miami" list-to-run "pop-at miax miay" digits 0 delay 0.5 monitor-number 24 show-name? true whichip 173 onewhichip 174 SLMonitor top-left 506 880 width-height 80 36 name "Healthy" list-to-run "pophealthy-at miax miay" digits 0 delay 0.5 monitor-number 118 show-name? true whichip 175 onewhichip 176 SLLegend top-left 386 150 width-height 100 16 name "Los Angeles " shape 1 color -6262704 show-border? true legend-number 3 SLLegend top-left 386 320 width-height 71 16 name "Denver " shape 1 color -11418368 show-border? true legend-number 5 SLMonitor top-left 546 0 width-height 80 36 name "Latent" list-to-run "poplatent-at atlx atly" digits 0 delay 0.5 monitor-number 20 show-name? true whichip 177 onewhichip 178 SLMonitor top-left 466 0 width-height 80 36 name "Pop Atlanta" list-to-run "pop-at atlx atly" digits 0 delay 0.5 monitor-number 3 show-name? true whichip 179 onewhichip 180 SLMonitor top-left 506 0 width-height 80 36 name "Healthy" list-to-run "pophealthy-at atlx atly" digits 0 delay 0.5 monitor-number 106 show-name? true whichip 181 onewhichip 182 SLMonitor top-left 506 160 width-height 80 36 name "Healthy" list-to-run "pophealthy-at lax lay" digits 0 delay 0.5 monitor-number 113 show-name? true whichip 183 onewhichip 184 SLMonitor top-left 587 400 width-height 80 36 name "Sick" list-to-run "popsick-at phox phoy" digits 0 delay 0.5 monitor-number 133 show-name? true whichip 185 onewhichip 186 SLMonitor top-left 507 400 width-height 80 36 name "Healthy" list-to-run "pophealthy-at phox phoy" digits 0 delay 0.5 monitor-number 119 show-name? true whichip 187 onewhichip 188 SLMonitor top-left 547 400 width-height 80 36 name "Latent" list-to-run "poplatent-at phox phoy" digits 0 delay 0.5 monitor-number 60 show-name? true whichip 189 onewhichip 190 SLMonitor top-left 467 400 width-height 80 36 name "Pop. Phoenix" list-to-run "pop-at phox phoy" digits 0 delay 0.5 monitor-number 29 show-name? true whichip 191 onewhichip 192 SLSlider top-left 406 480 width-height 80 25 name "P" variable "lvpop" min-value 0 max-value 20000000 current-value 1314000 slider-number 14 show-name? true toolTip-text "Population in Las Vegas" SLMonitor top-left 466 480 width-height 80 36 name "Pop. Las Vegas" list-to-run "pop-at lvx lvy" digits 0 delay 0.5 monitor-number 28 show-name? true whichip 193 onewhichip 194 SLMonitor top-left 586 480 width-height 80 36 name "Sick" list-to-run "popsick-at lvx lvy" digits 0 delay 0.5 monitor-number 131 show-name? true whichip 195 onewhichip 196 SLLegend top-left 386 392 width-height 77 16 name "Phoenix " shape 1 color -16711738 show-border? true legend-number 7 SLLegend top-left 386 473 width-height 86 16 name "Las Vegas " shape 1 color -16711936 show-border? true legend-number 6 SLSlider top-left 406 400 width-height 80 25 name "P" variable "phopop" min-value 0 max-value 20000000 current-value 2907000 slider-number 15 show-name? true toolTip-text "Population in Phoenix" SLMonitor top-left 627 480 width-height 80 36 name "Recovered" list-to-run "poprecovered-at lvx lvy" digits 0 delay 0.5 monitor-number 130 show-name? true whichip 197 onewhichip 198 SLMonitor top-left 627 560 width-height 80 36 name "Recovered" list-to-run "poprecovered-at houx houy" digits 0 delay 0.5 monitor-number 134 show-name? true whichip 199 onewhichip 200 SLMonitor top-left 627 640 width-height 80 36 name "Recovered" list-to-run "poprecovered-at minx miny" digits 0 delay 0.5 monitor-number 136 show-name? true whichip 201 onewhichip 202 SLMonitor top-left 627 720 width-height 80 36 name "Recovered" list-to-run "poprecovered-at detx dety" digits 0 delay 0.5 monitor-number 138 show-name? true whichip 203 onewhichip 204 SLMonitor top-left 670 400 width-height 80 36 name "Pass / day" list-to-run "frompho + topho" digits 0 delay 0.5 monitor-number 100 show-name? true whichip 205 onewhichip 206 SLMonitor top-left 670 480 width-height 80 36 name "Pass / day" list-to-run "fromlv + tolv" digits 0 delay 0.5 monitor-number 99 show-name? true whichip 207 onewhichip 208 SLMonitor top-left 260 10 width-height 40 36 name "Month" list-to-run "totaldays div 30 + 1" digits 0 delay 0.5 monitor-number 87 show-name? true whichip 209 onewhichip 210 SLMonitor top-left 260 50 width-height 40 36 name "Week" list-to-run "(totaldays div 7) mod 4 + 1" digits 0 delay 0.5 monitor-number 86 show-name? true whichip 211 onewhichip 212 SLMonitor top-left 260 90 width-height 40 36 name "Day" list-to-run "totaldays mod 7 + 1" digits 0 delay 0.1 monitor-number 85 show-name? true whichip 213 onewhichip 214 SLMonitor top-left 344 301 width-height 50 36 name "Flights" list-to-run "update-flights lvx lvy" digits 3 delay 0.5 monitor-number 162 show-name? true whichip 215 onewhichip 216 SLMonitor top-left 344 351 width-height 50 36 name "Flights" list-to-run "update-flights houx houy" digits 3 delay 0.5 monitor-number 163 show-name? true whichip 217 onewhichip 218 SLMonitor top-left 344 401 width-height 50 36 name "Flights" list-to-run "update-flights minx miny" digits 3 delay 0.5 monitor-number 164 show-name? true whichip 219 onewhichip 220 SLMonitor top-left 344 451 width-height 50 36 name "Flights" list-to-run "update-flights detx dety" digits 3 delay 0.5 monitor-number 165 show-name? true whichip 221 onewhichip 222 SLMonitor top-left 344 501 width-height 50 36 name "Flights" list-to-run "update-flights sfx sfy" digits 3 delay 0.5 monitor-number 166 show-name? true whichip 223 onewhichip 224 SLMonitor top-left 344 551 width-height 50 36 name "Flights" list-to-run "update-flights miax miay" digits 3 delay 0.5 monitor-number 167 show-name? true whichip 225 onewhichip 226 SLMonitor top-left 344 1 width-height 50 36 name "Flights" list-to-run "update-flights atlx atly" digits 3 delay 0.5 monitor-number 156 show-name? true whichip 227 onewhichip 228 SLMonitor top-left 344 51 width-height 50 36 name "Flights" list-to-run "update-flights chix chiy" digits 3 delay 0.5 monitor-number 157 show-name? true whichip 229 onewhichip 230 SLMonitor top-left 344 101 width-height 50 36 name "Flights" list-to-run "update-flights lax lay" digits 3 delay 0.5 monitor-number 159 show-name? true whichip 231 onewhichip 232 SLMonitor top-left 344 201 width-height 50 36 name "Flights" list-to-run "update-flights denx deny" digits 3 delay 0.5 monitor-number 160 show-name? true whichip 233 onewhichip 234 SLMonitor top-left 344 251 width-height 50 36 name "Flights" list-to-run "update-flights phox phoy" digits 3 delay 0.5 monitor-number 161 show-name? true whichip 235 onewhichip 236 SLMonitor top-left 344 151 width-height 50 36 name "Flights" list-to-run "update-flights dalx daly" digits 3 delay 0.5 monitor-number 158 show-name? true whichip 237 onewhichip 238 SLMonitor top-left 344 611 width-height 49 36 name "Sum" list-to-run "((flights-at atlx atly) + (flights-at chix chiy) + (flights-at lax lay) + (flights-at dalx daly) + (flights-at denx deny) + (flights-at phox phoy) + (flights-at lvx lvy) + (flights-at houx houy) + (flights-at minx miny) + (flights-at detx dety) + (flights-at sfx sfy) + (flights-at miax miay)) / totaldays / 24" digits 2 delay 0.5 monitor-number 168 show-name? true whichip 239 onewhichip 240 SLLegend top-left 386 890 width-height 68 16 name "Miami " shape 1 color -65281 show-border? true legend-number 12 SLSlider top-left 406 640 width-height 80 25 name "P" variable "minpop" min-value 0 max-value 20000000 current-value 2389000 slider-number 17 show-name? true toolTip-text "Population in Minneapolis" SLMonitor top-left 506 480 width-height 80 36 name "Healthy" list-to-run "pophealthy-at lvx lvy" digits 0 delay 0.5 monitor-number 107 show-name? true whichip 241 onewhichip 242 SLSlider top-left 436 320 width-height 80 25 name "L" variable "denlatent" min-value 0 max-value 1000000 current-value 0 slider-number 5 show-name? true SLSlider top-left 436 480 width-height 80 25 name "L" variable "lvlatent" min-value 0 max-value 1000000 current-value 0 slider-number 6 show-name? true SLSlider top-left 436 560 width-height 80 25 name "L" variable "houlatent" min-value 0 max-value 1000000 current-value 0 slider-number 22 show-name? true SLSlider top-left 436 720 width-height 80 25 name "L" variable "detlatent" min-value 0 max-value 1000000 current-value 0 slider-number 24 show-name? true SLSlider top-left 436 800 width-height 80 25 name "L" variable "sflatent" min-value 0 max-value 1000000 current-value 100 slider-number 25 show-name? true SLSlider top-left 436 400 width-height 80 25 name "L" variable "pholatent" min-value 0 max-value 1000000 current-value 100 slider-number 21 show-name? true SLMonitor top-left 626 80 width-height 80 36 name "Recovered" list-to-run "poprecovered-at chix chiy" digits 0 delay 0.5 monitor-number 122 show-name? true whichip 243 onewhichip 244 SLMonitor top-left 626 159 width-height 80 36 name "Recovered" list-to-run "poprecovered-at lax lay" digits 0 delay 0.5 monitor-number 124 show-name? true whichip 245 onewhichip 246 SLMonitor top-left 627 400 width-height 80 36 name "Recovered" list-to-run "poprecovered-at phox phoy" digits 0 delay 0.5 monitor-number 132 show-name? true whichip 247 onewhichip 248 SLLineWidget top-left 0 170 width-height 600 84 id 5 order 5 type 0 title "Percentage of latent people / city" delay-string "1.0" ymin 0.0011208731094381526 ymax 0.22305374877819256 xmin 1.0550000000000002 xmax 11.945 xlabel "City" ylabel "Latent" grid true connected false autoscale true autoscale-x true autoscale-y true location 0 0 wizard-on false SLLineWidget top-left 86 170 width-height 600 84 id 6 order 6 type 0 title "Percentage of sick people / city" delay-string "1.0" ymin 0.0018825967605253895 ymax 0.37463675534455276 xmin 1.0550000000000002 xmax 11.945 xlabel "City" ylabel "Sick" grid true connected false autoscale true autoscale-x true autoscale-y true location 0 0 wizard-on false SLSlider top-left 406 0 width-height 80 25 name "P" variable "atlpop" min-value 0 max-value 20000000 current-value 3500000 slider-number 7 show-name? true SLSlider top-left 436 80 width-height 80 25 name "L" variable "chilatent" min-value 0 max-value 1000000 current-value 0 slider-number 2 show-name? true SLSlider top-left 436 160 width-height 80 25 name "L" variable "lalatent" min-value 0 max-value 1000000 current-value 100 slider-number 3 show-name? true SLSlider top-left 436 240 width-height 80 25 name "L" variable "dallatent" min-value 0 max-value 1000000 current-value 0 slider-number 4 show-name? true SLSlider top-left 436 640 width-height 80 25 name "L" variable "minlatent" min-value 0 max-value 1000000 current-value 0 slider-number 23 show-name? true SLMonitor top-left 546 240 width-height 80 36 name "Latent" list-to-run "poplatent-at dalx daly" digits 0 delay 0.5 monitor-number 57 show-name? true whichip 249 onewhichip 250 SLMonitor top-left 546 480 width-height 80 36 name "Latent" list-to-run "poplatent-at lvx lvy" digits 0 delay 0.5 monitor-number 59 show-name? true whichip 251 onewhichip 252 SLMonitor top-left 546 800 width-height 80 36 name "Latent" list-to-run "poplatent-at sfx sfy" digits 0 delay 0.5 monitor-number 64 show-name? true whichip 253 onewhichip 254 SLMonitor top-left 670 641 width-height 80 36 name "Pass / day" list-to-run "frommin + tomin" digits 0 delay 0.5 monitor-number 102 show-name? true whichip 255 onewhichip 256 SLMonitor top-left 670 801 width-height 80 36 name "Pass / day" list-to-run "fromsf + tosf" digits 0 delay 0.5 monitor-number 104 show-name? true whichip 257 onewhichip 258 SLButton turtle-or-observer? observer top-left 0 840 width-height 101 30 name "Reset Infected Bars" line-to-run "init-infbars" forever? false button-number 9 show-name? true whichip 67 SLMonitor top-left 110 870 width-height 62 36 name "" list-to-run "(mu-prime * delta / 10000 / ((mu-prime + delta)/ 100 * (pophealthy-at atlx atly) / (pop-at atlx atly)))" digits 3 delay 0.5 monitor-number 171 show-name? true whichip 259 onewhichip 260 SLTextWidget top-left 110 840 width-height 40 25 textwidth 9 linenums 1 words "< " drawBorder false textwidget-number 14 SLSlider top-left 30 770 width-height 54 25 name "slider34" variable "delay" min-value 0 max-value 2 current-value 0 slider-number 34 show-name? false SLButton turtle-or-observer? observer top-left 0 770 width-height 69 30 name "Save Output" line-to-run "save-output" forever? false button-number 8 show-name? true whichip 68 SLButton turtle-or-observer? observer top-left 710 3 width-height 77 30 name "Demo 1" line-to-run "demo1" forever? false button-number 10 show-name? true whichip 69 SLButton turtle-or-observer? observer top-left 711 81 width-height 78 30 name "Demo 2" line-to-run "demo2" forever? false button-number 12 show-name? true whichip 70 SLButton turtle-or-observer? observer top-left 710 160 width-height 80 30 name "Demo 3" line-to-run "demo3" forever? false button-number 13 show-name? true whichip 71 SLTextWidget top-left 247 186 width-height 41 25 textwidth 37 linenums 1 words "Atlanta " drawBorder false textwidget-number 2 SLTextWidget top-left 257 336 width-height 40 25 textwidth 32 linenums 1 words "Dallas " drawBorder false textwidget-number 5 SLTextWidget top-left 247 276 width-height 64 25 textwidth 60 linenums 1 words "Los Angeles " drawBorder false textwidget-number 3 SLTextWidget top-left 247 376 width-height 40 25 textwidth 36 linenums 1 words "Denver " drawBorder false textwidget-number 6 SLTextWidget top-left 247 466 width-height 55 25 textwidth 51 linenums 1 words "Las Vegas " drawBorder false textwidget-number 8 SLTextWidget top-left 247 556 width-height 65 25 textwidth 61 linenums 1 words "Minneapolis " drawBorder false textwidget-number 10 SLTextWidget top-left 255 428 width-height 46 25 textwidth 42 linenums 1 words "Phoenix " drawBorder false textwidget-number 7 SLTextWidget top-left 247 646 width-height 75 25 textwidth 71 linenums 1 words "San Francisco " drawBorder false textwidget-number 12 SLTextWidget top-left 257 526 width-height 45 25 textwidth 41 linenums 1 words "Houston " drawBorder false textwidget-number 9 SLTextWidget top-left 257 236 width-height 47 25 textwidth 43 linenums 1 words "Chicago " drawBorder false textwidget-number 4 SLMonitor top-left 302 1 width-height 90 36 name "Total Pop" list-to-run "get-pop" digits 0 delay 0.5 monitor-number 70 show-name? true toolTip-text "Total population" whichip 261 onewhichip 262 SLMonitor top-left 30 825 width-height 57 36 name "TotalDays" list-to-run "totaldays" digits 0 delay 0.5 monitor-number 172 show-name? true whichip 263 onewhichip 264 SLSlider top-left 313 257 width-height 118 25 name "slider36" variable "temperature" min-value -10000 max-value 0 current-value -10 slider-number 36 show-name? false SLSlider top-left 283 137 width-height 120 25 name "slider30" variable "birthrate" min-value 0 max-value 100 current-value 0 slider-number 30 show-name? false toolTip-text "The birth rate." SLSlider top-left 313 137 width-height 120 25 name "slider31" variable "deathrate" min-value 0 max-value 100 current-value 0 slider-number 31 show-name? false toolTip-text "The death rate." SLSlider top-left 206 10 width-height 70 25 name "slider33" variable "flight-on" min-value 0 max-value 1 current-value 0 slider-number 33 show-name? false toolTip-text "Turn the flight animation on/off." SLSlider top-left 206 90 width-height 74 25 name "slider32" variable "graph-on" min-value 0 max-value 1 current-value 1 slider-number 32 show-name? false toolTip-text "Turn the graphs on/off." SLButton turtle-or-observer? observer top-left 176 110 width-height 60 30 name "Graph" line-to-run "graph" forever? false button-number 7 show-name? true whichip 72 toolTip-text "Start ploting the graph" SLButton turtle-or-observer? observer top-left 176 10 width-height 50 30 name "Update" line-to-run "update" forever? false button-number 6 show-name? true whichip 73 toolTip-text "Use this button to the populations from the the slide bars" SLTextWidget top-left 71 857 width-height 40 25 textwidth 9 linenums 1 words "< " drawBorder false textwidget-number 18 SLTextWidget top-left 60 885 width-height 91 55 textwidth 87 linenums 3 words " delta*mu'\n-----------------------------\n(delta+mu')*h" drawBorder false textwidget-number 16 SLTextWidget top-left 71 769 width-height 102 25 textwidth 98 linenums 1 words " n*(f*beta'+(1-f)*beta)" drawBorder false textwidget-number 15 SLTextWidget top-left 258 615 width-height 40 25 textwidth 34 linenums 1 words "Detroit " drawBorder false textwidget-number 11 SLTextWidget top-left 257 716 width-height 40 25 textwidth 33 linenums 1 words "Miami " drawBorder false textwidget-number 13 SLMonitor top-left 110 790 width-height 60 36 name "" list-to-run "bbar * (f / 100 * betaprime / 1000 + (1 - f / 100) * beta / 1000)" digits 3 delay 0.5 monitor-number 170 show-name? true whichip 265 onewhichip 266 SLLineWidget top-left 169 170 width-height 600 84 id 7 order 7 type 0 title "Percentage of recovered people / city" delay-string "1.0" ymin 0.0024990327990971686 ymax 0.49730752702033576 xmin 1.0550000000000002 xmax 11.945 xlabel "City" ylabel "Recovered" grid true connected false autoscale true autoscale-x true autoscale-y true location 0 0 wizard-on false SLLineWidget top-left 151 782 width-height 196 110 id 8 order 8 type 1 title "Percentage of infected people / city" delay-string "1.0" ymin 0.0022200356639486968 ymax 0.4417870971257906 xmin 7.85499999999999 xmax 1563.145 xlabel "" ylabel "" grid false connected true autoscale true autoscale-x true autoscale-y true location 0 0 wizard-on false SLSlider top-left 233 13 width-height 150 25 name "Planes" variable "numplanes" min-value 0 max-value 2000 current-value 2000 slider-number 1 show-name? true toolTip-text "Number of planes in the simulation" SLButton turtle-or-observer? observer top-left 710 320 width-height 47 30 name "Demo 5" line-to-run "demo5" forever? false button-number 15 show-name? true whichip 74 SLButton turtle-or-observer? observer top-left 710 240 width-height 80 30 name "Demo 4" line-to-run "demo4" forever? false button-number 14 show-name? true whichip 75 SLSlider top-left 283 377 width-height 198 25 name "beta = P(latent | healthy)" variable "beta" min-value 0 max-value 1000 current-value 30 slider-number 35 show-name? true toolTip-text "Probability that someone (a neighbor) can infect you given that you are not vaccinated." SLButton turtle-or-observer? observer top-left 346 807 width-height 41 30 name "button16" line-to-run "setf 50" forever? false button-number 16 show-name? false whichip 76 SLLineWidget top-left 714 574 width-height 178 94 id 12 order 12 type 1 title "Population Distribution in Atlanta" delay-string "1.0" ymin 0.0050000000000000044 ymax 0.995 xmin 2.6149999999999984 xmax 520.385 xlabel "" ylabel "" grid false connected true autoscale true autoscale-x true autoscale-y true location 603 36 wizard-on false SLLineWidget top-left 713 376 width-height 190 104 id 10 order 10 type 1 title "Population Distribution in Atlanta" delay-string "1.0" ymin 0.0050000000000000044 ymax 0.995 xmin 1.9600000000000009 xmax 390.04 xlabel "" ylabel "" grid false connected true autoscale true autoscale-x true autoscale-y true location 4 1 wizard-on false SLSlider top-left 315 577 width-height 180 25 name "delta = P(recover|sick)" variable "delta" min-value 0 max-value 100 current-value 15 slider-number 28 show-name? true toolTip-text "The probability of recovering for a sick person (recover rate)" SLButton turtle-or-observer? observer top-left 176 60 width-height 50 30 name "Refresh" line-to-run "refresh-bars" forever? false button-number 5 show-name? true whichip 79 toolTip-text "Refresh the bars" SLMonitor top-left 742 2 width-height 62 36 name "healthy" list-to-run "steady-h * 100" digits 3 delay 0.5 monitor-number 173 show-name? true toolTip-text "shows the steady state healthy percentage" whichip 267 onewhichip 268 SLMonitor top-left 742 67 width-height 57 36 name "latent" list-to-run "steady-l * 100" digits 3 delay 1.0 monitor-number 174 show-name? true toolTip-text "steady state latent population percentage" whichip 269 onewhichip 270 SLSlider top-left 315 757 width-height 197 25 name "deltaprime=P(healthy | recovered)" variable "deltaprime" min-value 0 max-value 100 current-value 1 slider-number 29 show-name? true toolTip-text "The probability of making a recovered person healthy." SLSlider top-left 315 377 width-height 199 25 name "muprime = P(sick | latent)" variable "mu-prime" min-value 0 max-value 100 current-value 35 slider-number 27 show-name? true toolTip-text "The probability of getting sick being latent." SLSlider top-left 283 576 width-height 193 25 name "beta' = P(latent | (healthy & vacc))" variable "betaprime" min-value 0 max-value 1000 current-value 10 slider-number 39 show-name? true toolTip-text "Probability that someone (a neighbor) can infect you given that you are vaccinated." SLSlider top-left 283 257 width-height 119 25 name "n = neighbors" variable "bbar" min-value 0 max-value 99 current-value 9 slider-number 37 show-name? true SLMonitor top-left 743 125 width-height 58 36 name "sick" list-to-run "steady-s * 100" digits 3 delay 0.5 monitor-number 175 show-name? true toolTip-text "steady state sick population percentage" whichip 271 onewhichip 272 SLMonitor top-left 743 185 width-height 57 36 name "recovered" list-to-run "steady-r * 100" digits 3 delay 0.5 monitor-number 176 show-name? true toolTip-text "steady state recovered population proportion" whichip 273 onewhichip 274 SLMonitor top-left 743 243 width-height 58 36 name "f" list-to-run "steady-f * 100" digits 3 delay 0.5 monitor-number 177 show-name? true toolTip-text "steady state vaccinated percentage" whichip 275 onewhichip 276 SLMonitor top-left 742 302 width-height 58 36 name "steady f" list-to-run "actual-steady-f * 100" digits 3 delay 1.0 monitor-number 178 show-name? true toolTip-text "shows the steady state f for the present healthy percentage" whichip 277 onewhichip 278 SLSlider top-left 350 670 width-height 80 25 name "slider39" variable "usamap-on" min-value 0 max-value 1 current-value 1 slider-number 38 show-name? false toolTip-text "Turn the usa map on(1) / off(0). Must press setup to draw the map." SLSlider top-left 283 771 width-height 181 25 name "f = P(vaccinated)" variable "f" min-value 0 max-value 100 current-value 10 slider-number 40 show-name? true toolTip-text "The percentage of the population that has been vaccinated." SLSlider top-left 436 0 width-height 80 25 name "L" variable "atllatent" min-value 0 max-value 1000000 current-value 0 slider-number 0 show-name? true SLSlider top-left 436 880 width-height 80 25 name "L" variable "mialatent" min-value 0 max-value 1000000 current-value 0 slider-number 26 show-name? true SLButton turtle-or-observer? observer top-left 146 10 width-height 50 30 name "Setup" line-to-run "setup" forever? false button-number 4 show-name? true whichip 80 toolTip-text "Setup the initial configuration" SLButton turtle-or-observer? observer top-left 146 60 width-height 50 30 name "Go" line-to-run "repeat 1000 [go]" forever? false button-number 2 show-name? true whichip 78 toolTip-text "Start the simulation" SLButton turtle-or-observer? observer top-left 146 110 width-height 50 30 name "Stop" line-to-run "stopit" forever? false button-number 3 show-name? true whichip 77 toolTip-text "Stop the simulation, update slidebars with the current values from the monitors" `turtle shapes` H4sIAAAAAAAAAO3c2bIkR33A4UJsAgTCeDfGlPG+CEsz0kjyeq64cXDrCwcXkuyx RQQgLIkg7Kt+UD8Ab2FThU73TOp0V3VXZuX2fRHuX3TNqc7Kmpozi8V/ePmdj3/2 4cc/ejp+9P67P3360Tt3Lw737ubXl37146/MPz4d+Mwv/++zv/y/F49fQs8O08v/ /VLY8Ni5r4t1/jWf/dDnbT1/7eds3UeB+//6r74tAAD9eWF+vfbPESX02j+jpVp3 7+vYa/1zn7t2/VuvK/XPYa7riPXzsNe61u97/a3r3nodsdeNdR1rr2/p/AI7DsPn BgAAAAAAAACgBb/63xEV8t8kaAdd+prc12f/++639fth//bf0v6vvd7Y+899v3rb f8p7uUftv6/nIfUaufeXe/+l3Y/c99z+7d/+7d/+7d/+7b/1/efeb+77kXt/e+8/ 935y34/c1597/9fej9j3b+v69q96sZ8ZXvrov3727oen8aHzmEDjQ7l3KORR1Uwd jA8FgI69kP3PIqqqqrp/B+NDAQAAAAAAAKAhL2b/bxFUVVVVVVVVVVVVVVVVVVV1 e4dpINBLP3364Ucf/OQ4PvSFaU6g8aHcO0wvDz1CDzxOF7/u2vMjPuabrj/2+bde 79r7eev1Xvhx40MBoFsvzK9b/oy09c9cude/9c9qt65f+vm99dpzYn+e9ctef+tn tLZ+7K8vbf2t97PC80fjQwEAAAAAAACgFS/Or1v+W42lbv2M1Ndn//bf8/5Tr597 /9a3vvXTfg9R1Tqbeo3Sr8/+7d/+7d/+7d/+999f7ffH/u3f/tNdn/3bv/3n2//W z7C+9a1f9PqfHb768dMPf/zDj58e54d+tsn5oXcvH57rtT9e+/obHKaXrc/imud7 j/OfdenHLn3ell93ude/8f6ZHwqF2vp7R8G/96xi/4cHm+o8enX9/NDeG+vParHX TX0dudfPff9zrP+sLefGuK4cP/8l7X/tfYi1zq17uKS2n3/r7/L8jeaHAgAAcM65 /1/DXv8/h9zrQ89y//rLvT70bOnXX+xfj3uvBwDQvvTzQ1W13279jNzXn2vftd6H 1Gvk3p/927/9738fcu8n133Iff327/l/6FrOybl2Cfdpj/3n/vm3/773f0nOtUu4 Pz38/Oe4D7n3k+s+5L7+c9e01p5rxVrTz3/+fdd6H1KvkXt/9m//9m//e9+H3PvJ dR92uM7PDd+4nx/68w8++PfjENHPXRwieve9H1zskq3n3yr3EM/c629wmF4eekAv WfOAbzn/oV9k16675ppu+cVd8vo33r9VQ0SXfm2n/rXf+/r0yRDNw3Pd+/zcDBFl H+uGiG618S823a+/5s+It/6ZsZb1115HqnVzrP+sLefGuK4cP/8l7X/tfYi1zq17 uKS2n3/r7/L8jTGGiG79u3Ltf9e2f/vP2dzsv+/9AwDtyz3EK/f60LPcv/5yrw89 M0QUAKB2cYaI5pbiv7m4prnZv/3nbG72n3f/z3aPe13CPu3f/u3f/ve6D7n3k+s+ 5L7+XPsu+T5cknPtEu7THvvP/fNv/33v/5Kca5dwf3r4+c9xH3LvJ9d9yH39565p rT3XirVmCT/vNTwHe+y7tvtg//Zv//bf6/5T3Yfc+8l1H3a4zs8PL3347nvv/fDj 4/jQz18eH3r/n12+863n3p9z983hwa879/7+65c+51M9c97Z88+8j33+8euubHj+ 0ued+/pz7r7/i3VfeOX40EuPcvg1595f+ry11lzHnuff6pp7denrl/az8HXrxoeG vybvv0cE3ytuHvN37pm/8j8VP3cd5z7/3I9vXffc97Bb1//U11/540vrn72eSPu+ VjHrn7uOK3/c+hvXP/d79NLxK9e/9ff0a3/v33vda7//xLqupc+/9cdj7W+tT63z yZ+xjt34+VdfT7D+dmnGh97y16KHzt9q6fNjrXOta9Zfe6+u2Uvsn++t61nf+iWs n1qudZeu49yPx1rn1vVvvY5rPz/2c3Ht52+9no2fN8YYH3ov9t+ha7F6X+98+5M+ /G8oue/D6r+7XPvzedz3mUZ6LlL9HfBTXx/734o27v/Wv4OuPT/Zv5FF/je2ZPvP vc+N92FJrP1/6nO3Ptc77f+43sb7cPP133p+pH0f16vt10Hk/Z9T+v5TK+452Pvf 3nL/utjpOT9n8/4Tn5+a/a9s7P1H+vPdVva/svb/cHvZ/7n9xP56+3+usV2938J6 q9zXnfs+5L7eXPvPfZ2578Py59wFzb2v665nydr11n992p6u4y7o5a8/59b7t9/z cJfk+pc+Z/nr71atn3r/t15/LKv38f3/fb6Rv4/ntnrfK+9DK5b234ty9x1nfGju /4Ynd1PLtY9c+10S+7+RuXa93LZef2n7Sc3+0+9/62em/DnZ4/t4ifsv7fexvaX6 fbE0sfZp//b/UEtn//afsqWzf/tP2dLZf1/7XdLrvkP23+e+Q/YfZ/+l3K9br/vW /Zfy3MS+/qXPKe3XTezrr+XPC3vto7T7kHs/e92X3NeX6z7kvp5P+oXhaz96+h8f v/Jv7354HCD6henHzw4Q3eruX277yPvzbj2fmx2ml2cfnEsP+TW/IG79sbVrLV1v LT23/6X7E/HHVw0QpSy5vlfm+l4drrvX+ufW9XsV0I51A0S1rKb62jWflWP9h6S8 Z5fW3bqnpa/Z6xlSHT5x6ceedctn33L+ktbP3/n+jzEHiALAs3r/N7Re99/rv6H2 +m/IS/tudf9r993a/q/ddyv7v3XfrewfAAAAgNrEHSCqqqr6bJ8V47Ny7yfn/mu6 Dw/pYf+XpFgr937X7Dv1tZa+772usdR957i2kva99/5j34e9r7uU+5P7+nLtP/d1 qaqqarrees4le1xzjvWv1cr6W1nf+tavd/1bryPWuqWsv/Y6Uq2baP0vDi9/+MP/ fP/5CaJfnL4g2QTRc7b+L2X8L26SOUwvDz1Bl57SS0/emqf7mvMu/epYc17pvbTH pXsQ6cdNEG1I7u+Rub9X5/5fafpfiwL1MUG09K792mflXj/GdVx7ziUp112z/qXr iPlztfY6c66vZXXpx551y2ffcv6S1s/f+f6PJogCUIre/w3N/u8ebC96/zfl3icx 9j6RsvfJnCaUAgAAABCXCaKqqhqnWz/jISXsK/W+7f/8/ku+D7E/c40W933N/nPe h9Rr3KKFfW/Zf8r7sNe+Y+z/lvuw9/72vI8973/tfch9fbnvQ+7rUlVVzdFbz7lk j2vOsf61Wll/K+tb3/r1rn/rdcRat5T1115HqnUTrf/i8OWPfv7uT47DQ+f/KODm 4aF337n2jOfPO/bJuq9bOn728xd663mxeuv1Lwnv67n7/IzD9HLrQxrr4V76uqXj W7+J5HLr9V/787NwXhfDQ6/9tZRq3aXvgXuvn/o6Yt/3a783bl0/9vf2VOte+3tc qnVr/b24lj8DpFo/9fXcKte6n7qOhe+Tyb+PLny/3v79/IX5NfVfcHI3lGvdva9j rVru+7XXv3X9a8Vaf6tY9yu1XOvmXr+U+77Xc5D6+1fsdc9dx60/Hvv7XuTvc6Ph odRur78TlGbvvxOV4uq/G+70b197sf8r++Rya2P/l9u60vef+t/sSt1/Kf9Wm1ru f7O2/9vOu9Ve+127n73/fwK59x/uI9X3la2fX0uX5L6+Ur+vtNJQ7uux/316Tu7r sv+0XSv3debefyj3de+1zyW595Vr3+f0tt9Q7/sPbf33xOr/PdL+Lzb1+bnVv3/D Q7X+Lsl9fbn23er+t8p9/fafd/+13w/7b2s/re3/Wq3sP5bS978X+y9j/7ltvZ7a 939v6/XUtt9U7L/Pfd/rdd/3et2/577P/ff++17tf+5ZK/afe2u5D6n2Xer92Hu/ 9n/d/dj7/Ny1/8tSn5+7le//S8NLT3/yP//946fH8aFfmuYEHseH3v3zx/Nl3H3v /VUN3Z+/ZO35W9cPv+7W82Ptf/G+rrx/Zz/3/ufvxg6fjA+91rnHfO0vh6XjW9df +rzU61/7bWDp/K2fu2AeH/qpZ+R7P4jaJaWtv1Vr6+e+/6Wtf+31tbZ+7vtf2q// zd+nKl9/8/UWtn5vvR8fmtpOf6aJtn7sv0LWvv5Wra1/7fW1tv61al//2vNTX29p 68e+3tzrd2acxocu/pkh8t/N9/67/hL7t/+LLWSfufafm/3b/6Vu/nz7v9it19f6 9z/7t/+c3Sr1/reeb//2v+XzF9e3/4tdPN/3v6zdyv7t/1JTy33/7N/+LzW13vef mv3b/8Xav6p22vvxobXr/b8NsX/739LUn1/69dm//dv/7Z+fm/3b/5Zu/fzcSt9/ 6vtn//a/pamvv/f9p2b/9r+lWz8/t9z7T71+bvZv/ylbutT7L/3+5r5++7f/nPsH mvXl4cvvP/rg0XF46JefGx56/1V3r/z0uYZ6+fElS18XrrO47r9+98Gu/bqt5w+f DA8995vJ0m82rf742t90b/1Nee3Xb/3NfuX58/DQ0LXPsvOd7/x2z9+qtvWXzr+2 W6Vef+ufMbZ+nvXzrn8/PHTrn2Wc73znt3v+0tfH/rzc6197P5fEvv7Y6+f+POtn XX+chocuaf3Pwta3vvWtb33rW9/61re+9a1vfetbP/3nb2X/9n+ppX/+Vrmvb+v3 p9zf37ayf/vP2c3Xn/m/Xch9ffZv/ym7Ve7rt3/739Ktcl9/6/u/Hx6a+79Fsb71 rW9961vf+ta3vvWtb33rW9/65a+/9fNLvz77t/+e9791/dRKv/+p2b/9b2nv15ea /dv/ltbO/u1/S2tX+P6/Mrz03s/ee+9HT4/jQ7/y4PjQe3ffvNxzls479zmf+vHv /+L5Xvm5m8/fufduPS90w3mH6eXaxzLW49zKt4Gttt6/jT9/X39ofGgo1rN+q73X 3+vXfinrX/29de/vtdbPu7423dDe65W2fuzr2Sr9+g+PD439V5bcf2Uq7K9oxa0P 9Cv395/S1s/9+8/O649rxocuKe3Psnuz/7zNrfX9595f7vuT+/rtf1u3yn39qfe/ eZ2lf6ts/d8y7d/+7d/+7d/+e9y/qqqqVtclua8v9f6W5L5++9/WrXJff+79L2l9 f0vsP29zq3//68aH5v5vN5ZsvX77t/8tza31/W1l//a/pbVrfX8AAADAstb/fcC/ /9j/ltZu6/5Lvz+p92f/9n+puW28/peGF+e5oa+89mh+N1wYHUp3DtNL7l9iKfrQ L+M9z6+oq0aHAgAtWjc6VFXLanist/VVNUrHGKNDAQAAAAAAAIASxBkdqqqqqqqq qqoPNzyW+3rsX1VVVVVVVbXpfvU4OvTx/G4wOpSTw/RSyKMateGxvc+vqEaHAkC3 jA5VrbHhsd7WV9UoHY0OBQAAAAAAAIBWGB2qqqqqqqqqmrLhsdzXY/+qqqqqqqqq Tfdrx9Ghr8/vBqNDOTlML4U8qlEbHtv7/IpqdCgAdMvoUNUaGx7rbX1VjdLR6FAA AAAAAAAAaIXRoaqqqqqqqqopGx7LfT32r6qqqqqqqtp0Xz6ODn1jfjcYHcrJYXop 5FGN2vDY3udXVKNDAaBbRoeq1tjwWG/rq2qUjkaHAgAAAAAAAEArjA5VVVVVVVVV TdnwWO7rsX9VVVVVVVXVpvv14+jQJ/O7wehQTg7TSyGPatSGx/Y+v6IaHQoA3TI6 VLXGhsd6W19Vo3Q0OhQAAAAAAAAAWmF0qKqqqqqqqmrKhsdyX4/9q6qqqqqqqjbd XzuODn1zfjcYHcrJYXop5FGN2vDY3udXVKNDAaBbRoeq1tjwWG/rq2qUjkaHAgAA AAAAAEArjA5VVVVVVVVVTdnwWO7rsX9VVVVVVVXVpvuN4+jQt+Z3g9GhnByml0Ie 1agNj+19fkU1OhQAumV0qGqNDY/1tr6qRulodCgAAAAAAAAAtMLoUFVVVVVVVdWU DY/lvh77V1VVVVVVVW26v34cHfr2/G4wOpSTw/RSyKMateGxvc+vqEaHAkC3jA5V rbHhsd7WV9UoHY0OBQAAAAAAAIBWGB2qqqqqqqqqmrLhsdzXY/+qqqqqqqqqTfc3 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 XbDPdBUPFQAAFQ8V `template` null `settings` patch-size 1 num-shapes 64 screen-half-width 79 screen-half-height 69 interface-window-xcor -2 interface-window-ycor 15 interface-window-size 978 647 output-window-xcor 58 output-window-ycor 539 output-window-width 1024 output-window-height 600 info-window-xcor 0 info-window-ycor 0 info-window-width 500 info-window-height 400 control-center-xcor 17 control-center-ycor 48 control-center-width 1028 control-center-height 767 shape-chooser-xcor 100 shape-chooser-ycor 100 shape-chooser-width 298 shape-chooser-height 155 turtle-command-center-height 101 observer-command-center-height 69 background-image "" `string table` H4sIAAAAAAAAAGXOwWoCQQwG4GzBLkU8eg/SQgsFn0FcpAeFhULv6RjX4JgsM9lS 395pD4W1p+RPvkAAYA4VwqLlFFidOkY7YCQvAXu2PjIuMYhfAMcmSzjdiKexSBzs ixPvb9jjmIkeOPg/tWitH8ojYoqNZE/yOfwGUVx5pHIP9V+zPkqgzmC6tYwr7Thy hvuGYqSfyloegbo9Gqt8w8OWMn5wV3b1mw3ZTWG6E1Wm3qKUacOeTBxm76S4SaRB cjCY7ITOAtUz3L0iVC9XOjhr2UABAAAAAAFA `symbol table` H4sIAAAAAAAAAGNgYGAAABzfRCEEAAAAAAAABA== `double table` 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 LqjlrobswcuLeqmxgMf3U0MTzgOJ/8MVzugSaAv