├── BlockDiagrams.slx ├── Documentation Report.pdf ├── CARLA Files ├── controller_output │ ├── trajectory.png │ ├── brake_output.png │ ├── forward_speed.png │ ├── steer_output.png │ └── throttle_output.png ├── cutils.py ├── options.cfg ├── controller2d.py ├── live_plotter.py ├── module_7.py └── racetrack_waypoints.txt ├── README.md ├── SpecsCalculations.m └── Simulink-Model-Notes.md /BlockDiagrams.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoemenGaafar/CARLA-PID-Controller/HEAD/BlockDiagrams.slx -------------------------------------------------------------------------------- /Documentation Report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoemenGaafar/CARLA-PID-Controller/HEAD/Documentation Report.pdf -------------------------------------------------------------------------------- /CARLA Files/controller_output/trajectory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoemenGaafar/CARLA-PID-Controller/HEAD/CARLA Files/controller_output/trajectory.png -------------------------------------------------------------------------------- /CARLA Files/controller_output/brake_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoemenGaafar/CARLA-PID-Controller/HEAD/CARLA Files/controller_output/brake_output.png -------------------------------------------------------------------------------- /CARLA Files/controller_output/forward_speed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoemenGaafar/CARLA-PID-Controller/HEAD/CARLA Files/controller_output/forward_speed.png -------------------------------------------------------------------------------- /CARLA Files/controller_output/steer_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoemenGaafar/CARLA-PID-Controller/HEAD/CARLA Files/controller_output/steer_output.png -------------------------------------------------------------------------------- /CARLA Files/controller_output/throttle_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoemenGaafar/CARLA-PID-Controller/HEAD/CARLA Files/controller_output/throttle_output.png -------------------------------------------------------------------------------- /CARLA Files/cutils.py: -------------------------------------------------------------------------------- 1 | class CUtils(object): 2 | def __init__(self): 3 | pass 4 | 5 | def create_var(self, var_name, value): 6 | if not var_name in self.__dict__: 7 | self.__dict__[var_name] = value 8 | -------------------------------------------------------------------------------- /CARLA Files/options.cfg: -------------------------------------------------------------------------------- 1 | [Demo Parameters] 2 | ; Enable/Disable live plotting during the assessment (true/false) 3 | live_plotting = true 4 | ; Duration (in seconds) per plot refresh (set to 0 for refreshing every simulation iteration) 5 | live_plotting_period = 0.1 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CARLA-PID-Controller 2 | We design a PID controller to steer an CARLA-simulated autonomous car on a pre-determined racetrack. We use MATLAB, Simulink, and MATLAB’s System Identification Toolbox to model the car into a suitable transfer function then design a PID controller using Simulink’s Control System Toolbox that meets acceptable specifications on both the transfer function and the CARLA simulator. 3 | -------------------------------------------------------------------------------- /SpecsCalculations.m: -------------------------------------------------------------------------------- 1 | %% Calculating Specs 2 | sserror = mean(abs(out.error(2000:2500, 2))); %Steady State Error 3 | effort = sum((out.pidsteer(1:2000)).^2); %Controller Effort 4 | overshoot = (max(out.output) - 1); %Maximum Percentage Overshoot 5 | 6 | %% Plotting Bode Plot 7 | num = [0 0.0745802180712488 -0.0678509105996389]; 8 | den = [1 -2.37963452375578 1.95832042342380 -0.717217509691274 0.138531614834883]; 9 | car = tf(num, den, 1); 10 | 11 | %PID Constants generated by Root Locus 12 | Kp = 1.12924229948271; 13 | Ki = 0.0270272495971814; 14 | Kd = 1.88301790267392; 15 | a1 = -1; 16 | b0 = Kp + Ki + Kd; 17 | b1 = -(Kp+2*Kd); 18 | b2 = Kd; 19 | num2 = [b0 b1 b2]; 20 | den2 = [1 -1]; 21 | C = tf(num2, den2, 1); 22 | 23 | sys = car * C; 24 | sys2 = feedback(sys, 1); 25 | margin(sys2); -------------------------------------------------------------------------------- /Simulink-Model-Notes.md: -------------------------------------------------------------------------------- 1 | In the attached simulink file are two block diagrams of our closed loop system: 2 | 3 | In the first diagram: 4 | - We connected the plant, the controller, a step input, and a few scopes or "To Workspace" dataset blocks. 5 | - The aim of this diagram was to design each iteration of the controller and then analyze the system's step 6 | response and deduce the controller's specifications. 7 | 8 | In the second diagram: 9 | - We connected the plant, the controller, an input dataset named "DesiredYaw", and a scope that plots the plant's 10 | output, the "DesiredYaw" dataset, and a third "ActualYaw" dataset. 11 | - Before explained what these datasets hold, we note that due to the interpolation of waypoints performed by 12 | the Carla python client we used, the set of desired yaws our car aims to reach in each run are dependent on the 13 | controller orchestrating its motion. Hence to compare the response of the Carla car and the simulink model to 14 | any particular controller, we had to simulate our car's motion on the given racetrack and collect the set of 15 | desired yaws it followed then give those as reference to the simulink model. 16 | - Thus, "DesiredYaw" is a "From Workspace" dataset of the desired yaws produced by the Carla Simulator each 17 | timestep, and "ActualYaw" is a "From Workspace" dataset of the car's yaw each timestep. 18 | - Finally, this block diagram aimed to test and plot for each designed controller the response of both 19 | the simulink plant and the Carla vehicle to the same set of desired yaws. -------------------------------------------------------------------------------- /CARLA Files/controller2d.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | """ 4 | 2D Controller Class to be used for the CARLA waypoint follower demo. 5 | """ 6 | 7 | import cutils 8 | import numpy as np 9 | 10 | class Controller2D(object): 11 | def __init__(self, waypoints): 12 | self.vars = cutils.CUtils() 13 | self._current_x = 0 14 | self._current_y = 0 15 | self._current_yaw = 0 16 | self._current_speed = 0 17 | self._desired_speed = 0 18 | self._current_frame = 0 19 | self._current_timestamp = 0 20 | self._start_control_loop = False 21 | self._set_throttle = 0 22 | self._set_brake = 0 23 | self._set_steer = 0 24 | self._waypoints = waypoints 25 | self._conv_rad_to_steer = 180.0 / 70.0 / np.pi 26 | self._pi = np.pi 27 | self._2pi = 2.0 * np.pi 28 | 29 | def update_values(self, x, y, yaw, speed, timestamp, frame): 30 | self._current_x = x 31 | self._current_y = y 32 | self._current_yaw = yaw 33 | self._current_speed = speed 34 | self._current_timestamp = timestamp 35 | self._current_frame = frame 36 | if self._current_frame: 37 | self._start_control_loop = True 38 | 39 | def update_desired_speed(self): 40 | min_idx = 0 41 | min_dist = float("inf") 42 | desired_speed = 0 43 | for i in range(len(self._waypoints)): 44 | dist = np.linalg.norm(np.array([ 45 | self._waypoints[i][0] - self._current_x, 46 | self._waypoints[i][1] - self._current_y])) 47 | if dist < min_dist: 48 | min_dist = dist 49 | min_idx = i 50 | if min_idx < len(self._waypoints)-1: 51 | desired_speed = self._waypoints[min_idx][2] 52 | else: 53 | desired_speed = self._waypoints[-1][2] 54 | self._desired_speed = desired_speed 55 | 56 | def update_waypoints(self, new_waypoints): 57 | self._waypoints = new_waypoints 58 | 59 | def get_commands(self): 60 | return self._set_throttle, self._set_steer, self._set_brake 61 | 62 | def set_throttle(self, input_throttle): 63 | # Clamp the throttle command to valid bounds 64 | throttle = np.fmax(np.fmin(input_throttle, 1.0), 0.0) 65 | self._set_throttle = throttle 66 | 67 | def set_steer(self, input_steer_in_rad): 68 | # Covnert radians to [-1, 1] 69 | input_steer = self._conv_rad_to_steer * input_steer_in_rad 70 | 71 | # Clamp the steering command to valid bounds 72 | steer = np.fmax(np.fmin(input_steer, 1.0), -1.0) 73 | self._set_steer = steer 74 | 75 | def set_brake(self, input_brake): 76 | # Clamp the steering command to valid bounds 77 | brake = np.fmax(np.fmin(input_brake, 1.0), 0.0) 78 | self._set_brake = brake 79 | 80 | def update_controls(self): 81 | ###################################################### 82 | # RETRIEVE SIMULATOR FEEDBACK 83 | ###################################################### 84 | x = self._current_x 85 | y = self._current_y 86 | yaw = self._current_yaw 87 | v = self._current_speed 88 | self.update_desired_speed() 89 | v_desired = self._desired_speed 90 | t = self._current_timestamp 91 | waypoints = self._waypoints 92 | throttle_output = 0 93 | steer_output = 0 94 | brake_output = 0 95 | 96 | ###################################################### 97 | ###################################################### 98 | # MODULE 7: DECLARE USAGE VARIABLES HERE 99 | ###################################################### 100 | ###################################################### 101 | """ 102 | Use 'self.vars.create_var(, )' 103 | to create a persistent variable (not destroyed at each iteration). 104 | This means that the value can be stored for use in the next 105 | iteration of the control loop. 106 | 107 | Example: Creation of 'v_previous', default value to be 0 108 | self.vars.create_var('v_previous', 0.0) 109 | 110 | Example: Setting 'v_previous' to be 1.0 111 | self.vars.v_previous = 1.0 112 | 113 | Example: Accessing the value from 'v_previous' to be used 114 | throttle_output = 0.5 * self.vars.v_previous 115 | """ 116 | self.vars.create_var('v_previous', 0.0) 117 | self.vars.create_var('error_1', 0.0) 118 | self.vars.create_var('error_2', 0.0) 119 | self.vars.create_var('steer_1', 0.0) 120 | 121 | # Skip the first frame to store previous values properly 122 | if self._start_control_loop: 123 | """ 124 | Controller iteration code block. 125 | 126 | Controller Feedback Variables: 127 | x : Current X position (meters) 128 | y : Current Y position (meters) 129 | yaw : Current yaw pose (radians) 130 | v : Current forward speed (meters per second) 131 | t : Current time (seconds) 132 | v_desired : Current desired speed (meters per second) 133 | (Computed as the speed to track at the 134 | closest waypoint to the vehicle.) 135 | waypoints : Current waypoints to track 136 | (Includes speed to track at each x,y 137 | location.) 138 | Format: [[x0, y0, v0], 139 | [x1, y1, v1], 140 | ... 141 | [xn, yn, vn]] 142 | Example: 143 | waypoints[2][1]: 144 | Returns the 3rd waypoint's y position 145 | 146 | waypoints[5]: 147 | Returns [x5, y5, v5] (6th waypoint) 148 | 149 | Controller Output Variables: 150 | throttle_output : Throttle output (0 to 1) 151 | steer_output : Steer output (-1.22 rad to 1.22 rad) 152 | brake_output : Brake output (0 to 1) 153 | """ 154 | 155 | ###################################################### 156 | ###################################################### 157 | # MODULE 7: IMPLEMENTATION OF LONGITUDINAL CONTROLLER HERE 158 | ###################################################### 159 | ###################################################### 160 | """ 161 | Implement a longitudinal controller here. Remember that you can 162 | access the persistent variables declared above here. For 163 | example, can treat self.vars.v_previous like a "global variable". 164 | """ 165 | 166 | # Change these outputs with the longitudinal controller. Note that 167 | # brake_output is optional and is not required to pass the 168 | # assignment, as the car will naturally slow down over time. 169 | 170 | throttle_output = 0.8 171 | 172 | brake_output = 0 173 | 174 | ###################################################### 175 | ###################################################### 176 | # MODULE 7: IMPLEMENTATION OF LATERAL CONTROLLER HERE 177 | ###################################################### 178 | ###################################################### 179 | """ 180 | Implement a lateral controller here. Remember that you can 181 | access the persistent variables declared above here. For 182 | example, can treat self.vars.v_previous like a "global variable". 183 | """ 184 | 185 | #These are the constants generated by the root locus method 186 | Kp = 1.12924229948271 187 | Ki = 0.0270272495971814 188 | Kd = 1.88301790267392 189 | 190 | desired_yaw = np.arctan2((waypoints[-1][1] - y),(waypoints[-1][0] - x)) 191 | error_0 = desired_yaw - yaw 192 | a1 = -1 193 | b0 = Kp + Ki + Kd 194 | b1 = -(Kp+2*Kd) 195 | b2 = Kd 196 | 197 | steer_output = b0*error_0 + b1*self.vars.error_1 + b2*self.vars.error_2 - a1*self.vars.steer_1 198 | 199 | #Uncomment the following line to add random disturbance 200 | #steer_output = steer_output + np.random.uniform(-0.1, 0.1) 201 | print(str(np.round(yaw, decimals=5)) + " " + str(np.round(steer_output,decimals=3)) + " " + str(np.round(desired_yaw,decimals=5))) 202 | 203 | ###################################################### 204 | # SET CONTROLS OUTPUT 205 | ###################################################### 206 | self.set_throttle(throttle_output) # in percent (0 to 1) 207 | self.set_steer(steer_output) # in rad (-1.22 to 1.22) 208 | self.set_brake(brake_output) # in percent (0 to 1) 209 | 210 | ###################################################### 211 | ###################################################### 212 | # MODULE 7: STORE OLD VALUES HERE (ADD MORE IF NECESSARY) 213 | ###################################################### 214 | ###################################################### 215 | """ 216 | Use this block to store old values (for example, we can store the 217 | current x, y, and yaw values here using persistent variables for use 218 | in the next iteration) 219 | """ 220 | self.vars.v_previous = v # Store forward speed to be used in next step 221 | self.vars.error_2 = self.vars.error_1 222 | self.vars.error_1 = error_0 223 | self.vars.steer_1 = steer_output 224 | -------------------------------------------------------------------------------- /CARLA Files/live_plotter.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import tkinter as tk 4 | import os 5 | 6 | import numpy as np 7 | import matplotlib.pyplot as plt 8 | import matplotlib.backends.tkagg as tkagg 9 | from matplotlib.backends.backend_agg import FigureCanvasAgg 10 | import pygame 11 | 12 | class Dynamic2DFigure(): 13 | def __init__(self, 14 | figsize=(8,8), 15 | edgecolor="black", 16 | rect=[0.1, 0.1, 0.8, 0.8], 17 | *args, **kwargs): 18 | self.graphs = {} 19 | self.texts = {} 20 | self.fig = plt.Figure(figsize=figsize, edgecolor=edgecolor) 21 | self.ax = self.fig.add_axes(rect) 22 | self.fig.tight_layout() 23 | self.marker_text_offset = 0 24 | if kwargs["title"] is not None: 25 | self.fig.suptitle(kwargs["title"]) 26 | self.axis_equal = False 27 | self.invert_xaxis = False 28 | 29 | def set_invert_x_axis(self): 30 | self.invert_xaxis = True 31 | 32 | def set_axis_equal(self): 33 | self.axis_equal = True 34 | 35 | def add_graph(self, name, label="", window_size=10, x0=None, y0=None, 36 | linestyle='-', linewidth=1, marker="", color="k", 37 | markertext=None, marker_text_offset=2): 38 | self.marker_text_offset = marker_text_offset 39 | 40 | if x0 is None or y0 is None: 41 | x0 = np.zeros(window_size) 42 | y0 = np.zeros(window_size) 43 | new_graph, = self.ax.plot(x0, y0, label=label, 44 | linestyle=linestyle, linewidth=linewidth, 45 | marker=marker, color=color) 46 | if markertext is not None: 47 | new_text = self.ax.text(x0[-1], y0[-1] + marker_text_offset, 48 | markertext) 49 | else: 50 | new_graph, = self.ax.plot(x0, y0, label=label, 51 | linestyle=linestyle, linewidth=linewidth, 52 | marker=marker, color=color) 53 | if markertext is not None: 54 | new_text = self.ax.text(x0[-1], y0[-1] + marker_text_offset, 55 | markertext) 56 | 57 | self.graphs[name] = new_graph 58 | if markertext is not None: 59 | self.texts[name + "_TEXT"] = new_text 60 | 61 | def roll(self, name, new_x, new_y): 62 | graph = self.graphs[name] 63 | if graph is not None: 64 | x, y = graph.get_data() 65 | x = np.roll(x, -1) 66 | x[-1] = new_x 67 | y = np.roll(y, -1) 68 | y[-1] = new_y 69 | graph.set_data((x, y)) 70 | self.rescale() 71 | if name + "_TEXT" in self.texts: 72 | graph_text = self.texts[name + "_TEXT"] 73 | x = new_x 74 | y = new_y + self.marker_text_offset 75 | graph_text.set_position((x, y)) 76 | self.rescale() 77 | 78 | def update(self, name, new_x_vec, new_y_vec, new_colour='k'): 79 | graph = self.graphs[name] 80 | if graph is not None: 81 | graph.set_data((np.array(new_x_vec), np.array(new_y_vec))) 82 | graph.set_color(new_colour) 83 | self.rescale() 84 | if name + "_TEXT" in self.texts: 85 | graph_text = self.texts[name + "_TEXT"] 86 | x = new_x_vec[-1] 87 | y = new_y_vec[-1] + self.marker_text_offset 88 | graph_text.set_position((x, y)) 89 | self.rescale() 90 | 91 | def rescale(self): 92 | xmin = float("inf") 93 | xmax = -1*float("inf") 94 | ymin, ymax = self.ax.get_ylim() 95 | for name, graph in self.graphs.items(): 96 | xvals, yvals = graph.get_data() 97 | xmin_data = xvals.min() 98 | xmax_data = xvals.max() 99 | ymin_data = yvals.min() 100 | ymax_data = yvals.max() 101 | xmin_padded = xmin_data-0.05*(xmax_data-xmin_data) 102 | xmax_padded = xmax_data+0.05*(xmax_data-xmin_data) 103 | ymin_padded = ymin_data-0.05*(ymax_data-ymin_data) 104 | ymax_padded = ymax_data+0.05*(ymax_data-ymin_data) 105 | xmin = min(xmin_padded, xmin) 106 | xmax = max(xmax_padded, xmax) 107 | ymin = min(ymin_padded, ymin) 108 | ymax = max(ymax_padded, ymax) 109 | self.ax.set_xlim(xmin, xmax) 110 | self.ax.set_ylim(ymin, ymax) 111 | if self.axis_equal: 112 | self.ax.set_aspect('equal') 113 | if self.invert_xaxis: 114 | self.ax.invert_xaxis() 115 | 116 | 117 | class DynamicFigure(): 118 | def __init__(self, *args, **kwargs): 119 | self.graphs = {} 120 | self.fig = plt.Figure(figsize=(3, 2), edgecolor="black") 121 | self.ax = self.fig.add_axes([0.2, 0.2, 0.6, 0.6]) 122 | self.fig.tight_layout() 123 | if kwargs["title"] is not None: 124 | self.fig.suptitle(kwargs["title"]) 125 | 126 | def add_graph(self, name, label="", window_size=10, x0=None, y0=None): 127 | if y0 is None: 128 | x0 = np.zeros(window_size) 129 | y0 = np.zeros(window_size) 130 | new_graph, = self.ax.plot(x0, y0, label=label) 131 | elif x0 is None: 132 | new_graph, = self.ax.plot(y0, label=label) 133 | else: 134 | new_graph, = self.ax.plot(x0, y0, label=label) 135 | self.graphs[name] = new_graph 136 | 137 | def roll(self, name, new_x, new_y): 138 | graph = self.graphs[name] 139 | if graph is not None: 140 | x, y = graph.get_data() 141 | x = np.roll(x, -1) 142 | x[-1] = new_x 143 | y = np.roll(y, -1) 144 | y[-1] = new_y 145 | graph.set_data((x, y)) 146 | self.rescale() 147 | 148 | def rescale(self): 149 | xmin = float("inf") 150 | xmax = -1*float("inf") 151 | ymin, ymax = self.ax.get_ylim() 152 | for name, graph in self.graphs.items(): 153 | xvals, yvals = graph.get_data() 154 | xmin_data = xvals.min() 155 | xmax_data = xvals.max() 156 | ymin_data = yvals.min() 157 | ymax_data = yvals.max() 158 | xmin_padded = xmin_data-0.05*(xmax_data-xmin_data) 159 | xmax_padded = xmax_data+0.05*(xmax_data-xmin_data) 160 | ymin_padded = ymin_data-0.05*(ymax_data-ymin_data) 161 | ymax_padded = ymax_data+0.05*(ymax_data-ymin_data) 162 | xmin = min(xmin_padded, xmin) 163 | xmax = max(xmax_padded, xmax) 164 | ymin = min(ymin_padded, ymin) 165 | ymax = max(ymax_padded, ymax) 166 | self.ax.set_xlim(xmin, xmax) 167 | self.ax.set_ylim(ymin, ymax) 168 | 169 | 170 | class LivePlotter(): 171 | def __init__(self, tk_title=None): 172 | self._default_w = 150 173 | self._default_h = 100 174 | self._graph_w = 0 175 | self._graph_h = 0 176 | self._surf_w = 0 177 | self._surf_h = 0 178 | 179 | self._figs = [] 180 | self._fcas = {} 181 | self._photos = {} 182 | 183 | self._text_id = None 184 | self._empty = True 185 | 186 | self._root = tk.Tk() 187 | if tk_title is not None: 188 | self._root.title(tk_title) 189 | 190 | self._canvas = tk.Canvas(self._root, width=self._default_w, height=self._default_h) 191 | self._canvas.config(bg="#6A6A6A") 192 | self._text_id = self._canvas.create_text( 193 | (self._default_w/2, self._default_h/2), 194 | text="No live plots\ncreated yet.") 195 | self._canvas.grid(row=0, column=0) 196 | 197 | self._display = None 198 | self._game_frame = None 199 | self._pygame_init = False 200 | 201 | self._surfs = [] 202 | self._surf_coords = {} 203 | 204 | def plot_figure(self, fig): 205 | if self._empty: 206 | self._empty = False 207 | self._canvas.delete(self._text_id) 208 | 209 | f_w = fig.get_window_extent().width 210 | f_h = fig.get_window_extent().height 211 | f_w, f_h = int(f_w), int(f_h) 212 | 213 | # draw out figure 214 | fca = FigureCanvasAgg(fig) 215 | fca.draw() 216 | 217 | f_w, f_h = fca.get_renderer().get_canvas_width_height() 218 | f_w, f_h = int(f_w), int(f_h) 219 | 220 | self._graph_h += f_h 221 | self._graph_w = max(self._graph_w, f_w) 222 | self._canvas.config(width=self._graph_w, height=self._graph_h) 223 | self._canvas.grid(row=0, column=0) 224 | 225 | photo = tk.PhotoImage(master=self._canvas, width=f_w, height=f_h) 226 | self._canvas.create_image(f_w/2, self._graph_h-f_h/2, image=photo) 227 | tkagg.blit(photo, fca.get_renderer()._renderer, colormode=2) 228 | self._root.update() 229 | 230 | self._figs.append(fig) 231 | self._fcas[fig] = fca 232 | self._photos[fig] = photo 233 | 234 | def plot_new_figure(self): 235 | fig = plt.Figure(figsize=(3, 2), edgecolor="black") 236 | ax = fig.add_axes([0.2, 0.2, 0.6, 0.6]) 237 | fig.tight_layout() 238 | # this stores the figure locally as well 239 | self.plot_figure(fig) 240 | return fig, ax 241 | 242 | def plot_new_dynamic_figure(self, title=""): 243 | dyfig = DynamicFigure(title=title) 244 | fig = dyfig.fig 245 | # this stores the figure locally as well 246 | self.plot_figure(fig) 247 | return dyfig 248 | 249 | def plot_new_dynamic_2d_figure(self, title="", **kwargs): 250 | dy2dfig = Dynamic2DFigure(title=title, **kwargs) 251 | fig = dy2dfig.fig 252 | # this stores the figure locally as well 253 | self.plot_figure(fig) 254 | return dy2dfig 255 | 256 | def refresh_figure(self, fig): 257 | self._fcas[fig].draw() 258 | self._fcas[fig].flush_events() 259 | fig.canvas.draw() 260 | fig.canvas.flush_events() 261 | tkagg.blit( 262 | self._photos[fig], 263 | self._fcas[fig].get_renderer()._renderer, 264 | colormode=2) 265 | self._root.update() 266 | 267 | def init_pygame(self): 268 | self._game_frame = tk.Frame( 269 | self._root, 270 | width=self._surf_w, 271 | height=self._surf_h) 272 | self._game_frame.grid(row=0, column=1) 273 | 274 | os.environ['SDL_WINDOWID'] = str(self._game_frame.winfo_id()) 275 | self._game_frame.update() 276 | pygame.display.init() 277 | 278 | def plot_surface(self, surf): 279 | s_w, s_h = surf.get_size() 280 | 281 | self._surf_w += s_w 282 | self._surf_h = max(self._surf_h, s_h) 283 | 284 | if not self._pygame_init: 285 | self._pygame_init = True 286 | self.init_pygame() 287 | else: 288 | self._game_frame.config(width=self._surf_w, height=self._surf_h) 289 | self._game_frame.grid(row=0, column=1) 290 | 291 | self._display = pygame.display.set_mode((self._surf_w, self._surf_h)) 292 | 293 | self._surfs.append(surf) 294 | self._surf_coords[surf] = (self._surf_w-s_w, 0) 295 | 296 | self._display.blits(list(self._surf_coords.items())) 297 | 298 | def refresh(self): 299 | for fig in list(self._figs): 300 | self.refresh_figure(fig) 301 | self._root.update() 302 | 303 | if not self._display is None: 304 | self._display.blits(list(self._surf_coords.items())) 305 | pygame.display.flip() -------------------------------------------------------------------------------- /CARLA Files/module_7.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # This work is licensed under the terms of the MIT license. 4 | # For a copy, see . 5 | 6 | """ 7 | CARLA waypoint follower assessment client script. 8 | 9 | A controller assessment to follow a given trajectory, where the trajectory 10 | can be defined using way-points. 11 | 12 | STARTING in a moment... 13 | """ 14 | from __future__ import print_function 15 | from __future__ import division 16 | 17 | # System level imports 18 | import sys 19 | import os 20 | import argparse 21 | import logging 22 | import time 23 | import math 24 | import numpy as np 25 | import csv 26 | import matplotlib.pyplot as plt 27 | import controller2d 28 | import configparser 29 | 30 | 31 | # Script level imports 32 | sys.path.append(os.path.abspath(sys.path[0] + '/..')) 33 | import live_plotter as lv # Custom live plotting library 34 | from carla import sensor 35 | from carla.client import make_carla_client, VehicleControl 36 | from carla.settings import CarlaSettings 37 | from carla.tcp import TCPConnectionError 38 | from carla.controller import utils 39 | 40 | """ 41 | Configurable params 42 | """ 43 | ITER_FOR_SIM_TIMESTEP = 10 # no. iterations to compute approx sim timestep 44 | WAIT_TIME_BEFORE_START = 5.00 # game seconds (time before controller start) 45 | TOTAL_RUN_TIME = 200.00 # game seconds (total runtime before sim end) 46 | TOTAL_FRAME_BUFFER = 300 # number of frames to buffer after total runtime 47 | NUM_PEDESTRIANS = 0 # total number of pedestrians to spawn 48 | NUM_VEHICLES = 0 # total number of vehicles to spawn 49 | SEED_PEDESTRIANS = 0 # seed for pedestrian spawn randomizer 50 | SEED_VEHICLES = 0 # seed for vehicle spawn randomizer 51 | 52 | WEATHERID = { 53 | "DEFAULT": 0, 54 | "CLEARNOON": 1, 55 | "CLOUDYNOON": 2, 56 | "WETNOON": 3, 57 | "WETCLOUDYNOON": 4, 58 | "MIDRAINYNOON": 5, 59 | "HARDRAINNOON": 6, 60 | "SOFTRAINNOON": 7, 61 | "CLEARSUNSET": 8, 62 | "CLOUDYSUNSET": 9, 63 | "WETSUNSET": 10, 64 | "WETCLOUDYSUNSET": 11, 65 | "MIDRAINSUNSET": 12, 66 | "HARDRAINSUNSET": 13, 67 | "SOFTRAINSUNSET": 14, 68 | } 69 | SIMWEATHER = WEATHERID["CLEARNOON"] # set simulation weather 70 | 71 | PLAYER_START_INDEX = 1 # spawn index for player (keep to 1) 72 | FIGSIZE_X_INCHES = 8 # x figure size of feedback in inches 73 | FIGSIZE_Y_INCHES = 8 # y figure size of feedback in inches 74 | PLOT_LEFT = 0.1 # in fractions of figure width and height 75 | PLOT_BOT = 0.1 76 | PLOT_WIDTH = 0.8 77 | PLOT_HEIGHT = 0.8 78 | 79 | WAYPOINTS_FILENAME = 'racetrack_waypoints.txt' # waypoint file to load 80 | DIST_THRESHOLD_TO_LAST_WAYPOINT = 2.0 # some distance from last position before 81 | # simulation ends 82 | 83 | # Path interpolation parameters 84 | INTERP_MAX_POINTS_PLOT = 10 # number of points used for displaying 85 | # lookahead path 86 | INTERP_LOOKAHEAD_DISTANCE = 20 # lookahead in meters 87 | INTERP_DISTANCE_RES = 0.01 # distance between interpolated points 88 | 89 | # controller output directory 90 | CONTROLLER_OUTPUT_FOLDER = os.path.dirname(os.path.realpath(__file__)) +\ 91 | '/controller_output/' 92 | 93 | def make_carla_settings(args): 94 | """Make a CarlaSettings object with the settings we need. 95 | """ 96 | settings = CarlaSettings() 97 | 98 | # There is no need for non-agent info requests if there are no pedestrians 99 | # or vehicles. 100 | get_non_player_agents_info = False 101 | if (NUM_PEDESTRIANS > 0 or NUM_VEHICLES > 0): 102 | get_non_player_agents_info = True 103 | 104 | # Base level settings 105 | settings.set( 106 | SynchronousMode=True, 107 | SendNonPlayerAgentsInfo=get_non_player_agents_info, 108 | NumberOfVehicles=NUM_VEHICLES, 109 | NumberOfPedestrians=NUM_PEDESTRIANS, 110 | SeedVehicles=SEED_VEHICLES, 111 | SeedPedestrians=SEED_PEDESTRIANS, 112 | WeatherId=SIMWEATHER, 113 | QualityLevel=args.quality_level) 114 | return settings 115 | 116 | class Timer(object): 117 | """ Timer Class 118 | 119 | The steps are used to calculate FPS, while the lap or seconds since lap is 120 | used to compute elapsed time. 121 | """ 122 | def __init__(self, period): 123 | self.step = 0 124 | self._lap_step = 0 125 | self._lap_time = time.time() 126 | self._period_for_lap = period 127 | 128 | def tick(self): 129 | self.step += 1 130 | 131 | def has_exceeded_lap_period(self): 132 | if self.elapsed_seconds_since_lap() >= self._period_for_lap: 133 | return True 134 | else: 135 | return False 136 | 137 | def lap(self): 138 | self._lap_step = self.step 139 | self._lap_time = time.time() 140 | 141 | def ticks_per_second(self): 142 | return float(self.step - self._lap_step) /\ 143 | self.elapsed_seconds_since_lap() 144 | 145 | def elapsed_seconds_since_lap(self): 146 | return time.time() - self._lap_time 147 | 148 | def get_current_pose(measurement): 149 | """Obtains current x,y,yaw pose from the client measurements 150 | 151 | Obtains the current x,y, and yaw pose from the client measurements. 152 | 153 | Args: 154 | measurement: The CARLA client measurements (from read_data()) 155 | 156 | Returns: (x, y, yaw) 157 | x: X position in meters 158 | y: Y position in meters 159 | yaw: Yaw position in radians 160 | """ 161 | x = measurement.player_measurements.transform.location.x 162 | y = measurement.player_measurements.transform.location.y 163 | yaw = math.radians(measurement.player_measurements.transform.rotation.yaw) 164 | 165 | return (x, y, yaw) 166 | 167 | def get_start_pos(scene): 168 | """Obtains player start x,y, yaw pose from the scene 169 | 170 | Obtains the player x,y, and yaw pose from the scene. 171 | 172 | Args: 173 | scene: The CARLA scene object 174 | 175 | Returns: (x, y, yaw) 176 | x: X position in meters 177 | y: Y position in meters 178 | yaw: Yaw position in radians 179 | """ 180 | x = scene.player_start_spots[0].location.x 181 | y = scene.player_start_spots[0].location.y 182 | yaw = math.radians(scene.player_start_spots[0].rotation.yaw) 183 | 184 | return (x, y, yaw) 185 | 186 | def send_control_command(client, throttle, steer, brake, 187 | hand_brake=False, reverse=False): 188 | """Send control command to CARLA client. 189 | 190 | Send control command to CARLA client. 191 | 192 | Args: 193 | client: The CARLA client object 194 | throttle: Throttle command for the sim car [0, 1] 195 | steer: Steer command for the sim car [-1, 1] 196 | brake: Brake command for the sim car [0, 1] 197 | hand_brake: Whether the hand brake is engaged 198 | reverse: Whether the sim car is in the reverse gear 199 | """ 200 | control = VehicleControl() 201 | # Clamp all values within their limits 202 | steer = np.fmax(np.fmin(steer, 1.0), -1.0) 203 | throttle = np.fmax(np.fmin(throttle, 1.0), 0) 204 | brake = np.fmax(np.fmin(brake, 1.0), 0) 205 | 206 | control.steer = steer 207 | control.throttle = throttle 208 | control.brake = brake 209 | control.hand_brake = hand_brake 210 | control.reverse = reverse 211 | client.send_control(control) 212 | 213 | def create_controller_output_dir(output_folder): 214 | if not os.path.exists(output_folder): 215 | os.makedirs(output_folder) 216 | 217 | def store_trajectory_plot(graph, fname): 218 | """ Store the resulting plot. 219 | """ 220 | create_controller_output_dir(CONTROLLER_OUTPUT_FOLDER) 221 | 222 | file_name = os.path.join(CONTROLLER_OUTPUT_FOLDER, fname) 223 | graph.savefig(file_name) 224 | 225 | def write_trajectory_file(x_list, y_list, v_list, t_list): 226 | create_controller_output_dir(CONTROLLER_OUTPUT_FOLDER) 227 | file_name = os.path.join(CONTROLLER_OUTPUT_FOLDER, 'trajectory.txt') 228 | 229 | with open(file_name, 'w') as trajectory_file: 230 | for i in range(len(x_list)): 231 | trajectory_file.write('%3.3f, %3.3f, %2.3f, %6.3f\n' %\ 232 | (x_list[i], y_list[i], v_list[i], t_list[i])) 233 | 234 | def exec_waypoint_nav_demo(args): 235 | """ Executes waypoint navigation demo. 236 | """ 237 | 238 | with make_carla_client(args.host, args.port) as client: 239 | print('Carla client connected.') 240 | 241 | settings = make_carla_settings(args) 242 | 243 | # Now we load these settings into the server. The server replies 244 | # with a scene description containing the available start spots for 245 | # the player. Here we can provide a CarlaSettings object or a 246 | # CarlaSettings.ini file as string. 247 | scene = client.load_settings(settings) 248 | 249 | # Refer to the player start folder in the WorldOutliner to see the 250 | # player start information 251 | player_start = PLAYER_START_INDEX 252 | 253 | # Notify the server that we want to start the episode at the 254 | # player_start index. This function blocks until the server is ready 255 | # to start the episode. 256 | print('Starting new episode at %r...' % scene.map_name) 257 | client.start_episode(player_start) 258 | 259 | ############################################# 260 | # Load Configurations 261 | ############################################# 262 | 263 | # Load configuration file (options.cfg) and then parses for the various 264 | # options. Here we have two main options: 265 | # live_plotting and live_plotting_period, which controls whether 266 | # live plotting is enabled or how often the live plotter updates 267 | # during the simulation run. 268 | config = configparser.ConfigParser() 269 | config.read(os.path.join( 270 | os.path.dirname(os.path.realpath(__file__)), 'options.cfg')) 271 | demo_opt = config['Demo Parameters'] 272 | 273 | # Get options 274 | enable_live_plot = demo_opt.get('live_plotting', 'true').capitalize() 275 | enable_live_plot = enable_live_plot == 'True' 276 | live_plot_period = float(demo_opt.get('live_plotting_period', 0)) 277 | 278 | # Set options 279 | live_plot_timer = Timer(live_plot_period) 280 | 281 | ############################################# 282 | # Load Waypoints 283 | ############################################# 284 | # Opens the waypoint file and stores it to "waypoints" 285 | waypoints_file = WAYPOINTS_FILENAME 286 | waypoints_np = None 287 | with open(waypoints_file) as waypoints_file_handle: 288 | waypoints = list(csv.reader(waypoints_file_handle, 289 | delimiter=',', 290 | quoting=csv.QUOTE_NONNUMERIC)) 291 | waypoints_np = np.array(waypoints) 292 | 293 | # Because the waypoints are discrete and our controller performs better 294 | # with a continuous path, here we will send a subset of the waypoints 295 | # within some lookahead distance from the closest point to the vehicle. 296 | # Interpolating between each waypoint will provide a finer resolution 297 | # path and make it more "continuous". A simple linear interpolation 298 | # is used as a preliminary method to address this issue, though it is 299 | # better addressed with better interpolation methods (spline 300 | # interpolation, for example). 301 | # More appropriate interpolation methods will not be used here for the 302 | # sake of demonstration on what effects discrete paths can have on 303 | # the controller. It is made much more obvious with linear 304 | # interpolation, because in a way part of the path will be continuous 305 | # while the discontinuous parts (which happens at the waypoints) will 306 | # show just what sort of effects these points have on the controller. 307 | # Can you spot these during the simulation? If so, how can you further 308 | # reduce these effects? 309 | 310 | # Linear interpolation computations 311 | # Compute a list of distances between waypoints 312 | wp_distance = [] # distance array 313 | for i in range(1, waypoints_np.shape[0]): 314 | wp_distance.append( 315 | np.sqrt((waypoints_np[i, 0] - waypoints_np[i-1, 0])**2 + 316 | (waypoints_np[i, 1] - waypoints_np[i-1, 1])**2)) 317 | wp_distance.append(0) # last distance is 0 because it is the distance 318 | # from the last waypoint to the last waypoint 319 | 320 | # Linearly interpolate between waypoints and store in a list 321 | wp_interp = [] # interpolated values 322 | # (rows = waypoints, columns = [x, y, v]) 323 | wp_interp_hash = [] # hash table which indexes waypoints_np 324 | # to the index of the waypoint in wp_interp 325 | interp_counter = 0 # counter for current interpolated point index 326 | for i in range(waypoints_np.shape[0] - 1): 327 | # Add original waypoint to interpolated waypoints list (and append 328 | # it to the hash table) 329 | wp_interp.append(list(waypoints_np[i])) 330 | wp_interp_hash.append(interp_counter) 331 | interp_counter+=1 332 | 333 | # Interpolate to the next waypoint. First compute the number of 334 | # points to interpolate based on the desired resolution and 335 | # incrementally add interpolated points until the next waypoint 336 | # is about to be reached. 337 | num_pts_to_interp = int(np.floor(wp_distance[i] /\ 338 | float(INTERP_DISTANCE_RES)) - 1) 339 | wp_vector = waypoints_np[i+1] - waypoints_np[i] 340 | wp_uvector = wp_vector / np.linalg.norm(wp_vector) 341 | for j in range(num_pts_to_interp): 342 | next_wp_vector = INTERP_DISTANCE_RES * float(j+1) * wp_uvector 343 | wp_interp.append(list(waypoints_np[i] + next_wp_vector)) 344 | interp_counter+=1 345 | # add last waypoint at the end 346 | wp_interp.append(list(waypoints_np[-1])) 347 | wp_interp_hash.append(interp_counter) 348 | interp_counter+=1 349 | 350 | ############################################# 351 | # Controller 2D Class Declaration 352 | ############################################# 353 | # This is where we take the controller2d.py class 354 | # and apply it to the simulator 355 | controller = controller2d.Controller2D(waypoints) 356 | 357 | ############################################# 358 | # Determine simulation average timestep (and total frames) 359 | ############################################# 360 | # Ensure at least one frame is used to compute average timestep 361 | num_iterations = ITER_FOR_SIM_TIMESTEP 362 | if (ITER_FOR_SIM_TIMESTEP < 1): 363 | num_iterations = 1 364 | 365 | # Gather current data from the CARLA server. This is used to get the 366 | # simulator starting game time. Note that we also need to 367 | # send a command back to the CARLA server because synchronous mode 368 | # is enabled. 369 | measurement_data, sensor_data = client.read_data() 370 | sim_start_stamp = measurement_data.game_timestamp / 1000.0 371 | # Send a control command to proceed to next iteration. 372 | # This mainly applies for simulations that are in synchronous mode. 373 | send_control_command(client, throttle=0.0, steer=0, brake=1.0) 374 | # Computes the average timestep based on several initial iterations 375 | sim_duration = 0 376 | for i in range(num_iterations): 377 | # Gather current data 378 | measurement_data, sensor_data = client.read_data() 379 | # Send a control command to proceed to next iteration 380 | send_control_command(client, throttle=0.0, steer=0, brake=1.0) 381 | # Last stamp 382 | if i == num_iterations - 1: 383 | sim_duration = measurement_data.game_timestamp / 1000.0 -\ 384 | sim_start_stamp 385 | 386 | # Outputs average simulation timestep and computes how many frames 387 | # will elapse before the simulation should end based on various 388 | # parameters that we set in the beginning. 389 | SIMULATION_TIME_STEP = sim_duration / float(num_iterations) 390 | print("SERVER SIMULATION STEP APPROXIMATION: " + \ 391 | str(SIMULATION_TIME_STEP)) 392 | TOTAL_EPISODE_FRAMES = int((TOTAL_RUN_TIME + WAIT_TIME_BEFORE_START) /\ 393 | SIMULATION_TIME_STEP) + TOTAL_FRAME_BUFFER 394 | 395 | ############################################# 396 | # Frame-by-Frame Iteration and Initialization 397 | ############################################# 398 | # Store pose history starting from the start position 399 | measurement_data, sensor_data = client.read_data() 400 | start_x, start_y, start_yaw = get_current_pose(measurement_data) 401 | send_control_command(client, throttle=0.0, steer=0, brake=1.0) 402 | x_history = [start_x] 403 | y_history = [start_y] 404 | yaw_history = [start_yaw] 405 | time_history = [0] 406 | speed_history = [0] 407 | 408 | ############################################# 409 | # Vehicle Trajectory Live Plotting Setup 410 | ############################################# 411 | # Uses the live plotter to generate live feedback during the simulation 412 | # The two feedback includes the trajectory feedback and 413 | # the controller feedback (which includes the speed tracking). 414 | lp_traj = lv.LivePlotter(tk_title="Trajectory Trace") 415 | lp_1d = lv.LivePlotter(tk_title="Controls Feedback") 416 | 417 | ### 418 | # Add 2D position / trajectory plot 419 | ### 420 | trajectory_fig = lp_traj.plot_new_dynamic_2d_figure( 421 | title='Vehicle Trajectory', 422 | figsize=(FIGSIZE_X_INCHES, FIGSIZE_Y_INCHES), 423 | edgecolor="black", 424 | rect=[PLOT_LEFT, PLOT_BOT, PLOT_WIDTH, PLOT_HEIGHT]) 425 | 426 | trajectory_fig.set_invert_x_axis() # Because UE4 uses left-handed 427 | # coordinate system the X 428 | # axis in the graph is flipped 429 | trajectory_fig.set_axis_equal() # X-Y spacing should be equal in size 430 | 431 | # Add waypoint markers 432 | trajectory_fig.add_graph("waypoints", window_size=waypoints_np.shape[0], 433 | x0=waypoints_np[:,0], y0=waypoints_np[:,1], 434 | linestyle="-", marker="", color='g') 435 | # Add trajectory markers 436 | trajectory_fig.add_graph("trajectory", window_size=TOTAL_EPISODE_FRAMES, 437 | x0=[start_x]*TOTAL_EPISODE_FRAMES, 438 | y0=[start_y]*TOTAL_EPISODE_FRAMES, 439 | color=[1, 0.5, 0]) 440 | # Add lookahead path 441 | trajectory_fig.add_graph("lookahead_path", 442 | window_size=INTERP_MAX_POINTS_PLOT, 443 | x0=[start_x]*INTERP_MAX_POINTS_PLOT, 444 | y0=[start_y]*INTERP_MAX_POINTS_PLOT, 445 | color=[0, 0.7, 0.7], 446 | linewidth=4) 447 | # Add starting position marker 448 | trajectory_fig.add_graph("start_pos", window_size=1, 449 | x0=[start_x], y0=[start_y], 450 | marker=11, color=[1, 0.5, 0], 451 | markertext="Start", marker_text_offset=1) 452 | # Add end position marker 453 | trajectory_fig.add_graph("end_pos", window_size=1, 454 | x0=[waypoints_np[-1, 0]], 455 | y0=[waypoints_np[-1, 1]], 456 | marker="D", color='r', 457 | markertext="End", marker_text_offset=1) 458 | # Add car marker 459 | trajectory_fig.add_graph("car", window_size=1, 460 | marker="s", color='b', markertext="Car", 461 | marker_text_offset=1) 462 | 463 | ### 464 | # Add 1D speed profile updater 465 | ### 466 | forward_speed_fig =\ 467 | lp_1d.plot_new_dynamic_figure(title="Forward Speed (m/s)") 468 | forward_speed_fig.add_graph("forward_speed", 469 | label="forward_speed", 470 | window_size=TOTAL_EPISODE_FRAMES) 471 | forward_speed_fig.add_graph("reference_signal", 472 | label="reference_Signal", 473 | window_size=TOTAL_EPISODE_FRAMES) 474 | 475 | # Add throttle signals graph 476 | throttle_fig = lp_1d.plot_new_dynamic_figure(title="Throttle") 477 | throttle_fig.add_graph("throttle", 478 | label="throttle", 479 | window_size=TOTAL_EPISODE_FRAMES) 480 | # Add brake signals graph 481 | brake_fig = lp_1d.plot_new_dynamic_figure(title="Brake") 482 | brake_fig.add_graph("brake", 483 | label="brake", 484 | window_size=TOTAL_EPISODE_FRAMES) 485 | # Add steering signals graph 486 | steer_fig = lp_1d.plot_new_dynamic_figure(title="Steer") 487 | steer_fig.add_graph("steer", 488 | label="steer", 489 | window_size=TOTAL_EPISODE_FRAMES) 490 | 491 | # live plotter is disabled, hide windows 492 | if not enable_live_plot: 493 | lp_traj._root.withdraw() 494 | lp_1d._root.withdraw() 495 | 496 | # Iterate the frames until the end of the waypoints is reached or 497 | # the TOTAL_EPISODE_FRAMES is reached. The controller simulation then 498 | # ouptuts the results to the controller output directory. 499 | reached_the_end = False 500 | skip_first_frame = True 501 | closest_index = 0 # Index of waypoint that is currently closest to 502 | # the car (assumed to be the first index) 503 | closest_distance = 0 # Closest distance of closest waypoint to car 504 | for frame in range(TOTAL_EPISODE_FRAMES): 505 | # Gather current data from the CARLA server 506 | measurement_data, sensor_data = client.read_data() 507 | 508 | # Update pose, timestamp 509 | current_x, current_y, current_yaw = \ 510 | get_current_pose(measurement_data) 511 | current_speed = measurement_data.player_measurements.forward_speed 512 | current_timestamp = float(measurement_data.game_timestamp) / 1000.0 513 | 514 | # Wait for some initial time before starting the demo 515 | if current_timestamp <= WAIT_TIME_BEFORE_START: 516 | send_control_command(client, throttle=0.0, steer=0, brake=1.0) 517 | continue 518 | else: 519 | current_timestamp = current_timestamp - WAIT_TIME_BEFORE_START 520 | 521 | # Store history 522 | x_history.append(current_x) 523 | y_history.append(current_y) 524 | yaw_history.append(current_yaw) 525 | speed_history.append(current_speed) 526 | time_history.append(current_timestamp) 527 | 528 | ### 529 | # Controller update (this uses the controller2d.py implementation) 530 | ### 531 | 532 | # To reduce the amount of waypoints sent to the controller, 533 | # provide a subset of waypoints that are within some 534 | # lookahead distance from the closest point to the car. Provide 535 | # a set of waypoints behind the car as well. 536 | 537 | # Find closest waypoint index to car. First increment the index 538 | # from the previous index until the new distance calculations 539 | # are increasing. Apply the same rule decrementing the index. 540 | # The final index should be the closest point (it is assumed that 541 | # the car will always break out of instability points where there 542 | # are two indices with the same minimum distance, as in the 543 | # center of a circle) 544 | closest_distance = np.linalg.norm(np.array([ 545 | waypoints_np[closest_index, 0] - current_x, 546 | waypoints_np[closest_index, 1] - current_y])) 547 | new_distance = closest_distance 548 | new_index = closest_index 549 | while new_distance <= closest_distance: 550 | closest_distance = new_distance 551 | closest_index = new_index 552 | new_index += 1 553 | if new_index >= waypoints_np.shape[0]: # End of path 554 | break 555 | new_distance = np.linalg.norm(np.array([ 556 | waypoints_np[new_index, 0] - current_x, 557 | waypoints_np[new_index, 1] - current_y])) 558 | new_distance = closest_distance 559 | new_index = closest_index 560 | while new_distance <= closest_distance: 561 | closest_distance = new_distance 562 | closest_index = new_index 563 | new_index -= 1 564 | if new_index < 0: # Beginning of path 565 | break 566 | new_distance = np.linalg.norm(np.array([ 567 | waypoints_np[new_index, 0] - current_x, 568 | waypoints_np[new_index, 1] - current_y])) 569 | 570 | # Once the closest index is found, return the path that has 1 571 | # waypoint behind and X waypoints ahead, where X is the index 572 | # that has a lookahead distance specified by 573 | # INTERP_LOOKAHEAD_DISTANCE 574 | waypoint_subset_first_index = closest_index - 1 575 | if waypoint_subset_first_index < 0: 576 | waypoint_subset_first_index = 0 577 | 578 | waypoint_subset_last_index = closest_index 579 | total_distance_ahead = 0 580 | while total_distance_ahead < INTERP_LOOKAHEAD_DISTANCE: 581 | total_distance_ahead += wp_distance[waypoint_subset_last_index] 582 | waypoint_subset_last_index += 1 583 | if waypoint_subset_last_index >= waypoints_np.shape[0]: 584 | waypoint_subset_last_index = waypoints_np.shape[0] - 1 585 | break 586 | 587 | # Use the first and last waypoint subset indices into the hash 588 | # table to obtain the first and last indicies for the interpolated 589 | # list. Update the interpolated waypoints to the controller 590 | # for the next controller update. 591 | new_waypoints = \ 592 | wp_interp[wp_interp_hash[waypoint_subset_first_index]:\ 593 | wp_interp_hash[waypoint_subset_last_index] + 1] 594 | controller.update_waypoints(new_waypoints) 595 | 596 | # Update the other controller values and controls 597 | controller.update_values(current_x, current_y, current_yaw, 598 | current_speed, 599 | current_timestamp, frame) 600 | controller.update_controls() 601 | cmd_throttle, cmd_steer, cmd_brake = controller.get_commands() 602 | 603 | # Skip the first frame (so the controller has proper outputs) 604 | if skip_first_frame and frame == 0: 605 | pass 606 | else: 607 | # Update live plotter with new feedback 608 | trajectory_fig.roll("trajectory", current_x, current_y) 609 | trajectory_fig.roll("car", current_x, current_y) 610 | # When plotting lookahead path, only plot a number of points 611 | # (INTERP_MAX_POINTS_PLOT amount of points). This is meant 612 | # to decrease load when live plotting 613 | new_waypoints_np = np.array(new_waypoints) 614 | path_indices = np.floor(np.linspace(0, 615 | new_waypoints_np.shape[0]-1, 616 | INTERP_MAX_POINTS_PLOT)) 617 | trajectory_fig.update("lookahead_path", 618 | new_waypoints_np[path_indices.astype(int), 0], 619 | new_waypoints_np[path_indices.astype(int), 1], 620 | new_colour=[0, 0.7, 0.7]) 621 | forward_speed_fig.roll("forward_speed", 622 | current_timestamp, 623 | current_speed) 624 | forward_speed_fig.roll("reference_signal", 625 | current_timestamp, 626 | controller._desired_speed) 627 | 628 | throttle_fig.roll("throttle", current_timestamp, cmd_throttle) 629 | brake_fig.roll("brake", current_timestamp, cmd_brake) 630 | steer_fig.roll("steer", current_timestamp, cmd_steer) 631 | 632 | # Refresh the live plot based on the refresh rate 633 | # set by the options 634 | if enable_live_plot and \ 635 | live_plot_timer.has_exceeded_lap_period(): 636 | lp_traj.refresh() 637 | lp_1d.refresh() 638 | live_plot_timer.lap() 639 | 640 | # Output controller command to CARLA server 641 | send_control_command(client, 642 | throttle=cmd_throttle, 643 | steer=cmd_steer, 644 | brake=cmd_brake) 645 | 646 | # Find if reached the end of waypoint. If the car is within 647 | # DIST_THRESHOLD_TO_LAST_WAYPOINT to the last waypoint, 648 | # the simulation will end. 649 | dist_to_last_waypoint = np.linalg.norm(np.array([ 650 | waypoints[-1][0] - current_x, 651 | waypoints[-1][1] - current_y])) 652 | if dist_to_last_waypoint < DIST_THRESHOLD_TO_LAST_WAYPOINT: 653 | reached_the_end = True 654 | if reached_the_end: 655 | break 656 | 657 | # End of demo - Stop vehicle and Store outputs to the controller output 658 | # directory. 659 | if reached_the_end: 660 | print("Reached the end of path. Writing to controller_output...") 661 | else: 662 | print("Exceeded assessment time. Writing to controller_output...") 663 | # Stop the car 664 | send_control_command(client, throttle=0.0, steer=0.0, brake=1.0) 665 | # Store the various outputs 666 | store_trajectory_plot(trajectory_fig.fig, 'trajectory.png') 667 | store_trajectory_plot(forward_speed_fig.fig, 'forward_speed.png') 668 | store_trajectory_plot(throttle_fig.fig, 'throttle_output.png') 669 | store_trajectory_plot(brake_fig.fig, 'brake_output.png') 670 | store_trajectory_plot(steer_fig.fig, 'steer_output.png') 671 | write_trajectory_file(x_history, y_history, speed_history, time_history) 672 | 673 | def main(): 674 | """Main function. 675 | 676 | Args: 677 | -v, --verbose: print debug information 678 | --host: IP of the host server (default: localhost) 679 | -p, --port: TCP port to listen to (default: 2000) 680 | -a, --autopilot: enable autopilot 681 | -q, --quality-level: graphics quality level [Low or Epic] 682 | -i, --images-to-disk: save images to disk 683 | -c, --carla-settings: Path to CarlaSettings.ini file 684 | """ 685 | argparser = argparse.ArgumentParser(description=__doc__) 686 | argparser.add_argument( 687 | '-v', '--verbose', 688 | action='store_true', 689 | dest='debug', 690 | help='print debug information') 691 | argparser.add_argument( 692 | '--host', 693 | metavar='H', 694 | default='localhost', 695 | help='IP of the host server (default: localhost)') 696 | argparser.add_argument( 697 | '-p', '--port', 698 | metavar='P', 699 | default=2000, 700 | type=int, 701 | help='TCP port to listen to (default: 2000)') 702 | argparser.add_argument( 703 | '-a', '--autopilot', 704 | action='store_true', 705 | help='enable autopilot') 706 | argparser.add_argument( 707 | '-q', '--quality-level', 708 | choices=['Low', 'Epic'], 709 | type=lambda s: s.title(), 710 | default='Low', 711 | help='graphics quality level.') 712 | argparser.add_argument( 713 | '-c', '--carla-settings', 714 | metavar='PATH', 715 | dest='settings_filepath', 716 | default=None, 717 | help='Path to a "CarlaSettings.ini" file') 718 | args = argparser.parse_args() 719 | 720 | # Logging startup info 721 | log_level = logging.DEBUG if args.debug else logging.INFO 722 | logging.basicConfig(format='%(levelname)s: %(message)s', level=log_level) 723 | logging.info('listening to server %s:%s', args.host, args.port) 724 | 725 | args.out_filename_format = '_out/episode_{:0>4d}/{:s}/{:0>6d}' 726 | 727 | # Execute when server connection is established 728 | while True: 729 | try: 730 | exec_waypoint_nav_demo(args) 731 | print('Done.') 732 | return 733 | 734 | except TCPConnectionError as error: 735 | logging.error(error) 736 | time.sleep(1) 737 | 738 | if __name__ == '__main__': 739 | 740 | try: 741 | main() 742 | except KeyboardInterrupt: 743 | print('\nCancelled by user. Bye!') 744 | 745 | -------------------------------------------------------------------------------- /CARLA Files/racetrack_waypoints.txt: -------------------------------------------------------------------------------- 1 | -181.3353216786993, 80.53986286885691, 1.5 2 | -181.33865438593978, 79.53878061861127, 1.6001087797695306 3 | -181.3418847171332, 78.53502433938831, 1.7004849274899498 4 | -181.3450131340369, 77.52862720589121, 1.801125127077566 5 | -181.34804009840803, 76.51962239282312, 1.9020260624204994 6 | -181.35096607200393, 75.50804307488738, 2.0031844173792877 7 | -181.35379151658185, 74.49392242678675, 2.104596875787567 8 | -181.35651689389908, 73.47729362322451, 2.206260121452553 9 | -181.35914266571288, 72.45818983890382, 2.308170838155674 10 | -181.3616692937805, 71.43664424852767, 2.410325709653138 11 | -181.36409723985918, 70.41269002679917, 2.5127214196764482 12 | -181.36642696570624, 69.38636034842176, 2.6153546519329054 13 | -181.36865893307888, 68.35768838809827, 2.7182220901062224 14 | -181.37079360373443, 67.3267073205318, 2.8213204178569344 15 | -181.37283143943014, 66.2934503204255, 2.924646318822906 16 | -181.37477290192328, 65.25795056248239, 3.028196476619833 17 | -181.37661845297112, 64.22024122140607, 3.131967574841627 18 | -181.37836855433085, 63.18035547189908, 3.235956297061034 19 | -181.38002366775981, 62.13832648866486, 3.340159326829875 20 | -181.3815842550153, 61.09418744640635, 3.4445733476796203 21 | -181.38305077785452, 60.047971519826774, 3.549195043121723 22 | -181.38442369803477, 58.999711883629175, 3.654021096648074 23 | -181.38570347731326, 57.94944171251689, 3.759048191731354 24 | -181.3868905774473, 56.897194181192845, 3.8642730118254875 25 | -181.38798546019416, 55.843002464360154, 3.969692240365963 26 | -181.38898858731113, 54.786899736721864, 4.075302560770223 27 | -181.38990042055548, 53.72891917298119, 4.181100656438004 28 | -181.39072142168436, 52.66909394784142, 4.287083210751693 29 | -181.39145205245518, 51.607457236005416, 4.393246907076722 30 | -181.3920927746251, 50.544042212176464, 4.499588428761812 31 | -181.39264404995146, 49.4788820510575, 4.606104459139377 32 | -181.39310634019148, 48.412009927351846, 4.7127916815257755 33 | -181.39348010710245, 47.343459015762335, 4.8196467792216975 34 | -181.39376581244164, 46.273262490992465, 4.926666435512355 35 | -181.3939639179663, 45.20145352774517, 5.0338473336679055 36 | -181.39407488543367, 44.128065300723506, 5.1411861569436645 37 | -181.39409917660112, 43.05313098463063, 5.2486795885804 38 | -181.3940372532258, 41.97668375416953, 5.35632431180462 39 | -181.393889577065, 40.89875678404371, 5.464117009828785 40 | -181.39365660987602, 39.819383248956, 5.572054365851686 41 | -181.3933388134161, 38.738596323609556, 5.6801330630586016 42 | -181.39293664944256, 37.65642918270731, 5.788349784621601 43 | -181.3924505797126, 36.57291500095283, 5.896701213699711 44 | -181.39188106598354, 35.48808695304882, 6.005184033439294 45 | -181.39122857001257, 34.40197821369867, 6.113794926974139 46 | -181.390493553557, 33.31462195760531, 6.2225305774257995 47 | -181.38967647837416, 32.226051359472024, 6.331387667903734 48 | -181.38877780622119, 31.13629959400174, 6.4403628815056 49 | -181.3877979988555, 30.045399835897626, 6.549452901317408 50 | -181.3867375180342, 28.9533852598629, 6.65865441041375 51 | -181.38559682551465, 27.86028904060072, 6.767964091858018 52 | -181.38437638305413, 26.766144352814138, 6.877378628702598 53 | -181.38307665240984, 25.67098437120609, 6.986894703989082 54 | -181.38169809533912, 24.574842270479962, 7.096509000748394 55 | -181.3802411735992, 23.477751225338636, 7.206218202001081 56 | -181.3787063489473, 22.3797444104855, 7.316018990757384 57 | -181.37709408314078, 21.28085500062349, 7.425908050017528 58 | -181.3754048379368, 20.181116170455766, 7.535882062771815 59 | -181.3738027487312, 19.180644412913693, 7.635929366799916 60 | -181.3721377687316, 18.17952299687437, 7.736041646856409 61 | -181.37041024486294, 17.177776846983306, 7.836216410802239 62 | -181.3686205240504, 16.17543088788608, 7.9364511664920245 63 | -181.366768953219, 15.17251004422809, 8.036743421774183 64 | -181.36485587929383, 14.169039240654683, 8.137090684491016 65 | -181.36288164919995, 13.165043401811545, 8.237490462478759 66 | -181.36084660986242, 12.16054745234402, 8.337940263567749 67 | -181.35875110820632, 11.155576316897566, 8.43843759558247 68 | -181.35659549115672, 10.1501549201177, 8.538979966341651 69 | -181.3543801056387, 9.144308186649766, 8.63956488365837 70 | -181.3521052985773, 8.138061041139508, 8.74018985534009 71 | -181.34977141689757, 7.131438408232157, 8.840852389188838 72 | -181.34737880752465, 6.124465212573227, 8.941549993001201 73 | -181.34492781738356, 5.117166378808179, 9.04228017456845 74 | -181.34241879339936, 4.1095668315825264, 9.143040441676607 75 | -181.33985208249715, 3.1016914955417576, 9.24382830210653 76 | -181.33722803160197, 2.0935652953313024, 9.344641263633997 77 | -181.33454698763887, 1.085213155596648, 9.445476834029776 78 | -181.331809297533, 0.07666000098319614, 9.546332521059702 79 | -181.32901530820936, -0.932069243863566, 9.64720583248475 80 | -181.32616536659305, -1.9409496542980662, 9.748094276061092 81 | -181.32325981960906, -2.9499563056749594, 9.848995359540217 82 | -181.3202990141826, -3.9590642733487584, 9.949906590668942 83 | -181.31728329723865, -4.9682486326739195, 10.050825477189512 84 | -181.31421301570225, -5.9774844590050975, 10.151749526839687 85 | -181.31108851649856, -6.986746827696635, 10.252676247352746 86 | -181.30791014655256, -7.996010814103215, 10.353603146457633 87 | -181.30467825278936, -9.005251493579294, 10.454527731878958 88 | -181.301393182134, -10.014443941479527, 10.555447511337105 89 | -181.2980552815116, -11.023563233158342, 10.656359992548248 90 | -181.2946648978472, -12.032584443970222, 10.757262683224447 91 | -181.29122237806592, -13.041482649269824, 10.858153091073715 92 | -181.28772806909274, -14.050232924411631, 10.959028723800053 93 | -181.28418231785275, -15.058810344750128, 11.059887089103508 94 | -181.28058547127102, -16.067189985639914, 11.16072569468026 95 | -181.27693787627265, -17.07534692243553, 11.261542048222648 96 | -181.27323987978272, -18.0832562304914, 11.362333657419233 97 | -181.26949182872625, -19.090892985162156, 11.463098029954875 98 | -181.2656940700283, -20.098232261802337, 11.56383267351076 99 | -181.26184695061403, -21.105249135766343, 11.66453509576445 100 | -181.25795081740839, -22.111918682408884, 11.76520280438998 101 | -181.2540060173365, -23.11821597708439, 11.865833307057853 102 | -181.25001289732347, -24.1241160951474, 11.966424111435124 103 | -181.2459718042943, -25.129594111952457, 12.066972725185444 104 | -181.24188308517415, -26.134625102854102, 12.167476655969109 105 | -181.23774708688796, -27.139184143206904, 12.267933411443112 106 | -181.2335641563609, -28.143246308365292, 12.368340499261171 107 | -181.229334640518, -29.146786673683835, 12.468695427073808 108 | -181.22505888628433, -30.149780314517187, 12.568995702528385 109 | -181.22073724058498, -31.152202306219664, 12.669238833269116 110 | -181.21637005034495, -32.15402772414595, 12.769422326937175 111 | -181.2119576624894, -33.15523164365055, 12.869543691170687 112 | -181.20750042394334, -34.15578914008799, 12.969600433604798 113 | -181.20254607305026, -35.25562601996219, 13.079585237460796 114 | -181.19753833435823, -36.354617394401004, 13.189485515828855 115 | -181.19247766962462, -37.452730088701315, 13.299297951359218 116 | -181.1873645406066, -38.549930928159995, 13.409019226698014 117 | -181.18219940906152, -39.64618673807382, 13.518646024487317 118 | -181.1769827367466, -40.74146434373989, 13.62817502736526 119 | -181.1717149854191, -41.83573057045493, 13.737602917966022 120 | -181.16639661683627, -42.92895224351588, 13.846926378919953 121 | -181.16102809275546, -44.02109618821956, 13.956142092853604 122 | -181.15560987493384, -45.11212922986289, 14.06524674238981 123 | -181.15014242512876, -46.202018193742816, 14.174237010147746 124 | -181.14462620509744, -47.29072990515601, 14.283109578742948 125 | -181.13906167659712, -48.3782311893996, 14.391861130787454 126 | -181.1334493013851, -49.46448887177041, 14.500488348889785 127 | -181.12778954121865, -50.54946977756521, 14.608987915655023 128 | -181.12208285785505, -51.63314073208093, 14.717356513684896 129 | -181.11632971305153, -52.715468560614596, 14.825590825577821 130 | -181.11053056856534, -53.79642008846287, 14.933687533928923 131 | -181.10468588615382, -54.87596214092278, 15.04164332133015 132 | -181.0987961275742, -55.95406154329112, 15.149454870370276 133 | -181.09286175458368, -57.0306851208648, 15.257118863634988 134 | -181.08688322893963, -58.105799698940785, 15.36463198370693 135 | -181.08086101239925, -59.17937210281579, 15.471990913165733 136 | -181.07479556671987, -60.25136915778688, 15.579192334588118 137 | -181.06868735365867, -61.321757689150814, 15.686232930547886 138 | -181.06253683497297, -62.39050452220448, 15.793109383616015 139 | -181.05634447242005, -63.45757648224486, 15.899818376360695 140 | -181.05011072775713, -64.52294039456874, 16.006356591347362 141 | -181.0438360627415, -65.58656308447303, 16.112720711138778 142 | -181.03752093913042, -66.6484113772546, 16.218907418295057 143 | -181.0311658186812, -67.70845209821036, 16.324913395373727 144 | -181.024771163151, -68.7666520726371, 16.430735324929756 145 | -181.0183374342972, -69.82297812583187, 16.536369889515644 146 | -181.01186509387702, -70.87739708309141, 16.64181377168141 147 | -181.0053546036477, -71.92987576971265, 16.747063653974696 148 | -180.99880642536655, -72.98038101099249, 16.852116218940775 149 | -180.9922210207908, -74.02887963222773, 16.95696814912261 150 | -180.98559885167776, -75.07533845871541, 17.06161612706092 151 | -180.97894037978466, -76.11972431575228, 17.16605683529418 152 | -180.97224606686876, -77.16200402863524, 17.270286956358717 153 | -180.96551637468735, -78.2021444226612, 17.37430317278872 154 | -180.95875176499771, -79.24011232312708, 17.478102167116305 155 | -180.95195269955704, -80.27587455532961, 17.581680621871534 156 | -180.9451196401227, -81.30939794456589, 17.685035219582506 157 | -180.93825304845188, -82.34064931613258, 17.788162642775337 158 | -180.93135338630185, -83.36959549532676, 17.89105957397428 159 | -180.92442111542994, -84.3962033074452, 17.993722695701706 160 | -180.91745669759337, -85.42043957778478, 18.096148690478174 161 | -180.9104605945494, -86.44227113164246, 18.198334240822486 162 | -180.9034332680553, -87.46166479431503, 18.199064192335456 163 | -180.89637517986836, -88.47858739109941, 18.148224951603023 164 | -180.8892867917458, -89.49300574729244, 18.09751088933549 165 | -180.88216856544494, -90.50488668819116, 18.046923664012077 166 | -180.87502096272303, -91.51419703909224, 17.996464934112808 167 | -180.8678444453373, -92.52090362529273, 17.946136358118434 168 | -180.86063947504508, -93.5249732720894, 17.895939594510455 169 | -180.85340651360357, -94.5263728047791, 17.845876301771074 170 | -180.84548462901358, -95.61572442237161, 17.79141597238676 171 | -180.83753058165848, -96.70181583308056, 17.73711861126119 172 | -180.8295449710248, -97.7846039671185, 17.682986371558037 173 | -180.82152839659904, -98.86404575469808, 17.62902140644183 174 | -180.81348145786774, -99.94009812603201, 17.575225869077936 175 | -180.80540475431735, -101.01271801133291, 17.521601912632534 176 | -180.7972988854345, -102.08186234081336, 17.468151690272563 177 | -180.78916445070564, -103.14748804468596, 17.414877355165697 178 | -180.78100204961729, -104.20955205316346, 17.361781060480293 179 | -180.77281228165594, -105.26801129645838, 17.308864959385385 180 | -180.7645957463082, -106.32282270478342, 17.256131205050618 181 | -180.7563530430605, -107.37394320835114, 17.203581950646228 182 | -180.7480847713994, -108.42132973737426, 17.151219349342995 183 | -180.7397915308114, -109.46493922206537, 17.099045554312216 184 | -180.73147392078303, -110.5047285926371, 17.047062718725655 185 | -180.7231325408008, -111.54065477930203, 16.99527299575552 186 | -180.71476799035128, -112.57267471227289, 16.943678538574403 187 | -180.7063808689209, -113.60074532176225, 16.89228150035526 188 | -180.69797177599622, -114.62482353798276, 16.841084034271358 189 | -180.68954131106375, -115.644866291147, 16.79008829349624 190 | -180.68109007361005, -116.66083051146768, 16.739296431203677 191 | -180.6726186631216, -117.6726731291574, 16.68871060056764 192 | -180.6641276790849, -118.68035107442881, 16.638332954762237 193 | -180.65561772098653, -119.68382127749447, 16.588165646961688 194 | -180.64637788330734, -120.76611572414129, 16.53405758806641 195 | -180.63711724321695, -121.84336661115566, 16.48020164875168 196 | -180.62783656290966, -122.91551917909158, 16.426600566589148 197 | -180.61853660457993, -123.98251866850282, 16.37325707915035 198 | -180.6092181304221, -125.04431031994342, 16.320173924006607 199 | -180.5998819026305, -126.10083937396726, 16.267353838728983 200 | -180.5905286833996, -127.15205107112823, 16.21479956088819 201 | -180.5811592349237, -128.19789065198023, 16.1625138280545 202 | -180.5717743193972, -129.23830335707717, 16.110499377797694 203 | -180.5623746990145, -130.27323442697292, 16.058758947686943 204 | -180.55296113596992, -131.3026291022215, 16.007295275290744 205 | -180.54353439245787, -132.32643262337663, 15.956111098176823 206 | -180.53409523067273, -133.34459023099242, 15.905209153912038 207 | -180.52464441280887, -134.35704716562267, 15.8545921800623 208 | -180.51518270106064, -135.3637486678213, 15.804262914192462 209 | -180.50571085762243, -136.36463997814218, 15.75422409386622 210 | -180.4954999543875, -137.4359623290623, 15.700664091348857 211 | -180.48527913671768, -138.50041433137383, 15.647447530989687 212 | -180.47504935657537, -139.5579275918496, 15.594577831934362 213 | -180.46481156592296, -140.60843371726236, 15.542058413326359 214 | -180.45456671672284, -141.65186431438502, 15.489892694306791 215 | -180.4443157609374, -142.6881509899904, 15.43808409401424 216 | -180.43405965052904, -143.71722535085138, 15.386636031584542 217 | -180.4237993374601, -144.73901900374068, 15.335551926150618 218 | -180.413535773693, -145.75346355543127, 15.284835196842222 219 | -180.4032699111902, -146.7604906126959, 15.234489262785752 220 | -180.39226930344017, -147.83113932331736, 15.18096254432247 221 | -180.3812683205214, -148.89311041978107, 15.127869614053914 222 | -180.37026813330596, -149.94631978140856, 15.075214677341284 223 | -180.35926991266598, -150.99068328752134, 15.02300193953998 224 | -180.34827482947352, -152.02611681744096, 14.971235605999206 225 | -180.33728405460073, -153.05253625048897, 14.919919882061546 226 | -180.32629875891973, -154.06985746598698, 14.869058973062515 227 | -180.3153201133026, -155.07799634325644, 14.8186570843301 228 | -180.3036182070662, -156.14312872164462, 14.765405750224522 229 | -180.29192662032204, -157.19761583766194, 14.712686567587514 230 | -180.2802467740752, -158.2413555999605, 14.660504640097345 231 | -180.26858008933078, -159.27424591719256, 14.608865071419583 232 | -180.25692798709383, -160.29618469801022, 14.557772965206222 233 | -180.24529188836942, -161.30706985106565, 14.507233425094734 234 | -180.23294765801066, -162.36890963944222, 14.454146320689798 235 | -180.22062480274164, -163.418033212009, 14.401694894705916 236 | -180.20832502700517, -164.45431811398274, 14.349885268704838 237 | -180.1960500352442, -165.47764189058043, 14.298723564223828 238 | -180.18380153190154, -166.48788208701876, 14.248215902773838 239 | -180.1708632940325, -167.54315143914633, 14.195456889723676 240 | -180.157958686652, -168.58347004900665, 14.143445258404387 241 | -180.14508973302702, -169.6086925560674, 14.092188275272255 242 | -180.13225845642455, -170.61867359979618, 14.041693206738687 243 | -180.11875744168285, -171.66806897688733, 13.98922746899133 244 | -180.10530304046475, -172.7001494346777, 13.93762729665803 245 | -180.0918976323293, -173.71474401502408, 13.886901235553768 246 | -180.0778422210273, -174.76365981817912, 13.834459106663042 247 | -180.06384650772054, -175.79281186340887, 13.783004958255171 248 | -180.04991326780956, -176.80200075354958, 13.732548757439393 249 | -180.03535363970377, -177.83994556464867, 13.680654693434834 250 | -180.02086916126902, -178.85543033474738, 13.62988339310814 251 | -180.0057790491795, -179.8949302216383, 13.577911217180048 252 | -179.99077863448443, -180.90926135448538, 13.527197208803553 253 | -179.97519629813274, -181.94249957509146, 13.475537667849869 254 | -179.95972025736057, -182.9476356403609, 13.425282928337287 255 | -179.94368923915266, -183.96618379916998, 13.374357340510665 256 | -179.92712339359298, -184.99391091780276, 13.322972510283055 257 | -179.9100447728102, -186.0263311502452, 13.271352674508732 258 | -179.89247746107486, -187.0586965914427, 13.219735167599184 259 | -179.87444771010001, -188.08598755668893, 13.168370906618014 260 | -179.8559840795458, -189.10290248714392, 13.11752489476949 261 | -179.83711758272818, -190.10384748148329, 13.06747674315264 262 | -179.81726583794745, -191.1135657243205, 13.016989132148023 263 | -179.79649404671565, -192.11994494999922, 12.966667484873154 264 | -179.77428051730814, -193.13621101522247, 12.915850154771606 265 | -179.75074416124477, -194.140938025048, 12.865608040808542 266 | -179.7208716387034, -195.149127660928, 12.815184483339635 267 | -179.66246045591402, -196.1497259743839, 12.765077391448548 268 | -179.5737225495689, -197.14971911287427, 12.865469656740768 269 | -179.45660412997964, -198.14820909942824, 12.966003182365588 270 | -179.3129777685167, -199.14433773105094, 13.066646154422537 271 | -179.14464427035, -200.1372854930987, 13.167357694216182 272 | -178.95333452317925, -201.12627048757273, 13.268089553062195 273 | -178.74071132195513, -202.11054737533095, 13.368787597604966 274 | -178.50837116959127, -203.08940633221815, 13.469393104605267 275 | -178.25784605366613, -204.06217201911426, 13.569843884358924 276 | -177.99060519911578, -205.0282025659012, 13.67007525128896 277 | -177.70388588960913, -206.0006275668751, 13.77145662753544 278 | -177.40269421454755, -206.96529284502182, 13.872515794560917 279 | -177.08835517019037, -207.9216343105554, 13.973183467301789 280 | -176.76213644511063, -208.869118180462, 14.073390470067357 281 | -176.42010812403808, -209.82127477522036, 14.174562875067807 282 | -176.0681368963897, -210.76371526893917, 14.275164954037042 283 | -175.7017876492069, -211.71012975313968, 14.376649541379942 284 | -175.3273169212905, -212.64603261225034, 14.477453434546709 285 | -174.94578753713512, -213.5710000794331, 14.57750989292499 286 | -174.5520647201019, -214.49893160338854, 14.678310417219404 287 | -174.14658804392138, -215.42957236388193, 14.779824138460333 288 | -173.73629274248975, -216.3482949173733, 14.880441898556182 289 | -173.31544820579802, -217.2691537082829, 14.981688678102927 290 | -172.89128376840983, -218.17747417996196, 15.081936448612606 291 | -172.4577040035419, -219.08739694102218, 15.182730835539575 292 | -172.01510914457657, -219.99868997677004, 15.28403953241132 293 | -171.57112670309687, -220.8966305441732, 15.384210270200889 294 | -171.11918219357563, -221.795452382303, 15.484815167516352 295 | -170.6596570915817, -222.6949343503424, 15.58582165890134 296 | -170.19293287268368, -223.5948553074743, 15.687196666945294 297 | -169.7270808769871, -224.48047517686695, 15.787263676241945 298 | -169.2549927034798, -225.36609531173002, 15.887622545647712 299 | -168.77703166535224, -226.2515050999499, 15.9882404986702 300 | -168.29356107579497, -227.136493929413, 16.089084389870475 301 | -167.80494424799855, -228.0208511880058, 16.19012072814694 302 | -167.31154449515338, -228.90436626361466, 16.291315698621556 303 | -166.81372513045002, -229.78682854412605, 16.392635183243172 304 | -166.31184946707896, -230.66802741742637, 16.49404478021456 305 | -165.80628081823068, -231.5477522714021, 16.595509822342418 306 | -165.2973824970957, -232.42579249393958, 16.696995394403064 307 | -164.7855178168645, -233.30193747292532, 16.79846634961046 308 | -164.2710500907276, -234.17597659624568, 16.89988732526792 309 | -163.75434263187555, -235.04769925178712, 17.00122275768016 310 | -163.23575875349877, -235.91689482743607, 17.102436896398032 311 | -162.71566176878775, -236.78335271107898, 17.203493817864718 312 | -162.19441499093307, -237.64686229060223, 17.304357438529077 313 | -161.67238173312523, -238.50721295389224, 17.40499152748908 314 | -161.14992530855466, -239.3641940888355, 17.50535971872633 315 | -160.6274090304119, -240.21759508331834, 17.605425522990743 316 | -160.09663990856458, -241.08110060152367, 17.706784175343547 317 | -159.56656575295324, -241.9404689206227, 17.80775409751437 318 | -159.0375680391466, -242.7954788997983, 17.90829665794041 319 | -158.51002824271336, -243.6459093982334, 18.0083731421657 320 | -157.9758659743557, -244.5051379097048, 18.109546407599918 321 | -157.44400314608885, -245.3591776773042, 18.210157639216135 322 | -156.91483999129505, -246.20779668633796, 18.310166032208162 323 | -156.3804536943457, -247.064096506184, 18.41110255165656 324 | -155.8496860912578, -247.91431943611005, 18.511331952485843 325 | -155.31476091173164, -248.77135677383853, 18.612359569796748 326 | -154.78444077850867, -249.62162011506325, 18.71256871075366 327 | -154.25112581185567, -250.47777124167274, 18.813435930664337 328 | -153.71552321483725, -251.33920783817413, 18.914872765774902 329 | -153.1862360888719, -252.19262243958954, 19.015294941793037 330 | -152.65600141220534, -253.05028531492985, 19.093714668684 331 | -152.12564262056648, -253.91152093998434, 19.05359463612133 332 | -151.59603308598318, -254.77562192813622, 19.01339331836438 333 | -151.07546625826075, -255.62972067277332, 18.973717587978072 334 | -150.55726367175936, -256.48547656517997, 18.934034371462744 335 | -150.03535534753783, -257.3539184175739, 18.89384435117578 336 | -149.518200950704, -258.22207255388673, 18.853760944604836 337 | -149.00694815411148, -259.08905800368274, 18.813836774041807 338 | -148.50280485738023, -259.9539559687514, 18.77412666676607 339 | -148.00070509806304, -260.826904307193, 18.73418083088658 340 | -147.50263094735766, -261.7062993676361, 18.694092061510002 341 | -147.01049621249774, -262.5928744093031, 18.65387010107928 342 | -146.53286581820947, -263.4826015656378, 18.61381408457563 343 | -146.07107339569748, -264.37304126503346, 18.714120370507736 344 | -145.61731174785928, -265.2782721025817, 18.815379567734315 345 | -145.17902973444606, -266.1824720746206, 18.91586184043536 346 | -144.74868275543594, -267.10024826103654, 19.017228089783718 347 | -144.3334457859806, -268.01535306013034, 19.117718812446405 348 | -143.92603840658612, -268.9428879614515, 19.219025365341764 349 | -143.53336099459946, -269.8662101178765, 19.319360770579884 350 | -143.14839859950519, -270.8008826153574, 19.358510031660877 351 | -142.77777656788777, -271.72989651518225, 19.31066432061153 352 | -142.41474641657945, -272.6692449272842, 19.262491198605698 353 | -142.05938009873225, -273.61862006739426, 19.214000113377868 354 | -141.7178890025282, -274.5605040277366, 19.16607474279795 355 | -141.38392804855468, -275.5114713373279, 19.117861205260397 356 | -141.05756540375353, -276.47123040765837, 19.069368900867875 357 | -140.74459488087575, -277.42181078671, 19.0214962696432 358 | -140.4390791034739, -278.3803090796852, 18.973373226124178 359 | -140.14108258748695, -279.3464493154759, 18.925008996777976 360 | -139.85066984885378, -280.3199555229741, 18.87641290008152 361 | -139.57307188878377, -281.2823297660829, 18.82850034504156 362 | -139.30290257244084, -282.2512729270413, 18.780382450455317 363 | -139.04022289750998, -283.22652408430105, 18.732068243243887 364 | -138.78509386167588, -284.20782231631404, 18.683566809009445 365 | -138.53757646262352, -285.1949067015321, 18.634887286072658 366 | -138.3021856804898, -286.16873828859445, 18.586962029683164 367 | -138.0742383406146, -287.14764214566617, 18.538882897299 368 | -137.8537920527193, -288.13137184343276, 18.490658636293443 369 | -137.64090442652497, -289.11968095257987, 18.442298022756283 370 | -137.43563307175293, -290.1123230437931, 18.39380985685839 371 | -137.23803559812444, -291.1090516877579, 18.345202958324776 372 | -137.04816961536068, -292.1096204551601, 18.296486162002306 373 | -136.86952039807193, -293.0944397442802, 18.24860801110492 374 | -136.69841793075182, -294.082483353656, 18.200641008423542 375 | -136.5349165629902, -295.0735187993963, 18.15259350726455 376 | -136.37907064437692, -296.06731359760977, 18.10447385930426 377 | -136.23093452450186, -297.0636352644051, 18.056290410820854 378 | -136.09056255295485, -298.06225131589105, 18.008051498945207 379 | -135.9580090793258, -299.0629292681762, 17.959765447920656 380 | -135.83332845320453, -300.0654366373695, 17.911440565362007 381 | -135.7165750241809, -301.06954093957944, 17.863085138504225 382 | -135.6078031418448, -302.07500969091484, 17.814707430431195 383 | -135.5070671557861, -303.0816104074844, 17.766315676275113 384 | -135.4144214155947, -304.08911060539685, 17.717918079376993 385 | -135.32992027086038, -305.0972778007609, 17.66952280739877 386 | -135.25361807117307, -306.10587950968517, 17.62113798837739 387 | -135.1855691661226, -307.1146832482785, 17.572771706711233 388 | -135.12582790529882, -308.1234565326495, 17.524431999069016 389 | -135.0744486382916, -309.131966878907, 17.476126850211244 390 | -135.03148571469086, -310.1399818031596, 17.427864188714008 391 | -134.99699348408637, -311.1472688215161, 17.379651882584753 392 | -134.9710262960681, -312.15359545008516, 17.331497734759402 393 | -134.95363850022582, -313.15872920497554, 17.283409478469896 394 | -134.94488444614944, -314.1624376022959, 17.235394772470947 395 | -134.94481848342883, -315.164488158155, 17.18746119611444 396 | -134.95349496165386, -316.1646483886615, 17.139616244259578 397 | -134.97139914335406, -317.18223238670856, 17.090932084242233 398 | -134.998506079569, -318.1973630826248, 17.042355503733017 399 | -135.03487338001995, -319.2097940470959, 16.99389414091247 400 | -135.08055865442813, -320.2192788508073, 16.94555551833698 401 | -135.13561951251475, -321.2255710644448, 16.89734703619916 402 | -135.20011356400107, -322.2284242586938, 16.849275965312383 403 | -135.27409841860836, -323.22759200423997, 16.801349439802085 404 | -135.3593320523321, -324.2419268639649, 16.752657237835358 405 | -135.45454587444837, -325.25191624395, 16.70412969311091 406 | -135.559800882642, -326.257299222647, 16.65577387023129 407 | -135.67515807459785, -327.25781487850793, 16.607596650810454 408 | -135.80067844800072, -328.2532022899844, 16.559604723492985 409 | -135.9390828874836, -329.2618262595009, 16.51090457737647 410 | -136.0881654799109, -330.2645798086892, 16.462410143673583 411 | -136.24799074122168, -331.2611869664413, 16.414127809202018 412 | -136.41862318735483, -332.2513717616492, 16.36606370408175 413 | -136.6001273342493, -333.2348582232047, 16.318223687949178 414 | -136.79623495413261, -334.229386414557, 16.269733873402473 415 | -137.0037557531383, -335.21638801331846, 16.221487876869894 416 | -137.22275789820844, -336.1955714309793, 16.173490928158884 417 | -137.4576087336652, -337.1842240822121, 16.12488223538172 418 | -137.70450483559233, -338.16416159793687, 16.076541518005953 419 | -137.96351815714183, -339.1350761938848, 16.028473088063347 420 | -138.23967476830964, -340.11374454776615, 15.979829919707734 421 | -138.5285356437322, -341.0824214139185, 15.931476417356974 422 | -138.83017666043713, -342.040782223441, 15.883415611965694 423 | -139.15030639331323, -343.0050321526787, 15.834814640216441 424 | -139.48382713080363, -343.95792287313594, 15.786521243964136 425 | -139.83081881393537, -344.8991124318911, 15.738536718262104 426 | -140.19769693841204, -345.8441710159838, 15.690042402857829 427 | -140.57868139732616, -346.7764076787936, 15.641868140305853 428 | -140.97385633828628, -347.69546247347415, 15.59401292652613 429 | -141.39036924149792, -348.61620433896155, 15.545671892913768 430 | -141.82173326007216, -349.522562893499, 15.497655910545827 431 | -142.27560236288252, -350.4288922987533, 15.449168794602024 432 | -142.74500621568285, -351.3195658624715, 15.549848453626593 433 | -143.2343609768892, -352.2046059449116, 15.650980250300089 434 | -143.72609862196782, -353.0824081640268, 15.75159549007374 435 | -144.21821920824684, -353.9579651555364, 15.8520336659244 436 | -144.7106736270706, -354.83134805124587, 15.95229876638996 437 | -145.20341276978354, -355.7026279829604, 16.052394749434736 438 | -145.70503801596706, -356.5871083403549, 16.154077264658614 439 | -146.2068554781726, -357.4695598894799, 16.255592854689283 440 | -146.7088134174683, -358.3500575719844, 16.35694560214676 441 | -147.2108600949221, -359.2286763295175, 16.45813956379623 442 | -147.71294377160214, -360.10549110372824, 16.559178772357203 443 | -148.2150127085765, -360.98057683626564, 16.66006723833647 444 | -148.71701516691326, -361.8540084687787, 16.76080895188407 445 | -149.2188994076804, -362.7258609429166, 16.861407884671195 446 | -149.72061369194608, -363.5962092003282, 16.96186799178917 447 | -150.22210628077835, -364.4651281826626, 17.06219321366855 448 | -150.72332543524527, -365.332692831569, 17.162387478017187 449 | -151.22421941641488, -366.19897808869615, 17.262454701776406 450 | -151.7333624796429, -367.07896396171145, 17.36412091029919 451 | -152.2420610601361, -367.95778237895047, 17.46566381040916 452 | -152.75026069640515, -368.8355122255713, 17.567087503595374 453 | -153.2579069269608, -369.71223238673167, 17.668396088442982 454 | -153.76494529031373, -370.5880217475896, 17.769593662845914 455 | -154.27132132497456, -371.46295919330316, 17.870684326232325 456 | -154.77698056945405, -372.3371236090302, 17.971672181801743 457 | -155.2818685622629, -373.21059387992864, 18.072561338772452 458 | -155.7859308419118, -374.0834488911565, 18.17335591463795 459 | -156.28911294691142, -374.95576752787167, 18.27406003743103 460 | -156.7913604157725, -375.82762867523223, 18.37467784799429 461 | -157.29261878700567, -376.69911121839596, 18.475213502255368 462 | -157.79283359912165, -377.57029404252097, 18.575671173506027 463 | -158.29195039063114, -378.4412560327651, 18.676055054683076 464 | -158.7899147000449, -379.3120760742863, 18.776369360650115 465 | -159.28667206587352, -380.1828330522427, 18.87661833047848 466 | -159.7821680266277, -381.0536058517921, 18.976806229725785 467 | -160.27634812081823, -381.92447335809237, 19.076937352710797 468 | -160.76915788695572, -382.79551445630165, 19.177016024782823 469 | -161.26054286355085, -383.66680803157783, 19.277046604584243 470 | -161.75873901192875, -384.5532095859282, 19.378727827915462 471 | -162.25534806230343, -385.4400367949495, 19.48036852092641 472 | -162.75031273675603, -386.3273726232785, 19.58197338799449 473 | -163.24357575736775, -387.2153000355519, 19.683547178756157 474 | -163.73507984621978, -388.1039019964063, 19.785094690502763 475 | -164.22476772539326, -388.9932614704784, 19.88662077055765 476 | -164.71258211696937, -389.88346142240493, 19.98813031863264 477 | -165.19846574302932, -390.7745848168226, 20.089628289161695 478 | -165.68236132565426, -391.666714618368, 20.19111969361002 479 | -166.1642115869254, -392.55993379167785, 20.292609602756468 480 | -166.64395924892386, -393.45432530138885, 20.39410314894715 481 | -167.1215470337309, -394.3499721121377, 20.495605528318347 482 | -167.59691766342763, -395.24695718856105, 20.597122002986477 483 | -168.07001386009523, -396.1453634952956, 20.698657903203188 484 | -168.5407783458149, -397.04527399697804, 20.800218629473402 485 | -169.00915384266784, -397.94677165824504, 20.901809654634196 486 | -169.47508307273517, -398.8499394437333, 21.00343652589249 487 | -169.9385087580981, -399.7548603180795, 21.105104866819325 488 | -170.3917138346104, -400.64648913556215, 21.205124704328792 489 | -170.84238827642474, -401.53997219992914, 21.1711821952423 490 | -171.2904776220517, -402.4353883963383, 21.121732363445158 491 | -171.73592741000198, -403.3328166099476, 21.072251746239075 492 | -172.1786831787863, -404.23233572591516, 21.022737512692796 493 | -172.61869046691538, -405.1340246293987, 20.97318679161364 494 | -173.05589481289985, -406.03796220555637, 20.923596670804194 495 | -173.4902417552505, -406.944227339546, 20.87396419634569 496 | -173.92167683247794, -407.85289891652553, 20.82428637190883 497 | -174.35014558309288, -408.7640558216531, 20.774560158092918 498 | -174.77559354560606, -409.67777694008635, 20.72478247179414 499 | -175.1979662585281, -410.59414115698354, 20.674950185603727 500 | -175.61720926036978, -411.5132273575024, 20.625060127236857 501 | -176.03326808964175, -412.435114426801, 20.575109078992906 502 | -176.44608828485468, -413.3598812500373, 20.525093777247903 503 | -176.8556153845193, -414.2876067123692, 20.475010911979744 504 | -177.2617949271463, -415.21836969895463, 20.42485712632687 505 | -177.66457245124636, -416.1522490949516, 20.374629016181007 506 | -178.05715443767969, -417.0734141094266, 20.325176437775173 507 | -178.44634438102293, -417.9977419629743, 20.2756453730312 508 | -178.83209054234408, -418.9253075972438, 20.226032452539197 509 | -179.21434118271128, -419.85618595388394, 20.17633426157956 510 | -179.59304456319256, -420.79045197454394, 20.12654733991095 511 | -179.968148944856, -421.72818060087275, 20.07666818159151 512 | -180.3396025887697, -422.6694467745195, 20.026693234833477 513 | -180.70735375600168, -423.6143254371332, 19.97661890189146 514 | -181.07135070762004, -424.5628915303628, 19.92644153898454 515 | -181.42536404905653, -425.4987682448989, 19.877025346536822 516 | -181.77565243572604, -426.4383498449529, 19.827502536975004 517 | -182.1221667589729, -427.38170746233016, 19.777869521681836 518 | -182.46511131142842, -428.33123182317553, 19.728010680168968 519 | -182.7995236790908, -429.2945411020156, 19.67765075953555 520 | -183.12183107074355, -430.26321336169786, 19.779739348584076 521 | -183.43142487675482, -431.22932383125953, 19.881189718919394 522 | -183.72775443987265, -432.185519168745, 19.981295699430373 523 | -184.0184276417305, -433.1523260083965, 20.08225145089978 524 | -184.303170080509, -434.1262180444968, 20.183717896310124 525 | -184.58172623247904, -435.1038405403247, 20.28537119306675 526 | -184.8538585008061, -436.08200410708025, 20.386902465825088 527 | -185.11934629153117, -437.0576786605535, 20.488017479612328 528 | -185.37798511672923, -438.0279875555397, 20.58843627235498 529 | -185.63799393746405, -439.0226650161751, 20.69124618615496 530 | -185.8908689559584, -440.00812572569987, 20.79298499807035 531 | -186.13644036946414, -440.98181609171536, 20.89340303668904 532 | -186.3830735719993, -441.9759352210246, 20.99582865750001 533 | -186.62216823474273, -442.95488755600513, 21.096601368682958 534 | -186.86217175642676, -443.9523545271468, 21.199194840645806 535 | -187.09442725452845, -444.93148884455064, 21.299825185369276 536 | -187.32745520814802, -445.9273638272905, 21.402102700416094 537 | -187.5525492791109, -446.9019589438291, 21.502127846352675 538 | -187.77829473304578, -447.8916530904057, 21.603639201074223 539 | -188.00465972572738, -448.89623799726337, 21.706616477451007 540 | -188.22287298129814, -449.8760338247356, 21.806996599409434 541 | -188.44160128408978, -450.86921928898863, 21.90869514594996 542 | -188.6608163247021, -451.87560923896683, 22.011693979217515 543 | -188.8716944082609, -452.85399450353776, 22.111779307415752 544 | -189.08296993310637, -453.84421457713574, 22.213030141563188 545 | -189.29461785289286, -454.8461056499565, 22.222222 546 | -189.50661312127485, -455.85950391219546, 22.222222 547 | -189.7100780180361, -456.84132364682796, 22.222222 548 | -189.91381687388866, -457.8334169979021, 22.222222 549 | -190.1178076446423, -458.83563979051246, 22.222222 550 | -190.32202828610667, -459.84784784975403, 22.222222 551 | -190.5264567540915, -460.8698970007215, 22.222222 552 | -190.7221711684523, -461.85658486180665, 22.222222 553 | -190.91803626928976, -462.8520185849495, 22.222222 554 | -191.1140327645402, -463.8560719948899, 22.222222 555 | -191.3101413621401, -464.8686189163676, 22.222222 556 | -191.5063427700257, -465.88953317412256, 22.222222 557 | -191.7026176961334, -466.91868859289457, 22.222222 558 | -191.89002189230607, -467.9086360778022, 22.222222 559 | -192.07745871792923, -468.90586784921686, 22.222222 560 | -192.26491139390805, -469.91027416736745, 22.222222 561 | -192.45236314114774, -470.92174529248246, 22.222222 562 | -192.63979718055353, -471.9401714847907, 22.222222 563 | -192.82719673303063, -472.965443004521, 22.222222 564 | -193.01454501948425, -473.9974501119018, 22.222222 565 | -193.19290894467545, -474.98647572847767, 22.222222 566 | -193.37119665652557, -475.9814163870593, 22.222222 567 | -193.5493936606217, -476.98217729030625, 22.222222 568 | -193.72748546255082, -477.98866364087814, 22.222222 569 | -193.90545756790007, -479.0007806414344, 22.222222 570 | -194.08329548225643, -480.01843349463445, 22.222222 571 | -194.26098471120702, -481.04152740313793, 22.222222 572 | -194.43851076033886, -482.0699675696043, 22.222222 573 | -194.615859135239, -483.103659196693, 22.222222 574 | -194.78416231894457, -484.09044406522605, 22.222222 575 | -194.95227964330098, -485.08180154550126, 22.222222 576 | -195.12019868116107, -486.0776503606487, 22.222222 577 | -195.28790700537746, -487.07790923379855, 22.222222 578 | -195.4553921888029, -488.0824968880812, 22.222222 579 | -195.62264180429003, -489.0913320466267, 22.222222 580 | -195.78964342469158, -490.1043334325652, 22.222222 581 | -195.95638462286027, -491.12141976902694, 22.222222 582 | -196.1228529716488, -492.14250977914213, 22.222222 583 | -196.28903604390982, -493.16752218604097, 22.222222 584 | -196.45492141249608, -494.19637571285364, 22.222222 585 | -196.6204966502603, -495.2289890827103, 22.222222 586 | -196.78574933005513, -496.2652810187412, 22.222222 587 | -196.95066702473326, -497.3051702440765, 22.222222 588 | -197.10658457569372, -498.293573075194, 22.222222 589 | -197.26217975531432, -499.2850624445594, 22.222222 590 | -197.41744199716805, -500.2795692449116, 22.222222 591 | -197.57236073482784, -501.27702436898926, 22.222222 592 | -197.72692540186668, -502.27735870953126, 22.222222 593 | -197.88112543185753, -503.28050315927624, 22.222222 594 | -198.03495025837333, -504.2863886109631, 22.222222 595 | -198.18838931498703, -505.2949459573306, 22.222222 596 | -198.34143203527168, -506.3061060911174, 22.222222 597 | -198.49406785280013, -507.3197999050625, 22.222222 598 | -198.64628620114541, -508.3359582919045, 22.222222 599 | -198.79807651388046, -509.35451214438217, 22.222222 600 | -198.94942822457827, -510.37539235523445, 22.222222 601 | -199.10033076681177, -511.3985298172, 22.222222 602 | -199.25077357415392, -512.4238554230176, 22.222222 603 | -199.40074608017773, -513.451300065426, 22.222222 604 | -199.55023771845612, -514.4807946371641, 22.222222 605 | -199.69923792256208, -515.5122700309705, 22.222222 606 | -199.84773612606853, -516.5456571395841, 22.222222 607 | -199.99572176254847, -517.5808868557439, 22.222222 608 | -200.14318426557486, -518.6178900721882, 22.222222 609 | -200.29011306872064, -519.6565976816561, 22.222222 610 | -200.43649760555883, -520.6969405768862, 22.222222 611 | -200.58232730966228, -521.7388496506176, 22.222222 612 | -200.72759161460408, -522.7822557955885, 22.222222 613 | -200.87227995395713, -523.8270899045383, 22.222222 614 | -201.01638176129438, -524.8732828702055, 22.169654181255723 615 | -201.15988647018884, -525.9207655853288, 22.11702680505462 616 | -201.30278351421344, -526.9694689426472, 22.064343323180022 617 | -201.43717434715754, -527.9609695281781, 22.014538295247664 618 | -201.57100483166843, -528.9534390370202, 21.964689209110198 619 | -201.70426606636477, -529.9468192517568, 21.914798972518234 620 | -201.8369491498652, -530.9410519549712, 21.864870493171722 621 | -201.96904518078838, -531.9360789292466, 21.814906678711708 622 | -202.1005452577529, -532.9318419571662, 21.764910436712164 623 | -202.23144047937757, -533.9282828213134, 21.714884674671726 624 | -202.36172194428084, -534.9253433042713, 21.664832300005507 625 | -202.49138075108152, -535.9229651886235, 21.614756220036817 626 | -202.62040799839815, -536.921090256953, 21.564659341988882 627 | -202.74879478484942, -537.9196602918432, 21.514544572976504 628 | -202.876532209054, -538.9186170758771, 21.464414819997724 629 | -203.00361136963053, -539.9179023916382, 21.414272989925344 630 | -203.13002336519764, -540.9174580217099, 21.364121989498482 631 | -203.25575929437403, -541.917225748675, 21.313964725314023 632 | -203.38081025577827, -542.9171473551173, 21.26380410381794 633 | -203.5051673480291, -543.9171646236198, 21.213643031296662 634 | -203.62882166974507, -544.9172193367658, 21.163484413868208 635 | -203.75176431954492, -545.9172532771386, 21.113331157473333 636 | -203.87398639604723, -546.9172082273213, 21.06318616786651 637 | -203.9954789978707, -547.9170259698974, 21.013052350606824 638 | -204.11623322363397, -548.91664828745, 20.96293261104873 639 | -204.23624017195567, -549.9160169625626, 20.912829854332678 640 | -204.3554909414545, -550.9150737778182, 20.862746985375658 641 | -204.47397663074904, -551.9137605158003, 20.812686908861497 642 | -204.59168833845797, -552.9120189590919, 20.762652529231104 643 | -204.70861716319996, -553.9097908902764, 20.712646750672484 644 | -204.82475420359364, -554.9070180919372, 20.662672477110597 645 | -204.94009055825768, -555.9036423466574, 20.612732612197043 646 | -205.05461732581068, -556.8996054370202, 20.56283005929957 647 | -205.16832560487134, -557.8948491456092, 20.51296772149133 648 | -205.2812064940583, -558.8893152550074, 20.463148501539983 649 | -205.3998157167806, -559.9413671154446, 20.41044896195237 650 | -205.51747680087294, -560.9924128285483, 20.35780446103109 651 | -205.63417917990836, -562.0423832870576, 20.305218443315418 652 | -205.74991228745972, -563.0912093837112, 20.252694352901045 653 | -205.86466555710004, -564.1388220112481, 20.200235633423787 654 | -205.9784284224023, -565.1851520624065, 20.14784572804305 655 | -206.0911903169394, -566.2301304299256, 20.095528079424696 656 | -206.20294067428435, -567.2736880065443, 20.04328612972365 657 | -206.31366892801012, -568.315755685001, 19.991123320565954 658 | -206.4233645116896, -569.3562643580347, 19.939043093030325 659 | -206.53201685889587, -570.3951449183841, 19.88704888762926 660 | -206.63961540320184, -571.4323282587881, 19.835144144289593 661 | -206.74614957818042, -572.4677452719852, 19.78333230233252 662 | -206.85160881740464, -573.5013268507147, 19.731616800453004 663 | -206.95598255444742, -574.5330038877148, 19.680001076698655 664 | -207.05926022288176, -575.5627072757246, 19.628488568447867 665 | -207.1614312562806, -576.5903679074828, 19.577082712387416 666 | -207.26248508821692, -577.6159166757283, 19.525786944489283 667 | -207.36241115226363, -578.6392844731996, 19.474604699986816 668 | -207.46119888199377, -579.6604021926358, 19.423539413350063 669 | -207.55883771098027, -580.6792007267754, 19.37259451826043 670 | -207.6553170727961, -581.6956109683574, 19.32177344758436 671 | -207.7506264010142, -582.7095638101205, 19.271079633346297 672 | -207.8447551292075, -583.7209901448034, 19.220516506700665 673 | -207.93769269094906, -584.7298208651449, 19.170087497902927 674 | -208.0294285198118, -585.7359868638839, 19.119796036279624 675 | -208.11995204936864, -586.7394190337591, 19.06964555019743 676 | -208.2092527131926, -587.7400482675092, 19.019639467031073 677 | -208.2973199448566, -588.7378054578732, 18.969781213130165 678 | -208.3889300033324, -589.7878014295236, 18.917317217795997 679 | -208.47914157450688, -590.8344391015152, 18.865025777057106 680 | -208.56794223123273, -591.8776371969777, 18.812910916655433 681 | -208.65531954636273, -592.9173144390415, 18.760976660874547 682 | -208.74126109274948, -593.9533895508368, 18.709227032487334 683 | -208.82575444324576, -594.9857812554937, 18.65766605270157 684 | -208.90878717070422, -596.0144082761426, 18.606297741103266 685 | -208.9903468479776, -597.0391893359134, 18.55512611559775 686 | -209.07042104791856, -598.0600431579365, 18.504155192348247 687 | -209.14899734337982, -599.076888465342, 18.453388985711943 688 | -209.22606330721408, -600.0896439812602, 18.402831508173282 689 | -209.30160651227405, -601.0982284288211, 18.35248677027452 690 | -209.37561453141242, -602.102560531155, 18.302358780543155 691 | -209.44807493748192, -603.1025590113921, 18.252451545416257 692 | -209.52266345159336, -604.150417891692, 18.200160504226066 693 | -209.59550889487505, -605.1932901198406, 18.148123171006866 694 | -209.666596772914, -606.2310808984978, 18.096344210564876 695 | -209.73591259129728, -607.2636954303227, 18.04482828471289 696 | -209.80344185561194, -608.2910389179749, 17.993580052147642 697 | -209.86917007144507, -609.3130165641142, 17.942604168321143 698 | -209.93308274438365, -610.3295335713997, 17.891905285305718 699 | -209.99516538001478, -611.3404951424911, 17.84148805165218 700 | -210.05540348392555, -612.3458064800479, 17.7913571122409 701 | -210.11378256170298, -613.3453727867296, 17.741517108125173 702 | -210.17306395688775, -614.388630593201, 17.689503297208464 703 | -210.2302630165755, -615.4253402492935, 17.637820717824223 704 | -210.28536296167138, -616.4553920152357, 17.586474727707984 705 | -210.33834701308064, -617.4786761512563, 17.535470679052786 706 | -210.38919839170842, -618.495082917584, 17.484813918248737 707 | -210.43790031846004, -619.5045025744477, 17.434509785607567 708 | -210.48443601424066, -620.5068253820757, 17.384563615071098 709 | -210.5308459954496, -621.5491464628122, 17.33262879730918 710 | -210.57484081867239, -622.5834320959998, 17.28109880851252 711 | -210.61640119184534, -623.6095561063785, 17.22997975666418 712 | -210.65550782290492, -624.6273923186881, 17.179277740402856 713 | -210.69214141978742, -625.6368145576682, 17.128998848525715 714 | -210.72628269042923, -626.6376966480587, 17.07914915945835 715 | -210.75929006481965, -627.6748051724733, 17.027499072086812 716 | -210.78953025848466, -628.7022974448823, 16.976331643853804 717 | -210.816981227234, -629.7200292903806, 16.925653779715123 718 | -210.84162092687743, -630.727856534063, 16.87547236916597 719 | -210.8643108046029, -631.7687864961968, 16.823645893564983 720 | -210.88389059163757, -632.7986110693364, 16.772375252512045 721 | -210.90033524163584, -633.8171664436775, 16.721668212980664 722 | -210.91361970825216, -634.8242888094157, 16.671532518548673 723 | -210.92407025285948, -635.8610405015121, 16.619923710164585 724 | -210.93103629261563, -636.8850236892463, 16.568951919440007 725 | -210.93448951812036, -637.8960532215629, 16.51862580617035 726 | -210.93432404826734, -638.9335836704882, 16.466980854839512 727 | -210.93029665484738, -639.9566949165749, 16.416053251444318 728 | -210.92237549363523, -640.9651786900657, 16.36585260300784 729 | -210.90999424706877, -641.996744851105, 16.314500837135117 730 | -210.8933439495201, -643.01207887547, 16.263953958344608 731 | -210.87152969339994, -644.0476234124993, 16.212396424368745 732 | -210.84504617937608, -645.0652002083893, 16.16172755107396 733 | -210.8126520231382, -646.0998997853951, 16.110198276786992 734 | -210.77516228255467, -647.114757255629, 16.05964745823968 735 | -210.73097057939327, -648.1434219743, 16.008396586762075 736 | -210.68122960665139, -649.1502233542269, 15.958220106222498 737 | -210.62394882272542, -650.1672762777299, 15.90751423307217 738 | -210.55849307682269, -651.1919178268148, 15.856406887791385 739 | -210.48655095381676, -652.1905552873873, 15.806569082845213 740 | -210.40550421751, -653.1927535242854, 15.756519999905073 741 | -210.3146518672267, -654.1955151461175, 15.706401282229146 742 | -210.21326134163618, -655.1956844475933, 15.65636089352723 743 | -210.10056759473397, -656.1899413661926, 15.606553069959206 744 | -209.9722722292185, -657.2008865331713, 15.555827847758273 745 | -209.83052288519127, -658.196598777741, 15.505764759770246 746 | -209.67038010020244, -659.1969129967181, 15.45533827068601 747 | -209.49004108101465, -660.1939827408214, 15.404902054003301 748 | -209.2944186605275, -661.1791559622477, 15.35490585835074 749 | -209.092304344553, -662.1754263473904, 15.304304489038167 750 | -208.8866276593662, -663.1697878964726, 15.253760615764826 751 | -208.67724228288893, -664.1620476694947, 15.203281396373738 752 | -208.46400189304296, -665.1520127264565, 15.152873876429787 753 | -208.24676016775024, -666.1394901273578, 15.102544982910448 754 | -208.0253707849325, -667.1242869321986, 15.05230151768664 755 | -207.79968742251162, -668.1062102009789, 15.002150150781372 756 | -207.56956375840946, -669.0850669936985, 14.952097413393483 757 | -207.33485347054778, -670.0606643703572, 14.90214969067372 758 | -207.0954102368485, -671.032809390955, 14.852313214240151 759 | -206.84690377749865, -672.0176918311954, 14.801752404655772 760 | -206.59319736063512, -672.9986014410911, 14.751319126474826 761 | -206.33413709725812, -673.9753353029142, 14.701019394085021 762 | -206.06956909836794, -674.9476904989369, 14.650859022254082 763 | -205.7993394749647, -675.9154641114316, 14.600843616341157 764 | -205.52329433804877, -676.8784532226701, 14.55097856213194 765 | -205.23652810576075, -677.8523781996134, 14.500441872383995 766 | -204.94343012030606, -678.8209348912276, 14.45007107853258 767 | -204.64383866928162, -679.783910063861, 14.399871072859433 768 | -204.33759204028442, -680.7410904838616, 14.349846464874433 769 | -204.02452852091142, -681.6922629175776, 14.300001567987813 770 | -203.69918076167608, -682.652652111275, 14.249527824851507 771 | -203.36645392098634, -683.606390545282, 14.199247728738769 772 | -203.02617820227965, -684.5532543261902, 14.149164777701746 773 | -202.67818380899325, -685.4930195605912, 14.09928209090445 774 | -202.316495320496, -686.4404405175949, 14.048802789556591 775 | -201.9464836961403, -687.3800660194079, 13.998535494319677 776 | -201.56797079017272, -688.3116611633956, 13.948482162637985 777 | -201.18077845684002, -689.2349910469229, 13.898644269941249 778 | -200.7783696647623, -690.1642720689783, 13.848236902964063 779 | -200.36663311082998, -691.0845346728861, 13.798053335195812 780 | -199.94538203079327, -691.9955325916794, 13.748093447476506 781 | -199.50761805839693, -692.9110285140695, 13.69758114671545 782 | -199.05965160551708, -693.8164559530744, 13.647297388374074 783 | -198.60128701582695, -694.7115569166524, 13.597240039787119 784 | -198.13232863299993, -695.5960734127618, 13.547406238373132 785 | -197.6451147655658, -696.4831025479953, 13.497030782884725 786 | -197.14657208563315, -697.3586829598214, 13.446877450304013 787 | -196.63649576694326, -698.2225445647446, 13.39694075228225 788 | -196.10668336537452, -699.0872308453316, 13.346462469139754 789 | -195.5645598146275, -699.9392796365747, 13.296193192412108 790 | -195.00991083638158, -700.7784083915083, 13.246124244749215 791 | -194.44252215231623, -701.6043345631667, 13.196245900236466 792 | -193.8534184488131, -702.4287980156234, 13.145806909939148 793 | -193.25074717257223, -703.2390754045115, 13.095540663915333 794 | -192.6342843068067, -704.0348713417429, 13.045433500585675 795 | -192.00380583472955, -704.8158904392297, 12.995470531812662 796 | -191.3590877395539, -705.5818373088841, 12.945635620845755 797 | -190.69010311871608, -706.3433383538427, 12.895180886368742 798 | -190.0059922829374, -707.0887078582318, 12.844820550380978 799 | -189.3065211862853, -707.8176372095519, 12.794533711856047 800 | -188.5914557828273, -708.5298177953039, 12.744298095341405 801 | -187.86056202663082, -709.2249410029883, 12.694090051606134 802 | -187.11360587176338, -709.902698220106, 12.643884564575039 803 | -186.35035327229244, -710.5627808341577, 12.593655264902305 804 | -185.57057018228545, -711.204880232644, 12.543374450461753 805 | -184.7740225558099, -711.8286878030657, 12.493013113940796 806 | -183.96047634693326, -712.4338949329235, 12.44254097762238 807 | -183.14186195327053, -713.0118324310648, 12.392661209494662 808 | -182.30628679142103, -713.5711096048939, 12.342611955047238 809 | -181.45352684459783, -714.1114310663227, 12.292360876172346 810 | -180.58335809601405, -714.6325014272634, 12.241874631386844 811 | -179.70874125471335, -715.1267929753502, 12.191867426413584 812 | -178.81679211552895, -715.6018261574363, 12.141565020937618 813 | -177.92100099557115, -716.0506650600475, 12.0916912931973 814 | -177.00797834275056, -716.4802719239656, 12.041464242107859 815 | -176.09174829792093, -716.8843097955145, 11.991619684960444 816 | -175.15841060932473, -717.2691740491613, 11.941366315183771 817 | -174.22252690152567, -717.629133119177, 11.891454081486511 818 | -173.2696814431616, -717.9700076087751, 11.84108079398849 819 | -172.31497645531186, -718.286677046837, 11.79101262350507 820 | -171.34347651133282, -718.5843801044152, 11.740434900968207 821 | -170.37082700301374, -718.8586124014532, 11.690131987466229 822 | -169.39765758920925, -719.1100552073245, 11.640099929738874 823 | -168.4082495492845, -719.3430665449721, 11.589503024434547 824 | -167.41906292009176, -719.5540704304058, 11.539156724876793 825 | -166.43074094723656, -719.7437708548341, 11.489063188116095 826 | -165.43914422571845, -719.9103415125539, 11.43901311599057 827 | -164.44100473506785, -720.0395330558705, 11.457129319063295 828 | -163.43612725635205, -720.1312884908917, 11.558035107157245 829 | -162.43651347407769, -720.1869369153293, 11.658151262739413 830 | -161.4336063273537, -720.2092328401164, 11.758466757714624 831 | -160.42884799245462, -720.1997773085307, 11.858947040289198 832 | -159.4236125281953, -720.1601243731334, 11.959548764622847 833 | -158.41920754383028, -720.0917820480172, 12.06022150403226 834 | -157.41687584939598, -719.9962132510292, 12.160909250090326 835 | -156.41779708849634, -719.8748367359685, 12.261551717711557 836 | -155.4230893535313, -719.7290280147636, 12.362085476279452 837 | -154.4338107833688, -719.5601202696234, 12.462444926046333 838 | -153.45096114345972, -719.3694052551656, 12.562563137746752 839 | -152.46425207601038, -719.1555761727054, 12.663524400629722 840 | -151.48574283871253, -718.9219013560321, 12.764126798584476 841 | -150.5162942372774, -718.6695770226619, 12.864301553889158 842 | -149.54541903922026, -718.3964672689, 12.96515727201175 843 | -148.58515998222998, -718.1065249572924, 13.065464998563204 844 | -147.62495338097023, -717.7971033945514, 13.16634802095012 845 | -146.67679826328293, -717.4725868278987, 13.266563245802871 846 | -145.7300901004446, -717.129843505284, 13.298904125470793 847 | -144.78552262614346, -716.7692694971159, 13.254864534787334 848 | -143.8549813071741, -716.395861974733, 13.211190093703475 849 | -142.92787657715974, -716.005814568963, 13.167378593138277 850 | -142.00487768736974, -715.5995093725714, 13.12345138512946 851 | -141.08665388907338, -715.1773284783246, 13.0794301012617 852 | -140.18483673490258, -714.7450178692909, 13.035868183824604 853 | -139.28897887654503, -714.2979531939219, 12.992257045110513 854 | -138.39972566573812, -713.8365029001255, 12.94861808218754 855 | -137.5177224542193, -713.36103543581, 12.904972786575373 856 | -136.6436145937259, -712.8719192488837, 12.861342703812571 857 | -135.7780474359954, -712.3695227872545, 12.817749393319616 858 | -134.9112820279464, -711.8478520858948, 12.773683933650338 859 | -134.054597341936, -711.3133348076419, 12.729700470889368 860 | -133.2086626292335, -710.7663530452611, 12.68582115221255 861 | -132.37414714110824, -710.2072888915186, 12.642067966578423 862 | -131.55172012882957, -709.6365244391799, 12.598462698799795 863 | -130.73237630829038, -709.0473612958567, 12.554504691483082 864 | -129.92679321556477, -708.4470016463214, 12.51074224855562 865 | -129.12633625134453, -707.8285023919209, 12.466680016424323 866 | -128.3413987570226, -707.199354402655, 12.422862152355428 867 | -127.56375553021175, -706.5523865748819, 12.378799410414443 868 | -126.80347937918563, -705.8953631177498, 12.335030381890457 869 | -126.05279441851026, -705.2209023135313, 12.291072638276072 870 | -125.32141540508249, -704.5370256908553, 12.247457706700137 871 | -124.60205691240942, -703.8361590064571, 12.203710550796915 872 | -123.89623058101225, -703.1184524326984, 12.15986369654447 873 | -123.20551132461122, -702.3840841655323, 12.115949902280558 874 | -122.53153889268373, -701.6332613166076, 12.072001903610737 875 | -121.8760194505794, -700.8662208153978, 12.028052111611071 876 | -121.24072717719181, -700.0832303213523, 11.98413225723372 877 | -120.62750588018724, -699.2845891460724, 11.94027297389126 878 | -120.03827062879012, -698.4706291855107, 11.896503309235081 879 | -119.47500940412536, -697.6417158621932, 11.85285015621205 880 | -118.93444817498133, -696.7895246767553, 11.80889217580082 881 | -118.42480965807468, -695.9231100778882, 11.76510784734472 882 | -117.94835661703831, -695.0429619656982, 11.865191222572795 883 | -117.49951641897343, -694.1449217952868, 11.965587122442829 884 | -117.07170014656634, -693.2266689616245, 12.066889394355412 885 | -116.66568593240694, -692.2906725007435, 12.168915710415588 886 | -116.289452811839, -691.3586193633982, 12.269428118199274 887 | -115.93342885064322, -690.41019340089, 12.37073284993996 888 | -115.59730027198677, -689.4456867725694, 12.472872727434693 889 | -115.28773238408203, -688.4878442714587, 12.573535259399462 890 | -114.996573277864, -687.5151954567417, 12.675064533104337 891 | -114.72967636980928, -686.5511337730741, 12.775096972315083 892 | -114.47978967036025, -685.5734606896895, 12.87600723049215 893 | -114.24664027500427, -684.5824303094946, 12.977815867405917 894 | -114.03492519698682, -683.6023550087459, 13.078084051262891 895 | -113.83864596130934, -682.6100294290096, 13.17923915961423 896 | -113.65754869619892, -681.6056899517027, 13.281292773225283 897 | -113.49525681573641, -680.6144945726015, 13.381732154645903 898 | -113.34693796943529, -679.612308687718, 13.483042323337298 899 | -113.21235641211689, -678.5993518006962, 13.58522812717203 900 | -113.09414074036178, -677.6015579600326, 13.685705363077233 901 | -112.98854147105632, -676.5939370501237, 13.787019286294305 902 | -112.89534010157143, -675.5766925199805, 13.889169809023276 903 | -112.81624526970512, -674.5764685566962, 13.989504447566304 904 | -112.7485111360296, -673.5674895114225, 14.09062945073892 905 | -112.69193557852236, -672.5499435810959, 14.19254120246714 906 | -112.6463164751606, -671.524018962654, 14.295235039931544 907 | -112.61223312095828, -670.517220755871, 14.395972535642677 908 | -112.58815894773883, -669.5028311911526, 14.497440055314037 909 | -112.57390737424376, -668.4810239953438, 14.599630713045254 910 | -112.56929148022459, -667.4798788298613, 14.699746293693144 911 | -112.5736259193009, -666.4720360492984, 14.80053150380331 912 | -112.58673883323758, -665.4576556718116, 14.901978016742007 913 | -112.60845836379923, -664.436897715558, 15.00407691699381 914 | -112.63861265275054, -663.409922198694, 15.106818728997515 915 | -112.67585264865019, -662.4056648771685, 15.207313484339872 916 | -112.72074493953806, -661.395828919589, 15.308396815260537 917 | -112.77313159456205, -660.3805613762485, 15.410058634356275 918 | -112.83285468286999, -659.3600092974398, 15.512288443748545 919 | -112.89975627360965, -658.334319733456, 15.615075354613143 920 | -112.9714703860638, -657.3331556485423, 15.71544828118433 921 | -113.04966484864971, -656.3274170253051, 15.816325659830408 922 | -113.13419488435954, -655.3172386664197, 15.91769654537934 923 | -113.22491571618528, -654.3027553745624, 16.01954970530994 924 | -113.3216825671191, -653.2841019524079, 16.12187363300559 925 | -113.42435066015318, -652.2614132026323, 16.2246565603936 926 | -113.52950545398625, -651.2650721398304, 16.324844036861034 927 | -113.63995070235765, -650.2651798752966, 16.425441387400816 928 | -113.7555540306661, -649.2618596637559, 16.526437207928304 929 | -113.87618306431014, -648.2552347599353, 16.627819901754698 930 | -114.00170542868844, -647.2454284185601, 16.729577688240102 931 | -114.13198874919954, -646.2325638943571, 16.83169861107144 932 | -114.26690065124217, -645.2167644420515, 16.934170546186238 933 | -114.40630876021493, -644.1981533163698, 17.036981209359375 934 | -114.54566113789997, -643.2078405533641, 17.1369881318067 935 | -114.68899617888783, -642.2151122233338, 17.23729039854179 936 | -114.8361931816471, -641.2200807121446, 17.337876414760785 937 | -114.9871314446462, -640.2228584056626, 17.438734467874177 938 | -115.14169026635358, -639.2235576897536, 17.539852732801137 939 | -115.29974894523787, -638.2222909502834, 17.641219277062056 940 | -115.46118677976747, -637.2191705731179, 17.74282206568039 941 | -115.62588306841084, -636.2143089441232, 17.844648965904184 942 | -115.79371710963656, -635.207818449165, 17.94668775175719 943 | -115.96456820191312, -634.1998114741089, 18.04892610842894 944 | -116.13831564370886, -633.1904004048215, 18.151351636513027 945 | -116.31483873349248, -632.179697627168, 18.253951856102617 946 | -116.49401676973235, -631.1678155270145, 18.356714210750717 947 | -116.67572905089693, -630.1548664902273, 18.459626071304 948 | -116.85985487545486, -629.1409629026714, 18.562674739617954 949 | -117.04627354187448, -628.1262171502135, 18.61722591461696 950 | -117.22893920582138, -627.1424851591565, 18.569063535177467 951 | -117.4135336368615, -626.1581704630948, 18.52085655105909 952 | -117.59994709929768, -625.1733752375449, 18.47261062368071 953 | -117.7880698574327, -624.1882016580234, 18.424331436570636 954 | -117.97779217556939, -623.2027519000474, 18.376024694071557 955 | -118.16900431801056, -622.2171281391331, 18.327696120074382 956 | -118.3615965490591, -621.2314325507975, 18.279351456778926 957 | -118.55545913301773, -620.2457673105571, 18.23099646347898 958 | -118.75048233418931, -619.2602345939285, 18.182636915369816 959 | -118.94655641687672, -618.2749365764288, 18.13427860237586 960 | -119.14357164538268, -617.2899754335742, 18.085927327996547 961 | -119.3414182840101, -616.3054533408817, 18.03758890816837 962 | -119.53998659706173, -615.3214724738677, 17.989269170140943 963 | -119.73916684884045, -614.3381350080492, 17.940973951365315 964 | -119.93884930364902, -613.3555431189427, 17.892709098392366 965 | -120.13892422579033, -612.3737989820647, 17.844480465779455 966 | -120.33928187956715, -611.3930047729322, 17.796293915003407 967 | -120.5398125292823, -610.4132626670616, 17.748155313377733 968 | -120.74687702610561, -609.4031278610639, 17.698520373380788 969 | -120.95388822877194, -608.3943353904319, 17.648949245915126 970 | -121.16072543574984, -607.3869976410317, 17.59944839684192 971 | -121.36726794550776, -606.3812269987291, 17.550024293656875 972 | -121.57339505651419, -605.3771358493898, 17.50068340421135 973 | -121.77898606723767, -604.3748365788797, 17.451432195423916 974 | -121.98392027614668, -603.3744415730649, 17.40227713197982 975 | -122.18807698170966, -602.3760632178113, 17.35322467501554 976 | -122.39133548239516, -601.3798138989846, 17.30428128078585 977 | -122.59357507667161, -600.3858060024506, 17.255453399310326 978 | -122.79467506300759, -599.3941519140756, 17.20674747299649 979 | -122.9945147398715, -598.4049640197251, 17.158169935236447 980 | -123.19297340573189, -597.4183547052651, 17.109727208973926 981 | -123.38993035905725, -596.4344363565614, 17.061425705238303 982 | -123.58526489831604, -595.45332135948, 17.01327182164234 983 | -123.78487664979642, -594.4446015812563, 16.963774495743348 984 | -123.98250226409118, -593.4391058762396, 16.914447929612052 985 | -124.17800936659896, -592.436957499156, 16.865299084097046 986 | -124.3712655827183, -591.4382797047316, 16.81633489745855 987 | -124.56213853784789, -590.4431957476922, 16.76756228333121 988 | -124.75049585738635, -589.4518288827642, 16.71898812861306 989 | -124.93620516673231, -588.4643023646731, 16.670619291274484 990 | -125.11913409128438, -587.4807394481452, 16.622462598080876 991 | -125.3045584231666, -586.471647395823, 16.573075672799657 992 | -125.48674601306307, -585.4670284435778, 16.52392854429468 993 | -125.66555208396585, -584.4670173940854, 16.47502855854469 994 | -125.84083185886712, -583.4717490500211, 16.426383014774277 995 | -126.01244056075893, -582.4813582140607, 16.37799916216597 996 | -126.18510924800034, -581.4670752264301, 16.328473195225108 997 | -126.35357639169823, -580.4582507775913, 16.279239950599592 998 | -126.51768406100047, -579.4550319178372, 16.230307145918204 999 | -126.67727432505487, -578.4575656974611, 16.181682425600783 1000 | -126.83218925300929, -577.4659991667556, 16.133373355942503 1001 | -126.98648637285717, -576.4524119788347, 16.084021216808125 1002 | -127.13549823531062, -575.4453820131463, 16.03501898433274 1003 | -127.27905298213429, -574.4450692878472, 15.986374597135601 1004 | -127.41697875509296, -573.451633821094, 15.938095880565152 1005 | -127.55268936991229, -572.4379376802294, 15.888865241197427 1006 | -127.68208582697216, -571.4318489327271, 15.840037230194442 1007 | -127.80498154501421, -570.4335413054321, 15.791619916296636 1008 | -127.92423614901236, -569.4165342662432, 15.742329827807993 1009 | -128.03623494911875, -568.4081060734754, 15.693489643084519 1010 | -128.1407758233107, -567.4084449240661, 15.645107522824846 1011 | -128.2401008589168, -566.3917904563589, 15.595936822108973 1012 | -128.3311388787968, -565.3847722080841, 15.547265287889578 1013 | -128.4136713803217, -564.3875936282524, 15.499100951415215 1014 | -128.48925573173824, -563.3752808659056, 15.450236601632843 1015 | -128.55542719558645, -562.373752359291, 15.40192189196539 1016 | -128.61323743553055, -561.3586073774027, 15.352977677904342 1017 | -128.66065670892192, -560.3552596016259, 15.30462659776541 1018 | -128.69819295998053, -559.3399193415858, 15.255718768136257 1019 | -128.72428587535092, -558.3374609348385, 15.207448063538596 1020 | -128.73885980845384, -557.3247453809095, 15.158694916596975 1021 | -128.7407546400866, -556.3030157247517, 15.109512829632887 1022 | -128.72917040930628, -555.2962805337056, 15.061049393085717 1023 | -128.70305382993016, -554.2824789941415, 15.012232828664972 1024 | -128.66541778254512, -553.2808210471011, 14.963982975298109 1025 | -128.6224053272875, -552.2796489497448, 14.915746077131608 1026 | -128.57427987774759, -551.2737613589691, 14.867271263783852 1027 | -128.52147426655432, -550.2668758231181, 14.8187371909971 1028 | -128.46442201445726, -549.2624588596655, 14.770310619698499 1029 | -128.4035562262757, -548.2637384961738, 14.722146998236768 1030 | -128.33824664295076, -547.2578311267516, 14.673624669719983 1031 | -128.26867522764434, -546.2465612551737, 14.624831100428821 1032 | -128.1962554394226, -545.2481846653335, 14.576646954692942 1033 | -128.1201097404866, -544.2484108842436, 14.528382440713804 1034 | -128.04042558607154, -543.2487588164856, 14.480110533122962 1035 | -127.95739198803923, -542.2506688812264, 14.431900483207405 1036 | -127.86964620735284, -541.2379237190926, 14.382968325414508 1037 | -127.77877186573832, -540.2289338194705, 14.334202975834348 1038 | -127.68496302919965, -539.2249605840544, 14.285665192731676 1039 | -127.5884145779338, -538.2271953624654, 14.23741241186217 1040 | -127.48744648927475, -537.2183226880193, 14.188606694609629 1041 | -127.38397144733813, -536.2174741474499, 14.14017303073097 1042 | -127.27615125878359, -535.2068812080829, 14.091251026518819 1043 | -127.16606196622354, -534.2059885224369, 14.042781473411868 1044 | -127.05170681449935, -533.1966194706146, 13.993883637203451 1045 | -126.93532507744038, -532.1984926809503, 13.945512279553077 1046 | -126.8147612229339, -531.193066425808, 13.896768344043076 1047 | -126.69241746233863, -530.2002961096009, 13.848618823115604 1048 | -126.56597944426004, -529.2013159135048, 13.800148261718352 1049 | -126.43541179348104, -528.1965276662339, 13.75137510679614 1050 | -126.30067913478459, -527.1863331965028, 13.70231777393885 1051 | -126.16451086747047, -526.1910857441728, 13.653964203319859 1052 | -126.02427198816115, -525.1914068769772, 13.605372448853801 1053 | -125.8799291619994, -524.1876752470885, 13.556559767246574 1054 | -125.73144905412812, -523.1802695066788, 13.507543380091043 1055 | -125.58189243183119, -522.1898121782649, 13.459326246210821 1056 | -125.4282989748828, -521.1965462760483, 13.410946116002014 1057 | -125.27063730878213, -520.2008281844239, 13.362419090236555 1058 | -125.10887605902835, -519.203014287787, 13.313761230477814 1059 | -124.9429838511205, -518.2034609705333, 13.264988557153007 1060 | -124.77292931055783, -517.2025246170576, 13.216117047516304 1061 | -124.59868106283952, -516.2005616117553, 13.167162633494847 1062 | -124.42020773346464, -515.1979283390219, 13.118141199408909 1063 | -124.23747794793236, -514.1949811832524, 13.069068579556957 1064 | -124.05046033174192, -513.1920765288421, 13.019960555655759 1065 | -123.85912351039238, -512.1895707601864, 12.970832854124577 1066 | -123.6634361093829, -511.18782026168066, 12.921701143201862 1067 | -123.46336675421261, -510.1871814177199, 12.8725810298818 1068 | -123.25888407038082, -509.18801061269943, 12.8234880566571 1069 | -123.04995668338645, -508.1906642310147, 12.774437698053088 1070 | -122.83655321872885, -507.19549865706085, 12.725445356937085 1071 | -122.61864230190707, -506.20287027523324, 12.676526360585603 1072 | -122.39619255842024, -505.2131354699271, 12.627695956490347 1073 | -122.16917261376761, -504.2266506255377, 12.57896930788237 1074 | -121.93755109344829, -503.24377212646027, 12.530361488951884 1075 | -121.70129662296137, -502.26485635709014, 12.481887479739271 1076 | -121.4603778278061, -501.2902597018226, 12.433562160670528 1077 | -121.21476333348156, -500.3203385450529, 12.3854003067081 1078 | -120.95926331404269, -499.3358125460625, 12.336439281261105 1079 | -120.69880797550047, -498.3569045608574, 12.28767918084536 1080 | -120.43336398299778, -497.3839932416097, 12.239135321294338 1081 | -120.16289800167743, -496.4174572404916, 12.190822873467257 1082 | -119.88181447733717, -495.4385510601393, 12.141798153311584 1083 | -119.59543601902865, -494.46707353920334, 12.093045576637484 1084 | -119.30372725153484, -493.5034265063982, 12.044580713685633 1085 | -119.0066527996386, -492.5480117904383, 11.996418932387222 1086 | -118.69819216785413, -491.5827559074696, 11.947640562694371 1087 | -118.3840790964779, -490.6269020157495, 11.899208841204034 1088 | -118.0580700200718, -489.66278236654944, 11.850218556088228 1089 | -117.72611035655655, -488.70932325323315, 11.801620681260122 1090 | -117.38816040358384, -487.7669756565963, 11.75343103643448 1091 | -117.03763205430712, -486.8187426298489, 11.70476801681207 1092 | -116.68080202737616, -485.8829895301536, 11.656560768171255 1093 | -116.31084279976344, -484.94322975191443, 11.60794533240351 1094 | -115.92734981819868, -484.0007144351956, 11.558964664273791 1095 | -115.53694173345801, -483.07318804205124, 11.510523375333879 1096 | -115.13241226280778, -482.14504104517573, 11.461786966662482 1097 | -114.72062060826437, -481.2335352079855, 11.41364095010938 1098 | -114.29409913635504, -480.32369889278215, 11.365271487265218 1099 | -113.85240287522868, -479.4170599452857, 11.316725889838832 1100 | -113.39507457889528, -478.5152248301025, 11.268052402077904 1101 | -112.92164449121515, -477.61988131158284, 11.219299947334948 1102 | -112.43163010588808, -476.73280118011655, 11.170517816176075 1103 | -111.92453592244212, -475.85584302386667, 11.121755285370567 1104 | -111.3998531982221, -474.9909550459421, 11.073061155207611 1105 | -110.85705969637843, -474.14017792700736, 11.024483190429192 1106 | -110.29561942985501, -473.305647733332, 10.97606744766222 1107 | -109.71498240137765, -472.48959887027695, 10.927857469636463 1108 | -109.10567114673597, -471.6829252497563, 10.879195246652783 1109 | -108.47568024327478, -470.9005514167286, 10.830843160010472 1110 | -107.8151430800695, -470.1347311696212, 10.782161717016544 1111 | -107.1323411137488, -469.3997043983544, 10.733869915901174 1112 | -106.41699611955798, -468.6892183856294, 10.685338184398532 1113 | -105.6722433351062, -468.01097444675554, 10.786069090806043 1114 | -104.91310393385575, -467.3592909061843, 10.886118282086253 1115 | -104.13712822486528, -466.72290397114364, 10.986473981079078 1116 | -103.34483194667752, -466.1019529045161, 11.08713746102965 1117 | -102.53673083783508, -465.4965769691845, 11.188108121381608 1118 | -101.72347201175828, -464.91401121569345, 11.288146752686341 1119 | -100.89579182367365, -464.34691314531494, 11.388478936713934 1120 | -100.05418737280857, -463.7954169878297, 11.489099315536352 1121 | -99.1991557583907, -463.25965697301797, 11.590001141839208 1122 | -98.33119407964736, -462.73976733066036, 11.691176371811663 1123 | -97.46174229674244, -462.24200497713923, 11.79136188789953 1124 | -96.58064155505883, -461.75998380927376, 11.891795095717749 1125 | -95.68837076910353, -461.29383314649476, 11.992465031442293 1126 | -94.78540885338344, -460.843682308233, 12.093359828058805 1127 | -93.8722347224055, -460.4096606139192, 12.19446679243922 1128 | -92.96092174807097, -459.9970185493973, 12.294505025660486 1129 | -92.04057846344472, -459.6003555573726, 12.39472345165086 1130 | -91.11166604729553, -459.2197961681632, 12.495107898931881 1131 | -90.17464567839198, -458.8554649120872, 12.595643685390925 1132 | -89.22997853550291, -458.5074863194625, 12.69631568307545 1133 | -88.27812579739697, -458.1759849206072, 12.797108381842914 1134 | -87.31954864284285, -457.8610852458394, 12.898005952002059 1135 | -86.35470825060929, -457.56291182547704, 12.998992306084979 1136 | -85.38406579946505, -457.28158918983814, 13.100051159892356 1137 | -84.40808246817869, -457.0172418692408, 13.201166092956461 1138 | -83.42721943551902, -456.7699943940031, 13.302320608567467 1139 | -82.44193788025478, -456.539971294443, 13.40349819350974 1140 | -81.45269898115464, -456.3272971008785, 13.50468237765435 1141 | -80.4599639169873, -456.13209634362767, 13.605856793553762 1142 | -79.46419386652153, -455.95449355300855, 13.627356020368502 1143 | -78.46585000852582, -455.7946132593393, 13.579222887082869 1144 | -77.46539352176916, -455.6525799929377, 13.531117201487241 1145 | -76.46328558502017, -455.528518284122, 13.483046273876022 1146 | -75.45998737704744, -455.4225526632101, 13.435017221413208 1147 | -74.45596007661982, -455.33480766052014, 13.38703693834697 1148 | -73.451664862506, -455.2654078063701, 13.339112065768926 1149 | -72.4475629134746, -455.214477631078, 13.291248960862172 1150 | -71.44411540829441, -455.18214166496193, 13.243453665585994 1151 | -70.44178352573411, -455.16852443833983, 13.195731874749342 1152 | -69.44102844456242, -455.17375048152985, 13.148088903430745 1153 | -68.42968439981513, -455.1983726804746, 13.099928212781743 1154 | -67.42090917071349, -455.24257523567644, 13.051857999342367 1155 | -66.41518167176437, -455.3064874665661, 13.003882379345743 1156 | -65.41298081747482, -455.39023869257437, 12.956004924178316 1157 | -64.41478552235168, -455.49395823313205, 12.908228621770181 1158 | -63.42107470090184, -455.61777540766985, 12.860555837188855 1159 | -62.42000136670549, -455.76374863488365, 12.812394370694191 1160 | -61.424513380150756, -455.9305918795857, 12.764341801232538 1161 | -60.43510784046521, -456.11843937155635, 12.716398375998184 1162 | -59.4522818468763, -456.32742534057627, 12.668563513367692 1163 | -58.476532498611505, -456.55768401642587, 12.620835757605716 1164 | -57.508356894898355, -456.8093496288856, 12.57321273324563 1165 | -56.53645150857989, -457.086064505359, 12.525105055499044 1166 | -55.573333214800584, -457.3849949749712, 12.477096763698164 1167 | -54.619517752103064, -457.70628030060493, 12.429182225559158 1168 | -53.67552085903006, -458.0500597451428, 12.381354651041299 1169 | -52.74185827412421, -458.41647257146735, 12.333606045871687 1170 | -51.819045735928285, -458.80565804246135, 12.285927166519025 1171 | -50.907598982984894, -459.21775542100744, 12.238307477061051 1172 | -49.99713891300061, -459.65835350613077, 12.190155229856847 1173 | -49.09938676517177, -460.12271283380375, 12.142037723520088 1174 | -48.21487737756311, -460.61097782427896, 12.09393974311274 1175 | -47.34551999456403, -461.12245987195274, 12.045921069758348 1176 | -46.485637707563285, -461.66428288114514, 11.997536274323336 1177 | -45.65474762903358, -462.2274399178391, 11.949751135677323 1178 | -44.834929891386, -462.82483735935915, 11.901459757609564 1179 | -44.04453617986894, -463.4438687440927, 11.85366518394585 1180 | -43.26689239006251, -464.0983553931875, 11.805277744042796 1181 | -42.519036527077986, -464.77472394687493, 11.771113516302687 1182 | -41.80049893947984, -465.4726191918764, 11.761866817815017 1183 | -41.096445734692, -466.20721262726295, 11.777732851630155 1184 | -40.421981542924954, -466.96350966653836, 11.81886253950009 1185 | -39.77660609264444, -467.74113193740584, 11.884901548973813 1186 | -39.159819112315574, -468.5397010675694, 11.975441541054789 1187 | -38.571120330403744, -469.3588386847324, 12.076315357859544 1188 | -38.01000947537443, -470.19816641659855, 12.177276559967645 1189 | -37.47598627569292, -471.0573058908713, 12.27843492166117 1190 | -36.968550459824655, -471.9358787352544, 12.379893354041798 1191 | -36.48720175623504, -472.8335065774513, 12.48174777552336 1192 | -36.0406773216032, -473.7305334197032, 12.581949633113101 1193 | -35.618215063315404, -474.64511158763804, 12.682693247547997 1194 | -35.21934532993615, -475.5768858679771, 12.784049074894398 1195 | -34.84359847003, -476.5255010474416, 12.88608124930227 1196 | -34.497784823825384, -477.46989864304567, 12.986653307871444 1197 | -34.173230380745366, -478.429754849835, 13.087977516441498 1198 | -33.86949483380465, -479.4047366487322, 13.190097288800057 1199 | -33.59208420617793, -480.3728392281205, 13.290803756345014 1200 | -33.33376356176103, -481.3547864468436, 13.392339459213014 1201 | -33.099246120054914, -482.3279999652, 13.492446551008545 1202 | -32.882200214434505, -483.31386013271526, 13.593393526943425 1203 | -32.682240508434006, -484.3120755063767, 13.695198134709363 1204 | -32.50296399044345, -485.29926191432475, 13.795531432967737 1205 | -32.33927817582929, -486.2976979437253, 13.896707890244675 1206 | -32.19082340847805, -487.3071115744849, 13.99873507759749 1207 | -32.06018041226508, -488.30338753106156, 14.099215591833449 1208 | -31.943390014682848, -489.3096234449435, 14.200514689132165 1209 | -31.840117072886784, -490.32556583625274, 14.30263247617077 1210 | -31.752020828814068, -491.32643913338893, 14.403106766670389 1211 | -31.676174871944795, -492.33608484233616, 14.504355819345896 1212 | -31.612267432761854, -493.3542671612548, 14.606374415461577 1213 | -31.561125991956686, -494.35561720163753, 14.706639930487544 1214 | -31.52076154844991, -495.3646491052509, 14.807623823797783 1215 | -31.490884593251565, -496.38114390664566, 14.909317201837577 1216 | -31.471205617371737, -497.40488264037253, 15.011709987570978 1217 | -31.46156093783435, -498.4097933885387, 15.112205690544945 1218 | -31.46106716378148, -499.42117929566825, 15.2133442933113 1219 | -31.469455961091768, -500.43883741158186, 15.315113562386253 1220 | -31.48645899564366, -501.46256478609985, 15.417500418990087 1221 | -31.511055911353026, -502.4656870188454, 15.51784279399142 1222 | -31.54332800449623, -503.4741908450604, 15.618744798703213 1223 | -31.583027057303184, -504.4878885292425, 15.720192273275533 1224 | -31.629904852003335, -505.5065923358901, 15.822170455908603 1225 | -31.683713170826763, -506.53011452950057, 15.9246640174619 1226 | -31.74252841833487, -507.53115297690863, 16.024940495587572 1227 | -31.80744976670269, -508.536408263213, 16.12567544345159 1228 | -31.878248083135475, -509.54570708752436, 16.22685333225966 1229 | -31.9546942348382, -510.5588761489539, 16.32845823180433 1230 | -32.03655908901618, -511.5757421466123, 16.430473834118065 1231 | -32.1236135128747, -512.5961317796103, 16.532883476039277 1232 | -32.21307824558761, -513.5921605466882, 16.63288733812699 1233 | -32.30702785481071, -514.5912013705306, 16.73323219832305 1234 | -32.405251288490206, -515.5930946253249, 16.83390185298254 1235 | -32.50753749457243, -516.5976806852586, 16.934879851564805 1236 | -32.61367542100376, -517.6047999245193, 17.036149512446837 1237 | -32.723454015730425, -518.6142927172943, 17.137693938119792 1238 | -32.83666222669888, -519.6259994377712, 17.239496029811885 1239 | -32.95308900185543, -520.6397604601373, 17.34153850157939 1240 | -33.072523289146346, -521.65541615858, 17.443803893905425 1241 | -33.19475403651799, -522.6728069072869, 17.546274586845293 1242 | -33.31957019191671, -523.6917730804456, 17.64893281275486 1243 | -33.44676070328882, -524.7121550522434, 17.751760668638035 1244 | -33.572494019280185, -525.7053988143095, 17.851877702035637 1245 | -33.70007817645077, -526.6996832413479, 17.95212136712285 1246 | -33.82931922639523, -527.6948616436139, 18.052474907236164 1247 | -33.960023220708194, -528.6907873313633, 18.152921485557595 1248 | -34.09199621098429, -529.6873136148515, 18.253444194626017 1249 | -34.225044248818136, -530.6842938043344, 18.354026065686007 1250 | -34.35897338580426, -531.6815812100677, 18.45465007789822 1251 | -34.493589673537514, -532.6790291423067, 18.55529916743463 1252 | -34.62869916361228, -533.6764909113074, 18.655956236482265 1253 | -34.764107907623384, -534.6738198273251, 18.75660416217773 1254 | -34.89962195716532, -535.6708692006157, 18.85722580549578 1255 | -35.035047363832774, -536.6674923414348, 18.957804020114423 1256 | -35.170190179220384, -537.663542560038, 19.058321661279052 1257 | -35.304856454922685, -538.6588731666808, 19.158761594688606 1258 | -35.43885224253444, -539.653337471619, 19.259106705426195 1259 | -35.571983593650145, -540.6467887851081, 19.359339906957583 1260 | -35.70405655986454, -541.6390804174041, 19.410208410890505 1261 | -35.838594596464475, -542.658358890229, 19.36055674382905 1262 | -35.9715966634879, -543.6760956501105, 19.310988557248788 1263 | -36.102851708881076, -544.6921310712362, 19.261512720841772 1264 | -36.23214868059034, -545.7063055277933, 19.21213806333462 1265 | -36.3592765265621, -546.7184593939693, 19.162873366968153 1266 | -36.484024194742574, -547.7284330439518, 19.11372736183694 1267 | -36.60618063307814, -548.7360668519282, 19.06470872007235 1268 | -36.72553478951522, -549.7412011920858, 19.015826049851704 1269 | -36.841875611999995, -550.7436764386122, 18.96708788921591 1270 | -36.95499204847886, -551.7433329656949, 18.918502699676807 1271 | -37.06467304689818, -552.7400111475212, 18.870078859594898 1272 | -37.173598869327805, -553.7611033637268, 18.820486764939428 1273 | -37.278443672415506, -554.7787075549743, 18.771082754315835 1274 | -37.37897832336654, -555.7926504203748, 18.721875602104664 1275 | -37.47497368938602, -556.802758659039, 18.67287395681907 1276 | -37.566200637679174, -557.8088589700777, 18.624086331791684 1277 | -37.65243003545123, -558.810778052602, 18.575521095425596 1278 | -37.73343274990728, -559.8083426057226, 18.527186460976704 1279 | -37.81094358774348, -560.8281536931672, 18.477793973800953 1280 | -37.88245149746325, -561.8430011598339, 18.428661732705823 1281 | -37.94770826129633, -562.8526972702202, 18.379798050122755 1282 | -38.006465661472475, -563.8570542888245, 18.331211013606087 1283 | -38.058475480221375, -564.8558844801444, 18.28290847078995 1284 | -38.10457734282636, -565.8750558477608, 18.233638597388065 1285 | -38.1430420274184, -566.8880049784954, 18.184684292269772 1286 | -38.173601199875975, -567.8945289221685, 18.136053141217296 1287 | -38.195986526077604, -568.8944247286009, 18.087752386078513 1288 | -38.21017379775472, -569.9128610199984, 18.03856357032381 1289 | -38.21519089732294, -570.9238924551693, 17.989736533238542 1290 | -38.210748315792415, -571.927300068664, 17.941277804830328 1291 | -38.19607433458424, -572.9476516362736, 17.891996169888667 1292 | -38.17084584102193, -573.95952757382, 17.84311376367126 1293 | -38.134751065588404, -574.9626920794635, 17.794635900873903 1294 | -38.08618297226977, -575.9810447914331, 17.745399992775432 1295 | -38.025549764274984, -576.9897550167894, 17.696597729436196 1296 | -37.95251629875952, -577.9885692756545, 17.64823252847568 1297 | -37.864547339695235, -579.0006479388095, 17.59917123430559 1298 | -37.76286965690116, -580.0018160748771, 17.550572425858668 1299 | -37.64426154918917, -581.0146893480605, 17.501322805132506 1300 | -37.51053777327732, -582.0155624646875, 17.52551091987556 1301 | -37.35982548038561, -583.0196218176593, 17.627041672828494 1302 | -37.19343008955863, -584.0390255606053, 17.730331140695302 1303 | -37.01424879758952, -585.0571830034364, 17.833711531185184 1304 | -36.82237249927553, -586.0740355126155, 17.93719126539815 1305 | -36.6251519654225, -587.0545309331237, 18.037204624936308 1306 | -36.41626339444011, -588.0337024294436, 18.137325115061564 1307 | -36.19578859872723, -589.0114972268236, 18.237559430609092 1308 | -35.963809390682485, -589.9878625505125, 18.337913981989043 1309 | -35.72040758270467, -590.9627456257592, 18.43839489811391 1310 | -35.465664987192525, -591.9360936778119, 18.539008029483664 1311 | -35.199663416544894, -592.9078539319194, 18.639758951417406 1312 | -34.92248468316046, -593.8779736133306, 18.740652967419457 1313 | -34.634210599438006, -594.8463999472937, 18.841695112668816 1314 | -34.3349229777763, -595.8130801590573, 18.942890157621395 1315 | -34.024703630574095, -596.7779614738706, 19.04424261171375 1316 | -33.703634370230134, -597.7409911169817, 19.145756727158272 1317 | -33.37179700914325, -598.7021163136394, 19.24743650282007 1318 | -33.02927335971208, -599.6612842890924, 19.349285688165555 1319 | -32.67614523433542, -600.6184422685892, 19.451307787273862 1320 | -32.312494445412085, -601.5735374773785, 19.553506062902027 1321 | -31.938402805340786, -602.5265171407091, 19.65588354059575 1322 | -31.5539521265203, -603.4773284838293, 19.758443012837546 1323 | -31.159224221349376, -604.4259187319878, 19.861187043224817 1324 | -30.754300902226788, -605.3722351104336, 19.96411797067055 1325 | -30.339263981551255, -606.3162248444148, 20.067237913619802 1326 | -29.91419527172164, -607.2578351591803, 20.170548774275833 1327 | -29.479176585136486, -608.197013279979, 20.274052242829566 1328 | -29.034289734194857, -609.133706432059, 20.377749801686765 1329 | -28.596022452557264, -610.0345434409078, 20.477928917607482 1330 | -28.14872871762529, -610.9329734169057, 20.578290668642488 1331 | -27.692481885514297, -611.8289490401992, 20.678835856958358 1332 | -27.227355312339512, -612.7224229909345, 20.77956511932616 1333 | -26.753422354216525, -613.6133479492576, 20.880478930579034 1334 | -26.27075636726056, -614.5016765953148, 20.981577607047623 1335 | -25.77943070758701, -615.3873616092524, 21.08286130997001 1336 | -25.279518731311356, -616.2703556712161, 21.184330048874518 1337 | -24.771093794548904, -617.1506114613526, 21.28598368493299 1338 | -24.25422925341499, -618.0280816598078, 21.387821934282556 1339 | -23.728998464025096, -618.9027189467279, 21.48984437131453 1340 | -23.195474782494415, -619.7744760022592, 21.59205043192851 1341 | -22.653731564938568, -620.6433055065477, 21.694439416750605 1342 | -22.103842167472806, -621.5091601397397, 21.797010494314666 1343 | -21.54587994621241, -622.3719925819814, 21.89976270420518 1344 | -20.979918257272914, -623.2317555134189, 22.002694960161282 1345 | -20.406030456769685, -624.0884016141982, 22.105806053140984 1346 | -19.824289900817973, -624.9418835644659, 22.209094654345176 1347 | -19.234769945533287, -625.7921540443679, 22.222222 1348 | -18.63754394703102, -626.6391657340502, 22.222222 1349 | -18.032685261426394, -627.4828713136594, 22.222222 1350 | -17.443083340542785, -628.2921596623241, 22.222222 1351 | -16.84653717324906, -629.0982961288174, 22.222222 1352 | -16.243112263131366, -629.9012384587191, 22.222222 1353 | -15.6328741137757, -630.7009443976092, 22.222222 1354 | -15.015888228768034, -631.4973716910677, 22.222222 1355 | -14.3922201116944, -632.2904780846741, 22.222222 1356 | -13.761935266141023, -633.0802213240086, 22.222222 1357 | -13.125099195693792, -633.8665591546509, 22.222222 1358 | -12.481777403938736, -634.649449322181, 22.222222 1359 | -11.832035394461855, -635.4288495721789, 22.222222 1360 | -11.175938670849234, -636.2047176502246, 22.222222 1361 | -10.513552736686904, -636.9770113018976, 22.222222 1362 | -9.844943095560808, -637.7456882727781, 22.222222 1363 | -9.170175251057174, -638.5107063084458, 22.222222 1364 | -8.489314706761888, -639.2720231544808, 22.222222 1365 | -7.802426966261038, -640.029596556463, 22.222222 1366 | -7.109577533140623, -640.7833842599721, 22.222222 1367 | -6.410831910986644, -641.5333440105882, 22.222222 1368 | -5.706255603385159, -642.2794335538911, 22.222222 1369 | -4.995914113922225, -643.0216106354608, 22.222222 1370 | -4.2798729461839855, -643.7598330008768, 22.222222 1371 | -3.5581976037562413, -644.4940583957195, 22.222222 1372 | -2.8309535902251355, -645.2242445655687, 22.222222 1373 | -2.098206409176697, -645.9503492560041, 22.222222 1374 | -1.3600215641970124, -646.6723302126059, 22.222222 1375 | -0.6164645588719964, -647.3901451809536, 22.222222 1376 | 0.13239910321220805, -648.1037519066274, 22.222222 1377 | 0.8865039184696286, -648.8131081352069, 22.222222 1378 | 1.645784383314151, -649.5181716122722, 22.222222 1379 | 2.4101749941598882, -650.2189000834035, 22.222222 1380 | 3.1796102474206975, -650.9152512941805, 22.222222 1381 | 3.954024639510692, -651.6071829901828, 22.222222 1382 | 4.733352666843587, -652.2946529169903, 22.222222 1383 | 5.5175288258334945, -652.9776188201834, 22.222222 1384 | 6.276055399952668, -653.6300299594984, 22.222222 1385 | 7.038945550119934, -654.2782002451845, 22.222222 1386 | 7.806141043885873, -654.9220921132163, 22.222222 1387 | 8.577583648800953, -655.561667999568, 22.222222 1388 | 9.353215132415812, -656.1968903402142, 22.222222 1389 | 10.13297726228086, -656.8277215711291, 22.222222 1390 | 10.916811805946736, -657.4541241282873, 22.222222 1391 | 11.704660530963963, -658.0760604476629, 22.222222 1392 | 12.496465204882952, -658.6934929652305, 22.222222 1393 | 13.292167595254455, -659.3063841169644, 22.222222 1394 | 14.091709469628881, -659.9146963388391, 22.222222 1395 | 14.895032595556813, -660.518392066829, 22.222222 1396 | 15.702078740588718, -661.1174337369084, 22.222222 1397 | 16.512789672275233, -661.7117837850519, 22.222222 1398 | 17.327107158166825, -662.3014046472335, 22.222222 1399 | 18.14497296581402, -662.8862587594278, 22.222222 1400 | 18.966328862767455, -663.4663085576094, 22.222222 1401 | 19.79111661657754, -664.0415164777523, 22.222222 1402 | 20.619277994794857, -664.6118449558312, 22.222222 1403 | 21.450754764969986, -665.1772564278203, 22.222222 1404 | 22.285488694653452, -665.7377133296943, 22.222222 1405 | 23.123421551395722, -666.2931780974272, 22.222222 1406 | 23.964495102747435, -666.8436131669935, 22.222222 1407 | 24.808651116259057, -667.3889809743678, 22.222222 1408 | 25.65583135948117, -667.9292439555242, 22.222222 1409 | 26.50597759996424, -668.4643645464373, 22.222222 1410 | 27.359031605258906, -668.9943051830815, 22.222222 1411 | 28.214935142915635, -669.519028301431, 22.222222 1412 | 29.073629980484952, -670.0384963374604, 22.222222 1413 | 29.935057885517438, -670.552671727144, 22.222222 1414 | 30.799160625563673, -671.0615169064562, 22.222222 1415 | 31.665879968174067, -671.5649943113714, 22.222222 1416 | 32.53515768089926, -672.063066377864, 22.222222 1417 | 33.40693553128972, -672.5556955419083, 22.222222 1418 | 34.28115528689608, -673.0428442394789, 22.222222 1419 | 35.157758715268756, -673.5244749065499, 22.222222 1420 | 36.07189228422487, -674.0194768943262, 22.222222 1421 | 36.988475545841595, -674.5084276966439, 22.222222 1422 | 37.90744299653312, -674.9912850590833, 22.222222 1423 | 38.828729132713306, -675.4680067272241, 22.222222 1424 | 39.75226845079612, -675.9385504466461, 22.222222 1425 | 40.6779954471956, -676.4028739629294, 22.222222 1426 | 41.60584461832559, -676.8609350216539, 22.222222 1427 | 42.535750460600184, -677.3126913683992, 22.222222 1428 | 43.467647470433235, -677.7581007487456, 22.222222 1429 | 44.40147014423883, -678.1971209082727, 22.222222 1430 | 45.33715297843088, -678.6297095925605, 22.222222 1431 | 46.27463046942336, -679.055824547189, 22.222222 1432 | 47.213837113630234, -679.4754235177379, 22.222222 1433 | 48.15470740746542, -679.8884642497873, 22.222222 1434 | 49.097175847342896, -680.2949044889169, 22.222222 1435 | 50.041176929676794, -680.6947019807068, 22.222222 1436 | 50.98664515088086, -681.0878144707367, 22.222222 1437 | 51.933515007369124, -681.4741997045868, 22.222222 1438 | 52.88172099555567, -681.8538154278366, 22.222222 1439 | 53.83119761185435, -682.2266193860663, 22.222222 1440 | 54.78187935267914, -682.5925693248557, 22.222222 1441 | 55.73370071444407, -682.9516229897847, 22.222222 1442 | 56.68659619356299, -683.3037381264331, 22.222222 1443 | 57.64050028644999, -683.648872480381, 22.222222 1444 | 58.595347489518986, -683.9869837972083, 22.222222 1445 | 59.551072299184, -684.3180298224946, 22.222222 1446 | 60.50760921185889, -684.64196830182, 22.222222 1447 | 61.464892723957746, -684.9587569807645, 22.222222 1448 | 62.42285733189442, -685.268353604908, 22.222222 1449 | 63.38143753208294, -685.5707159198301, 22.222222 1450 | 64.34056782093728, -685.8658016711111, 22.222222 1451 | 65.30018269487135, -686.1535686043304, 22.222222 1452 | 66.26021665029918, -686.4339744650684, 22.222222 1453 | 67.25754833792331, -686.717328675478, 22.222222 1454 | 68.25518796868454, -686.9926518007804, 22.222222 1455 | 69.25306218646762, -687.2598965211218, 22.222222 1456 | 70.25109763515707, -687.5190155166484, 22.222222 1457 | 71.24922095863758, -687.7699614675064, 22.222222 1458 | 72.24735880079368, -688.0126870538418, 22.222222 1459 | 73.24543780551016, -688.2471449558009, 22.222222 1460 | 74.2433846166715, -688.4732878535299, 22.222222 1461 | 75.24112587816234, -688.691068427175, 22.222222 1462 | 76.2385882338674, -688.9004393568821, 22.222222 1463 | 77.23569832767112, -689.1013533227976, 22.222222 1464 | 78.23238280345828, -689.2937630050678, 22.222222 1465 | 79.22856830511353, -689.4776210838388, 22.222222 1466 | 80.22418147652138, -689.6528802392564, 22.222222 1467 | 81.21914896156648, -689.8194931514673, 22.222222 1468 | 82.21339740413345, -689.9774125006174, 22.222222 1469 | 83.20685344810693, -690.126590966853, 22.222222 1470 | 84.19944373737155, -690.2669812303201, 22.222222 1471 | 85.1910949158119, -690.3985359711651, 22.222222 1472 | 86.21840354958618, -690.525580066558, 22.222222 1473 | 87.24454151762757, -690.643018371423, 22.222222 1474 | 88.26942700753716, -690.7507981110084, 22.222222 1475 | 89.29297820691619, -690.848866510563, 22.174188211748906 1476 | 90.31511330336593, -690.9371707953354, 22.126261686378747 1477 | 91.33575048448762, -691.0156581905743, 22.078442222025608 1478 | 92.35480793788258, -691.0842759215284, 22.03072952756399 1479 | 93.37220385115188, -691.142971213446, 21.983123220507004 1480 | 94.38785641189696, -691.191691291576, 21.93562282488943 1481 | 95.40168380771888, -691.2303833811669, 21.888227769135543 1482 | 96.41360422621904, -691.2589947074675, 21.84093738391363 1483 | 97.42353585499859, -691.2774724957264, 21.793750899979486 1484 | 98.43139688165877, -691.2857639711921, 21.746667446011177 1485 | 99.4371054938008, -691.2838163591133, 21.699686046437716 1486 | 100.44057987902607, -691.2715768847386, 21.652805619264473 1487 | 101.44173822493565, -691.2489927733167, 21.60602497389828 1488 | 102.47612336200325, -691.2146403771534, 21.55767740895229 1489 | 103.48021301492378, -691.1704682052471, 21.658183488961058 1490 | 104.52856914893226, -691.1142720815869, 21.763169611283374 1491 | 105.5733746840919, -691.0488002113663, 21.8678551008266 1492 | 106.61465977213595, -690.9741321553552, 21.97225097972856 1493 | 107.65245456479812, -690.8903474743244, 22.076368120702192 1494 | 108.68678921381161, -690.7975257290441, 22.1802172440758 1495 | 109.71769387091041, -690.6957464802853, 22.222222 1496 | 110.74519868782761, -690.5850892888184, 22.222222 1497 | 111.76933381629664, -690.4656337154136, 22.222222 1498 | 112.79012940805126, -690.3374593208416, 22.222222 1499 | 113.80761561482495, -690.2006456658731, 22.222222 1500 | 114.82182258835093, -690.0552723112785, 22.222222 1501 | 115.83278048036306, -689.9014188178282, 22.222222 1502 | 116.84051944259465, -689.739164746293, 22.222222 1503 | 117.84506962677892, -689.568589657443, 22.222222 1504 | 118.84646118464985, -689.3897731120492, 22.222222 1505 | 119.84472426794065, -689.2027946708818, 22.222222 1506 | 120.83988902838479, -689.0077338947112, 22.222222 1507 | 121.83198561771593, -688.8046703443085, 22.222222 1508 | 122.82104418766761, -688.5936835804438, 22.222222 1509 | 123.80709488997292, -688.3748531638873, 22.222222 1510 | 124.79016787636579, -688.1482586554102, 22.222222 1511 | 125.77029329857959, -687.9139796157829, 22.222222 1512 | 126.74750130834758, -687.6720956057753, 22.222222 1513 | 127.72182205740359, -687.4226861861587, 22.222222 1514 | 128.69328569748097, -687.1658309177033, 22.222222 1515 | 129.66192238031294, -686.9016093611792, 22.222222 1516 | 130.6277622576335, -686.6301010773577, 22.222222 1517 | 131.59083548117587, -686.3513856270089, 22.222222 1518 | 132.55117220267346, -686.0655425709031, 22.222222 1519 | 133.50880257385995, -685.7726514698113, 22.222222 1520 | 134.46375674646885, -685.4727918845039, 22.222222 1521 | 135.41606487223333, -685.1660433757511, 22.222222 1522 | 136.36575710288724, -684.8524855043238, 22.222222 1523 | 137.35789991540867, -684.5167795279907, 22.222222 1524 | 138.34723952740882, -684.1737790323326, 22.222222 1525 | 139.33381060638135, -683.8235754937652, 22.222222 1526 | 140.31764781981963, -683.4662603887036, 22.222222 1527 | 141.29878583521747, -683.1019251935639, 22.222222 1528 | 142.27725932006854, -682.7306613847614, 22.222222 1529 | 143.25310294186613, -682.3525604387116, 22.222222 1530 | 144.22635136810408, -681.9677138318302, 22.222222 1531 | 145.19703926627597, -681.5762130405327, 22.222222 1532 | 146.16520130387522, -681.1781495412345, 22.222222 1533 | 147.1308721483956, -680.7736148103514, 22.222222 1534 | 148.09408646733067, -680.3627003242991, 22.222222 1535 | 149.05487892817405, -679.9454975594928, 22.222222 1536 | 149.96977162073068, -679.5414765690421, 22.222222 1537 | 150.88251935953787, -679.1318888793802, 22.222222 1538 | 151.79315229632903, -678.7168140512777, 22.222222 1539 | 152.7017005828376, -678.2963316455046, 22.222222 1540 | 153.6081943707972, -677.8705212228319, 22.222222 1541 | 154.51266381194142, -677.4394623440303, 22.222222 1542 | 155.41513905800332, -677.0032345698698, 22.222222 1543 | 156.3156502607169, -676.5619174611213, 22.222222 1544 | 157.2142275718154, -676.115590578555, 22.222222 1545 | 158.11090114303215, -675.6643334829417, 22.222222 1546 | 159.00570112610097, -675.2082257350519, 22.222222 1547 | 159.89865767275518, -674.7473468956557, 22.222222 1548 | 160.7898009347282, -674.2817765255242, 22.222222 1549 | 161.67916106375372, -673.8115941854278, 22.222222 1550 | 162.5667682115652, -673.3368794361368, 22.222222 1551 | 163.4526525298961, -672.8577118384219, 22.222222 1552 | 164.3368441704797, -672.3741709530533, 22.222222 1553 | 165.2193732850498, -671.8863363408019, 22.222222 1554 | 166.10027002533957, -671.394287562438, 22.222222 1555 | 166.97956454308297, -670.8981041787324, 22.222222 1556 | 167.8572869900131, -670.3978657504554, 22.222222 1557 | 168.7334675178637, -669.8936518383775, 22.222222 1558 | 169.6081362783679, -669.3855420032693, 22.222222 1559 | 170.48132342325948, -668.8736158059012, 22.222222 1560 | 171.3530591042719, -668.3579528070438, 22.222222 1561 | 172.22337347313874, -667.8386325674678, 22.222222 1562 | 173.0922966815932, -667.3157346479434, 22.222222 1563 | 173.95985888136914, -666.7893386092414, 22.222222 1564 | 174.82609022419967, -666.259524012132, 22.222222 1565 | 175.69102086181863, -665.7263704173861, 22.222222 1566 | 176.55468094595926, -665.189957385774, 22.222222 1567 | 177.41710062835517, -664.6503644780663, 22.222222 1568 | 178.27831006073984, -664.1076712550334, 22.222222 1569 | 179.1383393948468, -663.561957277446, 22.222222 1570 | 179.99721878240945, -663.0133021060744, 22.222222 1571 | 180.8549783751613, -662.4617853016894, 22.222222 1572 | 181.71164832483583, -661.9074864250613, 22.222222 1573 | 182.56725878316666, -661.3504850369607, 22.222222 1574 | 183.42183990188727, -660.7908606981582, 22.222222 1575 | 184.275421832731, -660.2286929694241, 22.222222 1576 | 185.12803472743138, -659.664061411529, 22.222222 1577 | 185.97970873772192, -659.0970455852436, 22.222222 1578 | 186.8304740153361, -658.5277250513382, 22.222222 1579 | 187.68036071200748, -657.9561793705834, 22.222222 1580 | 188.52939897946953, -657.3824881037498, 22.222222 1581 | 189.37761896945585, -656.8067308116081, 22.222222 1582 | 190.2250508336997, -656.2289870549282, 22.222222 1583 | 191.0717247239346, -655.649336394481, 22.222222 1584 | 191.91767079189412, -655.0678583910371, 22.222222 1585 | 192.7629191893118, -654.4846326053671, 22.222222 1586 | 193.6075000679213, -653.8997385982414, 22.222222 1587 | 194.4514435794557, -653.3132559304304, 22.222222 1588 | 195.29477987564871, -652.7252641627047, 22.222222 1589 | 196.1375391082338, -652.1358428558347, 22.222222 1590 | 196.97975142894433, -651.5450715705911, 22.222222 1591 | 197.82144698951407, -650.9530298677444, 22.222222 1592 | 198.66265594167646, -650.3597973080651, 22.222222 1593 | 199.5034084371648, -649.7654534523238, 22.222222 1594 | 200.3437346277127, -649.1700778612908, 22.222222 1595 | 201.18366466505353, -648.5737500957367, 22.222222 1596 | 202.02322870092098, -647.9765497164323, 22.222222 1597 | 202.86245688704832, -647.3785562841476, 22.222222 1598 | 203.70137937516944, -646.7798493596538, 22.222222 1599 | 204.54002631701735, -646.1805085037208, 22.222222 1600 | 205.3784278643259, -645.5806132771195, 22.222222 1601 | 206.2166141688283, -644.9802432406201, 22.222222 1602 | 207.0546153822582, -644.3794779549934, 22.222222 1603 | 207.89246165634898, -643.7783969810097, 22.222222 1604 | 208.73018314283445, -643.1770798794398, 22.222222 1605 | 209.56780999344767, -642.575606211054, 22.222222 1606 | 210.40537235992258, -641.9740555366229, 22.222222 1607 | 211.24290039399216, -641.3725074169171, 22.222222 1608 | 212.08042424739028, -640.7710414127068, 22.222222 1609 | 212.91797407185032, -640.169737084763, 22.222222 1610 | 213.75558001910576, -639.5686739938559, 22.222222 1611 | 214.59327224089014, -638.967931700756, 22.222222 1612 | 215.4310808889369, -638.367589766234, 22.222222 1613 | 216.26903611497954, -637.7677277510603, 22.222222 1614 | 217.10716807075153, -637.1684252160055, 22.222222 1615 | 217.94550690798644, -636.56976172184, 22.222222 1616 | 218.78408277841766, -635.9718168293344, 22.222222 1617 | 219.62292583377882, -635.3746700992593, 22.222222 1618 | 220.46206622580326, -634.7784010923851, 22.222222 1619 | 221.30153410622466, -634.1830893694824, 22.222222 1620 | 222.1413596267763, -633.5888144913217, 22.222222 1621 | 222.98157293919166, -632.9956560186735, 22.222222 1622 | 223.82220419520456, -632.4036935123083, 22.222222 1623 | 224.6632835465481, -631.8130065329966, 22.222222 1624 | 225.50484114495595, -631.223674641509, 22.222222 1625 | 226.34690714216163, -630.635777398616, 22.222222 1626 | 227.1895116898986, -630.0493943650881, 22.222222 1627 | 228.03268493990032, -629.4646051016958, 22.222222 1628 | 228.87645704390042, -628.8814891692098, 22.222222 1629 | 229.7208581536322, -628.3001261284003, 22.222222 1630 | 230.56591842082918, -627.7205955400381, 22.222222 1631 | 231.41166799722498, -627.1429769648935, 22.222222 1632 | 232.258137034553, -626.5673499637372, 22.222222 1633 | 233.10535568454662, -625.9937940973398, 22.222222 1634 | 233.9533540989396, -625.4223889264715, 22.222222 1635 | 234.80216242946523, -624.853214011903, 22.222222 1636 | 235.6518108278571, -624.2863489144049, 22.222222 1637 | 236.50232944584872, -623.7218731947477, 22.222222 1638 | 237.35374843517337, -623.1598664137017, 22.222222 1639 | 238.20609794756484, -622.6004081320377, 22.222222 1640 | 239.0594081347565, -622.0435779105261, 22.222222 1641 | 239.91370914848176, -621.4894553099374, 22.222222 1642 | 240.76903114047417, -620.9381198910422, 22.222222 1643 | 241.62540426246727, -620.3896512146109, 22.222222 1644 | 242.4828586661945, -619.8441288414142, 22.222222 1645 | 243.34142450338925, -619.3016323322224, 22.222222 1646 | 244.20113192578526, -618.7622412478061, 22.222222 1647 | 245.06201108511584, -618.226035148936, 22.222222 1648 | 245.92409213311453, -617.6930935963824, 22.222222 1649 | 246.78740522151486, -617.1634961509159, 22.222222 1650 | 247.65198050205026, -616.6373223733069, 22.222222 1651 | 248.5178481264541, -616.1146518243263, 22.222222 1652 | 249.38503824646023, -615.5955640647442, 22.222222 1653 | 250.25358101380175, -615.0801386553313, 22.222222 1654 | 251.1235065802124, -614.5684551568581, 22.222222 1655 | 251.99484509742564, -614.0605931300952, 22.222222 1656 | 252.86762671717486, -613.556632135813, 22.222222 1657 | 253.74188159119376, -613.056651734782, 22.222222 1658 | 254.6176398712155, -612.5607314877727, 22.222222 1659 | 255.49493170897387, -612.0689509555559, 22.222222 1660 | 256.37378725620215, -611.581389698902, 22.222222 1661 | 257.25423666463405, -611.0981272785813, 22.222222 1662 | 258.13631008600294, -610.6192432553644, 22.222222 1663 | 259.0200376720421, -610.144817190022, 22.222222 1664 | 259.9054495744855, -609.6749286433245, 22.222222 1665 | 260.79257594506635, -609.2096571760426, 22.222222 1666 | 261.6814469355181, -608.7490823489463, 22.222222 1667 | 262.57209269757425, -608.2932837228068, 22.222222 1668 | 263.5070865687445, -607.8209898619396, 22.222222 1669 | 264.44409602100393, -607.3541167035104, 22.222222 1670 | 265.3831557218458, -606.8927557239347, 22.222222 1671 | 266.3243003387638, -606.436998399628, 22.222222 1672 | 267.2675645392518, -605.9869362070059, 22.222222 1673 | 268.21298299080297, -605.542660622484, 22.222222 1674 | 269.1605903609112, -605.104263122478, 22.222222 1675 | 270.11042131707006, -604.6718351834031, 22.222222 1676 | 271.06251052677305, -604.2454682816751, 22.222222 1677 | 272.01689265751384, -603.8252538937096, 22.222222 1678 | 272.97360237678595, -603.411283495922, 22.222222 1679 | 273.93267435208304, -603.0036485647281, 22.222222 1680 | 274.8941432508989, -602.6024405765431, 22.222222 1681 | 275.85804374072666, -602.2077510077829, 22.222222 1682 | 276.82441048906037, -601.819671334863, 22.222222 1683 | 277.79327816339344, -601.4382930341988, 22.222222 1684 | 278.7646814312195, -601.0637075822058, 22.222222 1685 | 279.738654960032, -600.6960064552999, 22.222222 1686 | 280.71523341732484, -600.3352811298964, 22.222222 1687 | 281.6944514705914, -599.981623082411, 22.222222 1688 | 282.6763437873253, -599.6351237892591, 22.222222 1689 | 283.6609450350202, -599.2958747268565, 22.222222 1690 | 284.6482898811696, -598.9639673716184, 22.222222 1691 | 285.63841299326725, -598.6394931999607, 22.222222 1692 | 286.63134903880666, -598.3225436882989, 22.222222 1693 | 287.62713268528137, -598.0132103130484, 22.222222 1694 | 288.62579860018514, -597.7115845506248, 22.222222 1695 | 289.6273814510115, -597.4177578774438, 22.222222 1696 | 290.6319159052539, -597.131821769921, 22.222222 1697 | 291.6394366304062, -596.8538677044717, 22.222222 1698 | 292.6499782939618, -596.5839871575117, 22.222222 1699 | 293.66357556341427, -596.3222716054563, 22.222222 1700 | 294.6339825050791, -596.0801529814269, 22.222222 1701 | 295.60723532278575, -595.8456368600115, 22.222222 1702 | 296.5833641682676, -595.6188028019806, 22.222222 1703 | 297.56239919325833, -595.3997303681048, 22.222222 1704 | 298.5443705494914, -595.1884991191546, 22.222222 1705 | 299.5293083887003, -594.9851886159006, 22.222222 1706 | 300.51724286261845, -594.7898784191132, 22.222222 1707 | 301.50820412297935, -594.6026480895629, 22.222222 1708 | 302.50222232151657, -594.4235771880203, 22.222222 1709 | 303.49932760996364, -594.252745275256, 22.222222 1710 | 304.4995501400539, -594.0902319120403, 22.222222 1711 | 305.50292006352083, -593.9361166591439, 22.222222 1712 | 306.50946753209814, -593.7904790773373, 22.222222 1713 | 307.5192226975191, -593.653398727391, 22.222222 1714 | 308.5322157115173, -593.5249551700756, 22.222222 1715 | 309.5484767258264, -593.4052279661614, 22.222222 1716 | 310.5680358921795, -593.2942966764191, 22.222222 1717 | 311.5909233623104, -593.1922408616192, 22.222222 1718 | 312.6171692879525, -593.0991400825321, 22.222222 1719 | 313.6468038208392, -593.0150738999287, 22.222222 1720 | 314.6798571127042, -592.940121874579, 22.222222 1721 | 315.7163593152808, -592.8743635672538, 22.222222 1722 | 316.75634058030255, -592.8178785387236, 22.222222 1723 | 317.79983105950305, -592.7707463497588, 22.222222 1724 | 318.8468609046156, -592.7330465611301, 22.222222 1725 | --------------------------------------------------------------------------------