From ddbfde2bfe0063875cc7d6ec62f2a5a463e457ba Mon Sep 17 00:00:00 2001 From: David Date: Wed, 9 Sep 2020 12:16:05 +0100 Subject: [PATCH] Ready to go to students --- CMakeLists.txt | 14 +- README.md | 87 +- controllers/training_data_fsai/runtime.ini | 3 - .../training_data_fsai/training_data_fsai.py | 132 --- .../training_data_haar/training_data_haar.py | 135 ---- controllers/vehicle_driver_fsai/runtime.ini | 3 - .../vehicle_driver_fsai.py | 204 ----- images/controller_select.png | Bin 0 -> 61255 bytes launch/enable_fsai.launch | 12 + launch/simulation.launch | 6 +- package.xml | 5 +- src/example_see.cpp | 124 +++ src/example_steer.cpp | 81 ++ worlds/.my_first_simulation.wbproj | 14 - worlds/acceleration.wbt | 161 ++-- worlds/endurance.wbt | 751 +++++++++++++++++ worlds/fig8.wbt | 307 ++++--- worlds/my_first_simulation.wbt | 91 --- worlds/newFinishedMap.wbt | 760 ------------------ worlds/rosEnabledEndurance.wbt | 751 ----------------- 20 files changed, 1309 insertions(+), 2332 deletions(-) delete mode 100644 controllers/training_data_fsai/runtime.ini delete mode 100644 controllers/training_data_fsai/training_data_fsai.py delete mode 100644 controllers/training_data_haar/training_data_haar.py delete mode 100644 controllers/vehicle_driver_fsai/runtime.ini delete mode 100644 controllers/vehicle_driver_fsai/vehicle_driver_fsai.py create mode 100644 images/controller_select.png create mode 100644 src/example_see.cpp create mode 100644 src/example_steer.cpp delete mode 100644 worlds/.my_first_simulation.wbproj create mode 100644 worlds/endurance.wbt delete mode 100644 worlds/my_first_simulation.wbt delete mode 100644 worlds/newFinishedMap.wbt delete mode 100644 worlds/rosEnabledEndurance.wbt diff --git a/CMakeLists.txt b/CMakeLists.txt index ae3de25..02f3b91 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,8 @@ find_package(catkin REQUIRED COMPONENTS nav_msgs tf webots_ros + pcl_conversions + pcl_ros ) ## System dependencies are found with CMake's conventions @@ -109,7 +111,11 @@ find_package(catkin REQUIRED COMPONENTS catkin_package( # INCLUDE_DIRS include LIBRARIES ${PROJECT_NAME} - CATKIN_DEPENDS roscpp rospy std_msgs + CATKIN_DEPENDS roscpp + rospy + std_msgs + pcl_conversions + pcl_ros DEPENDS ) @@ -145,6 +151,12 @@ target_link_libraries( twist_to_service ${catkin_LIBRARIES} ) add_executable( supervisor_to_odom src/supervisor_to_odom.cpp ) target_link_libraries( supervisor_to_odom ${catkin_LIBRARIES} ) +add_executable( example_see src/example_see.cpp ) +target_link_libraries( example_see ${catkin_LIBRARIES} ) + +add_executable( example_steer src/example_steer.cpp ) +target_link_libraries( example_steer ${catkin_LIBRARIES} ) + ## Rename C++ executable without prefix ## The above recommended prefix causes long target names, the following renames the ## target back to the shorter version for ease of user use diff --git a/README.md b/README.md index 807adbb..3ecc899 100644 --- a/README.md +++ b/README.md @@ -1 +1,86 @@ -# webots_fsai \ No newline at end of file +# Coventry FSAI team + +If you are a Coventry student that is interested in joining the FSAI team then this repo is intended to supply you with the tools you need to get our attention. + +Easiest way to get on the team is to show us what you've got. +Do something with these files and then show us what you've come up with. +For example: +- Computer vision - cone recogition +- Performance boost - faster controller code +- Simulation - improved simulated environments +- Control code - get the vehicle driving round the tracks +- Motion planning - racing lines etc +- ROS - the real vehicle runs is controlled by a ROS system but this has a steep learning curve, probably best to join the team first + +# webots_fsai + +This project contains example worlds and controllers for the FSAI vehicle. +These files are structured so that they can be used either directly within Webots or as a ROS package. + +These files were tested and working with Webots 2020b Revision 1. + +## Worlds + +This repo contains a number of basic simulated worlds representing the FSAI competition events: +- acceleration.wbt +- endurance.wbt +- fig8.wbt +- training_data.wbt - Containing a modified vehicle to aid in the generation of training data for ML models. + +## Webots usage (easy) + +The project contains two example webots controllers for use with the acceleration world. +- example (python) +- examplecpp (c++) + +### Selecting controllers + +![](images/controller_select.png) + +### Simulation performance + +Simulating worlds is a computationally expensive process. +There are trade offs to be made between accuracy and time. + +If you are having difficulty running the simulations you can try setting the following: +- Increase value of `basicTimeStep` attribute of `WorldInfo`. +- Set `bodyShell` attribute of `CoventryVehicle` to `FALSE`. + +To increase the accuracy of your simulations, for example if you are getting inconsistent results between simulations. +- Decrease value of `basicTimeStep` attribute of `WorldInfo`. +- Set `optimalThreadCount` to 1 in `WorldInfo` +- Enable `synchronization` in `CoventryVehicle` + +Read the Webots documentation for a full examplation of these options. + +### Controller design +Both controllers function in the same way, this is a relatively poor controller design that is unlikely to function correctly in the real world. +It only functions in the simulation due to the minimalist nature of the simulated worlds and unrealistically high quality sensor data that is generated. +They are, however, useful examples for getting started. + +1. The contollers function buy getting the depth image from the Zedcam mounted on the vehicle. + +2. The pixels of the depth image are checked to identify the edge of objects. For a given pixel (x,y) is seen as the edge of an object if the distance to the pixel (x,y-1) is at least 0.5 meters further than the distance to pixel (x,y). +The assumption is that these pixels all represent points of cones in the environment. + +3. The x, y and z coordinates of the edge pixels in the real world (local coordinated frame), are calculated. +The example controllers include code to visualise these points within Webots from a top down viewpoint. + +4. The coordinates of the points on the left and right hand side of the vehicle are averaged seperately. + +5. A point half way between the left and right averages is used as the position to steer towards. + + +## ROS usage (less easy) + +This repo is structured so that it can be used within a catkin workspace. +Example ROS nodes have been provided that operate according the the same design detailed above. +However, the controller has been split into two nodes so as to allow for better visualisation of the data. + +- example_see (which identifies the edge pixels and calculates coordiates) +- example_steer (which calculates the left and right averages and the steering angle) + +If getting started in ROS you would be better off using this repository which contains this repo as a submodule but also includes additional ROS files showing how to run the project. + +When using ROS you also need to remember to change the Webots controller to `ros_automobile` and (at a minimum) controller arg `--name=fsai`. + diff --git a/controllers/training_data_fsai/runtime.ini b/controllers/training_data_fsai/runtime.ini deleted file mode 100644 index dbad3e0..0000000 --- a/controllers/training_data_fsai/runtime.ini +++ /dev/null @@ -1,3 +0,0 @@ -[environment variables with relative paths] - -WEBOTS_LIBRARY_PATH=$(WEBOTS_HOME)/projects/automobile/libraries/car:$(WEBOTS_HOME)/projects/automobile/libraries/driver:$(WEBOTS_HOME)/projects/automobile/libraries/CppCar:$(WEBOTS_HOME)/projects/automobile/libraries/CppDriver:$(WEBOTS_HOME)/projects/automobile/libraries/python:$(WEBOTS_LIBRARY_PATH) diff --git a/controllers/training_data_fsai/training_data_fsai.py b/controllers/training_data_fsai/training_data_fsai.py deleted file mode 100644 index 31bc083..0000000 --- a/controllers/training_data_fsai/training_data_fsai.py +++ /dev/null @@ -1,132 +0,0 @@ -import sys, os -import math -import itertools -import json -import time - -#from jinja2 import Template - -from vehicle import Driver - -sensorMax = 1000 - -robot = Driver() - -refresh = 1 - -devices = [ {"camera": "zedcam train mid meta camera", "range": "zedcam train mid meta range finder"}, - {"camera": "zedcam train low meta camera", "range": "zedcam train low meta range finder"}, - {"camera": "zedcam train high meta camera", "range": "zedcam train high meta range finder"}, - {"camera": "zedcam train vhigh meta camera", "range": "zedcam train vhigh meta range finder"} ] - -#devices = [ {"camera": "zedcam train mid meta camera", "range": "zedcam train mid meta range finder"} ] - -# === cameras === -for d in devices: - d["camera"] = robot.getCamera( d["camera"] ) - d["camera"].enable( refresh ) - d["camera"].recognitionEnable( refresh ) - - d["range"] = robot.getRangeFinder( d["range"]) - d["range"].enable( refresh ) - -# === inertial === -inertial = robot.getInertialUnit("inertial") -inertial.enable(refresh) - -targets = ( ( 0.0, 0.0, 0.0), \ - ( 2.5, 0.0, 6.3), \ - ( 8.5, 0.0, 8.5), \ - (14.5, 0.0, 6.3), \ - (17.3, 0.0, 0.0), \ - (14.5, 0.0, -6.3), \ - ( 8.5, 0.0, -8.5), \ - ( 2.5, 0.0, -6.3), \ - ( 0.0, 0.0, 0.0), \ - (- 2.5, 0.0, 6.3), \ - (- 8.5, 0.0, 8.5), \ - (-14.5, 0.0, 6.3), \ - (-17.3, 0.0, 0.0), \ - (-14.5, 0.0, -6.3), \ - (- 8.5, 0.0, -8.5), \ - (- 2.5, 0.0, -6.3), \ - ) -targetId = 0 - -folder = "trainingdata" -maxImages = 50 - -def local_point( point, origin, heading ): - relative = [ p-o for p, o in zip(point,origin) ] - return relative[0]*math.cos(-heading) + relative[2]*math.sin(-heading), \ - relative[1], \ - relative[2]*math.cos(-heading) - relative[0]*math.sin(-heading) - - -def save_annotated_image( camera, rangeFinder, position, heading ): - filename = str(int(time.time()*1000)) - camera.saveImage( os.path.join( folder, "images", filename+".png" ), 100 ) - rangeFinder.saveImage( os.path.join( folder, "depth", filename+".jpg" ), 100 ) - - positions = ( ( *object.get_position_on_image(), *object.get_size_on_image() ) - for object in camera.getRecognitionObjects() - if "cone" in object.get_model().decode() ) - filtered = ( (x, y, w, h) for x, y, w, h in positions - if x > 15 and x < rangeFinder.getWidth()-15 ) - - - - width = rangeFinder.getWidth() - height = rangeFinder.getHeight() - scaled = ( (x/width, y/height, w/width, h/height) for x, y, w, h in filtered ) - - with open( os.path.join( folder, "labels", filename+".txt" ), "w" ) as f: - for object in scaled: - print( "0 {} {} {} {}".format( *object ), file=f ) - -targetId = 0 -deviceId = 0 -while robot.step() != -1: - # get next device - device = devices[ deviceId % len(devices) ] - deviceId += 1 - - # get current position - position = robot.getSelf().getPosition() - heading = inertial.getRollPitchYaw()[2] - if heading == float('nan'): continue - - # get next target - try: target = targets[targetId] - except IndexError: break - - # convert to local coordinate system and calc required heading - localTarget = local_point( target, position, heading ) - - print( "target> {:.3f} {:.3f} {:.3f}".format(*target) ) - - print( "local > {:.3f} {:.3f} {:.3f}".format(*localTarget) ) - - localHeading = math.atan2( localTarget[0], localTarget[2] ) - - while localHeading > math.pi: localHeading -= math.pi*2 - while localHeading < -math.pi: localHeading += math.pi*2 - - print( "head > {:.3f}".format(math.degrees(localHeading)) ) - - localHeading = min( math.radians(30), max( math.radians(-30), localHeading ) ) - distance = math.sqrt( abs(localTarget[0]**2) + abs(localTarget[2]**2) ) - - print( "dist > {:.3f}".format(distance) ) - - # move to next target if in range - if distance < 1: - targetId += 1 - - robot.setSteeringAngle( -localHeading ) - robot.setCruisingSpeed( 12 ) - - #save_annotated_image( device["camera"], device["range"], position, heading ) - - -sys.exit() diff --git a/controllers/training_data_haar/training_data_haar.py b/controllers/training_data_haar/training_data_haar.py deleted file mode 100644 index b5ba39b..0000000 --- a/controllers/training_data_haar/training_data_haar.py +++ /dev/null @@ -1,135 +0,0 @@ -import sys, os -import math -import itertools -import json -import time - -#from jinja2 import Template - -from vehicle import Driver - -sensorMax = 1000 - -robot = Driver() - -refresh = 1 - -names = [ "zedcam train mid left camera", - "zedcam train low left camera", - "zedcam train high left camera", - "zedcam train vhigh left camera" ] -devices = [] - -for i in range(robot.getNumberOfDevices()): - device = robot.getDeviceByIndex(i) - print( i, device.getName(), type(device) ) - -# === cameras === -for name in names: - devices.append( robot.getCamera( name ) ) - devices[-1].enable( refresh ) - devices[-1].recognitionEnable( refresh ) - -# === inertial === -inertial = robot.getInertialUnit("inertial") -inertial.enable(refresh) - -targets = ( ( 0.0, 0.0, 0.0), \ - ( 2.5, 0.0, 6.3), \ - ( 8.5, 0.0, 8.5), \ - (14.5, 0.0, 6.3), \ - (17.3, 0.0, 0.0), \ - (14.5, 0.0, -6.3), \ - ( 8.5, 0.0, -8.5), \ - ( 2.5, 0.0, -6.3), \ - ( 0.0, 0.0, 0.0), \ - (- 2.5, 0.0, 6.3), \ - (- 8.5, 0.0, 8.5), \ - (-14.5, 0.0, 6.3), \ - (-17.3, 0.0, 0.0), \ - (-14.5, 0.0, -6.3), \ - (- 8.5, 0.0, -8.5), \ - (- 2.5, 0.0, -6.3), \ - ) -targetId = 0 - -folder = "trainingdata" -maxImages = 50 - -def local_point( point, origin, heading ): - relative = [ p-o for p, o in zip(point,origin) ] - return relative[0]*math.cos(-heading) + relative[2]*math.sin(-heading), \ - relative[1], \ - relative[2]*math.cos(-heading) - relative[0]*math.sin(-heading) - - -def save_annotated_image( camera ): - filename = str(int(time.time()*1000)) - camera.saveImage( os.path.join( folder, "images", filename+".png" ), 100 ) - #rangeFinder.saveImage( os.path.join( folder, "depth", filename+".jpg" ), 100 ) - - positions = ( ( *object.get_position_on_image(), *object.get_size_on_image() ) - for object in camera.getRecognitionObjects() - if "cone" in object.get_model().decode() ) - #filtered = ( (x, y, w, h) for x, y, w, h in positions - # if x > 50 and x < camera.getWidth()-50 ) - - #camera.saveImage( "temp.png", 100 ) - - - #scaled = ( (x/width, y/height, w/width, h/height) for x, y, w, h in filtered ) - - with open( os.path.join( folder, "labels", filename+".txt" ), "w" ) as f: - for x, y, w, h in positions: - print( f"{x} {y} {w} {h}", file=f ) - - #print( "{} {} {} {}".format( *object ), file=f ) - - - -targetId = 0 -deviceId = 0 -while robot.step() != -1: - # get next device - device = devices[ deviceId % len(devices) ] - deviceId += 1 - - # get current position - position = robot.getSelf().getPosition() - heading = inertial.getRollPitchYaw()[2] - if heading == float('nan'): continue - - # get next target - try: target = targets[targetId] - except IndexError: break - - # convert to local coordinate system and calc required heading - localTarget = local_point( target, position, heading ) - - print( "target> {:.3f} {:.3f} {:.3f}".format(*target) ) - - print( "local > {:.3f} {:.3f} {:.3f}".format(*localTarget) ) - - localHeading = math.atan2( localTarget[0], localTarget[2] ) - - while localHeading > math.pi: localHeading -= math.pi*2 - while localHeading < -math.pi: localHeading += math.pi*2 - - print( "head > {:.3f}".format(math.degrees(localHeading)) ) - - localHeading = min( math.radians(30), max( math.radians(-30), localHeading ) ) - distance = math.sqrt( abs(localTarget[0]**2) + abs(localTarget[2]**2) ) - - print( "dist > {:.3f}".format(distance) ) - - # move to next target if in range - if distance < 1: - targetId += 1 - - robot.setSteeringAngle( -localHeading ) - robot.setCruisingSpeed( 12 ) - - save_annotated_image( device ) - - -sys.exit() diff --git a/controllers/vehicle_driver_fsai/runtime.ini b/controllers/vehicle_driver_fsai/runtime.ini deleted file mode 100644 index dbad3e0..0000000 --- a/controllers/vehicle_driver_fsai/runtime.ini +++ /dev/null @@ -1,3 +0,0 @@ -[environment variables with relative paths] - -WEBOTS_LIBRARY_PATH=$(WEBOTS_HOME)/projects/automobile/libraries/car:$(WEBOTS_HOME)/projects/automobile/libraries/driver:$(WEBOTS_HOME)/projects/automobile/libraries/CppCar:$(WEBOTS_HOME)/projects/automobile/libraries/CppDriver:$(WEBOTS_HOME)/projects/automobile/libraries/python:$(WEBOTS_LIBRARY_PATH) diff --git a/controllers/vehicle_driver_fsai/vehicle_driver_fsai.py b/controllers/vehicle_driver_fsai/vehicle_driver_fsai.py deleted file mode 100644 index b10b2fd..0000000 --- a/controllers/vehicle_driver_fsai/vehicle_driver_fsai.py +++ /dev/null @@ -1,204 +0,0 @@ -# Copyright 1996-2019 Cyberbotics Ltd. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""vehicle_driver_altino controller.""" - -import sys - -from vehicle import Driver - -sensorMax = 1000 - -driver = Driver() - -#for i in range(driver.getNumberOfDevices()): - # device = driver.getDeviceByIndex(i) - # print( i, device.getName(), type(device) ) - - -# === camera === -cameraNames = ("zedcam left camera", "zedcam right camera") -cameras = tuple( driver.getCamera(i) for i in cameraNames ) -for i in cameras: i.enable(50) - -rangeFinder = driver.getRangeFinder("zedcam meta range finder") -rangeFinder.enable(50) - -lidar = driver.getLidar("zedcam meta lidar") -lidar.enable(50) -#lidar.enablePointCloud() - - - -basicTimeStep = int(driver.getBasicTimeStep()) -#front_left_sensor = driver.getDistanceSensor('front_left_sensor') -#front_center_sensor = driver.getDistanceSensor('front_center_sensor') -#front_right_sensor = driver.getDistanceSensor('front_right_sensor') - -#headlights = driver.getLED("headlights") -#backlights = driver.getLED("backlights") - -keyboard = driver.getKeyboard() -keyboard.enable(basicTimeStep) - -#front_left_sensor.enable(basicTimeStep) -#front_center_sensor.enable(basicTimeStep) -#front_right_sensor.enable(basicTimeStep) - -#side_left_sensor = driver.getDistanceSensor('side_left_sensor') -#side_right_sensor = driver.getDistanceSensor('side_right_sensor') -#back_sensor = driver.getDistanceSensor('back_sensor') - -#side_left_sensor.enable(basicTimeStep) -#side_right_sensor.enable(basicTimeStep) -#back_sensor.enable(basicTimeStep) - -# speed refers to the speed in km/h at which we want Altino to travel -speed = 0 -# angle refers to the angle (from straight ahead) that the wheels -# currently have -angle = 0 - -# This the Altino's maximum speed -# all Altino controllers should use this maximum value -maxSpeed = 50 - -# ensure 0 starting speed and wheel angle -driver.setSteeringAngle(angle) -driver.setCruisingSpeed(speed) -# defaults for this controller -useManual = False -headlightsOn = False - -printCounter = 0 - -while driver.step() != -1: - # enable backlights for reverse - speed = driver.getTargetCruisingSpeed() - #if speed < 0: - # backlights.set(1) - #else: - # backlights.set(0) - - while True: - # handle keyboard input - currentKey = keyboard.getKey() - if currentKey == -1: - break - elif currentKey == ord('h') or currentKey == ord('H'): - if not headlightsOn: - headlights.set(1) - headlightsOn = True - elif currentKey == ord('g') or currentKey == ord('G'): - if headlightsOn: - headlights.set(0) - headlightsOn = False - elif currentKey == ord('m') or currentKey == ord('M'): - if not useManual: - useManual = True - elif currentKey == ord('n') or currentKey == ord('N'): - if useManual: - useManual = False - # handle manual control input - if useManual: - if currentKey == keyboard.UP: - if speed < 0: - speed += 0.02 - else: - speed += 0.008 - elif currentKey == keyboard.DOWN: - if speed > 0: - speed -= 0.02 - else: - speed -= 0.008 - elif currentKey == keyboard.LEFT: - angle -= 0.01 - elif currentKey == keyboard.RIGHT: - angle += 0.01 - # Emergency stop key - elif currentKey == ord(' '): - speed /= 4 -# if not useManual: -# fLeftVal = front_left_sensor.getValue() -# fCenterVal = front_center_sensor.getValue() -# fRightVal = front_right_sensor.getValue() - -# sLeftVal = side_left_sensor.getValue() -# sRightVal = side_right_sensor.getValue() -# backVal = back_sensor.getValue() - - # Distance Sensor Values: - # 1000: 0cm - # 800: 12cm - # 600: 24cm - # 400: 36cm - # 200: 48cm - # 0: 60cm - -# if fCenterVal > 400 and fCenterVal < 600: -# speed -= (0.01 * speed) -# elif fCenterVal > 600 and fCenterVal < 800: -# speed /= 1.01 -# if backVal > 400 and backVal < 600: -# speed /= 1.01 -# elif backVal > 600 and backVal < 800: -# speed /= 1.1 - -# if fLeftVal > fRightVal: -# angle += (fLeftVal - fRightVal) / (300 * sensorMax) -# elif fRightVal > fLeftVal: -# angle -= (fRightVal - fLeftVal) / (300 * sensorMax) -# else: -# angle /= 1.5 - -# if sLeftVal > 300: -# angle += 0.003 -# if sRightVal > 300: -# angle -= 0.003 - -# speed += 0.001 - - # clamp speed and angle to max values - if speed > maxSpeed: - speed = maxSpeed - elif speed < -1 * maxSpeed: - speed = -1 * maxSpeed - if angle > 0.4: - angle = 0.4 - elif angle < -0.4: - angle = -0.4 - - if False and (printCounter % 10) == 0: - print("\fWelcome to the Altino Sample Controller") - print("----------------------------------------------") - print("This sample controller is based on a Braitenberg vehicle, \n") - print("it uses the vehicle's infrared distance sensors to avoid obstacles.") - print("\n-----------------Controls---------------------") - print("'M' to enable manual control") - print("'N' to disable manual control") - print("'H' to turn on the headlights") - print("'G' to turn off the headlights") - print("Arrow Keys to accelerate, decelerate and turn") - print("Space bar to brake (manual mode only)") - print("----------------------------------------------") - print("Current Wheel Angle and Throttle values:") - print("Angle: %.2f" % angle) - print("Throttle: %.1f " % (100 * speed / maxSpeed)) - if useManual: - print("---------Manual Control ENABLED-------------") - else: - print("---------Manual Control DISABLED------------") - driver.setCruisingSpeed(speed) - driver.setSteeringAngle(angle) - printCounter += 1 diff --git a/images/controller_select.png b/images/controller_select.png new file mode 100644 index 0000000000000000000000000000000000000000..8d9b62c2b1e992642205d769e4584a8912bdbef3 GIT binary patch literal 61255 zcmV)$K#sqOP)00Dyt0ssI2!mQ3N001}_dQ@0+Qek%> zaB^>EX>4U6ba`-PAZ2)IW&i+q+O54?mfbj#MfuNB)DQ@Ocnt?HuGKT>;rHHjMP?{6 zvMQ@rg;H|K{oYFwFgtdRJ&@P=fB&EN`mg``uaNF1UQe#A^ippAd-~Jk;4kg|`LBO} zhWq*c{Qi5!ufK)gzkjv#>#vcoiLdGB2X*{>4Zbn|^9_GoBh25wf3;sfiS5@1{rUkP z{QZ}_vVY%yzDd3xf4(1{Umw)Z&tFP!_0P9De|^yU^}_E~e*J#_aa+G0mw#WseWS8U zJ9D8F<4G*y_hku%hLcMSY7M{`eSPI9c-ay{+)8@;meQ`u*zsYWKJoTfXmgPkyb?Lu9SrD?DL` z5#DgVuPZEW@rfr^zQ(v>`o7mvjXkd9K0W>lZ>;RzPK~`>@mwkK?f8#-3Ey@5cfA!F zSKfh_#=wUK-tupMUH{z=|2My`_gyYgxZBSD%YT>oQ+|Tqs<1|M~!yh-+tV2D5*{T|&yC zguBLALtq^n8#K7{n4UP`HQ%*hY^fO*;?M?6V=C{1{ZEt_aKXxtra@)WD`d{o?__b^C+bLgH|FLU) z_p0@ej|jp^cF)+c_yl&mx&s(=bkFVMYMrJm#onEN<`(sdLM3i*fdFFCcHtYn{bP-fiDcj`KWW z-RtE#V|Y(z<`D)L-p=EgG8E`4gstV!=1FpO8bANG*- z+C(F+nYdxBXH+&U>|PphnL?gvpS$y1SWVvJP0^LYTn-#&^d7F6G*n)(p2|MY$y)Qj z=k&07q&;$b>(JVHNZx{77z#(8p)cY0j7q=^S1E5f;q0;s`}8z6ms<_>jl{*kKCN@t zxl2y9^|4mk>%my+S-Id5rLP*pdizzvi+Aj{h?2YraA>@w6`+V!&)jahIUu7fP1hQ(nY@0jT4(9^-Vat4ualn} zqvJ9yt;R~m({Rt{4eb5ede%Ofg?O;~xYjx+l;@pzXuw$5|Jsh;fA`h^L0%LJXa{ft zfQCz)t~7{Re$QajbFF2E3Z8N4QExUDM-14c@Y3+L1U&&~+Ik1q2P5*HD<>X+tz=2k z!!_=aR&Tq4p6pS}Cr@w;2tMrEY~cI#wgwJwz_-lVV*Y@Jj|3*TYZMb|J1q?x>>;ov_?mST2L(gR)>O6Y^z!Q{O(1-rKt<38I zJQgN5+Z*QsD-N5AOV3m){@2z)JCt+gsu_fQrM;!^*5PyyfA9`I8R~~cg$Z=x@gKxS zkYSzd)*GA&K4-%PG3ICNNx*6V1ki(q>0l8)hglL%FM?q|?SbYDkRuNa_>437cpk95 zHy#c!V{AMQ5PQQ%dGRy2k2h>0St6G9vxu}4$m%#mRq&iLOTeJdn`SEp1`rxk0WB)l z-`LcfaEI-HePgb2vvc9bX^CKQu$VBjx^tgz8txh!HD3u!&U?QE+e3ir2aBwP<1pDl z_M2_ut|szAp1p}w6UbjH660sa3T8zm&Hdn|VEM=B>Mwtr0mB6@3j2JLGhFTDKVFafGFymmJmAk-1?n&$ikP~ z{@|8t6Kx1(00g0pN1Zp3zk*w=?E^v+w;lqO(TBC1U}r|u2(?@VL#b|?YYOxcU?C)I zfFCe1D+mdYdjc35criW++Ph=eAOAr{pFUa60zu)9D&B_E-0awW4iOv|1wYwspoh4Y z3p>O1<8*A~x&2-vS3 zkqSu=jKmP`o&{K?;8v^&B7MyVp zOjUY(*n;LI;d%tA4_e*~Lh_VP4*U;zMLZDekT#i+TmKnuVdRCdCqF5?2;%VIIicY+ zauK=ah1o`Uf6{u`49thc&k)MUhXH*6u7J;mzU;QdGMwj2`S5*|*2B8^(AVDe0kS~z zp)qcjh<_2XwW|p5`s?$F(dLU0XRI_I*|HpESYs(EI*5u%#^gH%0kuP{4chLCLu8U%z!!q z!blkt%m7P{s5_()ep!eW;4>lnp6a3x);D0pGh|314mKgTFtt4ML5mXAU}317+C&5M zj6FrD1z?KtUiE?Thdf}C557(SP!I7J?hU5N9)gSrzegzHUco82vy3cjPk`S-3c-)C zv?;S*NR*6NAu_@+?jL=_v%*~laf#;uw4e8SD3De%5B<@o&Fg|LzBW|FwL7%lJ-*c1MK(;qibNm+UUohxJ1Zga|a7 zCP7q4gHpzyY9PuMd>Y|*5G`yn2F{9dn`}wLuYjRz!kxg5Q()B}Jv&pY0gd>q@lkLX zjgo3*^fKIGOw>#u6pbJo1o-e&Ib?poirxvNoR(hw8P9=aRH6d6u8z66^Nn6%ms7^q zKxcrj0V+hhZ~$hMt2X+Enqh?~1LDO2&F3fJawinQvF}BAfY{dO+-ea>U{h&83?^iF zKF?gP@)|N7ZelOo0#b@NPLOLQ2igS0NiqZw13P`+OaH-+d7Q*6&;=}eIfyi#i`a;c zU#Lz1Oi)!6A8i0u^$4Y9w269U|1P-ub3{_srLO$xBWOuNjD)QWISP30m-hrT3$#uK z9RUiWCJOc;Xx^E{p3r-u0Sp-NlhveB&B;GtDWOB*Do;WHMknK=#8M3;A-oWmUp5eO z2tUG6P+`HWD8l726u}#axhxmP5MR-Gu-HVt!M&z|({}DNp(aB!|7VUOUW3quvGM3H zF$~ATsv0zDAoa0BHUO{$Fmd90-1YPS2j6{tUKpuX&3g1}lzT0NG}~`t9?pRuK%cp5 z;*LPtprJ7D8$MCCqP$3868MgJvO(Am3yAPb_?#S*_#7l0u=gPkBT$_KO9zYYZsyt; zoCqB3=n;Bu#6mhK#EhW22Kz&F{D4@Z2sKO}-sJU%^g zWnwWg=-S^dVMrYcK%g|e!9L!Du$4_Kv8GTCknAO9Rv}lRK9J>dd_TBziF3hT0aO?f zpUn@qk_OdEXa+7*=rW69ejN*ks1NL|nw>dt(zsIo5?BZ{)(9gb=Ba(MD5ECgX;xDA>30S;ro4A(T6I_AK#FB}&4^d;)Cvn|QbV2GMX(lY-c?nKyzfTlN zxUplLK=t-;A%b{_1ZVoP5APekudx^$0ZjrIy9+lv$!zORxH4L62!AtF5E=S>`hB5- zj;R#Xj0|&6RjtzNL7Xqm8*HBMj94cTkxe1=HgGfmUJt}mdI>GNAVx13&WcRpeU-Cd zo97uwlMLj6YV0~O>u>H3lR!a(b{OSFoJ5F+jvoWXI1nq_A?-x@(%@9jc+oIyd4*xC zVS!s*t>J|wLU0K@d~?4SgzW|`2o(fPINBoigTV-ljbgwU1;XcGXh{CiTLvZ3r9d&p z(*Jp<*Pm|{-k3pm9u~ogeFEMFyH9-+0y0iJb|riedsi}n6wslqA_m&E_-{+YvEUc3 zWQrLpK0_;+Y&2B$@iq6un@l>uts;^UI@8m8_KoMlm@iBoW58S9_sc0mKxa`F!41OA z?ZLjhqX1?r^oSmjpK!4VG{2_y^nn8z#o{&F_5^}o5O8~IEG!NPh!RKMjV=brBFk_9 zJVIG!qku{%9}u`Eeu${)*;xPJH18Kp5ku(sRu7LgBT%04$zouupxFEjx3koK{nFHa z4Hs6xV{@$^<38VG@HG}xIia0+5KtFH=Q3Le19sVt-&`*{3wZ@ZDq#}B{_{Ei&Q1Q# z5Q+M-y>MR|{QK-*>)?KU)XvBn638`JV3Q*?8UeY<#`KKc4Mx z?`gt}44>!k@9o!hx#~5)oY2pO*~Wjl^xrM)->vKQv#@`E;olxQ@^&HmE1H>eASnFt zGicfMWVmp&fqA4)0FzX}>;q?e58)iNHkEzSsZacN z1Vn|kgZ~8`Z{B#}8X&^Ac90V*z!_@o8r>7gxjvf(jNk94tPL>@c1R>32Ej-%PXctV zgvnM{O|T{$aq-3*qJ_AxpB*6~0v`o!p5OAp!?tUko}XO`rf+)R8=PVxW=F)Z7%jLU z+#t?dF38s!=h>2~NBzi83R_-fgywJ`Sa`=^2<10m4Hej22<447A^h=r(+|Y{g>FUz zmyDEplr12<@(5YMH2}Fl$Ogvo?3;i%ZZ;d)vNH_vEgP%-K>K31@jeS4_X9%Ra4SAm z*WBQ0+@Dg~=C)WvBu>qvCnF=5dreZW5Uhn?1gB%W2TyX~6+~RL+RMjHq3pfC{mEs) zIEmGR5OKgaH1{x}Yw90H&w5|0{_Im22R04aFg+OvBP?5dBJvbFtgxhIx(~dFna8PU z#8K5The(39&KIhR;KUPSjS{U2DhHG#y3HL$6>uy8mUKW3R>R*ys< zr!6RO*eVY4z?ilvYm?;f218dK1P=2%xDksMq~pYpg|iWI*fCbW4l|Pg+tyyv9oX%L zaJ}1;zr1WJFzFVH)=KXf7FlIR5gO9b_Bv(fFoAc*xPu7IoYoiYoo`!-GS zSj8eB;-FtL8_rxy+>)?`4L{~zn}reV;@%h0^1vBUY?(N#I5r!KrSt^dsf$hY_g4ln z*4;ZD6h5|rhG>t;8=SqC3uY>vG<76RgK3x-gqnl!vQae%iwQ`m#@U5s2n8mru(B92 zKs~UJD*y;($sqVVr2k?W0gQrkl$@I~k2S{db2P%1WP*{6gCfIxa7u`%WcP{<_6k)_ z#6wso8U+!46oc%1oZXr!fb!`fLOr|_hCcWq4%5ujeL3Y9b@Z6UtbFOvQ)}yAwxw7( z0WM|IM1?;ncKqY(NId-c;IDo{?&|;i-p_YH5!3Lpq6DfcAjez}cn5=r;xw3KdHR8Gxb*)_C}fiEu1?xTO0d z^KM(X*Sh9 z00kfq3wJ@M85P#NYna!(@ z8(|Kd;yuM;@>yCx-ihzxU3M~norl%g-ZgY7nW_gE-+t$C9SOm}?gl*a2HWOizra`Z zNxBm|in9VO*vzoDwmULmCmu9gv{oL2TUTyqzW(vvwY$zS2!0j+A2~mf73%P8g5jzr z+;8p?nT7|=H?ln;f|v@a3;5y{sHubmNDCXm`R>WXv;44zrU3e>b7AzsTAw--slQ(+ zk${4IRXF6r$>SEG$g32nFtQ=WoV&0WRX@K;iVjLRuZTGIAYi zd`B~-buT2^ozNZ;*GI#HBJJEF~u!G3N*;Y0y0s~_`Feu{MWEl{R))Vby>)64N zh1%`YN5y*B``g%F@(PllwNQF22N%!s02YMM3v#ui6n?&@krm&2uo9sCz6!*c51CcV z;%d+ZsbOoV_vhdl08ZoHPPKIbeY%JOrZE%DrVn2CWUkzj8ykExO;9T5vDg$AKHW^LK=xOXjf=#Yr+?A>*XgAl<(&OfUHxZ zZJ&fl)UhI zmst4P?-J0(P#DXAw>?75vZC3`C&U1`ipky`Koum;W`Q?ovm&uS*>*_;Ss-y@xgOBc z>$}zHN32-VhUh!VjvCZIObMHx%OoZ8Wrogmu2L*#;SvG*bSkDA!9bf%y4&NdstX5!8}ZfuOlg^LmNL1Cj(k(~=a*{W{;>QV4!Zkn*e!r9Zp8-X4k ztrEg*aIio0f20cko+(_vQH6?c6)dTs8LSgOe4ALs!+ol07o;S?@I?tUFubDFh;bY;Dt1(+(c}-Ij@`-R+<_(ckry$QEvsjRA${kw6n!`6RN!B$J z$SfZ|^)aiwZS8_%*a`z>Gu%84kX4n`A1k&_V<Z_Fo{;2Nl@ zV@(=p=H~NHdh5pL!8ZXD^UC$L^}Iw@dUoVMvLg5ng0T8DKZT`3?l!~(@RJ`vpAdtO zvj$R6Y~>JC5ODXCt~i^e3or#xfbm;`uLrL!2{f|33;LR1s}>H7t}Ym^*xzXH+t(!p zl{LeTy2tL#pB94z3J@?Xm|%yOU{S#|S2aW4o05z03IoSzOw~oS2s;5nvMSiYVk6A8 zVpY&?SQ_wqe`+MgVNnFPt6#p6kp9M7SqQr&=5^a%Am4E&_FMV)xD($PSD;|<8?ng1$eSWLBdJ%qhUq1G4 z3{b$uRV`RO1)gC=#4($=%p_%@Zt_{ytT#Sr|7Nl2l{Mm%qXk)>1gh9{M4rxKi62|} zRN@8PZKLS-?7Pnicx7`6%57_U|x6{}P$$htd0y*~Es;O78<33+@(332S-MKai9iuCK_*rRM@&$SY{ z_&cw|?ckCqzeqH(f!9pjL{FpuC0>~FwM}86X;@55ZRvd3bS9Ub4u!Z0E8_7XAN#4Ii4WVM8^jije2A^YNuK&W#LQa*B$R%efy_b%OfHb| zm0>I5?ASn^J4INvxk1}=ZyRX=*kjN2ok}zd+x71w1;j-h*Qhp5a8pFWV%O3!BVqk# zn{10%P@mEqfS0#B~{wVsL+95(ka z=Z>bcD(xb6Ez6wfvJ`Blf)~Lt;SABtSA&E@M{lSum<_G4RCF&Q40QF*_P0vD&qUNf z#_$7&CooxfLa?vGV!QPzi(t#(FnQDcD833{!#-MT=8MA$EfFA-i6Rtayu$*q@9yN% z*Oc)>lsmhW7G$|BSOx+SmD^EYwuj>~5r#e>y3p(E=}ucjdy2C5Z}S!Gcd_~h!Ny__ zzy$113AP4L!|RHvGJ~Jn2jAK7gDVj*FcB#uTmEF8i+u+a3B)`Z1RTswNAf~+&?_*- zY#+k8HAxm4Mta6I{LXDx&9CI%%3X3+O#cSc}ge*@#!Uvd1te+TDa`Nv0u zo&KpZk)b)irSz_!oSwxB_Gc2uO;vvx?*2oY+rsfoo58THCTjj;K~oxlb4;Q=8@g~= zw(S`@)({dW5}T%}Sl1hQ*UG0R_zi%;HNOTjE3gwe6ync)>S2+aMTT%j!L#uxz4* zx|tUdSX-VBJlHB97dC_-*}-WOb-=v>%$|3F(>(pxu6=(+#EDeIIKuT3RZ+_YG{6n; z+`CO1%fGgR{-dwa@+Ju(Kvob8SdjtYh$(ypr7|7f zUAD?~R1jwJ6n~Hi;orc(4cg)FaIV4jix&-wWaH#<;N|dCW^JGVN{w#>DOx^B$c>th z6QgV$I?tjZ-;6V@t2!-kzHn%FaA6t0I;15fnDg4hXvQ8-J7EaO!4#M^DDLpUIC*fa z_gu;up!bcY_OWQZ49gRVVDjuej}21e>q1&+pPdBUl2s&zvC9Yc)@{)3Jvb;<@pl|L z+vsS%raP(daig!-Xbw}Nm7NC>aCS@0>|`4_aEp#FVl_C3ysZuf{@b07)Ma@cm|K1-OU ziJt1Th)CayMIt`xu+-mZ%e0*w!CuDKw-7FyJ(Kv#XAmyeH%lOfldU<`lc_ z6zIqHm@%qOu$ek_mLNZ1IE3fg_IGia@)hUJocbKFz>fsm&4wRd`6Vi!Out;cC{CIUe|5`cwt#F3i zVtv^s6hpD(ieyB(L)aZk=;jho9?66c&t5?Sv=Sl3Hmna&aTxie9l?Ao81+T%^1|)% zi;QKlr&6q0mwB4`@EN54))D)Be7rAzoh)zIF^{Z$k0WR{p&);*2q>z=rhX?V6BYC*{6sa<*)*Fqyi(4V;{%jYp{d$b^Z`qlW+3? z=e0n@Jr8b_U{Z(a4Wor!lQ}vlYFDNM-sOCI^O^?*u&vp!&1`?NE+cP-gy2|krDnG# zIIf+j3+!Rz_MNQ&{FAL;QJFS|ROlz3S;0PEZUbEA9k#Z0{O%iLTOk9s!4VJe02vLL zd#*fLA3pWqHw{a}>zpL+sN1EkD|^IcPbmy7e5GSHF{o`H{MimV?>xk-OEh_Nc`cm4 zhV97c$+q^|0ng${hqc6V+C9&MEt>o>cbDt|kH}n9SG-_?Fg`eh{oXK~$KGaVPZe2T zmU}7%KhZOZ>cm6@=eD*6YGRbCD;D!20)+N;-#Vaq+mgqf!ymlnRDnAEfg~8v`}QD~ z*chl6iWI(4zG?;%FkZHfWypWD_>x`#%~=YY3}a?@`93}mPGYjANO45U z+#GMS)zbk3s6)NM3aAg{I=?mwC6CJ3tcmqQRe+@{Y$uu*#_MujNSgEQADWh{0Z7n) zv<^#S&97q}NTFl@s~wIB@?~PiN0<+rEA4O?p_k%ggB#(pDyLSjuN8FYuk+Z|5l6&I zw5N7X4_R0&B8xYWS!0wDop|G+^T@az8vR0JS9|uH7U{UEo$4EH4hxEGBHA5+#@Ao83bt%i3lMKk_QVlo9EM?&^2L_1gjnFP zJ}Zqd-D{6v`1&VCJAeL0Ltp->l5pR@Y6<`v@{19-$=BCKQeU>efvP1#l{P^r{$vnc1Mr4j=h5lM92_IK^KdCCQL z^}fG;qEP;6{rdSK4+e3XfX@bLzmF*OW8f zP}u%yWF$r)Mc8;}S(0VpN9AuMiPfI*lUQh*uV4pu+`|Tgq{k6=?m1o#cO)R9FN8i( z2eg0W?ZGitSo-TYNZvPSRkGEe22n4DqTpC05fc9af6Zq%^O^>|#kN;93{TsNy9Z3&Pc z>Dq{5_N$uWwgmNBwPh)jJzY_L{aU`bk8JfZ+fYniClDSQHXH=YJX(JpY3Y*>L=X{e z9$eaN%lZu3LI6*QFysD(oNfcH!yOC+OVOen%zW^A=O@lG zvAB!VX=XYRO8AR&aq)}Muy^hbqV=lG%1_HH_{WRmTRfcr3ys-!hG3EaRi#wQCKOU* z^>HMS%3SI23WAfI4snX@O#F+c5Fu zb8!*8AHVP@nWy8)%Q8NYZj!dbPCZr#f@Rr%#?K$n4z`GRKh+a{c#LpaEDu_c%JK1a zZ?$mEa~tam9{CNn*`HlK`=DT$kY}{>FAGALJT{-QZEnE>S6jjP%rCzU0eKY!-_aob z0sdg9r#h%fTtKdM$2LO8>^hj8VYLv}>Yn{r0guCCaeJuKbJ*VCFru9h`9oU~F%t%{ zNh=fg*9mRb?cz!(tnwYQaO_TcAu6w)1?~L_tk#mZ#+^@_|L()C-E;WwuH;5QuipjZ zIbXx&e1pA^IMw4wWB9q=1^>rsl`&2#Y@5vajPQLB4xaw~PcT3E+u>WgzZZL02_ea; zmHlqe^>pq>38O^)b4ebo*6oM^))3Dc$X=|c8t?mMTh});!Vbe?t>peGu)-VG<6ssT zmXQQ6GHwdv5KpHCzjR|X@p%1f<}r0R#k47Ux=}TjpTwgFOni;AzqbfTK3KvF1ZOMG zud+XEsy;w?Kflt3&mY|g?~FgG#Kvztdz6@m1txS3jGb_FUi7QoD(pZi<3=A>AOdC=JAIZkIFj^S0O6{q@wox9a;zUdV7{WC7qU~a@zCzzgZ z?B<5qVQmFgj}P6i{hYXp5+d)_&5e&JZ$?)^t-o|3I1c6<-t(ypEap=g`~|XQf(nA? ze0#JR9)$ML75gZ9g$weWKPyRqg3|(VR-54*a6|5>AP?B1Z`f4AWlKW=q}JtZ5CM;O z-FSvg$b|2nQ3V6Jbv)9mdbV5sX+{n=8e1Z1X32qe0FX^t@p_4FFd!mf0~SNy78-bl zrMz44RHR+s84VFX*oW;$M-S05fqUYk9X#3P8W0GzTJcaL5AC_XzTfN!HWCm0KAoEN zJhYW;Xvefu0P^kG`1(){g&pCyI|j92Rc|M>Lq`B-Pc%xcVCNZddCsg-en?<5t-Wlv z!h6uW_csP-DekHdMDB*M$iG$K)v;5;>T`SQ0aj*4&A}ej2ayWaCEI)*^+rbrkKVvg z1L|lPw5KO^EMmh#t>66fw6Eoh*t@Iz95+TFSYsrfAvRr5Q-1bDt3a;%J7rHnX3~2( zqGG?hxf;k(L>56#HfjxL?r`w7zT-^_1j$jPy^rS?y!9%?bRxceP&Gc37oK$wjR%NxK?w3ihbrk?#+3`qO+R1h*}YEQ3c4!4tUq%NgVQiJna6eag&u?s(vm6L{U|6N0x*Vvtt*bsifVzG5iA zj@f;4D05v8Z??r{TC)TM1EPN_K3Vb7%$C|=IGxr4&JDcNJOvcoepe#1%pC>@hjeK2 zfvT=AhhUA@5nCSokW3bpRB?Cn&xnk19vjqIOkg7p6xG0vhE0OSGm1P4j89pT zUP3th@H^!rCh)lBjUCEcnvsCB0BrZ1UfV60n(S;>$ zsO^}KbrZ|?NJYa#V3iw=v^>59Q3=o!Y2lN@au-U?140lC%LIYJ?*1b$wfY0?i>6~C zB`gHn43H6Z6c9gCKCmHZ>!YP;>#4m9U)WG@yi>ZY`C{;|$h$o5Ya)JZ4BF9bmxpJ0 zHrkZ{bw0F1_xF9Qd_0D*QNLUj{?9^mn^k@VkqWJV>DnCwzuvsqLDn;6Bh}l3%LdQ) zF&6@5nXvbrEA;<>c~DfCt!Ft{?1Rf&i-RJJQ`XGNDVJ*OJA(iv-+_vlhY2xo$@$(y{czeMw4H_m#Pew90Z&EsL$XYDR>r|N7y)x2C+(}bG|C< z+-edB`!{mkVd@fKwL$R%Pkry~Ouyy9Zx&>I6UT86yLDJ1UL@?<+=nG@6dcMFJoOi&P`$RpltXKnP3^hWmaZ+a*A0fu*0+YOaR2V%C-^&dnU{w z^1il6>ucRs9}^Qg%0V=FddyWj#uhzM^zodQ;YkaExf!mnN1+hx>(^5Tq83lWd3cZcX}%LzcY)qWR0ssyZ)C>;|JPa9zp32h6o(VU zUKAG{MAX} zvnRx12zC`c0?c+gXd>q@MdkMD-+>>|TAHmSUv1xT)H_&;#Q#sueAD*apN1S`VyY7ZHAz(^v*j95e_H7DayKp-gs7AVE9I-E=)mr(T63 z2J>Tx@`-J9PZDhNu^GO4Pz3Adcr;7_Z}knfp_-=Wvr;!(_7z~*!=J<5c>OcKeqGbo z3Ee-Hg#C_e$*)6+okZ{yRnG>zJ>tme%0}>mg*xO8y}s?5FJF~5Yk>A=TNP+e_aG3@ zNf^=NT09l-*v}EMl_qvYn3qS{uBU8Io``IWnVgFTeG5gr){Vl{}hcs-@0Wgcz3T|>L|sGN1a7>6YWpz8WA-iZ2eXXm$5i053Z z9-*TaG>?fL!(My0{q_D%TXdi@dt}-4`#ZOTVfHT1l#5h@HM_GU$GO&M&%MFs zS8CvoIfd*0-@w9ebd@_!KjYMYVXUaY_^%@i{OD&8-x5Ih`lh~$Zu)F#UqAfz7uNRg zkO;p4i^rUXjYHF8SS-s~JlOCC51Z>sVY?Jw4=Frs|2FMqee$)$>`6psT0J8Pc(C@E zg#rU_B(6co_%f}LCg;e|=fvX9_FbM91$jCSJwI>+1cYhmaSYZ(4`2#~XaOgCDu;*A z%C`A#R&&UzD-QPU8W+`pMw4*-0?IPDfqFEHL7ZPkoz zwOuBpoD7(rteG94LmeV6M{>Azd02@(yi>*1lgA}S3*m@@qTcr`QFf64sW>nkdc4{C zu#;dY9zclAMTc;o7w+YV94_a19gqW?rCv1!8gNLF+vVwGrYQ$kUk1MNOq&s`*~7%u zSSzDFa2#ONO3~w7Cd2>~*eSkW{yLq@N&EFaAJyHS$lOs0Aot_2E;v%o7hV(h3~8Hd z#Cn#c9}^mOXiU%a!LpsVeJu<7NFIV(y;o?@Yt7H*n%ARI6oefo^JL{_gBo0Hx0Ea< z_uGR@Y_>;DeuvxIoH1>?KB0tAh9@$Cz+ZoT{>CxBgD0D(%f5EpJ99JU?X(;u0-*?w z9(bkJ5r{D3L?=gH6bkER8Qvp*zoze2mAH@M=@E^f{_8t+{_?O`kA#6gwC)H~P+pDi zR7k^;?`5-;4SA~=Jq`(@`myMNV1dA4&R4^q?c=seKTjBU$!_Qw2t6H}Q zPbJTad9TRM#^M-B*TT+UhN}MKA*<^@0j>W8v#$RHwEm&V|0&5aR>VtdaMoe%&BO0r zaYU8at8*j!lgc$zQ(tUtL}69i4{oc(mTVO1`TolJD#KJfrTN-+(R^o?diupe;dop% zWS{7V*KSuk&fu|QJJ?JvECl3yF4GYKJN0c6G<)pcd)PWg4|O11o#?rwgmU|w?H7j{ z<@lIH{LZ!5Ut1oE$yGVeSMU1fAi1Mzr%+P(-wv>vqZR*X28mAMUDhmPx zq&U;Q733s$9ov%&>|ymk2LS^E5rm(K4IH{pAaAs4r<0j zfJE#d1MPK->IGIjAne|03nC8aneny`f5*q!9G|{3i@wYsKIVxJ`Uz6BnH^~!w*I9i zn%m(y<#rt|@hG6|ocaAA?4wf9KRfn|iE1^);VG_a8{#(wT|91PBCS&?+b-+IjO0y`HytQNEg&7%S|OVHZ36Oa=O#^J5Sy#x{H z?KhZf3h)j#RAC3!4_dfC#o2~6>e~)uHr%7@iUa6zL-=5gaK$z1Hz5yoL_*j`M9j%Q z9Sy{NySbYOTug-K*Nz?H{B?xl-wj><`g;A}kecr}zW)nS6Tf7gdB{KNF>pn0^Zx@@ z-LN%$AXpdx00D$)LqkwWLqi~Na&Km7Y-Iodc$|HaJxIeq7>3`bidrfTb`WvMP+hbj zD&nYBC_;r$E41oha_Jv5X-HCB90k{cgFlN^2N!2u9b5%L@CU@n(Mi!oO8hP`t?ooWaPEMf@~L@21DgfeWz zXw^xvkfQy#kAKkhOXO0>RRSZ&0xHlTyMFLL_}yD8KRMwgh2ucyi{pF@16{j7qvkl@ z$BxrD0fNuKmEQ7K>cGq=>9v*?Jp%f+fs5;wrtATiJHWt`A)B%*1*wF59(X^aZ^{Dw zw?Jsk>sxalrw>4ydX>BZ4i15l0%foJyt})-Z~vZY_U{KV=W>mm0Lzg8000JJOGiWi z000000Qp0^e*gdg32;bRa{vGf6951U69E94oEQKA00(qQO+^Rf2?+`c1-1)E8~^|y z07*naRCwC#U3WlJ*Y`j7C6KW94qLW@f}$dVf+$XKfQohR*3s5h+iJCS{Tk35CL5y?RAPM!wF|HfGG2S6-$05Bd)Qvjsl- z=%c^>`m6aq0RaK$&!7K?+;BiZKw4VbzmML_mMzm^VDR9<05E?1cpo31F24_VcX#Hs z-hcmng&io0qF>YZ@Xa^h%$ql_6PMe&cdw0&je;-W?(Y8Gci&lAS z1_T70IB}wlo!ip_%!i>vC@LyizI?fZgM*Qg(SQL1_Uze1lH|Y0oe2mC&}oLJPoK87 zKez4EjT<-an{U36?8@Z=KuAbPH{JTijT`Bc^ZEQX_M~@fXlUr%FFj$xgf(l{L`Fsi z1_t6S4<0>Td!ELqPxBK z78|o$M^z(6jQIZh@5{@}&z?QIXwf2FU0r{F|JL^JrWPnJF825LH#IfgwQHBDscCF% z?E3ZVlarHo?b`Kkq4&|FN3l&BFkrx@O`C8V8X6jQ(mChxc!pBw>goc(v}w~eZrs@X ziCMR9oui|py}kXKHETp7Q73L)LqmhU7HvF#`Q;ZUCnteGFn#)TdQav(T)1!n_hGkg z-D>}}3=Iv33>k9rFH@#x7YomyaE;GR8u=+1H4v}p>LICJKVot>Sr zvGJfmgP85}#TQ@TMpJ0aM~@zj8a2w?+}zvS`@)3_cq6_IQ&UrcK(KuI^3IKh_ps}&Budi=WQBf!EVe8hd%F4=r z|NVDBK!A&j%bYoL4jnpleZ`f&6))OadB}00RaMmz|YU`;lqdc z(|PmeIXO8Q85xZmH;#G!oSd9qy?PlN8~5tf>!+W70)S)3jyX6u&=#myuU;olo-8jf zpE6~NKp-$TH{ZH-YlpsqzP`Sxsi~={DMCnBR~NtLa=A@SO&d0B=-IQUot@qL@4sJB zQSrK=H72%g+ji;FrL$+xo;h>o%$YO4|NeWIoc6+n3v1V|-Mo48?c28}O`6o=K7oOO z1qB5K1qEJSUL6f0T)cR(zP=s+NRm8#`gB-Wn1Tm5Yt}4+AYx-nk8g2@q@<*PfPlor z#65fV?B2cGz`!6fGV;KI1G{$ZYG?3l;J|@bu3UNi`0=1YgBC7aNN-=iem!n9h3H0b zaPYu^18?2B_5SEap@~pu1uXeRase?-s0=)YiVhD>Cz<&3yYpTd)~Nl18={6 z{rc$9qf1IkCQX_&cI?>r_;^1*znL>ebb&S0^PU?cBLj!DjsV=by>R$!pfE z`TX6f22lwS1OyR~MjGjELAEr~Eh*h8ttir> zG)RMVNJt|{Np~aNAq^7V#qZuT?l@l9E!_&Ta8O zXI>&HinwH(dD0P&dKUM3llb4HRKpGJEw*#IxkCg(b{H+xf&BR_oOGhf?sr!#TVg_j zfPlclDg`5B9-Oy{IZDZQTvZx~)WX8T;^N)i-QTrt zcK%|9#>R{A&Bn&0c0?+Inwr|m%1TnQ<>a@osHkX4IFVzu?({3n#)_h%9mp!oEG#X} z&2VSlYyFge)x$zVg@lDAB_trU1@;!d2)O+E@#Dwzv=?l?e+?}|b^S681w zrYtBZxVXHWvVS)9h&nDIfzg_alk@f2J}n}YnDdrs)x^XE1XRm=98uS;ILNJKrd@aL z+)*#m)lyQ5OiBukz(Yra46LrMj`=7!BqZd^m)WJxPY^V4T)DWo;L?gIB4H`GI5;?v zT;=6^nwy&;_;1{}G5OL%o>a*FPY7GX+V4higtS!s_IbUx(3+l}et3AOp=5OWXMRAX z{P=WqWJFCvgH69~{68=E_HZ&3UsXxTTK3C35$%Z_rkFkfkUmZ@ z@abN?diBJuN!e3FL*t?zf(h;q#Sk(H9BC-YP~e!<3xYyJ3knOvK72@fzqkEfjN-Z; z3=IxShdsQHhZj(28qz;7kei>M!Ed0ahmAl_tCYlnLUnw6Oo)zlI-8J?Fgecu_;LH> zWCBkp4-XIIAI$Ry4<0z%D!d&2stlXX&d$Eto6N+_{1atBV^%cm;=;?x>0s=l75mPe z{ey$V6fH$XoT2lTod?Sy&2Ti6E=Y8~ko=Mx`7+PNiUHcbNX}0EtxC^N^l} zrL~ak;X}`@arRP8ud9o*kJQglo6@C1N*;3<{S0z-9V$+;qGw=$teWP_cVV@%v{V-` zo0peIsPZ*0ukw3DO-)Tq%&7m3+nA6(AVPzK1$c`y^7Ca4WRXY=M0ZcmR1oIERheXq z-p%f0!IRng*KRx0)%Nqv)74IiP7xGAkUQsg)pT|1UbfsK^$3Rxygn`{E-r3t^o2lx zkhZq5d40GxP(3wwa0ZEii+NxWF&=;)~JqCcFwBuI9__n90W9pkQ4t-{P~ zZNJ3FBMp|%4pw{4)dMI5h`N>z&fdLyhw6U~V|MFLW+4;md;G&Z0qF2;EYvaLA@|03 zsd2XmD@2;0Aj!Ah*4Ea6fj#&s++vcD2Zs+rS63G^3zoy8_O?NdvjrqL*j^PCl~=qk z0Tx(VT0+EDyKKVTAR`l#@$cE5o;KpXpN~^N7%@h>wx>`fM zuY_DC=(a;ZNGRfS@f{)v|8YT45o-+U)W3;u<|%v*3;k)5XJ=>E7zzjW;X_1(qJn~g zqGEenrDRD(#S!eg@axL_e5(`@Zvqh)sAMiKdT@7eJL2Lf!qYBJPWb3(Q21RS%3!}@ zW5*^dtaPxj%V#G3!3kYoUx#b^UhF;7*Z-1{Vf?;#Zh6@S0=(93m+=1m0h=NyVT2+0 z`1r`EOh9_{X-XYSnPFi)(M%eSPELyp3vn;rKvpm{H6`J-?e6Ur@jP6EbvN&h8wi~L z8_Q;}vbt(e>uU46!JAKMVR`vJIl1rtQfELw0HLo4MDg&jYMK&M09`GuGf39vW@alZ zE3QR~2H(u&C85Dm>W8`js|>Z93#ubj=A-Q?qTMG@oouEmmseI6;wDb_79q7m9j$~F zoSxPddTYB!M=tF7G>YbK84nj%P^-}-#)3T`98_CsmVb?89$hLi=|40#|MS3I;9$bev z6s^~7p~TM51_wsnBGUn{^X-@V{=2$7KdG&)RZQX=XlarB@#cZBXF0$Uz(H`tV8sL+ z23kXi;01~3yVM(aYG23d>A5*W9GnP6(aX_LpeQISklu-yHJfOnA=$1Eu&)`j};q0nc0O6;)$s0N#tc?W!-_w{P*wQ`T2PZ z3k$$NH*VimRZ-b^TU?Zu=5Vy3W@WVr&yGXPVFHUs?t8)RgzSSfzqzpi{fK`Cp0u93A1};sT3mwU+^~aUejAkdRQ&b!+Ww_Fy=fV4QY} zQR#PpJs21m$+c>5Z?xsnDrMFaWz|lrz0kAN)sg1^`~LmA^Y(IzsPC7LAN>uOn3&H0 z{&hXP1M!{6YghF3YyarzEkB(qTiDxqX9q%N&CMA`NOq;CrQzXsN0+rKt%-RSInBDS zL2hB;Hh@0J1219E7Zw8UyZT(6t->762gW9S|WD8ZCo16PI7?K{O`^B~}W7f=y^78AvTsR58Jn;elF^3&D3yaP5 zmawvBNQeFE>1lmPhM>UvfQE`P%BlIytOrN*qDcgs`AYKeY9qfmhFPoZ)j;|R2Nx2F z1pFzZs92nr=V)*54%Z_x@bb^nsEGR?ih4z50Xp7yK3nZcJUJROfF2Ep zT!fUV(O4@BFstVd%QCL_wmPKb&nz0Mo0%0K`T|GU1(q1?N#rpNnec$3f6!zqbL7L63 zLWv6w4yK}_f;zmtwY3%js0BKzSZ1w-^>vT6{hbh8-4#pMn-1I#`663Z(n?QljBjudv1EjP7XGHD|`?| zuCB+0I#tkL?EU#JwJaZ;KG~mZ$9kBXk-_P>)Unte(GDdwSp5MF(vdG|s>;rIT`d&4 zErSLxe&{eDyCgu5pOcf5l47v>c~7h4v`Tw-ZEX#1E;yZogF{tKZ3>AnH(!m5dr*-2 z+zkbeJD@{A%24aj#QWzR0N9q7b4Aerlv}^7udCbn-T3cx&$v{x&TUt}Ky#eOtT)L6 z>OUM{2KtzXBqTaII=kbgZ)iFJ8bA#|JP`G{01SjH0igpB4DK=I$xGC8`jS(ef!fki z2S_b&V9QHNnjEvXg^U4-(8fQ$+h>Q$AQHo?;*^}hY-k!3G3g+Fr>hw|w#QVEs zH9nU$&?qM+PC+?AX=-VC(=tDoK$Di1rlzLm?B%ZkDrrdM3 zT=n$Gu2a|E-SncO@Z5;zccYr{egW?Ri|lSuJKP#ny`IV&Sai^lA8${M&1g^}ql{AP zd(S#QJ!aGW?l;nFF%D_j!(+fM`txUi$YenE=v0NK)0b-AL6F|f$u9x`Xl-YA-46>q zW?*8Pg0(r?9AjZ-E;4AGg+7LiEZO(mX@ZvJV1<$Zv-Gp3l^`x!T47<&ynW5N0wf^c zzw0@W>os+B1O)_+cV={6y!e*rLln5%W%Ibo_k6o5HI;(-b@<-e0CjNs^vujU3y^8h z7b51?*2d*oM*91e^z{{Rp5RIVx}BVy^b+}3D5?mU`?t?Ii@IrFXXiw@1%7PTHQeI0 zd-QFlhQzt6Zf2AMxetXjD=X`iMdB5dWNmG2J8SgdEcbg7a40bsk_e=@;UIBykBp82 z!gs8mdEg%$7B*99qho4Hi!d=WgD2ESA{i(s3;`I=3_MIuI|;-h0(A854sr9eCIBCO zeO6p_0@vP-jx{>ZMz6Cn4+AwgxH>xd(CX#qpI3fahY*2a0Q3OZ0M>30CRwQl0H8sq zQVArGjm=Eq2`&+l+w!mI%uJeYdT(!Uh$BBggrZ_!)gUu;6@rdSL5YbZ4W8=iqriDo z+Wo#Vdl1ge$qr>Vju8EyCM019Hh2LT1vYZ#Wy|K~rkbj%=gE#R^a_vw2Qn72v$L^? zSf?9(eSv)WE+BK_e=uR5Qty}p1?yz@cglp^cP2c{Kq%mtkCfpmv15#uAEz+Kvgn_y zsZ|WE78e$d3=OrU_mW9?c$`6zd`k5ZfE46}oSfC697Q-0BByh20L1|`9T^(~OgZ)Y zw}F&YmY`2FC@hh6i z+w1!E4u{<5{CFEc6wrYtof(ytqy7CQUF%`%Z*h&nBVZfhNPPbMxdf$M|CTte-qnz* zx;m@wcU;Qhd<`~Ob7+6eOiVPjv{>|N%Aw;-O-+Sv8kQ6&rDRtjoeRB^gK>6G!1C$P zyhEn>{g||?84g%3r2rgBsu`T%F2ciW8q>3!XHj{EfzB0;zd&2Bz;M_3Bc510}dwc45*$f$thpohmqL*?bI zg7a0XnG_eN30?Dx7o7HUO*tCN_E2do02@Buk*LWLQR^}L@w?gvh zt%j=VoRLLQQPJh!qZVOhZS98=U(?c{;Pj-3{)3DHML0b48twUvNl!i!@j6|OHCWiV zr^|Zs?`roS0N^M2qNj5=fb#+*U7nkZq$lt>8qt8>WNWHwSBEqVxZi8M`nv%rJYczY zhSCW?Jax_~2C6PQyKUay-lqB*93Cxq#r`Mh7MUS&-+uap?{f`Rpce$5;hHxD?7bN! zqqEvR%QZMObj{?x+q6?5kYf8OuF@|rtxO<1+Dci)%Rd|%5z(%0G?o|(N+@H~0dIB)EIfqk+qY=I=iAnNy4zp-{kuC9xN_NpHVVR! zbrB>5?vw3Gh##IfIHT^Qw1gqG+_;lT#;1W98H*6nK#y73!3Vf;at2@1EThE+jiz0M zPznQ+YtfuPKWb@dq2}cLRMZZ^3KYn~{Jj5qn0GZSf$dbKja{l1lnXbY_JmOFRw;o3 z0}f>^do`ybPjd#X#^+0Yy|>kQKY4|+^=_E99n|(8Z*D((`m{;(ft`Z{bQ#a6K6Z?c zp8}^qgFN0GQ)DL0$;_M+`P%h^d1_d}Ilt2=9p4z&+xwEW5gX!yC!5B~(vm>cT@^ozN#SKK|_D%!yR9c{)2kww}1ZVFyS&*c7N5 z@IW_EQBiN)fG>bk=P>>C84d*f)-)|7C7d{eW4J>AsSx+4+mV!#AZa`jau?f8O-~<` zUn%7m5FmMvyZ`6U+P*%dd}N_Z|H}kcUJMB1L&M52hoa_QJ*nN^0__YEDjJ&1u*4m@ zHwAfl!D07zlGa!;eQ$dza&uSkT0`XQ^ej6{Q4K&ifLih$AT=Cs8X6j0v{K6vMm9FK z;B69lUca+M%wSy~Es?9<%+&U4#`5wc>amX|DhEU`?1ZzE)9V%%Y648V z-wiXp$)Hlzj+)JR*a1ZXd1dq%Kw=XohnGlW*J?cgJO~?o4UJex4xc|~W@Whm+XWpN zs0$$fB!EtnpATXMC}i1Iu@!S8#T=iezhI^T6SB9zuM#&51q22yFlq)Ya5lu_$Z%bb()e`t&K_ z(Z|BV_37!r6$XZ=2##?;Cjh5Eds}Vlbi3-eoVuRCTyuN2 z0-RJY+yX)Nt!mw!w;1>Uv^y8~{^X4mUFt!qTV@^mf)DD>2Jo^s5Kv=0Q=?K+A|Bt5 zpFui0!as204Qo0&JRBY#1~3OTBta zqRTTZ7_Zx!sXYO1zuNPNQP`Xk?*pqr!`8-zfMJuLt#;=0%T4S;nzxhVZx7c%2UhAC%;J)3yGgAw#oeoxf*{Pio z#0gIoalde%}Z#mCjCF|;k3#hT92+uR4l^eTTb(IZB0Ke z9ZW(pWrEXX@QN3+{ZJz@25vNK#i7fFqDY|ML#Gr&Yc3X#L3w9@B6Ig686^rOKI08E z1i@7c8M_hMIaaCRkDpLlK~J&Qzfs8Gr*`?rNTRmlbAg-t?UZk8@4StWKp=t&aeoE0=8Fv_B3**hwLjgWVu(_CyQRB- zP9^4NVv|2?0)=0%C%=X*EkrE#psBI8;W~Vc5Uq5WG{^&WP@n2qm zFtqoJX1Qh71xGFpO{8DFz=B&~LC15rceFVY7IyntxOE?rr@d__Jc11$ zQ*`&YuZ=m@vl4d=hn;Eu;B+7$hZH>D2sN&kaH;QJ?Y<7SU-M^giz{T`N;ra-OND1b-N{Aa#q0IA1+}`r z`vb0a%z5pO1--skI4OV#Moh$7w-br{yI}u3*l>52=eSNosf3+wWi5`~1BI$3V##6IkF zl0jUgg<-N?R>4ef*{ptMaVzQ4G8Pvs@3{}GV~;&r;ug)TN_(kdk*m2;;e~sT{o*Ia z-=TI|TJNQ-nVS21t*u43Zi%4!e+druIk9?Ga!NE0$s4LjOEHw`sZRUq0Y@ycRIwL$ z^msBVqwMr|rn3gzQkOi6o6M2JIQkVUq(g#ye5cU{CheW=#4eR=`5O$h*pyk5G7KU9 zEsH^cM=ps)7AQG$?L!R4bp%*Ht4WA4q|%3D*w7myOHogCPKu8vEl1lmeSXjMeotZfA1eXLMXA}wGtAfZcm}iohWC_I=Nm^ zbGr=9)WWZSX=@X_yi7hi9KU@j+G~?AkNCsL{evgBCvG5$?>9jtfs|5rA)cKc;mZ~> z)W9X9SA&}rxv`4MO94S77-2{b?KXsXve!o~*6{kl;a zY`x4Z4l=fYB0ak}4-6DOI-+)R3{_P-Cnibp`RnYkJBvX}i=NgXEzP#M`97Jibi8M~ zzvCmXqmyJy%kJAij|aq3tIOCGCF673dg=znJu>!Lh=9JN(ta2)V$Z0|wLr?=x3_I{ zFCFUZ`#rd?uCG6Sb}(yZ<{cJ>($qD4sQro_LGQ%(k)Pj*&ESgrNlD{}&IlaxTSqVUeY{~N<4AmFl{h7aVZJF9bJ>aFe$vF&wSp?RR>o+*cNlYl`qTAosjK!rwd zM*PX+Da7u3+(lG$gc1?+bEzQ2U2Tg{B8Fz$ilt!gVmkD2& zpk!y4-n@yh=MeS|&R8_L{eIEH0)eZeG-qj;nwRM;#3CQj_nXhXq#|at;EV8^*N5XL zYxhK^mDEOL)JBlAU+H2#!*Q5|K>GAW-@tgWq429oLSBAiZoZt=2gct zT~_~o#fV4pPL2s1Yp*i0D!e;z5$L|hq28lf<)T}X>~D;0{;uMgYnL^JQQd#vC#IOs zp3}(i{0BZqq*Zf! zAMbjx(X)?-dck)Mew0)Y6~@v z0ykZoU-6x)pNgDvd~~$B9;Hp^g6JI@C)efeA}$r_`H^);c5aM5|9da3+H5Qe3Ii!c zEn7XSQl=13nrHeI6qlIjC4+E765dk1A`s7bAfqDp;o*A$`}Z}Kx)%fD8e`Hr=id@} z%}=&IRCVu+Yyzad^|7O?`wl{aj8q>p&?-HHlZgq3_HjyQN8Ikl+?y?mBn&wC{Y4*(;{zT@9?xPJ&Sho`;>ER->a+o=TxK0daMVak;DVjkc~#lQxP> z-cB4nBG`crL*`cJ*TNU&l}Y!JW6{*DoJvt9_tAo;9@bC&TLy6SMJgQ2r*qd>^&lOY z@f+jiCRqB7NtnB|-QJstHL2fRKo7?WszID5o zdtE{INQ{jffq5b(F~G)nxoG*1VHmiWYNz*Fxn&hZ#T!IoQIF_|h%;VDnUF?r;wj0h z8?Z7y8%l`U^j=ftL`o2+7BNPQ_xIa#m%5H&@3lx^Km9N*zZrYRfa9XR%H%ZO9@yH5 z1>T3_{e4UGHqC>#{a?Iw2}tcHZ*k_^c8tqU*;~(iWL6`{BsPrl#$Dvg9f-M?DDD^_ z79^%uxsuer7`EO;Ld}Gg+bcrLJR7Z~)y~mI5Xu%+C}R~k)#L4Hy=_sfV|l@ViJJ~{ zTu!Yh0Bw@-8IiZlIop8UGi@68KwB{s=+2O;*8zBVcQyHEzKw9bf z6LS4s?aRqdfoVLJ-*{imzj)qzoT2``$B^%ug{^r&dY95=&SK=I^dN6k0dsW2&3AWh zJQ->z(TPa-W?&nN9TbTa=w$z5IHIjtvSx`(3OI@(Ih$^|Wvsi^T85oOt_&l`Pxjw4 zg7gP5DcMiN=WriVVzdqH@gZ-%8U>nm;OLOf4;4>YOhpWpR>z1ngFS1`mZ{s5{cCvK zI<3q~oNQ3f57QEHff4z>qDIE7OiA|;OBQC$i*IXT)Ek2noKKbSgveLO*cQx)q2QLi z6ljU#)OAMo>z0+>x`!rikM6l6_qXcj@IU+!?S`-r!G9MXCa=~=PH6)aQg)0@4x?i= ztOSE(@DSh8n9%#ujeGeiQ2l5a#L$(4qIjp}qPl4PlF87M`QyS)eVdM9AMl5WTM|uysrN7X3|*FzKH{`bIlbQ7T)u z6*25QJbBNbKOPz)lKJ*DT*L!!WeE)-3N0yz@a5=mF2cSlbuOc$BXdyYnQ;9-Y?9Hw zarfga*(0if6yr8TQ*4#3Fg;_<69+1Ub>_)Pvww@59s zK6c(RzfE3rxStWL@yEnND)fNTx-fP7biYjcryql!5&%n2fnM-a=Jq(PzPOI$FIUDQ zS`+oL&t~3UF}|F#73Iip0mD8FgCBm4P7~Omno$37S>&`zAa7lD%n=ZHBro4;H}vZl zUT}zc&G#oK3`O}Q9{WpZug}d7RwGKv5}bE*Gc>pCUOMRH{jld`+qD%(`QjGT+jUS? z(nP}R@j9n3x%S7@`KF-TRcs^zp?PXr5(*`GvgTxNk64p~>NAR*pA2S5gAfuwxMX0jKe=s@sP8E+j7WP->sRxZ{t48~E z`Agp$Mu}*)WZ_}SuQ=r9*|B+bDr>Yb_U0DZbA?$B_mbwjXWZQD%gYzLjX9Sw0h5yr zZEctGa;#=%la^NJ=x8esAI5TW%5H8#SAAl(kjLuj*~i3`Mmrx1u&&UXT8)+#+jN;D zEz+At%h~l%zQQcuAUcg9RwX>PVD3Ig6gw{lfzsz;!P{u)=x~4_(%nlRMxib0q@3(T zYRmrJiy|-y+4ajEmB2$AsnNzlFz?Kq=L@F{9BqaVdf8WK$5pi?lZ*M0?xRvGQbq|lAG^xBeQ1uiLrt{4DgXNDarA!(y zhxhabiJtMmJzO*tfLMD=))1ylXl~JL} ze~0K|`xsR-t7_GImZ)rn;%A|tAn|eSGAQV*sK~3x$N+z1?oWB0m$zK^0hp)r^4<>) z>=Qg|7d$&N=imrdtjL)ObhTYCy?y%~;hqGb^*(Uz$BgCRe+wta2ERz~`0PnwZfs-+mPv zTzu{dtF*Lx6BFKd$u_{O*ZUr4&-I1N(Y(6)&bxPi85y6Wu@Ch2%E;TK<}!F2!ePC< zOa6uQkx0X{2)4f`w{!n=_0$QCy}8{8bcOtB7Jmb|z+v}L&T->K85Lu&x4l+*pQjUg zKuc;R)t~oK7MA=0LkEUzvd$i1A{nf=%6v?qT}x<)xy9IelE4R7wGg+5(E-{GNk=&zREpV=!+OS1yy|crIX>WA#RsG4Pt5Nf#UsYj69^#jB&Aauew!OlykDUU9GA_eJPi4vbH< zA-}}c(NweX26Xf8`8MZOlo$>yADWr?Qy@`!qh1)IDABW0Y4CiWm5sr8j}vd@<7;)|-DemPDB6?IXkKF;c|Mb}zf0E5oT5d+6$4T(ulZCUGp1OkSU-iFv zOvBm_H%Y2O|24$EE}qAFzY)JVJTd};Yu!8q|`?FlMDKgTcewas+rm`>Bf`2>r7%0*3&?XyMMbB=V zpI(OGj09@O)ORyIXUxa4Bng(1Z#D6LX{=^(Uol#PRPT#BOU0Qon5MuM4KI+2K~ZZj zzIHzLhJb<1dBn4JG%_}}3IxBw!9g(n{@?k6K{w@S3$Q$cWsXcZ4|K9Dhs{d{#hUwrcP3!%9RkC7` zq3>ks?9qI|9ImR)pr%pWug)}*U6iZpeVgi|42d(=g6!l3D+o4v;1&a^8Eid)65u-V zK}Y=dI*_-u-T8NQ(g>pbOoR7pFgd%gmKwK@j$OabPfyETn?a_x9xtKf<#mIzP9PQd z?j0W5$Ec|N%ah-IDWam>-1iY8;MIrq)`!+rK%mA=Hl794e_-5)2L~NtUIJlfw+osD zqz%wo!8^F<4Pz?qAiZ3B{Na1>NtlJhgo-3sp1=|C51c%3Bz%u2%;69GgL_>o^7r_J zz{SH;QC4;U1s;N`twI07t*H^e}+Ff=rTIUYyHeX!z9 zbvCi+R9;)6z`oiJaz?h2P zEXv>XaLtuJdGq7q;c z!${J(VDXK|Wm12YB@Bl`89zFyM*&GO;FvZc<)&_ny67Ua!Up6@@2^_BF=6#Pqze7A= zH~I+@$GS0C9j?Gap$4Y-z-IYGo_X0s8Pi9iFs-Fm>k8hh^^FbC4Nj))8bOJmN1&sj z)=7f8{#7}n0o=W?>8MR$hopmyXWmPSfKS^7V=NpNm<@?fOk~1ECnY0;Exv5Q5%oG8 zcxK}z4iW?y0PyiY!Dtz5nWD(q68O>}62Z}N0|A1;;_-6ZCD>5GDZ6)a(*B#BpFjTU zD=2!ptZtxC!`n!CfYCWP2>a^ki)`*S9q_9a*3R(M}PLl7fN=Opt&sb-oxOirNHY7@)a>99CCfk8ndazKFj`r+yZb~Uz>026v5#k zDVb4F5K8+eKgp@ULITAYO~Hyfz*&r%jOG)b6HDoAcb$zzK4r zd;{jbfD`b#cdvm8rT~B3#>Qsq@ndvwr65x3z`_QB1_CGun}t$a;G+x;3xi=Q2}w!t zliJSKX(=nSyKD@@(bG^@pRI8T@!5f72-fmE`%{<;h+)+eF#3ru^op00v#Y1aruHUG zjKIX&{{H@-DHvujO0QhS!b9_~MZio7Odi$z^m^^r*vw=X(ePH{{F~CBo^|IZsY`?j zekOXv#v3}e!^|T_6wA@Q7Q9L6C%3Ba5Lle*F_y{zRJ0A7B~!6-cw|;=E&KI&-VwJ7 zBt;UEYA@F>3!jysQ_9Pq+co8b@z>Ew$0=Qx6Xld)+_X6lv;fWhA z_PfAXMnFJN7in2yqzXc9OpJ){)dgI<-g!MLA_6B_$H2g#k1Gd6+spkfHYg0R91xVx z?0$cDFb4lR=%E`M8xj%{K43%(Az}k_A&0T5W7zuEwU-3OKtc7Dl9IBSt@D^~4n*{S zVUwZe;sPtt!gW|4Z)v%@@;C+5z*vA{Fqni^l)<@heR}2Ox_|uwPp8#69-Kj#@9OLA z4gb%6nlSXBRkk^1M{A8}Jhb?POU58@dODsW21;Q<3{-oI1{o|$f=7>f zmmOic)6CAU(WDcPln`q63=~>0!&{r0R(Kqku~~>y`HTGlBNy20zt_}&G0q9pciC80 zfOVI@|6Nr%EjAeV!NFHB+@64Er6ZE^#;rS$I&8O(pTGdq#Q6By(h`@=B$v>}OG@*4WU358 z#b+Uy7)>(tAzk??Uh*@E^NFUfigX6w5Pl4OPZ@+Zq8PpxB?uE@25OBNm|W?;T{wMu z<5_2NnYJ0l1Ix^x=CKvBN)Wy(D&U9(sk@4n0az{v0_BqtF#7B0`1B3*Ro#b>@c#SDHlb93`UkZ6NV7TQm+zVI7jMoB(qc; z4>r}R4oIaB1+?m{B}g4o#j!3vO6hYWwb?`UVU3(L* z@t3+fSiKbEIZPSygZCcxR@2PCiNuazS2I0Jky-gVBppwgc8j98chGVjKl{Ep+9(Qc zpeFx&-k>ze_YIEY7leDAk5jz%J0EZL4b%4WV|*Uw%wA&X&d*opbRlT4O< z^DR~2*CeigsvFgd#GDBA!oZs$MLE0*Hz<(|>q~@DvV_Sh-K|V2W;e)4%xQv#h|{=! z-+OUe!r@dNE4NA;T>e;u#jWgm3ysd9bH%qZH?`KJP=N~);gl|9Xcdj8+KmQALIpMJ4*K439#M6MXc#QY+W z$tUjD4%T$Ozm&d*hm_8JHPon8m_>{6aqMUA;i0(i#Q<%N_PzTqe6-6ce+sZ+nnCW{ z&2P*#B!j~?>_|4+*h1FFrbnJg6?HRo6VDY#qi<_Vb2ibBMajt?L1) z4_yUXm21l?8a$=|6ce6K4e6f+LLOK*~ELM=8sJ5ETj zf}4qpo?szw7-f5S>(Xk7j7n_Z2^ag>udaN9bCu#Ne^!hTUK|>t)%0!NWc>j8V0QUi zO}Z&jTAGdQ{5D(4l*@`Pj@FcIfoExHZGio}ttH!j4L4^rQBW zDN?j^*_yd-hP+*chW^V7;Gnh|h=j(7`}rG<;%pifI+*|!I;*$b@q%5Y+OkfbBwzEM zCu3&jq*L|xH`(FP(b|NEvE&t!8QC`2{Y0l$8)=1KtMek}HpN7ZBYo7n>WC9Yih(fa zZlm4Oa`fmJ4hLt*9qgXsTrEOk z;*ZIN?W@H{`w8m{s0bjjK9TVHC@QQtRLAT~HFAHBb~*JT6Y)(f-ktyaxx9?SoAVpK zg$228t@=p6VR6Q{q2Ini)%*=>z_!&#JW}K4`KzUwl=8%1q_ZL^3B$Zs7XxG6&d8CD z+ITsP1ZZXfFCRAV%bj~_M4%D6o0JnB6`n-;yD7PPfR*f>`+Rpl#- z1P+)Qka!2< zIWL<7rvtH23>Rl=-@j0~BIRsTc(zJQEy)B5;Nf(2OUAPkUiJ^YU5TWR8qCK_fU_H5 z)0Y$VZ8(!h73-*W0!5*!r5V%8>bIb;z8Z3!8Yf~@drKLKOpPAVW-ErG-#I^DySOO2 zK31Gs$@8bUQT=$6cczuLzF?~!i%7Gm{%8QVFg*yj*+d$hQbPL+Vt(P){#CUu42(C3 zh0oJqprMGNBIj!)%a-lNL;tl5Yd;c6+Swv~WrK~#7ZPqy7QserJb&H@PTpjZ9yqVz zq{wG}7;jIfHGVe+W@o46L{HeT2?ys< zxwsvo|AjKU@(WJo7g$b?!M$DQnFft;`ePCjHtXsTP13UYmy(YNXXaBmp9lA!Q4rKq z-M{B&UX3demGGwN$$VK!0?oe=v+pL@q#p$DA}!e0vuK3uLLO~vSPgtPW@bz+(GC%K z<>)_!7KZ45Spk=ojgP+_74=8w9#Wl~$C8l=q=fbSub+9j?r?G2wBlI4*OryXMrdwN zJ;t_H0iOnpt1L^TsWEj%Y}VI57UUcL@YEqN5axD9lvK1gc6@|bY{1je$Hd6>IT|HZ znYqZyk})rTbAVZr6V57<*>!ZN#SV1l$Kw+f-k-G8)P(N7-=P3&Mp=H|;#IvAk z_d*v>H?;Wg;m@DTQc>NFc!Z7c zVkLUE^2FJ_F0ZX^GMkQ@HjAg5&tK`sLaV?&=1X9p6@UHuD|>%9u3tsHExS)zcJrzB zBnbKItgJ7fGX>Akr>*U8pkVo45hH-yF88R*Szg9`thKaq3qh^$r4FBPB{knFyXcFK z-i#}jrlloMP^-ttNZdTA|Ln?B2RAV+7?@<`dm0Cakk9cdUhcgU$0bGHRCD5b1mU_=^XdB#te{^wyQ#Z8l zh>&4sxt#y;#^A<{lZXcnl$;062dfCfoI>x$l0Obe{b1SBrq_fXRpMl#+iOhoC1AMuk#n<*FtYf^1wV>Yv#gYUwy4JE2D+1 zZaH#)Kf=yjq7O^M+MY*$_m8(Bl|n6h9g5Ki8lSkZrySqw%A#C`pFifSmX<=|;{z)y z#&j?U`8Lq-aW) z_muU+r5xbBE%8v_7_H6W5e7p}az{71jg`VDEyl|#!JH3*@^GpPx$o<0t$|uNNDIqxq&DN3kyP1^i}_} zv0|KW<##H-2_7Bh!l#<#>F#{-^V@TEZEp*|1h0XcR~=^TRC|BP85Ii}uE@*g{f>^8 z?GYNh+!Gd7?Q)6P&C5jx`zkB;ga-8q8ZR<>7SD7v=PqwPd`SLGiX|je^@YktT48-} zmsM`9AmW0J!f?4Kai}*%LrukTbZF6m4^iUr$B@7~1o!wsG9?^amc4W>0pQ3@QpT|ho zN+T6aYssS77|7rfj`JevZwy9-%*uG&aLhO3L0`>^7~c1{0|URY>A^V~S=oCRm$*wN zl4SGA&1Fkog~p6q{JG`1GQo#9CRtNjDU;ma`}y)ZA0|65u^i13Ss&hw>SiA;Z{WXE zQPQDZ;%D>T?NO*@a!)RU&WqW)yhsTQJUa8Knxw5fF?^DLeekJ7A*}CyzR#hT&b;%F z1z#*Dj{4Pl0wK~wPbE`^@i0J}bJ~%>{MH!llGyPy z($ft(P23@2{iK(3{ugb#9OU*nYiMOVmb5mTtFjU=ZbM;!6oG$%wB%$dt5S&vQzWd9KW&POt3M zWj|T_Zq_t#IkDY0KgV*8c7^au-H?Zi}7_9!X>RIu;9 zKZB6R$EVu>!4%WeF@O913%k4%%fb2V>L|9ktus8_H=KBgb`{6PnJbp=eaWffKyCa9 z^J;DvBeu+bBZ_hmRc2T3a!hVOKnk1P*EFpOcK$lG%l(zy9$ql{hZ(xM)wq)q%xj4BC&xgM1UEVjBoWXf3InV7_sx7m0yS(4YM zosVcwim96}XF9Dy-C!hnSWr=Zd<$((XyaDtX_rpb-JHxIh7Do!)j|;wNVucG=bH4A z-qzDYoSyzYn%>yJUu>IUp+BYP;K(f>R#x2gZF%=Hteh}V-rgvNFe2wEuJc2)11txO z1xwfCUnIO=G*lxATsY{1#DdO7#hi&{VL9_N%9l+;%Q5FFc;U`Wlxm z{qHEYKD<|gmzVd(o1iUgx!wGUiIk&V16>VXpc2?_-Qg4Txd2i1F??tR7#U3O=19H# zL}-`VibWe6qe2iZ^tv*L#zjrlM_$gPL5(ix&)%Z^$OxO6S#O>F%S@ml!tZ)Fuin4U zsB62wH324GD4QZdL8pmnqdymBocoA}W}UMiP+Q5xps{uyw*8c*q4Gyd#q~G-^SL~7 zH@}(%yIDDu@?tX}cQmT8IPaB#eCLmv$#J@Z(exXCe+B*iFr@w8Ee6sm!$qg3E;nuq zY_1;-j-`xzGe7-ij(9TLd$+Nppg@j^iNwbE;Pvz1(uB#J%fG~Vc|~M=e;_L@;vxS9 z1j^UR$(NQOyI%IGv!Wq3e*Hql#%5w+kvBCBtny+V8)*_VkTR|L_DxKZy0lz%z8oN` z*~UhAO%2oEBdhH}=Go-_1m_3xzha^nf0T0x-m&^^o2D zd1vZ%=m@^ZDUw^hOzT-(9vjY#jXh}mr@wJCEnreRaA>fZu4iB}a8g>rVXs|T8QRj% z=;<}3rOG~*Pv-~K!orM#7fQ6Tc1yOi+kX#MSUEEFGKirax0$vI(=OVhMX9mkZ4+8A zQCJl8WEc5NFcQL-u>9rV;y!J`Wk6=r29wM7zq5DQADhdCmfN4s+!AE7!w5q05y zVm~k@8vo_$ndL@sgEvYOm_bIGD16#Nd3NFnc`U+5S%-O6^c%LQadqRK_=|M_LtDv) ztztnIgRx6rzbxz&*u*(R(^E1Ko?VhDUY=Yb%vky~*HL z7iuT`pUws;DY8os?OG)g+)p$J^j4#L$g%>{GnTHMO!@CLxlf<_SkQ`F2#d#KDMkhF zvjo4e<~mE`PD!@x;`imWWWk!APLOc~jLHTR*AE|xo}S6Ox!NvD=y-X3=1bBdVp|y- zj?2p@|37@abySsI^fh{DBqT&Yx}{S=8jWGv@RwtH7`0e~MRy+Mg z&%elNQ@bp~Pc4R$IMhf4)`J?y&8R2BU2uP>(#@>8IQ&JvIb>{I) zDZQoR`kZhdv&E&urNA>{l7Oum`D;x5zfj5bVOywwpNcMUhPH7lf5?%NX9_JT!1gZb z+4Q&(F8jm8_5CpCY>tJ0Z^ub@l(bf~n>g>= zVIrb@78^F6mt34u|F$-0fDXip1qmh~s+nZ~V`nP9is zo#!O3h1BDvrpCvG0fQ2+RxIL&s&v~lsC@P=%F>q;5m`VwjqP71eHVI+ zcK@o9(7_mbz&q-EQ2VCqjiI%{2Ls*8z2Ci4T}=9KJl@jKjMKl=u3px+AGKg&h>Oc} z+7~OEL5E=3i1qXo#m5)PrOOl*qNvdd;Pbg!)Y)iNRz4-fDLsu#U%d3Hv(_Raew30K zN+>RtXZ~DlW&Q>W|EA4uqd8Z}Ly84*GT;BLERF94oST{uVz z2gkG5uF~>)PfnBLT=F*#>Pd}|y7S(sk55lJuTfH<%#g2|I)`=MUL|5(dlf%{2+e9C z4>%N&f1La^RYpU7$UsYmd1tA;_`?sbK{rU&?F~sx-61E}My;nUe5$|Q(BYfE-7}&6 zrG{!JL>z}X7sAL^WHGTluLA2Cz8%l=tEH>yKy~cTm+09w4>UG5Cs!$o>^dZ)WitXg z^wdjoe^szGOfqDrn zM9rPrVXYI4@X%aa3qe8MU5c|^Nyov4g|J*4G?Zlu<<7uCf=*c)8c;p1;G+`;!vX_! z9UQofO~#QB2ma=#dobSz;fcVX4urkJoq2D$(#jLH^|08mi;BxCr;IWqw&l&cry;!r$8AC{A2zL+cL)hPK^F4&ATiYsYS^ySTT{8km5)K;E=c zfzsIb^4TY8o6@F$F7ZzxhzvO3pGci9S$H0wSRy74L4^NPNQY#zw6}doyn65e9Q8)U zMWZlYUOCu`f}5SrKwAM5O`#OajKT{)dH|d0x;Wh3om5R+(tl2N?m_&6K^%-Jr?#Jd9t&6)g7#Ii{7V_5hP6auo;l~&fLJp1$bd1D^9;vjWQYdpV z32M_{wNC*73OmP}M&}a?6f9jErvb+AhDzSPXQo8d4*$_JLxYrdOKOnUVZQr*!@vl? z>Zr-?#TOe4Gr)YdZVvZQw%pxX9~WhQCTFm8)gyE9z-#c7|4gFAnE{v-s?12fb68lm z=>lG*#f$~@u8%uo5X{X3K1MRV!{4zbse~QcB>_Tz+?@|gW@n$9JlzbwoH$@%8Hl~w z`zzqp$z{!>3~jvL8g{5M{j^Z6E#uCJ_K=$T4)Ifg(i=TXgJz~Pc0Ll01#9wNLorPU zX{%j(%GJh|S$zA6b*s=ZSJsH-H;Qk0F1BdKdC45S!OdYQ9{q57cbVH4okqtrTvjHi zq~Y3J|ACyZSuMwni#oTw!p_p!d3`vgIxr$%g$Hn>Os|hgU*q6VCBn6%j*Ss=uzU9p zGpW*_@9m%O?`v`QAC;CO*)GxBSTt&Uw&AEud-Y~6d&bA%a6Ws->_~CLKOkeNt*tCk z-G^q$2?NU9($Z|;<%vto9jB)1)KoxMl!pkx!Io5$jq25__W_qf8dpOwzN`wXlkHl01&xp6jP@qAxU@i`dy&_Hr}JiO0pJaE$`4 zl$=9V6m1Y$!u1hxu>#t~Czwt}x@49t zE2!#im*z$R z>8M|P*M>#e9?VK610&`eTamO>{gsxrbN51luf^?T=Zkk08|&L&CaBWfqmb^rY0MNT z2ML172=_OEK78`VyB>TNGFTX6Y@aMAk{u)@3Rm~@)lj%;XB1aCnD@MBUEW6hsewGUA^U|<2 zjQ_=!NrNncmks%X{a0*%m^GCZw}|Z3?e0txyWDR@oL(G+&~|*Yds!@G#YlhDbqPMQ zKxC>Nw2RVG+PlYmm+C!S5!P)aAw`XK+7zDqPquB-Ci7@G2oOg>lRksF3d2vZu*>gl z7dC~hSwFBZ(SaO`0|cI-AXHNAHlCQi=(XP8^Jb}7AJ0>?g8hB9iVYYQ3}=}22h<~r zzJJA$G(aJTgi}OL*hD7K8~-p6N5-VU1g4&_eyd{>9y58b4g2^Ra3t%M%73mJ z3zR`hLM^s3w4GeqGR;DA4*O^M+f#<0;FsP+GQo^U+keAU&xlIEHVD&N8U%;X<{54j0g8@hO^EsYNaaDaaJzqkb_jd+lDI% zGsn1DLc>)JTam;>3b`fP$4>tR_>XuQ*rCjtl*l4v0JeY=#l{i-*&(D}rM#%7Afrzv zQ?-2|j)E*qb^w22^J~DO6n%ORh7|!Bh9;%3%uMw!EbMzVdM$2D!-rpY*)>%CC6_s> znmk6EG-*fnqCH!78?dQqE0U7QHMT2<#)I{|j`4$nBuALhR*40rKtdwWW_JvhrsM@U+@OpGG;=iig_5ka0vNS`h2&%{3k zm%G%rFqF)g;b4c!P`P7cTlKoJ1h@QdHX8oGYd!J>h8zf6?CL`lPXkq*M{bK>wJBLaitE&4YJD^DaoSuFm>+q}m|hRxy2^Nk~W{Vu)_- z#(%!(=%^zgESWjd5j2U+kZ~@musciVhkJZT5D|xK|NiHXZk|lmFsizj{&cICQtZxR zD)(z9rt_C1-@`@9F89SPe{ZsAQizy=jR$!-^ziP?{sLH$96?i(hJG4v7A@7z4fTI_@FZBon1L}<0W&NelLYX6@Z0V^9D&$oS~ zulxfZQ&SK{SvFJ&h>jV=J5}-rco-lGL)dWtXe9Ug6;FS zIPBdcff5gw{JyW-i;Q^ew}UbUi;>GFPYpu8|5h0XIVezp784l(Hp`cS4jS~rFq1YC zc}OOXqv*;0PHZ+bgACbk6^1JJC~fNt%P^CHU;9T|Bb|D(hDB+5bVXVS+0fL~NPMTG2W^5KzYLN}Lg&(;(%_o?_q%cL^rsG%9k6B+&tdnk!SPzesDi-BZ z#15y{)~P`A)gqABcZQMyqv6)#@hbsxvZe z>va6x>iBR&YHTd|;sq|^iY8+MGW>AlciC@hmTOrc>OAi6PHb-t?XDfQUJb;Dd0cHW zLvi$cB!eUO_QpVSykoUvdZl+Pnd1^fZ=KCE;E>lqiULXB8ih?!C)hb?{=h>3S&oW{ znX5fav7F(dFFU2hk7nz{3Byu=gkmZX^&>_?6yeDNS^L$#!u3|0PzXnwi^F3IQ8fNZ z?Y!WCRd&3_m$sasBB~>Q7@J7RhLC4UxTpJWy;G0tWQK<)r$Y81U_?SeX>D~rTs)Y= zIy(9n9UXS#E(PF)FGA2xE@kB;BuaiIHJi$3YLC2jec0&?0{(FOEX}K1tK~btvD|Y4 z6wJ;YntuO<#u=$o*!btIvZ2q%kEARt^A2ttoLA?Qlc<0Havc6?g696XS+G6s z>C+n2gBAKaGT5HtYlMl!Al%`{rb(+6n9O{;yug2l9!oK`?z7B{r;X@ z{C7|L({*+&A~Rxu;b?Pw(X*A8kLt)|!{0%@l~x*`KCps((AG#&fBTc~XcgHH}HfT9;N;6$sjT;HR||&RvP|t}#2~Hg5=PiN`hn z?d>P$qwgp|`+bow)M#hNoCO~*iu(IOTJQxoBJujDC64lZ9QWNm7!1u&rl!{FboZ{s zxU1d{tk!6J{Fv%Hu=gvu`7^(!z}p)Cc-OMrCJ50k{q+YQ?NsowJNjFj(F?Au7GPA` z+}H>t6pXmYPi$tGX&!@x1-Ba`#E>K$?6c9106ZcA?Ghy?7pF%MCcp50gn^{eG0B$v z`tq=jdNB2(%bi3 zb(&=uPIk8jlfO(GU3^lbxbou3%;eKD&0ZSRx&>1B>NUuMvx);j?8g5Bo0QBP2%(gL zpzU&xr?_F^6u+TKM@&Xg7xP00X8h;7lE*T zzmwkLp&$sy3Nd1ZQB#D8P~k>&W5)^!Racv-F#Sltb&{@X%+<_MGp8l^dD`atRf7>H zOoXCBL8J}yg(wBNuER)xI8p!^CN5?#qLpEJluQELJ2AT*!>CUx5%@@Fu=;608haIBce`h%Xvd+K(LCa0&$BETOWA{Y%7g zp~^8B%Vs~hS~!k{U>Ic_QSxzLh(tOl2_2gqUiw0?@C`-YB$Bl|9wV`1r5y3<4~#*u zAUI_3ROauxV8baS$MrCGE)l`Qkx9l;%^?L#E`_m5HI2ofhj)g)D|~-?vDJ~2Q^Ms3 z$_$>@ArRX3?{)*IgvMj|4WFR!ui-j{6x)Zs8b-bl!J?8J?=eM$GtVsHGOu1fsLTo- zsWdbh!A-IE^JSB_CE?@wv1~QW{V}l!hRnTiu)2_JY0Fq!EtJ`oBfJ7Xh!8nE`)dV9 zBo$qN-_JA$sNow2TtWk_312MHd|DL4b{tZV^VPAn3&chO>?(AF$Uo#CEwk)!(S-3a znS4T%rSN%D^Dxh4gna4HtT?0Oa`mk$PRi!y-@<1XEtA;RByjo{6^|!)xn8~|xgP$q z%6u}&$cT7A4`;%FW{`=X5EVs%0~=UjPRHI`!?o80X;I5GchcK9@A5RJghdwN>jfxV zU{Ix$)>VVgWqea%4n#=P;rtnx;-5@2u@qdya62e5&>Q$X#5Q&5Zmd7?TO~~->W)(b zjO^y_a}sZ2)572IaJ(3j7DaWu?foWT{fsI1g1DOA+dj9_e%!Xri_7`ook`8a@%Y3{ zUf!}AeFhMPeX!B?pw?X$a0o6r#BgzFsxXV?mrSUYXa$hA^3}nc)&2XPUy8W4@wD*_ za;cys*<-|gcKAc)Jk{qX_~=;Coa)_D>~ehE8|kJ38YbV-{Yq)LG#zLdf};>q*_L{_ zSxkDcuE>3p4OHRbDSTI>hsQqu{XYE1L*W1Yywg*PkX4XODFY>Mx#=jsa{jpWTX1b( z`rM*E+L$<92CjJLxM|dSa(me@xj(KF^8&21gIHW%apKi0Q*p7Q6oJR#iTrJ1zMH;O z?nPp&@C;g~MjxH#dUDE7{hC<(yH|%?@@ey2UheW3F>M*VTp%~v3=DMEQTZl!J>m=F z6BC1E^4iEFj?pFF^Hx`^SA2Vv!HFkji3XHn$Z>;!=s!|a=5u$w@<~T~Cwl{wvA>6s zFU}4+#b*y9@u$b(dxyfQ@C}u*BQ4v_C!!+FIXUkUla}B(`t3J_MQQM0?C?k8jbJC= z?05-UFyWpta>gsQYik;VeD#xpuDK2|0tA;x;Nhs<&x++O1R2v_{~@SuG*xr1j-`aW zj|c0y#j$^-Ka4rd)b3=u#H8g(_frVU3j+YIKCO5qe%2X2gx1k{`@;}a&!akQzkI$m zb>09NTNVt=MUW?O`I%{SqLwly%eOr!#ZxUC3v6nzGp0X~tXxz*%gxNvU+4}4h-dNh z4ne@0mF8Rz7A0S5Q4D5qpTZPK0^tWi}qd`d(EM!eIMfP6K$t z9TlPpdV`8ZvZ8XdJk^)=EcFz{khE;_3-3uNb#I^yai3G_r59``T^ zfEF=HHk1Rl7w4QoIiWKlUoWSgE=i4&qovRKMaNu_GgOQqSc2|Uy7wWck_VzNw#~%ZdNdKQKN3ImMF8ht%-l3tYDpM^HT25-+qi|5EYQ}!w zY_UlbX6%Ku@bSa=cHj6I_Nf)9fcj<`%xw}8hGjsw{JM6u6`b5@`>Md4$q`=Kx%9JHX=rQ>3wJ;`7nUXd17o zQl&x`Z!KSBaa;TZzHWaU6$(EKu5Jy zZAgbD{K|I+ZzCW8k3^uEf+pBG(JFkjn&Q@8{o?YWy{@Ik0ZITYDnZmi`sULEke zeosgDHpA;GcCoRP*(NEAT9gfq>xmS9jk;a?l}+iNUa!Hz+*fw>*05hp2a?odDxeVv z2Xwg_v_*XIm#^znc%<+e9snk;l<$BW!R8yx@wN`QPz?>2$Z5>g(bm@dtb}j%hp_6w7*(g9h9IS>#)|6YmUD_7 zN~H0AQd+p-gj-DdvcSgxOgq)JH<4^}N{Qn7jATM&b~q96rOSt|rBzaNAmwDVHNV|l z7oCqdI$A&LiDv*AJB7c31l84~dj0*P(@>Lv`SCJon&7jFf&!=?fxM{Od;+590JP7t z!}GC}Aqem{zl|(M(!E?(+cWI#-yy;kN!kPchPRsH{w=Qy0QXu-im4$oC@*5eME-p) zS3aXHo%_}C_RPXWm1KU3%gL%B5=Qjt8F*WFn7%bgPyyVwsx7lU{Q@>BJRt#;jMt-S zMM?$5`Pf=*zbd!3E(!~gU9QDSu38+nv-$ZvjoDcfjbI?LLS#ar47aclSbxkVrm^7` z+NchN#mQ<0u4`R9mR2l6-aj*V5D+`xQN7tY(Eju11Uzqy!j>qQ-?H7ynuiB(7~Y?B z=P)#DGgP^l+SFV8<5sIz+|OK9Pi)e!((JwdscTVT9gr!D3xs^ zccU+W%L>`vS>T-^BB8l%S%KS+ZzhI@leG7ox7X$q2}JyN;LGd;1m1b1RL@r#8|O+H zM<%L+LjV@cOW@Tf;VYSxEz4Yu#XHd@bDJlC14lLTsD~Mu2|>~js^1DsIQQedYT?Ga zT)RC7iTL&T)sx+N_ZxkEE3u8P^X=nzT=(4E!)U1YU_g+#lQgdcQIZHJ`&pu0hNeJD zWHmQK16$p#m{CG>mymu=0$d*LxQH#sk8=wqK39!(fhnlK^Icn>arf*29)nI~@(Y$l z3+S8*TtM;GG$uqLsZ(si+S9m!cZIDtKs+QTtH4i7ZRCA}wg9D`g)|$Xe~P=@>>@k+ zAV*5vzRapMRN(uRhKc3IzaGWd*o958sikxhC!3Let}Fw@KF!{0peot4W9}J1$e{*# zW0&p$pQYodL}RH$_2ZmpB*XCx*E@1H6jwAxD`y%pgD$JNnYrG68!<;U#a_*${Mv6R z{?l)=T0u67>AM$`#eX^IyB0zVZV?kp2_~Lu?)?|`8pBi*6;4w~UiFP1^&Fle^8pV8 z0}h(ji=&$opF-}CpE|*60NaC8`eUo7=Vu6a#=?)6+q=X6GIdOBqL&osd9p%V-aH0) zx9^?;BJU!GM~J#?J4~&bfGKkor~QB5`2ilbGgv)JqlYSjjA*vN&N_{9o6IVvS}fSG zd@-7_4)}^ek4Ql)G)+hOe5Sr0tI7F|S{W|ccXi#i&7CoD^|HtAY{gOA%jt&jdnWvF z2k{)FA^~+a!}E3WH5RY$E+&2k1}bh1|Kv-DxEppGbJdx{!&Fu`57?9I4UM_5a@uor z*BR7{*1ZtEsujGoU?PTn8!JJB%^lYBQkZ<{Q!70;_n*1jnf#1td^GDdP6*oRb$-#r z&R9K*E1%{Fcj6+^XAY<&&WizF*b!#@lp&tIb`H0*DJTy-h_o$Y8w}rWdAY~5N>x=K zS-qQwdA@kyukK6Nsot<|-0*N$z@52{r#cv6Lphx7lqFP=5Z`y=kgehyiT%A`wyWuX zBVpa=kCh(a%zj zFTvBKg4r^Fs+8a8$gKtC0XZc3(-VLygTbWF430iY#-|-Hx(|bxUb8lG`Fvq4=U=T?c1NhBjsl2rV^pY_B!b!1#|_T*snqce7kiko!UALk5eD*xrs^T zQC{eCk^EpYG}0sUQ&6%y&HFDrBYohlB2MIduOI2-?TvwfGp|8y;d4^s5k7dhyz;K9_{@uCI z&?f-_I%8wVD#JHGMsStREdzwoLX}Ek)McfD7@68eA0J4ly~{C0VjHkZulk&!r7N%h zFkEAK+}9`G&?N5R%6Ks6;PbI#iF6!(jSMFo0k%P-m>vI&kYE%0#e&V!!o-9!J@M-P z;8ft+si}}?X;xu-rez);#>d5YURmpamc=KL$7jt;>hVj;b*qRkspYiId%@(OHQaa}nKN>g z#ui@`x}QcF&E#W02}KSxgZVQD+#SFeH4_aDMP+5sD&{05!hMRW(m0@qwMu5yFH|ja zB0Tj}nFPlYkTK3Nh{I3Mz=oTbyy)5({q)5>7iPnqTI`c`M8(z-L*;i>!>C3#xPo1# z$nw8B!{pDefJDJlgEiO7A|Okr;r!#$xIT*w!PFB)7X zLm_0dLooY|q4&2~aKAfmWzmVAbvM(wb;1#(3}7cAZ;q5pjECwa^-8165=5&E zT`NlZ;A+oj+pRbFJD!<9Z(DCc7Sk8mX!^`tv$8Yln|1FRn(eSKuhk#}#ALqToiq8r z+j&~D&t#1ik)apvn?+TR(I8_gfAIM1>)91 zgJVz0_xxOG7@vO`cZ~C+va=^|?@LSB#%G#r2StWTcu>KO}kUOeRu>_$jXQM7jNI!kN zcmNl2VvmiAtg`&mOUCw2!KH7{MCV(=gR<)m#-+Lc{FQdcp;uW;;_1#V)A-c&Bvq3% zt<8rhI_)CrN@B5{?jz2Cl$W<=VG#5FEA-dv%#Wj+N8dOUzG?upidVAK`2K+jlp4c|UQfpqOg z0TM&30l1tHL2As<53#6Ue}b`iXI2Km_v=VTO*vkv%Y=mNmRi01t}kczoEEa!^sob< zF{+44B|hIpMN2Y#wz)_9hMXr(DIMMt&Y&1kSd{+_UqD?wewHEOZ%O-wBCDL9ZUp;U zrr?JSLG>j(?Aw6(kzAMV_*YvD-PM&^X`zo|4T+M-VJ~J~; zZ_@<5OP;FZ^%rd(R@UyWib~14N2%M}bwmh0{!b0Q_7zq7IONcSfvr(_JoWecka94+ z*_#a!;@t>++K4}Ei{2wR+$jEnX`;^A=Eb_w^ReDjL1+ciASF*cTrd}}CYg+up8FVm z62}yQv9rFVFrRt5WhME!1_i>1Xf*m%^gY`oZB0*3wdF^`i7(sIQhLOxQ!EO{(K{cf zy!y|EH-ld@$?!tzUT*69w(-9%ep?_f|Js8$?3tH(s7G-&lk*`#vxch(v_Fow?^TkT ziUJgJ^P{(?+<7DJ5k61`zBE#|ZSX{bLqk(yBv?IWeie%|QffB$CF>%ZO;?Y{Xa7~X zTRPwT)$Gq9JhaZ)AwuzK&TyT0co*7R-cJ@$*%I$1EhI{d{O32VO5EsGo<#YxchX$1%GpD!g1?M{5{pX>lmEL+8u)coFZ{Y*_I`Z>0jt}PR-hj zH-;8&F7msAy+I^H1#V9Ar5W01F?Lyrwp_-l@9qbv-Qg|=j)*FJlO|@iS6(%-Jiga5 zY(KbN;Dgye-yC!Hb|{i6X|`K9pS4P%Jqlg*C)u`Bv1D70_d}6n5uC%zk3iX1eJy3} z_RYjBRQlU=`TLq;;R612-FtDn$3SEZchi#eLd9Jvf~huRm5Yn`ihvynDRCvLydB*l zXf-;4SA){4Uthr=yxj7B{Zvd-EM0Uv9O;(8V69rt%TQce0*|)z<~2IOV|0GTv`ER=L`@KEd&Z;CNtkGnxoftG`q3t9Vf9uLP1;yv*AvLY|EI(bHbb;HF*8Mk% z;A+e*|KqDIy7!_<_;5lwQg2^l!`Hrcv#)jKjkrLpY@GXWlO`6GC}YNkb3d;`fALNF zszq4%Jy7TF2#IUhxybT5UD@v@Cym2BISK;M|K}S@$iThV@TjC)h zI-Y-x!*RyJ5{6}zlPnnHMUGmLuj*Z;6~X1*k?_n{+}L1Tv#E1|mH*1^b#rZ#FSM;- z36n_+frqc6M>XL~QhU;$LZP$sODHL1zhF4>DT{)QII zuRKl0K3C~2P7>mEyfl5v(7ShNH#cXd%l)V4j7l6aj&H)p3Rpw(_hA?}6SzTGx z?4ac2QdgFa_eRCy54%{KE@7N>c70#rgECCGRXz2P0)GCPbmqHtM?0%b2dhjX$SY(x zy$T2xeDC2cGK;CAJZW-FmD$JQG7;oN8!pHyF7X>+MSqYAIZj2+j z^vEhVaLJ6|$aBQ^Q2hQ9=IhT|DawKCRAU!0BnaHYxkSg=M;KE1oh@3bxU>CM9*_I9 z0Jp*Qfb^qX#j#)ao82W3d$=A|nl(&~)`^3k-w@GaXTr@*32L_*u1WiNHtXH4wvVPC zl};;%R2E@#6hgk32izHXAFlKTGA<_92o~){#p;N=IPf~=Y}q2&xa1~28JZh7Y`ZW9$m49^nE2kM?V&43GR2_asgATEhZ>h4%^nsdh+*Q@- z5)gfGvw7EBuV!tgvU}KrYEs6AOQym0p}kL2Nu|vDTA@|R5aOFr7C(Bp?{MjyGyG~b z>cp#j!G8JPZ^XOCnZ`@tapUyv=pss0xBVGkWHun6A7QUe8sb}WH}?Z8OvbgG|uDG1TWMHwP@NOLW?3zWUOrJvvY`dw<-Vy zJUx_!Yjo|RLW0xt(cq~f7`^|C#z*|&Yg?AvY)q#e;dKBKEBWNW@c@S5`i)`F+?vG^qdI(Yc7Ua@5*>e6KFc^cC7E1B_b4m(5VkhP}=H z>cT?3p!I-`fZfZ+>(@9BmlwNd3Ai;Ktg|c6A*UOFS^xo8c(%MCg6}mF`dwe<$N#|w z`}Mz4w)6y(8Wlc2LGA6;WMu=J?g2z@=;aA%HxPo{-1efwW{rwRYlDf|ZNcc@fMcLS zp~?uaBW+WjSiuCqM6UrcWA6R?!5Gpu6-Dw_VZu1!88oseE)EM|&h!2DNIZQ!0O1q2 zhtI!Dxsf=jIae`wa9F-^{MvBDSmCnpCfe^Onp8{H+(DsY3Jr!Sa1Ovi9vMyBr@~gm zpDCQm@p-(=U2dt9OZw9IlS=>jNf2;Ewhz5PO{YjZ12ollKEAF z{#m-zBf!6427S4<=aD@ch=(@Z9_z1N@1QU$#!o{&u)$Bjd(@^Mri*p|A$u z4p`s-JT~uiBZr^Q|8=+mUZSqO!xAx(00GZCz+;-N+OD=)dP+=}J7#ho4!otm<5#8uOf3$GSc|SJB z$XuCN6(_3PefIQBR!UaXv1TKK{8U%hrDw^&drggtY!VdYHJVBoWy8$e%AQ;%b9Ej? z2(YE|Sjta0;jHTFcUPF$fhtr$5`u*-0>~EWd}%xx!I*nQ-wZLrmnZUME!F*pO}>oZ zeLMcY#R1(mbYKFclbt@s-q9X(a?;4|d!5Ss&xu%Lyy>0Q0X2Q4IVh{(|445)x7_E+U^Vd=kMF zHyr^@{d280Z&|5uzid}rClhb23lBkhWK!-r;BF5a4lg8xsi$PwkivBBU_XwJmMcXq z-N|f!o8HVfO+HXoc1)kBB`^y5vXNj#nao}MqM7X*5~$`n08_t71HFerg8BIGuABAK zgW8CibR4g}J@mpo#L3kz+y-WyL% zQU!+0SiC#V`-#KJX)`<`*X(xQ^SR}Km?T?aN8$`XU)jCAsq@eXmz>2Vpjlz$cV?{n z??}DHV`1K3B81==u!Y${RbLY~nodocp#=w?oIKp!VT@$70eSx7q+`vvn8);!KWwg? zi}`YMHE{dPs9Rrm{<~#?mS8ceEc^+TfZ)mF);?FtskuIha}qI}$L-$vn;ZbkHmT#M z&0QOU`T}-OHpiND?g2TaPUca?TUF$0NU`6 zZBnT#2nqe-l0o=}+w1uAKLX2^f!i(ktZp(R9r+s29SlvEc-7iG?(L}(p1L_-MV6NX zVkXSU$i=AT<6QxIaCZte3-x}e2U0hY$CFPot#~kFU3O9|PN$#@HOzgr7WC zDUU|*0dL?m-;`@_HNkdqyXf+QabcR~7^gb?4r&`_Z~l2#_yy+qx-z~EAY zdAX3A`z8shYX{gRPMgibj*^3g>j=dh$Z8C)3nCaI?DlYj=YF+$^Z+Qtfb=8lLe~x& z-?k$Ig=Xfb2~ws(AxM(N;1I%?^sJHuHC40viymg0n zm-O-B5FkKYFUn8P{`<;jc-ZSL_1{`0(D(7wKhlQ$E-t;&YHL-?S)*^P7VQLzIy(?8 z00%M(YF#dTx|GC58Q>4mgBlnBl0Zx_+HQlfw6iR_$JQ`|x>}J+m&;+H6<& zizijy!06O46g7gen@5`Z4{5neP z&nIioQN+9ytmVZGb6sOt5ZJ$GfLei#+|sG&XdV$L9iZlsTgmRzk4-MTKRym*ge;o1 zLw-3O?w7aQbdjovU0>69#a(tOUWLK4&pqu<0Q&GtJY41vj%LDNzPPBXLvD^w)~W+h z@eWn9%!ya>^ZV{^qmIUng(ZI9RadL+@N>VrsG6LN@9($m?yY4QSiQA2kvMFzY*-TL zDygfZ3Gvm~5(G>T`w9(X)=jQ=zp3LSTwEZooO}-&ii)7C4-;pzl8%ope7t+Kv%~NW z{p>vD)f-9anqqnR47@kDo+>JtRp&yzFwU_O06hnM#p1o0n4+C=u@{M@_HLk$P8xtX z^=pdT$!SsfH7fi|;k7;Gd~K?@QSnF!1SzXLF+V>fXX9K^5!^A!k=A(F@JwV~{0}55 zW*W^uzHgpg&RodHOXcSOV$#$EVnRS_|NXm#%T}#W<*Ic}9|nf5$`p^2(-~N1LJihs z(ba4nx9hXf1jpP^+P^zB!d z$g71;Pow?^art8pH87H3J12WfRP^w7f3nYx0%&Z0Z@Sm2sCag{J?maw1suk1wJ0@s z_B;-7ZU9sE5PguoQR7C@`ui91uf{3XHBy&nVXs!ANrsQwZg$4Na)zY41q;#c0hi^d zm#}`aFv-pZe>767nsN-)gZv+z9Mo`w>~6M(FUknw78mJT%z^kyH=5w}&Eqw|u&Wb~ zjt_>26GGg+$nqa-ho&9=|Fy!gN{BQHRi^)ANAUCW!6UyntAVh-Wj}iaPRv{LHJhdx z)_-TI$HuCzj!D;#1?g#jspafW*S<#3c##N%I|+5wfXxw0~$6t=hppHQv=GAW`)mk;&KuPx>7=+zsKc`KhOayKi(pU4T78D7t#8w#mv8m5C*gaiW%d52Ht> zs+4^Hpt=C%X3c4I2g;Wz`uKd6J25M(<_uEeCg$TM48jtI~-S78s3OELGLqB?Cl}R(+TdLZhsjHWP=cq0fo?s1_P zuMd}+=HcdU(?5{iR$3>Q;k|!hepdoiB}fc7pa+ik?j7=r?8N+SKhty&qRgNAo-bbU z9{l|Jwf5)5lhs2l|M8NP`{H`Z^nwIyZ3Q-6CDrq*+-aqj!Pfl6Qu#+_+_LDXzYW71id&OA ze4+d)RxB`bZTdQ>0f+L5ng@~f8;;SlO*x={R-jh0e#}IY=C|UzI}mr}y5!vDWMsY& zn|7$SdjGG2hD;N}eIx!_|&R0rmNtjF}_-#_es4J*%CGdgu` zmAsivy+Za?w`}lHDNvcF&UFvB$W2J;`!;GD$u>*ZVkLU@U0QK+z*!4nCp4I&4Xdbe_a;c)N?OkBl30y)3C!iZZF{y%Xqg!TWFKRFS|`c|FC?d*IC3IbH+(w8p*w?zgSBOlJt z(k@;p*M2$c6NtA!1YJ^JkAaBM`af&r$p7Fsipo#h{piqgHtE_IAnOMF^`2HwY_&g5JE6A8oda~s~dfuuNQJUe&@Uz zOA+#gfnyi#oL1K6w5}J;O+mOl6j|6ZA+qapQz)qE?iTs6>4KqPR)Z^BqNbXqtgaYL zGdSt*^{=yh9Ev3>o!I)PYI{XV35bTa8KD>U83I6Fq{y~Tj}AR-;CArF7xeam612Rt zje>fCa@zRn;QwgryyLlg!~g##iJ~Z!2xVsPy%Qmny|ZPLy=6sudnYSv}!EWh=f|9mrM4PW|~ zF(&O|E#{%^6;ifx?!g%e-{!!PlLN)k#tQ{=dc;?07O3GTLKG(pVjhn&aH~d5brlT$2JSH^VS}rnGOzwqKcs(m#dN+~wMIY*TZ6ixI0v%= zAnC4NJ542iGM1Qf2F_pF!{e)TGg+mjrq+wXFMsXVN1wPK!G^Z2oK|hHCdthoDN9S% z=y51DTB^;Xo{6~|!d2la;hYd|%hh;r!aw0qVro3_tXuB}v$MF}c)1(>sI5fv_$22V z4T-|zOtSja9HchQ%YJJXg3#Kx1&AiNUEPV-8?;SAIUciv6;=R}oSe(h5a#axxsKZX zeZ|E^r-p`Xg=}ov9K)sCbd#g?J$FbwRJMML# zwf&VJ-iPXSf4Nm++oNYjJM6pmg=)HxHYs%9H8FJj1<$ILW|NT%1^G1tllldkWkLVf{5i$Z%hlCM z?N+!GhlfTe&b$R6r;*Hkc!YjF>lTrda>r0wcNfeH_->yh)xo!A^ov@SAYtisA zFNJg(0hP4#^<8u9jJ&BDJJ`DS{(rN}b$h72JAyQ=Z~+JL+r%Z#y9-bj;?E~ECPfpr zcMuycgJ;w`nCFlz%;$HsiCZ|V$DjvEx#emv>A58QH)2_s>&3M*Mn(PV5cgAQQ8tE{ zrE-BvY6{!8^p*YNc8uq39mBKT{M|`-RHEHZY1V96?aJH{BvDE>lWmp)6)y^>J7wqH z8nT0-Jez+S2m2joL88gnQb@P02g`zh{6iiBfm6aU8X@UP)V!X8$F>LOxsY~j)C0Zf z>A1boWOAM|F`)zII6k}N=iLUr|79p~z9Te^%j331C*zfV62qQItezj7!BX)qFAk&)>Y+OX6V(WwR*zh~y`K zCp2!0m#~3i>#!{*B6W^c_54?c-sIzQ?aIWv1%Ac$4UZWzwMjBpPJZlHPusEoD{X&C zV2l(Gbyl}K6Y)p zt@s(){L&4pqbWmLkaFNT4U2i~5C5yfrVUm3$ZNhCEbq+lG?B-+e|_hcB?_2qzh^U` zD0>|L!UGiML2g~cMMiD}C2=0s{j*8E+7BQb*ss&m(*tUq1BO1d0Wuhr_4f}C<9?Wl zdF?~c^#)@c@%F99u$as|GQjXx5;6_iCSpS%YRt6WAWvOSB}ADfcrsx~*Y;a``!b+L zwm$##@%1e>tnWNmkl^FJivd;rjisf-w zdX;bEDN1swr$dN_KfY~FsKRi)_d!ubNhyA*7=37AcdgYIIfr^HbX;d(T0w+gam~S6 zO5HuBp?EYVJ8|h|P*KJ~cPoWM-Q3E`%IqvBaAOgIPQQY$WrbOA-XW5<0=nxq07`JL zToDl#29^gI}&R0hy@ zfJxZt>fV*^Fycfs0qf(Dv~-J!6X@s{6ck{kgJ393;x{)po12@d{r`eUJHip*1s^}& z0ffu?y3hXa=bIWtICI~z>P3foB`%&4wfqB>!%`4~p3)aqz<@Ktyn>pVnu9Q!#v9!olB1j9_OVPO`oO?>3;a|f!}W2 z1;{s@ot+#X(XMvCI%8Q(+ur@?>Y4!f0T5Vjv+2t0IerVq?-kv9Dkari4> z#B5*2BOogn%gg@&a7pgd1XTkAAlMTkK$suCCGcj<-)IyJ0pkGZGZzMWdLYDaI4<3j z$X5U$ACU0}cEESw;xwMDvLpuInO|RD@9ysY^XE^kA0rSAUVs#TcLEPEY%A<+3X7Kj z`F?%^UEuu0CR_E#UVd30#T`;JTZ1SQ@dM;~&2*gk%R)AFvv}rziN*TtT6yY#1$k91 z3aE~Ql=`|lAjkl(rp{_02U?`CwDc9gFT};g9U6{v;^RlWx9S0M5f>FDwM9unvaq;F zdh_P5%}sIO7XT^Z62LUBz@xS!{X(QO)R{3oJ!Dry>b;L}1Co=Ic`SSW;d355Flh-R zwi*6%yji>TJ0&GK85_#q-8Ps7wvHN{mm{wQL5IGF=pPv1FsR{mm=-P37KN*~8ZR1R z*SwCV+(!!a0O{l=AWN7hqSs)gmgb*pAET z6?PHeIZbglSue6?b8>P5EQ1dqC4jNxf3m_Tob5D%TSX=2g=m7i0yH5yK7M)j-$4`K zMJ&CzxHx>O0w|B8%_#(gH=DpUaGtptE+YrTVR`wTy*<4$3uLnq6EpLNCv@wy>2OJF zYinT|s-PFY7!Gj0CpWJ6*S?kYMEPS{9cdz$Fjmru&Tsw+7tv5{7 z@y!`9c|6<1?tY-K6B<2Cv#W%6(X;JHGE!ry9y^~rqw=-hfRct(|MO!YY;Az)IRASL zIEkX7B47-$v9WO{bWh)Rxjr^CBf-S<83;8ncx=vSEqYVWmXaJ&McmmRKD2^dYO<~C zcQ|Q;goOC`TtT?;_3PK)LkS10(b?JAyx;fs_G(>L`cM9V)v_5WS})cubORO=+#V{; z*V}-m1Mi0xhi$R$ne)R+dd0ZD8-fwWo}&5#!J8jk%7(hE3hD=*2De%S+p!l|=l$LN zU3er`fR2favoJIJtey{uh^sh(p`oF`Nl`8DI8m%I(Q(>!9+kk{#$`acNcDkhEsIYQ+9BmUXn}vn=K&L3w zbO&~dMgV8R&dgl%YOxa-T3MNyzZWPUKPRR9{D(A(s%SoZygZ)XI4UI!5@kyF4_4kF z+${$m{;oF~n&v)GJJulfB+bZ9ETPZOs7!jZq$Nkne?75rRg&cjy!<-~0p*Nm@2Dlt zkpk0UD3rU4%Ou)nWM{q|@FymwrqD}9WxPB+g;I>&;8e9UBjV4=34m2n1f3o*Fyuf# zbh+NmaK0Pg7!w-{_Vt^IHz1{f!!b2A1yB0z+c!hMWApJh@m-5Rj?=AjoP%?qm^)VF zU<#v{$D;c;Kxz;{BZl4({SV~#lai9YrsNe6urxPk)34$b74-p|`l>oPlJ@u7!J-lH zLqyl8GItodm+K3?72l&rB5k|9leFKBeN5%ra~l?uM1&nIU65F_!Dh}H@Z*7M(lX;I zIv#kcVM8vEaEs>A1Vahyymf)~9b0;oHQ6uc6TakW1cGEyUPem&$Z~n?IMEp@=S1^l zONzKHnJLoIf5uYhBlTuF9y-eDTT-2QwtO6~GQ0|l*x&8nA(=b+60dTX_GFFSls4C7 zEvcxU%RVl?ql8F8iFHJQGPIfyFSgG{Qz ztwt-F&40YBR$y5Yp{*6Uq}LOfK<*H6_FqgP`TC2mmGjN{3x_R*tjwCy1M$aFO3yA! z>ln#Ad@M=)I5Sk1lBh2%k;p*MNZ3jLCx3Xua5mQ}w_Sm}7k%4kBI$tBD&0wP-%ANb zTtYe~TzuxYpYidS6z=m}9(0*TDU!OgUJbt9ws+>JVX!GSl3z13_Fd?7qKS#n>YzSh z(_?M*b}o-c#8J;f>Q))Ngn;xie56ddj6hrYV~)YnQyi{@AC9eso(?SwLfE<}?ji-+ zUn0AELiEKrQGquaWS*U=>pPE26fjl zr#RRau1B)A)j7lNRR=y_m)eLkTPMQ~`mMjG*`dh_HN6))qCS57csR`qHly_|>Bdc= zCr_Wc`0R+nK~GQ5&AnSt+@K);@3?>C%$dZctb^S#z-pp;S~Q1#jHs*&%VGWjLBQvS zO~dQ6W5A@?PNh7(ZP@51#?P;rt?KFF5&Y)O1oIE!%X4#cVL=m>4#hfUvJawYf(NY+ zK607bMtDwC*indjaQfo-`}^k;AwQS8X!+^gNz5($aD7zsk%j9Bv4K{U8ojJa8Ewv8 z+S1g?)nn7~guy(S!jLOFJ3DY+uqO=BE2~2V{P;1-&3S6MiAhOVG=hR2U`}F)LMkgO zm2;E0%{w7f(9zP0|L}p^vM2e|C%V;QH%WD!8rs@CTk=fHcA{V7t~q(P4RIXUSm&-) z5Ko1ghAN`ci~*MnCh}l^e}8*h8*Lr?^W~@ORDzE1547{t+ge&CfdwTzIykt0IN<;r z#bEjVg@gQxFAFYBlv%1sN=kwkGB*C_)sjT@`M;4)R;vP6)vS(jJ* zS&a25xrEkLvSX0L^YrpkEp9d8LUfpM!=J3GAIr+7ih7n}eugnC9xYb6)?d}VWr4>f z^dw}a`}|TxN8QltN@b$Kgs_2;q!NPZRR)(U%XQza*+^uOcL9aw3IqPpo9n)R=H4LQ z$Hi3`H3ve>w79es8XVlx)~32r2|kRDkugoknE?QCyu2|rqWAC5?XL_Bu9cUU1DuY9 z);_gL%K{Yt*ytWrx0S>1FI3t*QEfUw_y@^ zEFlmCFP0TUz*HRz<{W5(T;N?fIs2COdy<9r0E+~X)t&jl!NIC32vUJ_1Yv85?HD&i z4EIFbMzIe7f&`W|l2Ygu+>4x?9APB4n|(>pYyWd@Zmv2rGA!&FbL`|@K6d!10xG5W z9cV<#o=@pgn5%f^2A!Pk(Y-xxJh1`5uI{gmpmf)mnVENwj&iRH3kg}F$1^h@)EmA4 zfkq8MJVL^IfU1M2s7SxMzpszeZCxAjzH1TUHV#(S$qKuP)2+tdLeim^yn{9IK_56G zRW!hBD=H|cGLb-V7{d^(&1&I^gTX*3)l+eS|J;1V4aI)*K3%CrgSI%2!zAWb`~Zfp zPe#u+;nifEXUo*OMt-rar z=z4l+w;58PS$G1tr^tIE{5Hd^w{PDbM+N`$HKuI@Nk_^kkB8C9@(sK?#=LiPl~cy& zily0MGj+=QA3bUbla=3&C0Q^;cKi0o;NUX{7G`EDai1r?s$cUKT?4~E@me4#?C z`QMyiu`?DS`P_czS1Wup2^b(cI^@18iY6u|j~;!8hi1C0QEzzhQ;vFZVS$8{G#iF5 zBcs}`Z5`1EpXYh%5KoXrJkC}HR|hc4@->k$*bt9p(P}teqCkX&hl8O=;Iq+$$}%`i zOn$-g8Nf{KQYgcr>D?rW71;{;aobEIU32||d0mevQVBP-_4`IUjhJ!x~6Vpd=-PNN^Mj~QIXQ1-GDk;8@ozD7n3XOpm?b$YgB>&Puq$EnrHw=N z5R`FcwZ1m6L_AYO=EaUaq48@SUKjRK2A=>^EQQ(&taMY!GpBd&Xls7{QJ_X3dj@~uw}{2~G91*gEq7+&8)JLf z6wezK*AP>$rji0?QI}d2pIpDhmFqF#hHvkDjEB{pKk&`Vq#hryCUi3J%uk3vbp(o& zimMj1|0vZ8We8wN<(BEmMEL7a%7)RRY|EO;=fA}0QIwNqiaGVbuezn=5bHy%ksKH^ zK@?RcXXV7?(3sWmMBmE};pnsP%kk8=f6F{zOnWUR*U0ngPmA%*gy6q@IK8Bt6*S_l zGIIJh-3={2qif$!$D;Bp>JIaA^~Jc)TMf_Zu+slFZ0;7l=<)k-DA7)K)VEI~A=K>L z>Ok0_2@(o?ldd8ivCvf^FzpuvQqJmZl8Dj(G6&;&@ zt#THPd)Y0TmpNI9{Xqm?t@dit>a|KOdCA0+UYGk`Ec7=WbfL&NCr6++xmsKQ9g!}V z&!5n+ur~(>)Mgg;5pQ)(NR94TqbIKH?g_kT&{x$G=%4WRcG;&`eN;w|eP4odD|R|{RIoj~X1;j?XdHO>>Dx z_(7`T6G1)o^1b*M2%6*bvr09!N|^Ua`1?hV)rqnpMFVjRemK~0F_rd8v9eBllaS!- zS=Qh+;XmID9!%u9sVK#c{rouO?)S@#m$j26ZE>SFySG@$pto{1LeK&&z|<`G!wrX zf|8CBbTpE+TInRFtyo_8>)DqckJd$Ki@jQ4X-7pfzE5WvV+)M4W?N6c)f<`nT*M*V zvuX;retv%bo>R}2Hk>MRucXee*!l)iD_0e`!jMJ?1bN5e>?(B*X^q<>nU?M*=t{Xy zD_B{-R8$KsZOx0%OtyA2zDd9vVgW{oI~?Iv8Le(Lco z76RTzLQlI&fCD9LU#e|Qh*$=7`K>6dU?KW8p#ySw*J2CJ(Zw5wK zL0-n>Y2Ml8(}eD8_{S$F2j4GW&USTm&(Gh~)QFOMpRRa3RXW&ekFkqy|8`#(MQ#}r zchzgn!k{wV8&=tep@;cb_$kt1RcoX7z}I*5^6DFYYZqaCLM1e9L{y z&+Q<8`sHB0y0@X<82)|4=v`9MoS!}}i=8#p{xO0=A)kk+QRKI#a(g$!ZwVOGsKZeF zHX$N(zj;V!o4t5{tC5z$Vjx@bD8C?OH@N@n6_ zQS5@i$+mZ1JIZP{R@Tk2ImDX zUq(kV#^^NzLty*sD2p}TP5JEpbosL&h6BbMSFoferuh)2#mpuSYR26N=}EF($}bkl zA2qQ9dvNPB?rcflHffk;eaXdy6uc6`+#yuXxX(cI+r=$Hx2rD1Ek(GY0U1&(og5xe z)E_Ee4~}GHNB?u_M31s__c2SUH+T74X6NN=(hhLH>lJKdlQrgqJEO*Qwl&Z7^v1Lc zUvK10hB+%s_8sHo)|{0_JQ7}y9YV9O4Vj@8z*S#_8 z7GzO^S!?oNp)IFrJ2oHZ_N|=ZT|+M~Yp0#w;>I44r7stM+aJ@Nxa;e`X`FF-bKSt} zPoG)I{(A+vlRrL0#9ZGdYE2(u@UHHj^42z@FqyNzshWaZ3q#N)V` zSxFl^P4e5C&DER`v&djtoxKy4QIR>EGyJWd89>W*Z?BfQ_D=T4#Nf+Cj-GoN1rMQ7%d@HjL*R&k3C{Wiu+V$mVh`ahFs7Ql%*Fu=^aPiX!D!zD4|2-)w|{0 z_cZPIaxmlj+Y{x}eFxTT#&?yXf5coY{4nC+h;DuLIXyk6`uO>ypi1csfxBDknhl?S zA|!j}+q*dQJJ>iz^3^HikX}PG)Ch4*&pEe1WqHH&(Ae?jw~z`hwTOsZSThm7KSxhZ z4W)=qJMR_5KJ`Po=IKVE9t+YCMO18Q>-EhM2T&&uxWKNG3;dQAQ7#~+R&#ft* zx$9W9MxNQcGGwHnTzp6|%Y0dgJ8X5A!lrChiRSY#chmQ*H|i&QS#m-3b^UK6_+B03 zIc&|lZ?WSOVun_Tq`&heG9r;&Adf&U>~ir*ULq!@ThNu6him6Ck|C>{Hy<<%uH%*|Om#n8-z_f>Qp-{2`T_uC#@;LThfx|)ZDsbd6VcY#S#lzvp!*%|tI=#}O2nScYx zBPPkBWD&Ztt51#Rv_^_H5;;LPv2*cm^&~@rTW&t{=4eSTEUKAjboKX7E2L&c7;$kDat7;GccdZl(54~u{m-zqOrDCTZW$)L;-|5`i5~;XK@xL ze~&9C5{kSZ``%cftN3)L!P{Z-C4Uk;oU><7a_Xz&4>2*PXtacw2hl(!2ZCg1_|V;5 zjyLE6zJJ}LY|`5l7z+iZpP|U8D4t7~4j9x9v*Z*%L{EV%EdI4FHjaz6)(9aKwMc}F zD{fG;t=nJAc@5wDDm+;2zfEwOHm@_qY|8qOzgm!-dXiMH*tZ3VRk=e&RgT8JNQ(2# zO)M%Z#CB=g46MWK_xHPp5?%^uP%!UL5vf4=ROWZ8HXXUn*or-5G|JVR>|l_h{m(Vz2+Z==kkVl3Awv=zW(saMU0nJ+h*w_0 Sejkm1L;kU{Op&xv;Qs)V5j*k# literal 0 HcmV?d00001 diff --git a/launch/enable_fsai.launch b/launch/enable_fsai.launch index f969207..44c272d 100644 --- a/launch/enable_fsai.launch +++ b/launch/enable_fsai.launch @@ -9,4 +9,16 @@ + + + + + + + + diff --git a/launch/simulation.launch b/launch/simulation.launch index 44c21d9..141268e 100644 --- a/launch/simulation.launch +++ b/launch/simulation.launch @@ -1,6 +1,10 @@ - + + + + + diff --git a/package.xml b/package.xml index a99e9a9..319ae88 100644 --- a/package.xml +++ b/package.xml @@ -16,6 +16,8 @@ tf nav_msgs webots_ros + pcl_conversions + pcl_ros rospy roscpp std_msgs @@ -24,5 +26,6 @@ tf nav_msgs webots_ros - + pcl_conversions + pcl_ros diff --git a/src/example_see.cpp b/src/example_see.cpp new file mode 100644 index 0000000..dd0e158 --- /dev/null +++ b/src/example_see.cpp @@ -0,0 +1,124 @@ +#include +#include + +#include +#include + +#include +#include +#include +#include + +// point cloud +#include +#include +#include +#include + +const std::string nodeName = "example_see"; + +/* Calculate the intrinsic parameters for the camera + we can use these values to figure out the relative real world + position of pixels if we know the distance to that point */ +class Intrinsic +{ +public: + const float x, y, fx, fy, s; + + Intrinsic( int _x, int _y, float f ) : + x( float(_x)*0.5 ), + y( float(_y)*0.5 ), + fx( x / tan( f*0.5 ) ), fy( fx ), + s( 0 ) + {} + + std::array matrix() + { + return {fx, s, x, 0, fy, y, 0, 0, 1}; + } + + inline pcl::PointXYZ coordinates_from_pixel( int x, int y, float depth ) + { + /* ROS uses an ENU coordinate system, X is forward, Y is left, Z is up */ + return { depth, + (x - this->x) / fx * depth, + (this->y - y) / fy * depth }; + } +}; + +class Callback +{ +private: + ros::Publisher& pub; + Intrinsic intrinsic; + const int width; + +public: + Callback( ros::Publisher& _pub, int w, int h, float f ) : + pub(_pub), intrinsic( w, h, f ), width(w) + {} + + void callback( const sensor_msgs::ImageConstPtr& depthMsg ) + { + if( depthMsg->encoding != "32FC1" ) + { + ROS_ERROR_STREAM( nodeName << " unexpected format " << depthMsg->encoding ); + return; + } + + auto depth = reinterpret_cast&>( depthMsg->data ); + + pcl::PointCloud cloud; + + const int regionTop = 370; + const int regionBase = 496; + + auto begin = std::next( depth.begin(), regionTop * width ); + auto end = std::next( depth.begin(), regionBase * width ); + + for( auto it=begin; it *jt ) + { + const int i = std::distance( depth.begin(), jt ); + const int y = i / width; + const int x = i % width; + + cloud.push_back( intrinsic.coordinates_from_pixel( x, y, *jt ) ); + } + } + + // Publish the data + sensor_msgs::PointCloud2 output; + pcl::toROSMsg( cloud, output ); + output.header = depthMsg->header; + + pub.publish( output ); + } +}; + +int main( int argc, char* argv[] ) +{ + // Node initialization + ros::init( argc, argv, nodeName ); + ros::NodeHandle nh; + + ROS_INFO_STREAM( nodeName << " running" ); + + // topic names + const std::string depthTopic = "/fsai/zedcam_left_depth/range_image"; + const std::string conesTopic = "/cones/points"; + + // publishers + ros::Publisher pub = nh.advertise( conesTopic, 1 ); + + // subscribers + Callback cb { pub, 1280, 730, 1.5708 }; + ros::Subscriber sub = nh.subscribe( depthTopic, 1, &Callback::callback, &cb ); + + ros::spin(); + + return 0; +} diff --git a/src/example_steer.cpp b/src/example_steer.cpp new file mode 100644 index 0000000..269883d --- /dev/null +++ b/src/example_steer.cpp @@ -0,0 +1,81 @@ +#include +#include + +#include +#include + +#include + +// point cloud +#include +#include +#include +#include + +const std::string nodeName = "example_steer"; + +class Callback +{ +private: + ros::Publisher& pub; + pcl::PointCloud cloud; + +public: + Callback( ros::Publisher& _pub ) : + pub(_pub) + {} + + void callback( const sensor_msgs::PointCloud2ConstPtr& coneMsg ) + { + pcl::fromROSMsg( *coneMsg, cloud ); + + std::array,2> cones; + cones[0] = {0,0,0}; + cones[1] = {0,0,0}; + + for( auto& point : cloud.points ) + { + // going to calculate the averages of the cone points on the left and right + const bool onRight = point.y < 0; + cones[onRight][0] += point.y; + cones[onRight][1] += 1; + } + + for( auto& i : cones ) + if( i[1] != 0 ) i[2] = i[0] / i[1]; + + // average of the left and right cones + float center = ( cones[0][2] + cones[1][2]) / 2.f; + + // aim for a point half way between the cones and 10 meters down the track + geometry_msgs::Twist msg; + msg.angular.z = -atan2( center, 10 ); + msg.linear.x = 100; + + pub.publish( msg ); + } +}; + +int main( int argc, char* argv[] ) +{ + // Node initialization + ros::init( argc, argv, nodeName ); + ros::NodeHandle nh; + + ROS_INFO_STREAM( nodeName << " running" ); + + // topic names + const std::string conesTopic = "/cones/points"; + const std::string controlTopic = "/cmd_vel"; + + // publishers + ros::Publisher pub = nh.advertise( controlTopic, 1 ); + + // subscribers + Callback cb { pub }; + ros::Subscriber sub = nh.subscribe( conesTopic, 1, &Callback::callback, &cb ); + + ros::spin(); + + return 0; +} diff --git a/worlds/.my_first_simulation.wbproj b/worlds/.my_first_simulation.wbproj deleted file mode 100644 index 05e1e1d..0000000 --- a/worlds/.my_first_simulation.wbproj +++ /dev/null @@ -1,14 +0,0 @@ -Webots Project File version R2020a -perspectives: 000000ff00000000fd00000003000000000000000000000000fc0100000001fb0000001a0044006f00630075006d0065006e0074006100740069006f006e0000000000ffffffff0000005400ffffff00000001000001240000028ffc0200000001fb0000001400540065007800740045006400690074006f007201000000160000028f0000003c00ffffff000000030000055d0000008cfc0100000001fb0000000e0043006f006e0073006f006c006501000000000000055d0000005400ffffff000004330000028f00000001000000020000000100000008fc00000000 -simulationViewPerspectives: 000000ff000000010000000200000118000003150100000006010000000100 -sceneTreePerspectives: 000000ff0000000100000002000000c0000000fc0100000006010000000200 -maximizedDockId: -1 -centralWidgetVisible: 1 -selectionDisabled: 0 -viewpointLocked: 0 -orthographicViewHeight: 1 -textFiles: -1 -renderingDevicePerspectives: vehicle:zedcam meta range finder;1;0.552778;0;0 -renderingDevicePerspectives: vehicle:zedcam right camera;1;0.410937;0;0.0335008 -renderingDevicePerspectives: vehicle:zedcam left camera;1;0.410937;0;0 -renderingDevicePerspectives: vehicle:camera;1;1;0;0 diff --git a/worlds/acceleration.wbt b/worlds/acceleration.wbt index 0571bdf..e89734b 100644 --- a/worlds/acceleration.wbt +++ b/worlds/acceleration.wbt @@ -4,8 +4,8 @@ WorldInfo { } Viewpoint { orientation 0.44262137847919036 -0.560569682529413 -0.6998913818172463 2.08793100190326 - position -13.809174075151157 5.015185809832598 5.841281887078405 - follow "coventry" + position -13.809178090978897 5.015186495864631 5.841322789688 + follow "fsai" } TexturedBackgroundLight { } @@ -23,18 +23,19 @@ UnevenTerrain { } } CoventryVehicle { - hidden position_0_0 -1.0035425492115581e-10 - hidden position2_0_0 -2.592862812706772e-07 - hidden position_0_1 -2.7822535532726855e-10 - hidden position2_0_1 -2.648299329719985e-07 - hidden position_0_2 -2.6671740727124416e-07 - hidden position_0_3 -2.7120184054041374e-07 - hidden rotation_1 -0.00038704032821484864 -0.9999999250998896 5.017712370230552e-11 2.598106231415675e-07 - hidden rotation_2 0.0010505806449576857 0.9999994481400019 1.3911260089291224e-10 2.6488883546935307e-07 - hidden rotation_3 0 -1 0 2.665600749850024e-07 - hidden rotation_4 0 1 0 2.715120786173435e-07 - translation -2.3199685589090304 0.8124268700300943 -0.2499794983322307 - rotation 0.6769627542810117 0.5193156715867167 0.5215675052768376 1.94834512198245 + hidden position_0_0 -1.0453889528286364e-10 + hidden position2_0_0 -2.64961138869972e-06 + hidden position_0_1 -2.875300013667947e-10 + hidden position2_0_1 -2.7949849492144224e-06 + hidden position_0_2 -2.9261607714972762e-06 + hidden position_0_3 -3.014332948056832e-06 + hidden rotation_1 -7.049372222026168e-05 -0.9999999975153174 1.0961566977589398e-11 2.9093539385478156e-06 + hidden rotation_2 0.0001849151436414695 0.9999999829031947 2.87097320444401e-11 3.059785731397028e-06 + hidden rotation_3 0 -1 0 3.192606387339473e-06 + hidden rotation_4 0 1 0 3.2858327513549973e-06 + translation -2.319984943306382 0.8124290163908436 -0.24997953538149234 + rotation 0.6769628261983345 0.5193156414353673 0.5215674419537097 1.9483450667476003 + name "fsai" controller "example" controllerArgs [ "--name=fsai" @@ -48,199 +49,199 @@ CoventryVehicle { ] } FsCone { - translation 0.00176660150611336 1.4988478867041788 -0.47821148875982233 - rotation 0.9999934181015618 -0.002570124312673663 0.0025609011250656405 1.5688331161382352 + translation 0.0017664885180699093 1.4988479301231983 -0.4782114894236331 + rotation 0.9999934181015618 -0.0025701243126736856 0.0025609011250656306 1.5688331161382352 name "cone0" color "blue" } WorkBarrier { - translation 81.33980773304327 -0.0016548154335673478 -0.28286077106746316 - rotation 0.5783586706079396 0.5749456917622813 0.5787388872856296 2.0972845231522057 + translation 81.33980757792249 -0.0016563278560672496 -0.2828607805309473 + rotation 0.5783602904407722 0.5749472848100697 0.5787356858971066 2.0972892766751996 enablePhysics TRUE } FsCone { - translation 4.999598854719625 1.500249124606231 -0.45231223449856667 - rotation 0.9999932792252682 -0.002525676478191016 0.002657529420810375 1.5686388376405749 + translation 4.999598742026073 1.5002491690377482 -0.4523122351632616 + rotation 0.999993279225401 -0.0025256815180215468 0.002657524580981844 1.5686388375556077 name "cone1" color "blue" } FsCone { - translation 9.997357395934607 1.500020135718871 -0.42884006172970834 - rotation 0.9999954879666314 -0.0021243300578783777 0.0021239746193903947 1.570865830492908 + translation 9.997357302288481 1.5000201342863133 -0.42884006212711745 + rotation 0.9999954879666314 -0.002124330057878375 0.0021239746193904073 1.5708658304929088 name "cone2" color "blue" } FsCone { - translation 14.997535782381346 1.4996846838864855 -0.4101047386342155 - rotation 0.9999976415607054 -0.0015252419108365447 0.0015461274657333406 1.5764052094131484 + translation 14.997535714324293 1.499684569748046 -0.4101047394212048 + rotation 0.9999976415622652 -0.0015252616991122349 0.0015461069356546703 1.576405210086953 name "cone3" color "blue" } FsCone { - translation 19.998772044929822 1.499394751135801 -0.3966238371288159 - rotation 0.9999986149003257 -0.0011813850895874094 0.0011724021068255355 1.5801018770352466 + translation 19.998771992807328 1.4993945460601588 -0.39662383915744626 + rotation 0.9999986149003257 -0.0011813850895874079 0.001172402106825558 1.5801018770352466 name "cone4" color "blue" } FsCone { - translation 24.99966752094001 1.4985896217729449 -0.38557592609869884 - rotation 0.9999990548912466 -0.0009688649168854576 0.0009754575266745289 1.5862477950875886 + translation 24.99966747775976 1.498589281257203 -0.38557593143765645 + rotation 0.9999990548912466 -0.0009688649168854705 0.0009754575266745254 1.5862477950875882 name "cone5" color "blue" } FsCone { - translation 29.999391540320048 1.4981832400268411 -0.3749721970925056 - rotation 0.9999985236820341 -0.0011997569045347947 0.0012301289047317728 1.5886483260597506 + translation 29.999391486375544 1.4981828482731234 -0.37497220417611166 + rotation 0.9999985236815466 -0.0011997475484992008 0.0012301384260306753 1.5886483273962697 name "cone6" color "blue" } FsCone { - translation 34.99911244531534 1.4980924753185423 -0.3626616916097497 - rotation 0.9999983093783315 -0.0012993393319673404 0.001301137110088593 1.5887825102196986 + translation 34.99911238749298 1.4980920789797079 -0.3626616988803777 + rotation 0.9999983093783315 -0.0012993393319673274 0.0013011371100886122 1.5887825102196993 name "cone7" color "blue" } FsCone { - translation 39.99956880259808 1.4991840523962676 -0.3483842035802285 - rotation 0.9999976253486756 -0.0015333791507819 0.0015485623622524744 1.5868919756153883 + translation 39.99956873413362 1.499183697720811 -0.3483842094933411 + rotation 0.9999976253486756 -0.0015333791507818981 0.0015485623622524742 1.5868919756153879 name "cone8" color "blue" } FsCone { - translation 44.999062927510764 1.498998138243654 -0.33139653596686813 - rotation 0.9999963779390412 -0.0019042569897343357 0.0019020815217233667 1.5857198662501315 + translation 44.99906284428639 1.4989978122799026 -0.33139654110839745 + rotation 0.9999963779376075 -0.0019042481524794291 0.001902091122824352 1.585719865591937 name "cone9" color "blue" } FsCone { - translation 49.99959468959947 1.4990554239171483 -0.31155578720326915 - rotation 0.9999959938859481 -0.0019812620381470494 0.0020215867014155573 1.5840928651089219 + translation 49.99959460079804 1.499055130950555 -0.3115557914498774 + rotation 0.9999959938859481 -0.0019812620381470516 0.0020215867014155638 1.5840928651089217 name "cone10" color "blue" } FsCone { - translation 54.99988720206976 1.499493051813841 -0.29407268319507973 - rotation 0.9999980471112417 -0.0013956828365994341 0.001399229474347303 1.583131914358266 + translation 54.99988714009034 1.499492779976724 -0.2940726867175335 + rotation 0.9999980471112419 -0.001395682836599429 0.0013992294743473044 1.5831319143582654 name "cone11" color "blue" } FsCone { - translation 59.999933213037394 1.499492224664344 -0.28287970670108675 - rotation 0.9999991368629951 -0.0010682856211742902 0.000764878484800305 1.5829800313001365 + translation 59.99993317234697 1.4994919561555138 -0.28287971004298046 + rotation 0.9999991368629951 -0.001068285621174269 0.0007648784848002777 1.5829800313001372 name "cone12" color "blue" } FsCone { - translation 64.99988369456571 1.4996810885676528 -0.27925795690902744 - rotation 0.9999999785938104 -0.00014826587706792842 0.00014432466335993272 1.5828907040521334 + translation 64.99988368807723 1.4996808220018436 -0.27925796013067833 + rotation 0.9999999785938102 -0.00014826587706792986 0.00014432466335991621 1.5828907040521338 name "cone13" color "blue" } FsCone { - translation 70.0002302448814 1.4998448495035113 -0.27865187477863573 - rotation 0.9999999940263419 -7.749912120155241e-05 7.707919549710714e-05 1.5822576324066366 + translation 70.00023024093669 1.4998445955328528 -0.27865187770044364 + rotation 0.9999999940263193 -7.749524490046165e-05 7.708338519813274e-05 1.5822576321362798 name "cone14" color "blue" } FsCone { - translation 75.00005224514 1.5002475982247179 -0.27669048825643955 - rotation 0.9999999139835594 -0.0002983603355900065 0.00028812147364994925 1.581423704611567 + translation 75.00005223214374 1.5002473639886647 -0.27669049075011765 + rotation 0.9999999139835594 -0.0002983603355900659 0.00028812147365000655 1.581423704611567 name "cone15" color "blue" } FsCone { - translation 0.0006374925584087805 -1.5005570677488287 -0.477405497379561 - rotation 0.9999940088378455 -0.00250835159397838 0.0023854686532933512 1.5717088946924205 + translation 0.0006373846368295677 -1.5005570877251866 -0.4774054979253277 + rotation 0.9999940088378455 -0.0025083515939783667 0.002385468653293357 1.5717088946924203 name "cone16" color "yellow" } FsCone { - translation 4.99898202907191 -1.5003636912267906 -0.45310880386372065 - rotation 0.9999946483679135 -0.00231590333493073 0.002310806628941176 1.572279345573734 + translation 4.998981928337174 -1.5003637237976932 -0.4531088043713677 + rotation 0.9999946483674031 -0.0023159034391183413 0.002310806745307711 1.572279345574216 name "cone17" color "yellow" } FsCone { - translation 9.997500984205493 -1.5002724180940925 -0.43482760178611113 - rotation 0.9999979926312612 -0.001423785246615703 0.0014098116965567081 1.57458518466736 + translation 9.997500921627557 -1.500272501564608 -0.4348276022791943 + rotation 0.9999979926312612 -0.0014237852466157093 0.001409811696556712 1.5745851846673597 name "cone18" color "yellow" } FsCone { - translation 14.997642686420104 -1.500402535785356 -0.42535064743570233 - rotation 0.999999760376797 -0.0004376665362480961 0.0005363714679969816 1.5779240720133951 + translation 14.997642664954787 -1.5004026809003725 -0.4253506484118744 + rotation 0.9999997603733966 -0.0004376331861429241 0.0005364050188072926 1.5779240732156379 name "cone19" color "yellow" } FsCone { - translation 19.999290069713613 -1.5007619533989927 -0.42341774638991214 - rotation 0.9999999999559935 4.349260680590921e-06 8.31244642373565e-06 1.580507465646114 + translation 19.999290069627268 -1.5007621674448952 -0.42341774846579927 + rotation 0.9999999999559935 4.349260680599092e-06 8.312446423724838e-06 1.5805074656461136 name "cone20" color "yellow" } FsCone { - translation 24.999993487801863 -1.5013561467991228 -0.4231289191813123 - rotation 0.9999999985395694 -3.834412989988231e-05 3.8086597061988745e-05 1.5841985070870517 + translation 24.99999348610608 -1.501356442183507 -0.42312892313512523 + rotation 0.9999999985395692 -3.834412989988126e-05 3.808659706197289e-05 1.5841985070870521 name "cone21" color "yellow" } FsCone { - translation 29.99894225034268 -1.6347180351595745 -0.42175817093633694 - rotation 0.9999990092832494 -0.0013781908154664197 0.0002863958722595521 1.5864002419048437 + translation 29.998942213957317 -1.6347183889114545 -0.42175817665418147 + rotation 0.9999990092826431 -0.0013781915109656964 0.0002863946433862234 1.5864002450992023 name "cone22" color "yellow" } FsCone { - translation 34.9990432022126 -1.50200898688511 -0.4094609888438603 - rotation 0.9999984535079139 -0.0012058984317854789 0.0012801526285849225 1.5863179675005605 + translation 34.99904314701114 -1.5020093289349452 -0.4094609942838885 + rotation 0.9999984535079139 -0.0012058984317855114 0.0012801526285849479 1.5863179675005605 name "cone23" color "yellow" } FsCone { - translation 39.99873134835138 -1.5017624078087024 -0.39380435520890444 - rotation 0.999997062044999 -0.0017026259752887807 0.0017253886977223085 1.585989985585915 + translation 39.9987312722324 -1.5017627425991134 -0.39380436055072765 + rotation 0.9999970620449992 -0.0017026259752887267 0.0017253886977222548 1.585989985585915 name "cone24" color "yellow" } FsCone { - translation 44.9987681244404 -1.50152028880818 -0.37493304532460714 - rotation 0.999995469056094 -0.0021149781921831153 0.0021421331726212594 1.5857787355316064 + translation 44.99876802961057 -1.5015206177179858 -0.37493305063488647 + rotation 0.9999954690556566 -0.0021149763597376977 0.0021421351859937476 1.5857787353708699 name "cone25" color "yellow" } FsCone { - translation 49.99930101098095 -1.5016095610045581 -0.3531714262369522 - rotation 0.9999952381819472 -0.0021716987824032486 0.002192564213144719 1.5852667462786472 + translation 49.99930091410463 -1.5016098798181865 -0.35317143126821665 + rotation 0.9999952381819472 -0.0021716987824032205 0.0021925642131446934 1.5852667462786472 name "cone26" color "yellow" } FsCone { - translation 54.99977677525715 -1.5009980007946984 -0.3337801080342983 - rotation 0.9999974620103939 -0.0016441298119775388 0.0015403927850407898 1.5844843417976195 + translation 54.999776704956616 -1.5009983044449522 -0.333780112436256 + rotation 0.9999974620102511 -0.0016441264048251646 0.0015403965143037076 1.5844843415112428 name "cone27" color "yellow" } FsCone { - translation 59.99964927593854 -1.5008024971608636 -0.3204403925223452 - rotation 0.999998666956056 -0.0010692547031889836 0.0012340099232855668 1.5839060941627194 + translation 59.99964922486632 -1.5008027860756816 -0.3204403964229208 + rotation 0.999998666956056 -0.001069254703188973 0.001234009923285567 1.5839060941627194 name "cone28" color "yellow" } FsCone { - translation 64.99974674121701 -1.5006850658578548 -0.3141314367822542 - rotation 0.9999997699810577 -0.0004704963414079049 0.0004885396857232126 1.582419012478266 + translation 64.99974671995902 -1.5006853220246903 -0.314131439776133 + rotation 0.9999997699810577 -0.0004704963414079613 0.0004885396857232738 1.5824190124782653 name "cone29" color "yellow" } FsCone { - translation 69.99993512442019 -1.500271148103906 -0.3098346275086986 - rotation 0.9999997554731771 -0.0005225553607539647 0.00046474668456701054 1.580845789008263 + translation 69.99993510249 -1.5002713722978562 -0.30983462980962145 + rotation 0.9999997554729733 -0.0005225592032930715 0.00046474280266524864 1.5808457880319544 name "cone30" color "yellow" } FsCone { - translation 74.99985409310491 -1.4996484273607693 -0.30302785471969024 - rotation 0.9999993306307102 -0.0007815087814826449 0.0008532187036043189 1.5793632239814095 + translation 74.99985405692564 -1.499648616174917 -0.3030278563942883 + rotation 0.9999993306307102 -0.0007815087814826605 0.0008532187036043065 1.5793632239814097 name "cone31" color "yellow" } diff --git a/worlds/endurance.wbt b/worlds/endurance.wbt new file mode 100644 index 0000000..200e77b --- /dev/null +++ b/worlds/endurance.wbt @@ -0,0 +1,751 @@ +#VRML_SIM R2020b utf8 +WorldInfo { + basicTimeStep 8 +} +Viewpoint { + orientation -0.9342879335242301 0.35631803675317386 0.011979731023166042 0.5317336366040165 + position 7.194536595701411 10.95263376423261 40.636743225807685 +} +TexturedBackgroundLight { +} +TexturedBackground { + texture "noon_park_empty" +} +UnevenTerrain { + translation -8.56 -17.36 -1 + size 100 1 100 + appearance Asphalt { + textureTransform TextureTransform { + scale 50 50 + } + } + rotation 1 0 0 1.5707963267948966 +} +CoventryVehicle { + translation -2.6521385226402203 -6.881723913036894 -0.03960011970854556 + rotation 0.577279552186288 0.575598408333744 0.579167325521095 2.093607720552527 + controller "example" + synchronization FALSE + moreAddons [ + Display { + width 200 + height 200 + } + ] +} +FsCone { + translation -30.04156349157878 -4.940099178462712 -0.450995936527789 + rotation 0.999986464029712 -0.003667008847843 0.003691179142691 1.572883111939833 + name "coneblue0" + color "blue" +} +FsCone { + translation -25.022072323776214 -4.98015811851046 -0.4067953112444182 + rotation 0.999975180813647 -0.005129125104278 0.004830096518588 1.57292659317815 + name "coneblue1" + color "blue" +} +FsCone { + translation -20.021154859788158 -4.979945584615605 -0.3539569696689173 + rotation 0.999975529493688 -0.004827582441676 0.005063088147325 1.574982269196277 + name "coneblue2" + color "blue" +} +FsCone { + translation -15.020933816885384 -4.981037909408159 -0.31235270176137514 + rotation 0.999989183822665 -0.003282881135094 0.003294681947189 1.575844718916466 + name "coneblue3" + color "blue" +} +FsCone { + translation -9.980562193521244 -5.0322522080779 -0.29397700037045804 + rotation 0.999999261025836 -0.000815718350438 0.000901416304843 1.574098239783528 + name "coneblue4" + color "blue" +} +FsCone { + translation -5.030937407413846 -4.932996721216753 -0.28698046426882867 + rotation 0.999998784939274 -0.001102559337269 0.001102035790479 1.571787884890409 + name "coneblue5" + color "blue" +} +FsCone { + translation 0.06860282420252928 -4.982684738167982 -0.27148765681784726 + rotation 0.999996491991897 -0.001993205513329 0.001744458564289 1.56924909202577 + name "coneblue6" + color "blue" +} +FsCone { + translation 4.908588602513768 -5.031802856559751 -0.25503555207139555 + rotation 0.9999977776192 -0.001709261475589 0.001234172544331 1.569072069829563 + name "coneblue7" + color "blue" +} +FsCone { + translation 10.008961966565876 -4.9812453525969325 -0.24546698339396789 + rotation 0.999999837891598 -0.000290145134914 0.000489931197237 1.570287877095892 + name "coneblue8" + color "blue" +} +FsCone { + translation 15.049680319020014 -4.970880151862095 -0.24376681470478712 + rotation 0.999999999997203 0.000000180783413 -0.000002358167517 1.570554121632684 + name "coneblue9" + color "blue" +} +FsCone { + translation 19.949871130267862 -5.03069886002027 -0.24723002653303716 + rotation 0.999998119065172 0.001368703917437 -0.001374232769161 1.570593569878847 + name "coneblue10" + color "blue" +} +FsCone { + translation -30.051742321957175 -8.97009943721701 -0.45298109398730735 + rotation 0.999984359812047 -0.00383408447292 0.004071845717337 1.570383653935367 + name "coneyellow11" + color "yellow" +} +FsCone { + translation -24.95175393352475 -9.030338711819473 -0.4115265212791771 + rotation 0.999983901736105 -0.004017632149608 0.004006856691428 1.57207621408839 + name "coneyellow12" + color "yellow" +} +FsCone { + translation -20.00097358888442 -9.070827643523257 -0.3729975703990508 + rotation 0.999988809603948 -0.003355570982732 0.003334787888233 1.577199411084467 + name "coneyellow13" + color "yellow" +} +FsCone { + translation -15.05055781652578 -9.030956381812846 -0.34158642594418454 + rotation 0.999993094335862 -0.002636846371172 0.002618839781694 1.579284411067627 + name "coneyellow14" + color "yellow" +} +FsCone { + translation -9.9495310828558 -9.032547971857882 -0.3211060534150921 + rotation 0.99999712198476 -0.001389284867147 0.001955993290918 1.5785652926657 + name "coneyellow15" + color "yellow" +} +FsCone { + translation -5.050810082582804 -8.974014629939246 -0.3040543546373222 + rotation 0.999995963197091 -0.001999113366764 0.002019191736314 1.576709016659731 + name "coneyellow16" + color "yellow" +} +FsCone { + translation -0.00182532554993904 -9.091139519930723 -0.16687321027373148 + rotation 0.99999112195347 -0.00340369645084 0.002484122523479 3.196459120311737 + name "coneyellow17" + color "yellow" +} +FsCone { + translation 4.9476219895824 -9.072986073355297 -0.2622590633879344 + rotation 0.999998097512895 -0.001393838934925 0.001364618486484 1.574285060063245 + name "coneyellow18" + color "yellow" +} +FsCone { + translation 9.99844956039265 -9.032001614073652 -0.2548950829591702 + rotation 0.999999989076281 -0.000118725486971 0.000088043719249 1.575092408901173 + name "coneyellow19" + color "yellow" +} +FsCone { + translation 15.049548113313978 -9.031232500723648 -0.25427734470781116 + rotation 0.999999989625856 -0.000091293986838 0.000111416768377 1.575116068362844 + name "coneyellow20" + color "yellow" +} +FsCone { + translation 19.949839750345035 -9.07040313514633 -0.25679329025824527 + rotation 0.999998456679971 0.000989078630306 -0.001452019676054 1.574299106819415 + name "coneyellow21" + color "yellow" +} +FsCone { + translation 25.00003144275945 -4.970406701267396 -0.2709315798186641 + rotation 0.999989151337266 0.003305364125942 -0.003282038356019 1.571566085677094 + name "coneblue22" + color "blue" +} +FsCone { + translation 24.949858553613876 -9.030671875247537 -0.2784943170971134 + rotation 0.999991354764077 0.00294851770949 -0.002932002800721 1.573186041852923 + name "coneblue23" + color "blue" +} +FsCone { + translation 22.39990364344015 -4.970546161936961 -0.2558514181766219 + rotation 0.999994317702312 0.00239111671639 -0.002376367803208 1.571035415888418 + name "coneblue24" + color "blue" +} +FsCone { + translation 24.949990787861978 -7.080626026055748 -0.27387500357741 + rotation 0.99998937697345 0.003354341339849 -0.003161381727431 1.572659523770853 + name "coneblue25" + color "blue" +} +FsCone { + translation 24.949606531134393 -13.970439496915276 -0.288611190548164 + rotation 0.999998306135285 0.001318817182702 -0.001283918922343 1.571624550843897 + name "coneblue26" + color "blue" +} +FsCone { + translation 24.949571129617738 -19.02026922544326 -0.28976682146827615 + rotation 0.999999929664509 -0.000255149691589 0.000274899276089 1.570785169195328 + name "coneblue27" + color "blue" +} +FsCone { + translation 19.99944118390834 -14.030731164869144 -0.27773941435987076 + rotation 0.999999690636233 0.000534976834576 -0.00057665173637 1.574481612634826 + name "coneyellow28" + color "yellow" +} +FsCone { + translation 20.049387674097282 -19.020409667123673 -0.2925585563435718 + rotation 0.99999961047298 -0.000617988031681 0.000630194161028 1.573326847781801 + name "coneyellow29" + color "yellow" +} +FsCone { + translation 24.999474100496673 -28.93026232030229 -0.3027180804062261 + rotation 0.999988631506119 -0.00337879770514 0.003364607642217 1.572060330219962 + name "coneblue30" + color "blue" +} +FsCone { + translation 24.00001391273338 -21.9803113936953 -0.2954030516793744 + rotation 0.999998982255919 -0.000892172520689 0.001113335223497 1.573265767762802 + name "coneblue31" + color "blue" +} +FsCone { + translation 21.999471835617936 -23.930386227232592 -0.30651229169991767 + rotation 0.999997637027555 -0.001541231471798 0.001533148674153 1.574564187600936 + name "coneblue32" + color "blue" +} +FsCone { + translation 19.999479183323416 -25.88034967459509 -0.32112877057119954 + rotation 0.999996375747421 -0.00191162640633 0.001895831349247 1.574686521201552 + name "coneblue33" + color "blue" +} +FsCone { + translation 21.999575618604787 -27.930250180714786 -0.31867207985320023 + rotation 0.999993556135001 -0.002444396106467 0.002629185453396 1.573194060637557 + name "coneblue34" + color "blue" +} +FsCone { + translation 18.949468965154477 -20.930441136635974 -0.30172505285851975 + rotation 0.999998088862901 -0.001376096164487 0.001388751198795 1.574924679808515 + name "coneyellow35" + color "yellow" +} +FsCone { + translation 16.999268783213886 -22.980450548737945 -0.3177453324930295 + rotation 0.999996600363613 -0.001838602226314 0.001849000559899 1.5760832057063 + name "coneyellow36" + color "yellow" +} +FsCone { + translation 15.899186848213212 -25.980293274472395 -0.33801410967631795 + rotation 0.999997615301799 -0.001573046637078 0.001514897683883 1.576561661443787 + name "coneyellow37" + color "yellow" +} +FsCone { + translation 16.89950932302374 -29.0702199204696 -0.3453927901330975 + rotation 0.99999428019102 -0.002386683073714 0.002396524389554 1.573838626761027 + name "coneyellow38" + color "yellow" +} +FsCone { + translation 19.99951247695019 -30.980257660697692 -0.33427281719866636 + rotation 0.999994039580222 -0.002441441379283 0.002441345534958 1.572228810977036 + name "coneyellow39" + color "yellow" +} +FsCone { + translation 24.949463598418852 -31.020261164529398 -0.3057160866921277 + rotation 0.999988349513664 -0.003416133470155 0.003410405995303 1.572062643782032 + name "coneblue40" + color "blue" +} +FsCone { + translation 24.9494682791203 -34.980405284349125 -0.31147463916493373 + rotation 0.99999239968163 -0.002750732256273 0.002762978651548 1.572720515587374 + name "coneblue41" + color "blue" +} +FsCone { + translation 19.9995031936411 -34.98040922962456 -0.33595358824953037 + rotation 0.999995244151304 -0.002237910567625 0.002122128899423 1.571158642858288 + name "coneyellow42" + color "yellow" +} +FsCone { + translation 23.89946664331752 -38.92071933899057 -0.3260908132399197 + rotation 0.999996150327498 -0.002078909228008 0.001837788509568 1.574007991834555 + name "coneblue43" + color "blue" +} +FsCone { + translation 20.99911237711689 -42.02119282082197 -0.3438599081881363 + rotation 0.999999093780799 -0.000950815534539 0.00095309359443 1.574494455440222 + name "coneblue44" + color "blue" +} +FsCone { + translation 17.999020468158516 -40.92121195567802 -0.3496800014924158 + rotation 0.999997131850815 -0.001679950111405 0.001707061149132 1.573056835251988 + name "coneblue45" + color "blue" +} +FsCone { + translation 14.999270945775757 -37.98056486088682 -0.3590117215301765 + rotation 0.99999503186229 -0.002230353379692 0.002227504105522 1.571215171447288 + name "coneblue46" + color "blue" +} +FsCone { + translation 19.9993182428544 -36.92070325663271 -0.3365406045913804 + rotation 0.999996215982206 -0.001945575791953 0.001944930874687 1.571455909734407 + name "coneyellow47" + color "yellow" +} +FsCone { + translation 17.949587497120742 -36.02033074091328 -0.3451487791406483 + rotation 0.999994970820593 -0.002278691138604 0.00220587855895 1.570730870572671 + name "coneyellow48" + color "yellow" +} +FsCone { + translation 14.99918698762777 -32.98036022069733 -0.35973872907474325 + rotation 0.99999402649571 -0.002388130275369 0.002498761030128 1.571288283910859 + name "coneyellow49" + color "yellow" +} +FsCone { + translation 11.998464240977244 -34.920763988592064 -0.37364360057132523 + rotation 0.999994857016164 -0.002277934457728 0.002257643866702 1.570526300320491 + name "coneblue50" + color "blue" +} +FsCone { + translation 9.027700067383007 -31.94046630805537 -0.3862610064822085 + rotation 0.999993646798678 -0.002515185080479 0.002525907023616 1.571827283207977 + name "coneblue51" + color "blue" +} +FsCone { + translation 6.027417980572284 -28.990551746074253 -0.3919511832346573 + rotation 0.999990197180067 -0.003107580577804 0.003154122179578 1.576910129928037 + name "coneblue52" + color "blue" +} +FsCone { + translation 3.026542463201879 -25.990986196075816 -0.38833514219783405 + rotation 0.999988809246794 -0.00328716898136 0.003402337618033 1.578976907428354 + name "coneblue53" + color "blue" +} +FsCone { + translation 11.912707194464978 -29.9399987644817 -0.2556868992355906 + rotation 0.555812805038584 -0.589588559499614 0.586052434737977 2.125316267494761 + name "coneyellow54" + color "yellow" +} +FsCone { + translation 9.02753808872746 -27.04040592931397 -0.36803540292811404 + rotation 0.999996903303651 -0.001643508358018 0.001868759852151 1.576846941548049 + name "coneyellow55" + color "yellow" +} +FsCone { + translation 6.076685700970911 -23.941015275861854 -0.356368874992369 + rotation 0.999997074338065 -0.001685051405396 0.001735487560139 1.578959362910153 + name "coneyellow56" + color "yellow" +} +FsCone { + translation 3.0466257816925775 -20.941760779641598 -0.344028764064419 + rotation 0.999993357294896 -0.002557619171802 0.00259691167626 1.578849767888835 + name "coneyellow57" + color "yellow" +} +FsCone { + translation -0.0027875570282445976 -23.091745300517154 -0.38152464474638015 + rotation 0.999988556232796 -0.003363989320701 0.003401614219618 1.580115790990786 + name "coneblue58" + color "blue" +} +FsCone { + translation 0.04836078510504514 -18.98101109674055 -0.3453571141094318 + rotation 0.999990505280722 -0.002947387880458 0.003209712306212 1.578017670808215 + name "coneyellow59" + color "yellow" +} +FsCone { + translation -2.003006753357067 -22.072123062760923 -0.3855900853694413 + rotation 0.999988226612085 -0.003312944694679 0.00354556549345 1.580511830400029 + name "coneblue60" + color "blue" +} +FsCone { + translation -2.952208870901785 -17.982886684676426 -0.3574951442401066 + rotation 0.99998914192299 -0.00329147508026 0.003298822201755 1.578207467198433 + name "coneyellow61" + color "yellow" +} +FsCone { + translation -4.052091919017072 -20.982436418318617 -0.38923265843093974 + rotation 0.999989071361401 -0.003289723154479 0.003321878885329 1.579663851734168 + name "coneblue62" + color "blue" +} +FsCone { + translation -5.951107952782308 -17.043919936265244 -0.2546861877674197 + rotation 0.999994542486586 0.001669893446254 0.002850693410772 3.199624715658801 + name "coneyellow63" + color "yellow" +} +FsCone { + translation -8.949135170104046 -15.973143044534382 -0.3765410275055898 + rotation 0.999994372657789 -0.002027581332711 0.00267274516092 1.578319107560044 + name "coneyellow64" + color "yellow" +} +FsCone { + translation -12.00047164420449 -15.089114789947855 -0.26826027615385606 + rotation 0.999922008952159 0.012379578100556 0.001649866397514 3.20063157200837 + name "coneyellow65" + color "yellow" +} +FsCone { + translation -14.948780694500288 -13.97248927877133 -0.38332777624487535 + rotation 0.999998447425881 -0.001250521132382 0.001241508245896 1.578843712629663 + name "coneyellow66" + color "yellow" +} +FsCone { + translation -17.949682406821598 -12.971852674466648 -0.3853318015918149 + rotation 0.999997726543898 -0.001528413021411 0.001486896322018 1.578362569186843 + name "coneyellow67" + color "yellow" +} +FsCone { + translation -6.950135786975462 -19.932921339474188 -0.3972949754806823 + rotation 0.999992955794882 -0.002671633400331 0.002636424774037 1.579633568070593 + name "coneblue68" + color "blue" +} +FsCone { + translation -9.948743399333996 -19.02315212320093 -0.40452183409107345 + rotation 0.99999471070248 -0.002261378672935 0.002337676958315 1.578628885065545 + name "coneblue69" + color "blue" +} +FsCone { + translation -12.948229687624703 -18.02333416512139 -0.4080342677025486 + rotation 0.999998426061658 -0.001114568210083 0.001380439028848 1.578514065740141 + name "coneblue70" + color "blue" +} +FsCone { + translation -15.998944268162653 -16.983034895812978 -0.4073400359247123 + rotation 0.999999341688216 -0.000824687404434 0.000797818161397 1.577719092036899 + name "coneblue71" + color "blue" +} +FsCone { + translation -18.899920458792597 -15.97256110728039 -0.40562754902348563 + rotation 0.999999784697956 -0.000477019911506 0.000450617404708 1.57645523800304 + name "coneblue72" + color "blue" +} +FsCone { + translation -23.001161737268482 -12.961049897520828 -0.40567395755387686 + rotation 0.999995161663746 -0.002308775726777 0.002084755079744 1.573763163548353 + name "coneyellow73" + color "yellow" +} +FsCone { + translation -20.60076781204904 -12.961580880341616 -0.3950167384269422 + rotation 0.999995665163352 -0.002084680915757 0.002079365284217 1.575275054509879 + name "coneyellow74" + color "yellow" +} +FsCone { + translation -23.05086040162094 -16.074119793307055 -0.2995977026056773 + rotation 0.999997935324608 0.001732621736002 0.00106177607884 3.195856509003371 + name "coneyellow75" + color "yellow" +} +FsCone { + translation -19.960016118961725 -17.012367183261553 -0.4122978153309568 + rotation 0.999999840375418 -0.000415268884317 0.00038314604624 1.57619508829105 + name "coneblue76" + color "blue" +} +FsCone { + translation -22.991092268369666 -18.01276725031865 -0.42013661023425247 + rotation 0.999999653087504 -0.000616726311983 0.000559887067405 1.574566623141786 + name "coneyellow77" + color "yellow" +} +FsCone { + translation -22.990353273946184 -20.96288359969403 -0.4313575690342677 + rotation 0.999999185703016 -0.000882133704155 -0.000922189477538 1.574904609426149 + name "coneyellow78" + color "yellow" +} +FsCone { + translation -19.90992070872609 -19.013323833276377 -0.42242854757952336 + rotation 0.999999983571939 0.000053663831488 -0.000173136692428 1.576552419614787 + name "coneblue79" + color "blue" +} +FsCone { + translation -20.060119559782937 -20.912964073630317 -0.43300829372203337 + rotation 0.999999672208324 0.000549181897664 -0.000594964274401 1.577109011631084 + name "coneblue80" + color "blue" +} +FsCone { + translation -23.050520377710896 -24.883345236211344 -0.4497554092705255 + rotation 0.999998011431781 0.001426236885988 -0.001393908472257 1.576283002238663 + name "coneyellow81" + color "yellow" +} +FsCone { + translation -20.04990747941363 -24.93381768498818 -0.4603381177901691 + rotation 0.999996273185084 0.001979973165333 -0.001879713331372 1.578730981078984 + name "coneblue82" + color "blue" +} +FsCone { + translation -23.052292857583517 -29.021403214308872 -0.4762771615559628 + rotation 0.999994059431626 0.002360748551961 -0.002511566788195 1.578087659244175 + name "coneyellow83" + color "yellow" +} +FsCone { + translation -19.999627316250795 -29.02366086774487 -0.49336816025218727 + rotation 0.999991297429296 0.002802857682208 -0.003090154443803 1.579412564454341 + name "coneblue84" + color "blue" +} +FsCone { + translation -20.999416737259978 -32.982858000532694 -0.5201487917869521 + rotation 0.999991545229286 0.003093220863978 -0.002709511880706 1.579061076318857 + name "coneblue85" + color "blue" +} +FsCone { + translation -23.998198547978635 -35.92213228610711 -0.5308400037331251 + rotation 0.99999581723852 0.001888231224073 -0.002190910383577 1.580259477629292 + name "coneblue86" + color "blue" +} +FsCone { + translation -26.957114020385283 -37.870869585441284 -0.5418480390466379 + rotation 0.999999780252104 0.000459778613274 -0.000477597498153 1.580431333918931 + name "coneblue87" + color "blue" +} +FsCone { + translation -24.009279262862844 -30.973496781537246 -0.48655134875953054 + rotation 0.999994073989016 0.00245074768004 -0.002417813611224 1.578859597864537 + name "coneyellow88" + color "yellow" +} +FsCone { + translation -26.00920532586457 -32.8718418832717 -0.4953226658935085 + rotation 0.999997860836284 0.001502573721748 -0.001421476368699 1.579673058648205 + name "coneyellow89" + color "yellow" +} +FsCone { + translation -28.00805966161632 -33.97172442343092 -0.50241103464657 + rotation 0.999999863769155 0.000349068404187 -0.000388088803961 1.580342994896279 + name "coneyellow90" + color "yellow" +} +FsCone { + translation -30.036782249564915 -37.95953197457817 -0.5419011295443548 + rotation 0.999999893662306 -0.000382763469389 0.000257230448423 1.580228525346303 + name "coneblue91" + color "blue" +} +FsCone { + translation -32.95722499488625 -36.959116315229544 -0.5368992841044709 + rotation 0.999999248196028 -0.000552424706019 0.001094730251665 1.579702124401936 + name "coneblue92" + color "blue" +} +FsCone { + translation -35.957087385576045 -34.95860826934135 -0.527198468219219 + rotation 0.999998457963679 -0.001354866743653 0.001117321068835 1.578306493258956 + name "coneblue93" + color "blue" +} +FsCone { + translation -38.96469171642392 -32.94540839163478 -0.5254678523909991 + rotation 0.999993419932854 -0.003624035684301 0.000162654093042 1.575419211734546 + name "coneblue94" + color "blue" +} +FsCone { + translation -39.79781995534305 -29.94020537855249 -0.4040247842844338 + rotation 0.560712976204656 0.585538853146782 -0.585444454898385 2.12383895306804 + name "coneblue95" + color "blue" +} +FsCone { + translation -40.90685683005996 -25.990407497103373 -0.5193431881272875 + rotation 0.999995141496396 -0.002206937506166 0.002201456437703 1.571299921034411 + name "coneblue96" + color "blue" +} +FsCone { + translation -40.792716459939726 -21.940296981748187 -0.4040790233657455 + rotation 0.560042396951121 0.584719698963984 -0.586903217967589 2.12401889396534 + name "coneblue97" + color "blue" +} +FsCone { + translation -41.057280642019265 -17.940121886279947 -0.515979913547381 + rotation 0.999999275273822 -0.000875786722347 0.000826104985742 1.571738953887751 + name "coneblue98" + color "blue" +} +FsCone { + translation -40.00790889796448 -13.990266669740011 -0.5120309429670511 + rotation 0.999998206846723 -0.001502443092016 0.001152808784913 1.57120498544531 + name "coneblue99" + color "blue" +} +FsCone { + translation -38.00902090270572 -10.940505628970273 -0.5050783465996871 + rotation 0.99999491637268 -0.002264637527529 0.002244692777587 1.571297684516878 + name "coneblue100" + color "blue" +} +FsCone { + translation -31.96133069552481 -5.990112934512552 -0.46546452203945404 + rotation 0.999990436172946 -0.003015451619373 0.003167745913345 1.572521492889895 + name "coneblue101" + color "blue" +} +FsCone { + translation -33.960927819696664 -7.8402172042014815 -0.48067870463733586 + rotation 0.999990426110709 -0.003048154358629 0.003139497082164 1.571833651691948 + name "coneblue102" + color "blue" +} +FsCone { + translation -35.96035342137124 -9.740373810133859 -0.4943836275991454 + rotation 0.999991213329834 -0.002849566027903 0.003074611614439 1.571181805404984 + name "coneblue103" + color "blue" +} +FsCone { + translation -32.04160340224705 -10.840381767108378 -0.46690467571438105 + rotation 0.999985008149299 -0.003871750240924 0.003872082994878 1.569884365839767 + name "coneyellow104" + color "yellow" +} +FsCone { + translation -34.041191395179574 -12.040483349905555 -0.4811525449068367 + rotation 0.999985697337504 -0.003854195645437 0.003708139203571 1.570086838005092 + name "coneyellow105" + color "yellow" +} +FsCone { + translation -35.940346023987495 -13.740541128947443 -0.493368388909865 + rotation 0.999988250301107 -0.003699827569425 0.003132177467481 1.570357312966125 + name "coneyellow106" + color "yellow" +} +FsCone { + translation -36.93948559682363 -16.890426054761104 -0.49889969892236186 + rotation 0.999992221185444 -0.002800087001428 0.002777963532172 1.570750673128821 + name "coneyellow107" + color "yellow" +} +FsCone { + translation -36.98844716497948 -21.940728247183124 -0.49884654312160354 + rotation 0.999991219801175 -0.002958689414771 0.002967570977374 1.570295651975148 + name "coneyellow108" + color "yellow" +} +FsCone { + translation -37.03854149570321 -25.990748722241623 -0.4982133208289258 + rotation 0.999991921282679 -0.003084227633133 0.002577772154987 1.57147599226425 + name "coneyellow109" + color "yellow" +} +FsCone { + translation -35.94700732015136 -28.93214529739378 -0.496046219831067 + rotation 0.999991626196301 -0.001037750517182 0.00395861227475 1.573492977366903 + name "coneyellow110" + color "yellow" +} +FsCone { + translation -33.987831797932515 -31.090305032535372 -0.4955354695804137 + rotation 0.999995545197991 -0.002101595941881 0.002119641165391 1.576218514201126 + name "coneyellow111" + color "yellow" +} +FsCone { + translation -32.03768533604996 -32.94030941955354 -0.5002293583536495 + rotation 0.999997454694268 -0.001605767076511 0.001584965956194 1.578605105261244 + name "coneyellow112" + color "yellow" +} +FsCone { + translation -30.037965686162146 -33.94058473010367 -0.503490436087814 + rotation 0.999999443483189 -0.0007679698544 0.000723364096043 1.579905044657756 + name "coneyellow113" + color "yellow" +} +FsCone { + translation -28.001751230257195 -4.970063283887694 -0.4350173461394994 + rotation 0.999980375606925 -0.004422371894083 0.004437457364759 1.572630676816125 + name "coneblue114" + color "blue" +} +FsCone { + translation -28.001746109730547 -9.02016028145425 -0.4364535165559646 + rotation 0.999983641144834 -0.004031581872151 0.004057559651735 1.57091263842091 + name "coneyellow115" + color "yellow" +} +FsCone { + translation -4.02903857306312 -4.940098880224423 -0.28476666170562615 + rotation 0.999998129527408 -0.00144253992671 0.001288417729516 1.571009053339449 + name "coneorange116" +} +FsCone { + translation -3.926957746301699 -8.988994032624676 -0.29948085935692625 + rotation 0.999993984462025 -0.001653141104478 0.003049289138615 1.575860686754741 + name "coneorange117" +} +FsCone { + translation -6.030643294798466 -4.842979270424543 -0.2883752926513967 + rotation 0.999999234306421 -0.000920127838913 0.000827497027871 1.572512507427255 + name "coneorange118" +} +FsCone { + translation -6.030156585468064 -9.043558892319073 -0.30842392138477115 + rotation 0.999995933097583 -0.002038825368818 0.001994236548305 1.576733768843684 + name "coneorange119" +} diff --git a/worlds/fig8.wbt b/worlds/fig8.wbt index bda8aaa..952534b 100644 --- a/worlds/fig8.wbt +++ b/worlds/fig8.wbt @@ -1,7 +1,6 @@ #VRML_SIM R2020b utf8 WorldInfo { basicTimeStep 8 - coordinateSystem "NUE" } Viewpoint { orientation -0.0194119587355778 0.9986830978443145 0.04748942975159419 3.165237659433459 @@ -13,433 +12,431 @@ TexturedBackground { texture "noon_park_empty" } UnevenTerrain { - translation 0 -1 0 + translation 0 -0.0 -1 size 100 1 100 appearance Asphalt { textureTransform TextureTransform { scale 50 50 } } + rotation 1 0 0 1.5707963267948966 } CoventryVehicle { - hidden position_0_0 1.5627884567344804e-10 - hidden position2_0_0 2.8825469847842023e-06 - hidden position_0_1 6.243273010604499e-10 - hidden position2_0_1 2.309854121496215e-06 - hidden position_0_2 4.41763805598473e-06 - hidden position_0_3 3.9711375998556165e-06 - hidden rotation_1 5.4215541418264946e-05 0.9999999985303374 7.813942272188544e-11 2.882517843187811e-06 - hidden rotation_2 -0.0002702886179887213 -0.9999999634720308 3.121636391275207e-10 2.3098241853308327e-06 - hidden rotation_3 0 1 0 4.417685413887999e-06 - hidden rotation_4 0 -1 0 3.971096554074315e-06 - translation -0.0039107813669056034 -0.04430346361267842 -13.398072542952882 - rotation 0.9412701422802876 0.09898625310303519 0.3228192078366297 0.003945606651277226 - controller "ros_automobile" + translation -0.0039107813669056034 13.398072542952882 -0.04430346361267842 + rotation 0.999999557918928 -0.00044076030825 0.000830597555246 1.574510651156358 + name "fsai" controllerArgs [ "--name=fsai" ] + synchronization FALSE + moreAddons [ + Display { + width 200 + height 200 + } + ] } FsCone { - translation -4.670149598731457 -0.49324819126392794 9.241914323895584 - rotation -0.9977459167735293 0.0005356220174310924 -0.06710289614319057 -0.010710730873417847 + translation -4.670149598731457 -9.241914323895584 -0.49324819126392794 + rotation 0.999999872218545 -0.000360307153546 0.000354600687771 1.581483043023724 name "coneyellow5" color "yellow" } FsCone { - translation -8.499083800118242 -0.4962866221605927 10.002042435551623 - rotation -0.9132438913696358 0.03358738146839687 0.40602645564315304 -0.010122258445511092 + translation -8.499083800118242 -10.002042435551623 -0.4962866221605927 + rotation 0.9999957872617 0.001876298027089 -0.002214715459383 1.580044643155299 name "coneyellow6" color "yellow" } FsCone { - translation -12.329681975576769 -0.47184648036369486 9.24079132457516 - rotation 0.823110671397499 0.0008834560632273873 -0.5678803061710652 0.00947303840942871 + translation -12.329681975576769 -9.24079132457516 -0.47184648036369486 + rotation 0.999992821143049 0.002683499108029 -0.002675162593943 1.578600883268941 name "coneyellow7" color "yellow" } FsCone { - translation -15.569710203579055 -0.4460123143018799 7.070746918594647 - rotation -0.9321807505909737 0.0005203484646591106 0.36199278648216765 -0.004677253882774325 + translation -15.569710203579055 -7.070746918594647 -0.4460123143018799 + rotation 0.999999286437104 0.000843511242753 -0.000845939753112 1.575157087427991 name "coneyellow8" color "yellow" } FsCone { - translation -17.74023763854834 -0.4354390591058245 3.8304528055776608 - rotation 0.8474644031838452 0.0018815449623801393 0.5308488910460334 0.0032829971569154444 + translation -17.74023763854834 -3.8304528055776608 -0.4354390591058245 + rotation 0.999999242781653 -0.00086709304475 0.000873261571266 1.573579307941043 name "coneyellow9" color "yellow" } FsCone { - translation -18.500534243528747 -0.43089930469386184 0.00018123663566103757 - rotation 0.26399056042353 0.0017407977628027015 0.9645236926226434 0.005227643808395131 + translation -18.500534243528747 -0.00018123663566103757 -0.43089930469386184 + rotation 0.999993652862565 -0.002514797502406 0.00252389146095 1.572182725488914 name "coneyellow10" color "yellow" } FsCone { - translation -17.740735788316606 -0.42261523355856484 -3.8299038818418567 - rotation 0.13203317031682643 0.003106596204302887 0.9912404304688704 0.005456389682010701 + translation -17.740735788316606 3.8299038818418567 -0.42261523355856484 + rotation 0.99999269201544 -0.002694837900252 0.002711782514234 1.571524060988674 name "coneyellow11" color "yellow" } FsCone { - translation -15.570775514487474 -0.4058846336776488 -7.0698777960225865 - rotation 0.14373010007327475 0.006144836498943038 0.9895978472679332 0.0078598680828813 + translation -15.570775514487474 7.0698777960225865 -0.4058846336776488 + rotation 0.999984891933265 -0.003862685122574 0.003910954980443 1.57194114028783 name "coneyellow12" color "yellow" } FsCone { - translation -12.330389281411787 -0.3746206526296941 -9.239824155940228 - rotation -0.5359618272530909 0.0005308885050290449 -0.8442420493465859 -0.008684252211273787 + translation -12.330389281411787 9.239824155940228 -0.3746206526296941 + rotation 0.999986624294943 -0.003659567965258 0.003654968332672 1.57546415097662 name "coneyellow13" color "yellow" } FsCone { - translation -8.500332781974143 -0.3407131511978955 -9.999706218762165 - rotation 0.6621338204444764 0.00198115261976467 0.7493829987782609 0.009836111128192515 + translation -8.500332781974143 9.999706218762165 -0.3407131511978955 + rotation 0.999986505031617 -0.003663812862843 0.003683236342967 1.577322672895271 name "coneyellow14" color "yellow" } FsCone { - translation -4.670102876319236 -0.3256111195043153 -9.239773991699328 - rotation 0.8953316470849149 0.004550314860436557 0.44537684758290325 0.009863106257925287 + translation -4.670102876319236 9.239773991699328 -0.3256111195043153 + rotation 0.999995217607382 -0.002164409933606 0.002209093027539 1.579631874385467 name "coneyellow15" color "yellow" } FsCone { - translation 13.449770075012625 -0.34827172675575424 4.95043103720235 - rotation -0.8825497255967699 0.0010013037756294203 -0.4702180124578545 -0.009386504536003705 + translation 13.449770075012625 -4.95043103720235 -0.34827172675575424 + rotation 0.999995169843479 -0.002202434068564 0.002193074072179 1.579085227248177 name "coneyellow20" color "yellow" } FsCone { - translation 11.179526579397304 -0.3724545007069676 6.470777583307912 - rotation 0.8540348974019748 0.0006106113464739905 0.5202153603781628 0.010980407697722312 + translation 11.179526579397304 -6.470777583307912 -0.3724545007069676 + rotation 0.999991918645485 -0.002839427885716 0.002846101369312 1.58018208468657 name "coneyellow21" color "yellow" } FsCone { - translation 8.499483111335586 -0.39482029394137713 7.000834160671971 - rotation 0.8258520667627777 0.015425865784368917 0.5636757990977183 0.011991985995501166 + translation 8.499483111335586 -7.000834160671971 -0.39482029394137713 + rotation 0.99998868072366 -0.00327110687472 0.003455182248193 1.580711289736466 name "coneyellow22" color "yellow" } FsCone { - translation 5.820808629601677 -0.4089723220520353 6.469474302190553 - rotation -0.8129479112290973 0.029221705481155383 -0.5816027729963297 -0.012718433720661565 + translation 5.820808629601677 -6.469474302190553 -0.4089723220520353 + rotation 0.999986426895966 -0.003864386923258 0.003494644123106 1.581149370655881 name "coneyellow23" color "yellow" } FsCone { - translation 3.550893657390945 -0.40907482328489647 4.949483293276098 - rotation -0.8489722699165126 0.0405704067901927 -0.5268777154195101 -0.01201389745366813 + translation 3.550893657390945 -4.949483293276098 -0.40907482328489647 + rotation 0.999990025743685 -0.0033913436206 0.002906406989856 1.581005800630525 name "coneyellow24" color "yellow" } FsCone { - translation 2.0305964221177195 -0.3966489646008975 2.6796980741976313 - rotation -0.8433397709534158 0.021217613169110257 -0.5369616779805112 -0.010800942965368798 + translation 2.0305964221177195 -2.6796980741976313 -0.3966489646008975 + rotation 0.99999165390113 -0.003000768560451 0.002772637035204 1.57991356292085 name "coneyellow25" color "yellow" } FsCone { - translation 1.4995617198822873 -0.3778208329274506 0.000639911935045621 - rotation -0.8250840888782982 0.0023963304313352417 -0.5650048706695656 -0.009171668456974768 + translation 1.4995617198822873 -0.000639911935045621 -0.3778208329274506 + rotation 0.999993336991816 -0.00259220057698 0.002570305067719 1.578370404281215 name "coneyellow26" color "yellow" } FsCone { - translation 2.0296801111148586 -0.3551605202506501 -2.679564081518248 - rotation 0.8247085431335693 0.00881082472555254 0.5654893352223023 0.009431314263500992 + translation 2.0296801111148586 2.679564081518248 -0.3551605202506501 + rotation 0.999992942204265 -0.002614936245062 0.002697712010569 1.578581488289174 name "coneyellow27" color "yellow" } FsCone { - translation 3.54996728020116 -0.32925758243196573 -4.949908235462618 - rotation -0.8130439449459036 0.005594535235143481 -0.5821754415657749 -0.009451350718764176 + translation 3.54996728020116 4.949908235462618 -0.32925758243196573 + rotation 0.99999248816052 -0.002766978594197 0.002714305065943 1.578488221303347 name "coneyellow28" color "yellow" } FsCone { - translation 5.819988375825831 -0.30544312263744217 -6.469984317674692 - rotation 0.753335558700535 0.0011952641097664146 0.6576352388224499 0.008563351949879595 + translation 5.819988375825831 6.469984317674692 -0.30544312263744217 + rotation 0.99999212225019 -0.002801621508736 0.002811824049006 1.577255298986586 name "coneyellow29" color "yellow" } FsCone { - translation 8.499940617594437 -0.28771755389969994 -6.999927525083253 - rotation 0.7735302252567512 0.0003951720046292179 0.6337592874690882 0.007577144408047128 + translation 8.499940617594437 6.999927525083253 -0.28771755389969994 + rotation 0.99999426862735 -0.002392531882702 0.00239551740587 1.57666321956939 name "coneyellow30" color "yellow" } FsCone { - translation 11.17991971292687 -0.27823792418618754 -6.469897210599042 - rotation 0.7882461351128106 0.003184613579962499 0.615351841401375 0.006692242429878858 + translation 11.17991971292687 6.469897210599042 -0.27823792418618754 + rotation 0.99999578250555 -0.002042996194296 0.002064252325394 1.576075685925218 name "coneyellow31" color "yellow" } FsCone { - translation 13.449944525355104 -0.27992084100377534 -4.949875885629624 - rotation 0.9103371864605312 0.0009296602984646273 0.41386633431441766 0.006822480621855715 + translation 13.449944525355104 4.949875885629624 -0.27992084100377534 + rotation 0.999998019130011 -0.001404268100374 0.001410591066502 1.577009069568999 name "coneyellow32" color "yellow" } FsCone { - translation 14.969985550643939 -0.2911836616742395 -2.6799449433232945 - rotation 0.966827004810599 0.0007823892503846273 0.2554308725194094 0.006356755679874267 + translation 14.969985550643939 2.6799449433232945 -0.2911836616742395 + rotation 0.999999344912436 -0.000806891751914 0.000811849986299 1.576942866274869 name "coneyellow33" color "yellow" } FsCone { - translation 15.500017306014774 -0.30647483278842963 3.1752291607584126e-05 - rotation -0.9553853808427327 0.027598385049837488 -0.2940698951178572 -0.006580234101920351 + translation 15.500017306014774 -3.1752291607584126e-05 -0.30647483278842963 + rotation 0.999999061555085 -0.001055012853677 0.000873977589938 1.577083926664131 name "coneyellow34" color "yellow" } FsCone { - translation 14.969938051901183 -0.3256764126064875 2.6802066980536257 - rotation -0.9582368169252177 0.00031123424830783395 -0.2859757084478851 -0.007979609513515814 + translation 14.969938051901183 -2.6802066980536257 -0.3256764126064875 + rotation 0.999998708033055 -0.001137883237919 0.001135409159075 1.578443977663576 name "coneyellow35" color "yellow" } FsCone { - translation -1.5004987638965257 -0.3927150711606782 0.0008122478471229841 - rotation 0.8499758705977668 6.882107206986249e-05 0.5268216156017409 0.009024217616384243 + translation -1.5004987638965257 -0.0008122478471229841 -0.3927150711606782 + rotation 0.99999439257208 -0.00236768814566 0.002368306829939 1.578472315745519 name "coneblue2" color "blue" } FsCone { - translation -2.0306031218376157 -0.4172502106506053 2.6812780490403227 - rotation -0.9143039215818878 0.013098962846304674 -0.4048169415332469 -0.010140304350051116 + translation -2.0306031218376157 -2.6812780490403227 -0.4172502106506053 + rotation 0.999995821683503 -0.002109129244802 0.001976914101391 1.580071838006407 name "coneblue3" color "blue" } FsCone { - translation -3.550182028711148 -0.4461689450841325 5.0635544851602 - rotation -0.9159059665084909 0.23672805980206293 -0.32415441724045385 -0.011348199511309815 + translation -3.550182028711148 -5.0635544851602 -0.4461689450841325 + rotation 0.999994866223959 -0.003166066899879 0.000493503911768 1.581195361919879 name "coneblue4" color "blue" } FsCone { - translation -5.8202689848451445 -0.4652522055881319 6.471913343344528 - rotation 0.989885463467077 0.004890376449208795 0.14178453171892766 0.010622444051469641 + translation -5.8202689848451445 -6.471913343344528 -0.4652522055881319 + rotation 0.999999438155552 -0.000723279004749 0.000774955522334 1.581311893551463 name "coneblue5" color "blue" } FsCone { - translation -8.499598070652164 -0.46760422198671947 7.001735809710993 - rotation 0.9481032744781899 0.038250225056303426 -0.31565345112460946 0.01022476610316556 + translation -8.499598070652164 -7.001735809710993 -0.46760422198671947 + rotation 0.999997382994755 0.00180057460205 -0.00141135918331 1.580493086442315 name "coneblue6" color "blue" } FsCone { - translation -11.179488983249763 -0.45530140208593095 6.471328844197172 - rotation 0.9278533037988927 0.01872395099489608 -0.3724750465314692 0.007776186831573829 + translation -11.179488983249763 -6.471328844197172 -0.45530140208593095 + rotation 0.999997912440083 0.001515555221163 -0.001370477233384 1.578013580002212 name "coneblue7" color "blue" } FsCone { - translation -13.449793369908255 -0.43947360862843665 4.950805432227032 - rotation -0.9681102921924629 0.0025202468030788745 0.25051169734580353 -0.005161584251953567 + translation -13.449793369908255 -4.950805432227032 -0.43947360862843665 + rotation 0.999999584050871 0.000638420446048 -0.000651396515059 1.575793726273547 name "coneblue8" color "blue" } FsCone { - translation -14.970145328589863 -0.42836228446235636 2.680453015337379 - rotation 0.9541753424038635 0.0014684037881770714 0.2992444815510967 0.0032605071901240196 + translation -14.970145328589863 -2.680453015337379 -0.42836228446235636 + rotation 0.999999762740494 -0.00048469686638 0.000489477174591 1.573907659864641 name "coneblue9" color "blue" } FsCone { - translation -15.50028434179511 -0.42054809963358963 0.0004167693554542124 - rotation 0.8429265262809876 0.006236390185351399 0.5379925452358271 0.0037424425132745543 + translation -15.50028434179511 -0.0004167693554542124 -0.42054809963358963 + rotation 0.999998989601808 -0.000993466577975 0.001016769158143 1.573951942321912 name "coneblue10" color "blue" } FsCone { - translation -14.970380043053389 -0.4114306587235693 -2.6796060582157475 - rotation -0.7185244625111067 0.0009108534946087292 -0.695501090667036 -0.004402308095888106 + translation -14.970380043053389 2.6796060582157475 -0.4114306587235693 + rotation 0.999997663722269 -0.001530488266136 0.001526484743229 1.573961831593211 name "coneblue11" color "blue" } FsCone { - translation -13.450592711945 -0.3985113622008767 -4.949685154580522 - rotation 0.4809214927129946 0.008991336925689127 0.8767175564039961 0.006157638994415267 + translation -13.450592711945 4.949685154580522 -0.3985113622008767 + rotation 0.999992734819573 -0.002667611568526 0.002722894891447 1.573764940099425 name "coneblue12" color "blue" } FsCone { - translation -11.18037668929509 -0.3804737699299045 -6.469447445512164 - rotation -0.8087454729255722 0.008765017653416278 -0.5880934742776253 -0.008246127436661293 + translation -11.18037668929509 6.469447445512164 -0.3804737699299045 + rotation 0.999994158305053 -0.002452706543389 0.002380669313654 1.577471199683293 name "coneblue13" color "blue" } FsCone { - translation -8.500312311106283 -0.3630575144689274 -6.999418135123083 - rotation 0.8803629451218767 0.0014915798331298538 0.4742982817235759 0.009321180112493218 + translation -8.500312311106283 6.999418135123083 -0.3630575144689274 + rotation 0.999995153415673 -0.002194559123305 0.002208405628093 1.579007208169491 name "coneblue14" color "blue" } FsCone { - translation -5.820163543416649 -0.3556957609791803 -6.469532455161771 - rotation 0.905161554154856 0.0005017568805072338 0.4250674171469727 0.010179212567450753 + translation -5.820163543416649 6.469532455161771 -0.3556957609791803 + rotation 0.999995362363232 -0.002150971260252 0.002156055348442 1.580014810487917 name "coneblue15" color "blue" } FsCone { - translation -3.55020042125211 -0.3608542453475377 -4.949410444078823 - rotation -0.9208878501634501 0.03092304417402874 -0.3885991929486604 -0.01006593824357215 + translation -3.55020042125211 4.949410444078823 -0.3608542453475377 + rotation 0.999996185987538 -0.00210171114723 0.001791876287974 1.580069752773825 name "coneblue16" color "blue" } FsCone { - translation -2.0301380879893958 -0.37446195589438813 -2.6795333995150656 - rotation -0.8946564148512569 0.006130869775964403 -0.4467127844614318 -0.009291945151723238 + translation -2.0301380879893958 2.6795333995150656 -0.37446195589438813 + rotation 0.999995727398062 -0.002095196497361 0.002038464436482 1.579113709532719 name "coneblue17" color "blue" } FsCone { - translation 15.570186319459001 -0.3578224000500658 7.0700229395553515 - rotation -0.891242148937152 0.03335581966623663 -0.45229948181739177 -0.008479133725769932 + translation 15.570186319459001 -7.0700229395553515 -0.3578224000500658 + rotation 0.999996330746085 -0.002051222353563 0.001769457889295 1.578356966626312 name "coneblue20" color "blue" } FsCone { - translation 12.329509911927813 -0.3890931260670989 9.240768535190744 - rotation 0.8441385952909711 0.0009391345221259605 0.5361241926704443 0.00938563153388396 + translation 12.329509911927813 -9.240768535190744 -0.3890931260670989 + rotation 0.999993719887944 -0.002501617595259 0.002510397195546 1.578725397265212 name "coneblue21" color "blue" } FsCone { - translation 8.49890516823106 -0.42255825225629184 10.001121038628193 - rotation 0.7183171662913197 0.003208337884260729 0.6957083837206715 0.011371847818071391 + translation 8.49890516823106 -10.001121038628193 -0.42255825225629184 + rotation 0.999984478822769 -0.003921467276984 0.003957803424837 1.578980483682122 name "coneblue22" color "blue" } FsCone { - translation 4.671165034735883 -0.4458517208015055 9.238874718152298 - rotation 0.7989651724120285 0.05300145736994171 0.5990371430798593 0.012558043476542064 + translation 4.671165034735883 -9.238874718152298 -0.4458517208015055 + rotation 0.999985883285914 -0.003411452075072 0.004073723558267 1.580843929956204 name "coneblue23" color "blue" } FsCone { - translation 4.669977858408659 -0.29457892607638336 -9.239968325288508 - rotation 0.8196599898668329 0.0006271213908912143 0.5728499871085486 0.007017107612308313 + translation 4.669977858408659 9.239968325288508 -0.29457892607638336 + rotation 0.999995983523468 -0.002001917706876 0.002006305666505 1.576551993312194 name "coneblue29" color "blue" } FsCone { - translation 8.499886426564363 -0.2740660368300162 -9.999891906483949 - rotation -0.5208477729350305 9.215306291181897e-06 -0.8536495752612411 -0.005043496670331391 + translation 8.499886426564363 9.999891906483949 -0.2740660368300162 + rotation 0.999995378090115 -0.002149883483441 0.002149837067156 1.573427846765779 name "coneblue30" color "blue" } FsCone { - translation 12.32989468183287 -0.26163421783662644 -9.239873647824474 - rotation 0.768147462103271 5.3145472870978754e-15 0.640272970274635 0.004437671088373498 + translation 12.32989468183287 9.239873647824474 -0.26163421783662644 + rotation 0.999997988585758 -0.001418242651642 0.001418242651642 1.574207126276942 name "coneblue31" color "blue" } FsCone { - translation 15.56995168503364 -0.2638114386851691 -7.069813926281637 - rotation 0.9679037856465997 4.190123198066338e-15 0.2513210332045071 0.0056241148679364375 + translation 15.56995168503364 7.069813926281637 -0.2638114386851691 + rotation 0.999999503239459 -0.000704812327545 0.000704812327545 1.576240426526083 name "coneblue32" color "blue" } FsCone { - translation 17.739989358337326 -0.2816573016423622 -3.8298834447891488 - rotation 0.9963305417678059 0.00014484697577959877 0.08558872916467403 0.0060966915106538885 + translation 17.739989358337326 3.8298834447891488 -0.2816573016423622 + rotation 0.999999932340086 -0.000259674608972 0.000260555025002 1.576870714547194 name "coneblue33" color "blue" } FsCone { - translation 18.499997965820246 -0.3029624845173413 1.0936425595802868e-05 - rotation -0.9883856076722446 0.0004483741302331449 -0.15196608011989793 -0.005560576377030186 + translation 18.499997965820246 -1.0936425595802868e-05 -0.3029624845173413 + rotation 0.999999822460398 -0.000422595828569 0.000420109436606 1.576292498320292 name "coneblue34" color "blue" } FsCone { - translation 17.739970299843883 -0.3280599335554498 3.8299930240950384 - rotation -0.9614266949440025 0.0029278177423894937 -0.2750457018975564 -0.007038374248331471 + translation 17.739970299843883 -3.8299930240950384 -0.3280599335554498 + rotation 0.999999069293467 -0.000974945276239 0.000954407621563 1.577564140485441 name "coneblue35" color "blue" } FsCone { - translation -1.6016900881544138 -0.5563523290748404 25.00015081792891 - rotation 0.09240216531313585 0.04696677855219614 0.9946134734447715 0.007840034866636663 + translation -1.6016900881544138 -25.00015081792891 -0.5563523290748404 + rotation 0.999984775888067 -0.003713408967031 0.004081493101273 1.571535990895477 name "coneorange2" } FsCone { - translation -1.601994080619001 -0.549875435556342 20.000542434546215 - rotation -0.2700313390675435 0.010568287986984809 -0.9627935330123555 -0.00704131362802945 + translation -1.601994080619001 -20.000542434546215 -0.549875435556342 + rotation 0.999988530703284 -0.003423593001299 0.003349249594752 1.57270917876737 name "coneorange3" } FsCone { - translation -1.6015208290935936 -0.5319601759567916 15.00154048431598 - rotation 0.7115901284292091 8.543268000468744e-05 0.7025948205213008 0.00797460259482823 + translation -1.6015208290935936 -15.00154048431598 -0.5319601759567916 + rotation 0.999992196192827 -0.002793184367056 0.00279386372944 1.576478793836535 name "coneorange4" } FsCone { - translation -1.6011646901298258 -0.4920597506919242 10.002203662625279 - rotation 0.8892538096598878 0.011871754872976573 0.4572600173223243 0.011292985144180031 + translation -1.6011646901298258 -10.002203662625279 -0.4920597506919242 + rotation 0.999993395634631 -0.002502326903925 0.002635725172897 1.580845283240736 name "coneorange5" } FsCone { - translation 1.5981436810405736 -0.5296532124762379 24.999934901275033 - rotation 0.03088556691261362 0.000345425834240641 -0.9995228673909764 -0.008878231466122833 + translation 1.5981436810405736 -24.999934901275033 -0.5296532124762379 + rotation 0.999980307972667 -0.004439081444795 0.004436014294008 1.570541808003957 name "coneorange6" } FsCone { - translation 1.5980137723015657 -0.5271066100096325 20.000339054885693 - rotation 0.18966145419883002 0.015558553591582746 0.9817262674500071 0.007595226427917206 + translation 1.5980137723015657 -20.000339054885693 -0.5271066100096325 + rotation 0.999986117071372 -0.003666457158966 0.003784541771774 1.572250738170575 name "coneorange7" } FsCone { - translation 1.598462439402724 -0.5123549273452221 15.001140095182334 - rotation -0.6022801131024051 0.0013889657685899925 -0.7982836188570123 -0.0083381176592034 + translation 1.598462439402724 -15.001140095182334 -0.5123549273452221 + rotation 0.999988979243809 -0.003325514403619 0.003313962111447 1.575829248460614 name "coneorange8" } FsCone { - translation 1.601878334676966 -0.4744230635709774 9.99813148454244 - rotation -0.8610367521906108 0.02580968168981125 -0.507887361240773 -0.011474313276193143 + translation 1.601878334676966 -9.99813148454244 -0.4744230635709774 + rotation 0.999991571076147 -0.003046859961395 0.002752166607558 1.580684588812835 name "coneorange9" } FsCone { - translation -1.5999975163119786 -0.28685359445334113 -14.999991816194896 - rotation 0.956902721130074 1.2447177925633982e-15 -0.29040864707143277 0.0013144052181684625 + translation -1.5999975163119786 14.999991816194896 -0.28685359445334113 + rotation 0.999999963619247 0.000190737390341 -0.000190737390341 1.572054121120826 name "coneorange10" } FsCone { - translation -1.6000186611784961 -0.30863482801103687 -9.999943145737996 - rotation -0.9447365939891356 0.004766543230550923 -0.32779574134426825 -0.007502488220573434 + translation -1.6000186611784961 9.999943145737996 -0.30863482801103687 + rotation 0.999998498313123 -0.001243120726663 0.001207485966143 1.577885707186203 name "coneorange11" } FsCone { - translation 1.5999979060374763 -0.2867867322972497 -15.000002810745226 - rotation -0.8019263300903479 6.106959951989706e-14 0.597422933195426 0.000762166027789673 + translation 1.5999979060374763 15.000002810745226 -0.2867867322972497 + rotation 0.999999948135708 -0.00022773732781 0.00022773732781 1.570185177643035 name "coneorange12" } FsCone { - translation 1.6000012584108672 -0.3006357402600748 -9.999997045855286 - rotation -0.9236654985772531 0.000513391196302714 -0.3831994039237454 -0.00665325789268748 + translation 1.6000012584108672 9.999997045855286 -0.3006357402600748 + rotation 0.999998384910919 -0.001272562530777 0.001269157263043 1.576943329952178 name "coneorange13" } FsCone { - translation 0.49841044826779707 -0.5391669161630445 25.000036214986828 - rotation -0.02448163492306708 0.0143410115171022 -0.9995974114313022 -0.00839807153912664 + translation 0.49841044826779707 -25.000036214986828 -0.5391669161630445 + rotation 0.999982382547158 -0.004257076094536 0.0041366530473 1.571019544131649 name "coneorange14" } FsCone { - translation -0.501844229919282 -0.5475211585525127 25.000046724676533 - rotation 0.024621008177509406 0.006319033175064195 0.999676885686598 0.00832112112814595 + translation -0.501844229919282 -25.000046724676533 -0.5475211585525127 + rotation 0.999982704022061 -0.004132454551782 0.004185030000481 1.571018498494795 name "coneorange15" } FsCone { - translation 0.4008660749998515 -0.28674199155378544 -15.044856983188938 - rotation -0.004195148215550953 0.9999693565740835 0.006609587298970929 -0.07837138344951547 + translation 0.4008660749998515 15.044856983188938 -0.28674199155378544 + rotation 0.998466973334275 -0.038879326524437 -0.03939671470692 1.572659476628589 name "coneorange16" } FsCone { - translation -0.4018392176957184 -0.2867517890833675 -15.044332014103718 - rotation 0.0003728800003340094 0.9999992842452785 0.0011368682579425645 0.5347387613594111 + translation -0.4018392176957184 15.044332014103718 -0.2867517890833675 + rotation 0.932487573595737 0.255117892207627 0.255698623705863 1.640842714102174 name "coneorange17" } diff --git a/worlds/my_first_simulation.wbt b/worlds/my_first_simulation.wbt deleted file mode 100644 index eef9622..0000000 --- a/worlds/my_first_simulation.wbt +++ /dev/null @@ -1,91 +0,0 @@ -#VRML_SIM R2019b utf8 -WorldInfo { - basicTimeStep 8 -} -Viewpoint { - orientation -0.15654481919582083 0.9732546105054846 0.16813441858455214 1.8867646993979648 - position 2.7335311763261787 0.6714358054264569 0.1268026592500225 -} -TexturedBackgroundLight { -} -Solid { - translation -0.37057268176120767 0.049145273133393605 1.526401479147512 - rotation 0.0022223451380081923 0.9999836156711931 -0.005275374039383055 -0.7048665843957957 - children [ - DEF BARRIER_SHAPE Shape { - appearance PBRAppearance { - baseColor 1 0.333333 0 - roughness 1 - metalness 0 - } - geometry DEF BARRIER_GEOMETRY Box { - size 0.1 0.1 0.9 - } - } - ] - boundingObject USE BARRIER_GEOMETRY - physics Physics { - } -} -Solid { - translation 0.212426 0.0411710000016529 -0.468123 - rotation 1.2695751536576661e-18 -1 4.8112771377382585e-17 0.24806899999999996 - children [ - USE BARRIER_SHAPE - ] - name "solid(1)" - boundingObject USE BARRIER_GEOMETRY - physics Physics { - density 10000 - } -} -Solid { - translation -1.15469 0.04911710000000002 0.321826 - rotation -2.5228442811955304e-18 1 3.4157753653481353e-18 -0.32022401108916987 - children [ - USE BARRIER_SHAPE - ] - name "solid(3)" - boundingObject USE BARRIER_GEOMETRY - physics Physics { - } -} -Solid { - translation -0.6910077902482024 0.04911710000000001 0.9975039409263029 - rotation -4.668844797305687e-18 1 1.245857160352687e-18 -1.8325957071795864 - children [ - USE BARRIER_SHAPE - ] - name "solid(4)" - boundingObject USE BARRIER_GEOMETRY - physics Physics { - } -} -Solid { - translation -1.29389 0.04911710000000002 -0.324307 - rotation -4.515550303347072e-18 1 3.800452313892613e-18 -1.8325957071795864 - children [ - USE BARRIER_SHAPE - ] - name "solid(5)" - boundingObject USE BARRIER_GEOMETRY - physics Physics { - } -} -TexturedBackground { -} -SimpleVehicle { - translation 1.3258236287881637 0.07479700220363919 0.9798934407882124 - rotation -0.012070101611799045 -0.998137951879068 -0.059790815897930956 2.569442195816709 -} -CircleArena { - radius 2 - floorAppearance Parquetry { - } - subdivision 66 -} -SolidBox { - translation 1.28891 0.02 0.383339 - rotation 0 1 0 0.523599 - size 0.5 0.05 0.5 -} diff --git a/worlds/newFinishedMap.wbt b/worlds/newFinishedMap.wbt deleted file mode 100644 index 1f579d5..0000000 --- a/worlds/newFinishedMap.wbt +++ /dev/null @@ -1,760 +0,0 @@ -#VRML_SIM R2020a utf8 -WorldInfo { - basicTimeStep 8 -} -Viewpoint { - orientation 0.05527980722183459 0.9588282149936775 0.2785544776979094 3.663397040249908 - position -54.49050120212437 47.00166861009106 -46.653594915466 -} -TexturedBackgroundLight { -} -TexturedBackground { - texture "noon_park_empty" -} -UnevenTerrain { - translation 0 -1 0 - size 100 1 100 - appearance Asphalt { - } -} -CoventryVehicle { - hidden position_0_0 -1.759987877048182e-09 - hidden position2_0_0 10.599278322940052 - hidden position_0_1 -1.7653550584830667e-09 - hidden position2_0_1 10.59927895127874 - hidden position_0_2 10.599276887011477 - hidden position_0_3 10.599219086316468 - hidden linearVelocity_0 -5.251207786177181e-06 -1.5679024615565142e-07 1.2141660278010564e-05 - hidden angularVelocity_0 2.3797186061088398e-09 -5.415218532405137e-07 -1.1364995328735803e-08 - hidden rotation_1 -5.85706699045264e-10 -1 8.799939385240911e-10 1.9670922914191213 - hidden linearVelocity_1 -4.911546527159911e-06 -1.63232629164155e-07 1.2518137315649656e-05 - hidden angularVelocity_1 1.7051508677391245e-09 -5.657682917417677e-07 2.1702124295447244e-06 - hidden rotation_2 5.874932445297968e-10 0.9999999999999999 8.826775292415332e-10 1.9670916630804336 - hidden linearVelocity_2 -5.5912731748826655e-06 -1.6613766942793263e-07 1.2517894875565328e-05 - hidden angularVelocity_2 1.6118154687723215e-09 -5.69143763658628e-07 2.472283051284034e-06 - hidden rotation_3 0 -0.9999999999999999 0 1.9670937273476956 - hidden linearVelocity_3 -4.911321145081748e-06 -1.456077525727239e-07 1.1681478859896743e-05 - hidden angularVelocity_3 1.7050000141896208e-09 -5.657682017547529e-07 2.1702121191579746e-06 - hidden rotation_4 0 0.9999999999999999 0 1.9671515280427045 - hidden linearVelocity_4 -5.591047197609777e-06 -1.486607827658704e-07 1.1681234741216217e-05 - hidden angularVelocity_4 1.6116319945397557e-09 -5.691437585660805e-07 2.472282818762569e-06 - translation -2.6514573446876017 -0.21774844737551394 6.882319744059974 - rotation 0.00363101728749637 0.9999653789321031 0.007487098946403232 1.5705002748068537 - controller "vehicle_driver_fsai" -} -FsCone { - translation -30.0412959323301 -0.5074668017155222 4.939892503123857 - rotation -0.08503554252581112 0.006939784507431715 0.9963537503810236 0.005344455653424331 - name "coneblue0" - color "blue" -} -FsCone { - translation -25.021461855028388 -0.47542805598187066 4.980001575857873 - rotation 0.01618142764131725 0.03681452985724692 -0.9991910987348109 -0.00705596781176565 - name "coneblue1" - color "blue" -} -FsCone { - translation -20.020186380605313 -0.44472636085315687 4.979698136731426 - rotation 0.2956447370750539 0.04992479606519257 0.9539925074012225 0.004476013831628823 - name "coneblue2" - color "blue" -} -FsCone { - translation -15.01993341331969 -0.4372850348636971 4.980587101904254 - rotation 0.971611277893646 0.00029921495106040357 -0.2365828293437402 0.004494905315048071 - name "coneblue3" - color "blue" -} -FsCone { - translation -9.979802987301715 -0.4476400992791211 5.031338655740262 - rotation 0.9763749433308445 0.012826670180019714 -0.21570221734554196 0.008043978480798429 - name "coneblue4" - color "blue" -} -FsCone { - translation -5.030335623307484 -0.44807602956323184 4.931702844875771 - rotation 0.9831795371510934 0.0016460890489779349 0.1826343015925662 0.010203078933994398 - name "coneblue5" - color "blue" -} -FsCone { - translation 0.06921352083870518 -0.42954701322970673 4.981572209455479 - rotation -0.8923390384942848 0.018700116080820162 -0.4509782101583838 -0.011747451499097897 - name "coneblue6" - color "blue" -} -FsCone { - translation 4.909345614866191 -0.4008413329354511 5.031051009845612 - rotation -0.8246294876718152 0.035973692646866014 -0.5645282114292149 -0.012260717607065891 - name "coneblue7" - color "blue" -} -FsCone { - translation 10.009606112110117 -0.3653906402156803 4.980619150344485 - rotation 0.8407961711274927 0.0187335738322029 0.5410275887871352 0.01098781864541383 - name "coneblue8" - color "blue" -} -FsCone { - translation 15.049862598294158 -0.34313783754987626 4.970352057795222 - rotation 0.936917436022324 0.0003876180831958606 0.349550522570881 0.008538696039077353 - name "coneblue9" - color "blue" -} -FsCone { - translation 19.949918354276708 -0.33210707761088265 5.030239815826954 - rotation 0.9447424899836601 0.00039689739419144994 0.3278131633902647 0.007102341727632041 - name "coneblue10" - color "blue" -} -FsCone { - translation -30.051365434832803 -0.5068892894933388 8.970079947966296 - rotation 0.08342787946203757 0.043815619524737066 0.9955500893546899 0.005543368305753489 - name "coneyellow11" - color "yellow" -} -FsCone { - translation -24.951163578152094 -0.4771463298620286 9.03032771400167 - rotation -0.2700901573181098 0.0036229611140328496 -0.9628282199191324 -0.0061110421172021305 - name "coneyellow12" - color "yellow" -} -FsCone { - translation -20.0003411221742 -0.45368969487841027 9.070603386793465 - rotation -0.8231641344384935 0.00047691276472491774 -0.5678032936927547 -0.004083809411695194 - name "coneyellow13" - color "yellow" -} -FsCone { - translation -15.050034261746926 -0.45793007882407233 9.030388535319338 - rotation -0.8500952244351214 0.004254731236972827 0.5266118178076729 -0.007222725246336684 - name "coneyellow14" - color "yellow" -} -FsCone { - translation -9.949157135199883 -0.4816731350803175 9.031351086164943 - rotation 0.9172831336215977 0.061552043169657504 -0.39345012232172827 0.009669636793240708 - name "coneyellow15" - color "yellow" -} -FsCone { - translation -5.050206110673919 -0.49067909423327283 8.97234859902395 - rotation 0.9960289497898825 0.0036968062754687155 0.08895316072982 0.010512188497463845 - name "coneyellow16" - color "yellow" -} -FsCone { - translation -0.0008947825670869343 -0.3598005160416703 9.090189559780585 - rotation -0.9999820069149395 0.0005898053208915976 -0.005969755108302731 -1.6324046214706522 - name "coneyellow17" - color "yellow" -} -FsCone { - translation 4.9487281139803985 -0.4420863513971057 9.07163567854614 - rotation -0.7938062788332026 0.0032234231911585465 -0.60816215044009 -0.012521789536096985 - name "coneyellow18" - color "yellow" -} -FsCone { - translation 9.99930473954744 -0.40248814344800654 9.030919910027158 - rotation -0.770935978860827 0.004524214613541475 -0.6368965755756808 -0.011165432304047901 - name "coneyellow19" - color "yellow" -} -FsCone { - translation 15.049793517775772 -0.37420492347543133 9.030426402192276 - rotation 0.8450680862817423 0.0010618510815784423 0.5346576493611537 0.008017391907881763 - name "coneyellow20" - color "yellow" -} -FsCone { - translation 19.949937558143276 -0.3573499245083519 9.069771202011612 - rotation -0.8482469050403425 0.07224411931718527 -0.5246503362369691 -0.0064128212352796855 - name "coneyellow21" - color "yellow" -} -FsCone { - translation 24.99994024914071 -0.31658983286889886 4.970088311188537 - rotation 0.8421956759566747 0.0006618143552862253 0.5391715917976756 0.006516996992116409 - name "coneblue22" - color "blue" -} -FsCone { - translation 24.94983937008599 -0.33756626755514874 9.030172718461937 - rotation -0.7166122652114445 0.000306877239657883 -0.6974716963252935 -0.006258938741199511 - name "coneblue23" - color "blue" -} -FsCone { - translation 22.399932019042797 -0.32526837675697673 4.970151204239936 - rotation 0.8974036541173731 0.0047558214748123495 0.44118484078545345 0.006907103735155621 - name "coneblue24" - color "blue" -} -FsCone { - translation 24.949903897681487 -0.3281029826881611 7.0801427656530205 - rotation 0.7947653573658428 0.0061217598979878005 0.6068859454517759 0.006639443706538088 - name "coneblue25" - color "blue" -} -FsCone { - translation 24.949772235696454 -0.3513916065604865 13.97005810788283 - rotation 0.23778225066039277 0.000988026956697975 0.9713179835015981 0.005077340157442447 - name "coneblue26" - color "blue" -} -FsCone { - translation 24.949774950969903 -0.3517528688237644 19.019990114176412 - rotation -0.03527730601913957 9.290355510992707e-05 0.999377557807339 0.0048273214080485965 - name "coneblue27" - color "blue" -} -FsCone { - translation 19.999620760296537 -0.3744694703153242 14.030120792667256 - rotation -0.28550219495749457 0.011650432392351076 -0.9583072388850687 -0.004502166175344188 - name "coneyellow28" - color "yellow" -} -FsCone { - translation 20.04959243768262 -0.37468598732459985 19.01995445266864 - rotation 0.11090324928523297 0.0002793256639596338 -0.9938311683958956 -0.004574782846108428 - name "coneyellow29" - color "yellow" -} -FsCone { - translation 24.999802908922966 -0.3668064186514418 28.93013724405663 - rotation -0.5898374805312017 0.002582156514526484 -0.8075178505942384 -0.0033871112202044826 - name "coneblue30" - color "blue" -} -FsCone { - translation 24.000228072467436 -0.35705923386958593 21.980015091064733 - rotation 0.18828875201644746 0.046721486935633556 0.9810017576552104 0.004507366637736246 - name "coneblue31" - color "blue" -} -FsCone { - translation 21.999702549331552 -0.3679002219288203 23.930084865518435 - rotation -0.28761880716286065 0.0022501804082490683 -0.9577423236206822 -0.004122408715382062 - name "coneblue32" - color "blue" -} -FsCone { - translation 19.999707418045823 -0.37733135657528494 25.88009518465485 - rotation -0.29799837686825165 0.00529289731515301 -0.9545517024351792 -0.0036361128625536712 - name "coneblue33" - color "blue" -} -FsCone { - translation 21.99982385743647 -0.37365041089417617 27.930099929478207 - rotation 0.46070031001845957 0.053209029299157266 0.8859593803047273 0.003284989138087982 - name "coneblue34" - color "blue" -} -FsCone { - translation 18.949685180627224 -0.3789244168249897 20.92998084915205 - rotation -0.05563582368891455 0.0002569344807439182 0.9984510950002151 0.004514971142096203 - name "coneyellow35" - color "yellow" -} -FsCone { - translation 16.999507873826587 -0.3880251736755559 22.98000061741454 - rotation 0.015007265599712594 0.00029777702502621986 0.9998873403079285 0.005008553329302047 - name "coneyellow36" - color "yellow" -} -FsCone { - translation 15.899431172431491 -0.3935322028474832 25.979979257234806 - rotation 0.02738556304445482 0.014013826122964269 -0.9995267098052627 -0.005708370785404914 - name "coneyellow37" - color "yellow" -} -FsCone { - translation 16.89971816505472 -0.3899076307098428 29.07006019172144 - rotation 0.18710241968585428 0.0011764559100843593 0.9823397072801192 0.003828314664019602 - name "coneyellow38" - color "yellow" -} -FsCone { - translation 19.999750375267713 -0.3832272287699682 30.98018283411809 - rotation 0.5907806002303441 0.0003355654807891363 0.806832181923405 0.0031210492290690865 - name "coneyellow39" - color "yellow" -} -FsCone { - translation 24.949802626075222 -0.3713937363843277 31.020169856074194 - rotation -0.6664338300091667 0.00031482448519704184 -0.7455641160254809 -0.0031660956963911373 - name "coneblue40" - color "blue" -} -FsCone { - translation 24.94977745527912 -0.38197246822006564 34.980318665031575 - rotation 0.8148147683267092 0.0038946551810089673 0.5797083102541417 0.004077960880174664 - name "coneblue41" - color "blue" -} -FsCone { - translation 19.99975901791781 -0.39500757018726884 34.98038359412681 - rotation -0.8115621248921523 0.02168926276984161 -0.5838634200915787 -0.0050922137865539 - name "coneyellow42" - color "yellow" -} -FsCone { - translation 23.899715826955646 -0.4015479715034269 38.920555769628535 - rotation -0.8267088471200967 0.03809039407959423 -0.5613391167308952 -0.006347254686690113 - name "coneblue43" - color "blue" -} -FsCone { - translation 20.99938657148157 -0.43045641480203956 42.02091110797969 - rotation -0.8269617482836944 0.00020675286748988279 -0.5622581472320586 -0.007292021447171069 - name "coneblue44" - color "blue" -} -FsCone { - translation 17.999352504124523 -0.43601767754236576 40.920978615782204 - rotation 0.8319829638041553 0.003542836263069551 0.5547898667521486 0.007706564090479036 - name "coneblue45" - color "blue" -} -FsCone { - translation 14.999643619937853 -0.431539420810916 37.98047980948188 - rotation 0.7505917761026721 0.00017567203257430047 0.660766187683944 0.008106422352778057 - name "coneblue46" - color "blue" -} -FsCone { - translation 19.9995842028589 -0.4040613664040802 36.92064515510781 - rotation 0.8394271208515672 0.0005332663455634156 0.5434720088522065 0.006266272529125139 - name "coneyellow47" - color "yellow" -} -FsCone { - translation 17.949863759118386 -0.4063679163832399 36.020300273084196 - rotation -0.7963316290933431 0.009493389891442923 -0.6047857571519947 -0.006600549780934104 - name "coneyellow48" - color "yellow" -} -FsCone { - translation 14.999445889421084 -0.40636722119230406 32.980321781696894 - rotation 0.5524225658172883 0.01879015827756699 0.833352409684971 0.006286637031129252 - name "coneyellow49" - color "yellow" -} -FsCone { - translation 11.998889713770295 -0.4335548194583858 34.920738720101184 - rotation -0.533744267080786 0.0012875496450071371 -0.8456449607100524 -0.00897055098534076 - name "coneblue50" - color "blue" -} -FsCone { - translation 9.028225511156723 -0.4501670645567494 31.94032772056862 - rotation 0.1711613591592811 0.0005891501389362664 0.9852428340428879 0.010563381793487538 - name "coneblue51" - color "blue" -} -FsCone { - translation 6.02823810884096 -0.4810830557437443 28.989959506726514 - rotation 0.019236296756323143 0.00017550264546730375 -0.9998149499211962 -0.011420768478725661 - name "coneblue52" - color "blue" -} -FsCone { - translation 3.027479171708352 -0.5155873310642892 25.98985821809558 - rotation -0.061269261620845145 0.007313129026314015 0.9980944823634087 0.009991732547609582 - name "coneblue53" - color "blue" -} -FsCone { - translation 11.911513338058962 -0.30527009286397033 29.94007967020778 - rotation 0.0020468478685067657 0.001499594137186727 0.999996780810432 1.63070152979896 - name "coneyellow54" - color "yellow" -} -FsCone { - translation 9.02819136355643 -0.4486391243428472 27.03981559289242 - rotation -0.10051431097244147 0.0147604636527353 0.9948261164658333 0.010880540715808554 - name "coneyellow55" - color "yellow" -} -FsCone { - translation 6.077615454889578 -0.4848466330428541 23.939850017152747 - rotation -0.051814827476020904 0.0021309206173972164 0.9986544361444317 0.011176394744426771 - name "coneyellow56" - color "yellow" -} -FsCone { - translation 3.0477676017842903 -0.5157074595714838 20.94017242370185 - rotation 0.06538924737412824 0.00014082550217170246 0.9978598230693644 0.008949950959366302 - name "coneyellow57" - color "yellow" -} -FsCone { - translation -0.0018046881519503306 -0.5424158895142067 23.090212258928887 - rotation 0.10240225190418231 0.001089911920925022 0.9947424746621394 0.0078969447626821 - name "coneblue58" - color "blue" -} -FsCone { - translation 0.049511800250669674 -0.5365791612344692 18.979217525186893 - rotation 0.28367207347743034 0.0207325933630751 0.9586971963563139 0.007261738585661627 - name "coneyellow59" - color "yellow" -} -FsCone { - translation -2.002073101662794 -0.5561152924530168 22.070435045600814 - rotation 0.22317962838945454 0.030487689672962812 0.9743004435236341 0.006845686440450471 - name "coneblue60" - color "blue" -} -FsCone { - translation -2.9513706158651627 -0.55180447539614 17.981045481490057 - rotation 0.6133265430942194 0.0018493899670312497 0.7898272794053423 0.005792873759284227 - name "coneyellow61" - color "yellow" -} -FsCone { - translation -4.051479999687949 -0.5654632034283633 20.98074942080786 - rotation 0.5027386725397692 0.0012138232905171133 0.8644375939106131 0.004775825035227736 - name "coneblue62" - color "blue" -} -FsCone { - translation -5.950075192003213 -0.44134566644051065 17.04187692677251 - rotation 0.9999973906263228 0.0019061921098649504 -0.0012590362131573059 1.6269573600225251 - name "coneyellow63" - color "yellow" -} -FsCone { - translation -8.949295838068977 -0.5435080710676312 15.971710957428561 - rotation 0.8703952492997549 0.08456620374035331 -0.4850367688963002 0.008072796792619012 - name "coneyellow64" - color "yellow" -} -FsCone { - translation -11.999536756850496 -0.406996323394308 15.088106270698532 - rotation 0.9998484745277979 0.008815546428288386 -0.015010467201456839 1.630075076202863 - name "coneyellow65" - color "yellow" -} -FsCone { - translation -14.94879659738818 -0.49479308380569853 13.97191939129899 - rotation -0.8470555584592323 0.00041664287949992585 0.5315041931086047 -0.009971974834848036 - name "coneyellow66" - color "yellow" -} -FsCone { - translation -17.94943149754118 -0.4751247497495954 12.971528091252988 - rotation -0.9527786488749028 0.003288867245563435 0.3036478710617869 -0.007911188675261766 - name "coneyellow67" - color "yellow" -} -FsCone { - translation -6.950118625504958 -0.5687366293057857 19.931331008722143 - rotation -0.9957483118948897 0.0009666591644717587 -0.09211061246423827 -0.00407317858729392 - name "coneblue68" - color "blue" -} -FsCone { - translation -9.949146141018907 -0.5599719397772882 19.021842368993134 - rotation 0.9012273683282676 0.012542192906566007 -0.43316500778941014 0.006925755136851703 - name "coneblue69" - color "blue" -} -FsCone { - translation -12.94865545872354 -0.5402591107892482 18.022396058233777 - rotation 0.8626182614310081 0.029267271306890563 -0.5050080810006844 0.00966191613996972 - name "coneblue70" - color "blue" -} -FsCone { - translation -15.999112479530698 -0.5166553553191491 16.982428076648244 - rotation -0.9201614787067037 0.0013391204508210895 0.3915367924738499 -0.010297938962984254 - name "coneblue71" - color "blue" -} -FsCone { - translation -18.899749637619028 -0.49931808430333413 15.972148281240859 - rotation -0.9931042013588033 0.002140834635485318 0.11721545150088741 -0.00932321160392414 - name "coneblue72" - color "blue" -} -FsCone { - translation -23.000666494892698 -0.4816985738172367 12.960985491325307 - rotation -0.8175111638756433 0.029238516396427168 -0.5751700671085267 -0.007229565806430465 - name "coneyellow73" - color "yellow" -} -FsCone { - translation -20.600360559495215 -0.4747581002439204 12.961414643426906 - rotation -0.9693958786675203 0.0010522059662338398 -0.24550055658802658 -0.007236700033580648 - name "coneyellow74" - color "yellow" -} -FsCone { - translation -23.05047207247525 -0.3901908139633428 16.074505447490406 - rotation 0.999995164409104 0.0030953183637884786 -0.00030027093751853405 1.6303160576196973 - name "coneyellow75" - color "yellow" -} -FsCone { - translation -19.95980134023098 -0.5083476132630179 17.011929626349367 - rotation 0.9988418798561229 0.0003006736807925379 -0.048112458270432736 0.009804333602525186 - name "coneblue76" - color "blue" -} -FsCone { - translation -22.990582506820804 -0.5218473807527879 18.01239527501069 - rotation -0.9723467229109212 0.0010505905837184493 -0.23353960414417435 -0.009486257444589368 - name "coneyellow77" - color "yellow" -} -FsCone { - translation -22.989851898886403 -0.5490921232396238 20.96228645472564 - rotation -0.9720958452964207 0.19354800432221536 -0.13254749179190448 -0.009293254991146596 - name "coneyellow78" - color "yellow" -} -FsCone { - translation -19.9097788982719 -0.5282825851232921 19.012734106130974 - rotation -0.9955357818203171 0.008664024721387617 0.09398639152045943 -0.010179429738666675 - name "coneblue79" - color "blue" -} -FsCone { - translation -20.05993106696809 -0.5470358212643246 20.912197631388445 - rotation 0.9999542548568017 3.673788566056717e-05 -0.009564875540556465 0.009684420666444293 - name "coneblue80" - color "blue" -} -FsCone { - translation -23.050079745463904 -0.581385239146324 24.882419824871757 - rotation 0.9994000964255039 0.007134200545193998 0.03389027068753907 0.0071828045262566495 - name "coneyellow81" - color "yellow" -} -FsCone { - translation -20.049838588533184 -0.5821788536451364 24.932593588895706 - rotation 0.9986434255160773 0.005230041807653717 -0.0518069043294893 0.007804247010212782 - name "coneblue82" - color "blue" -} -FsCone { - translation -23.05203558342733 -0.6106828567545054 29.020087314643508 - rotation -0.9912793259530401 0.021746892917882312 0.12997065278940795 -0.006891680704297206 - name "coneyellow83" - color "yellow" -} -FsCone { - translation -19.999872928543127 -0.6132031770649465 29.021972425537147 - rotation 0.9957613045169453 0.0360521903493211 -0.08461479774677635 0.007547553869236966 - name "coneblue84" - color "blue" -} -FsCone { - translation -20.99949795171814 -0.6393518566485032 32.9812853569058 - rotation 0.9606330708946883 0.055399775570287475 -0.2722406434943221 0.006336997446115542 - name "coneblue85" - color "blue" -} -FsCone { - translation -23.99820538989276 -0.6441305916382214 35.92106180859659 - rotation -0.6040544090214921 0.06393061559363568 0.7943746895083671 -0.00537627376297598 - name "coneblue86" - color "blue" -} -FsCone { - translation -26.957167058414107 -0.628953765449001 37.87025498320307 - rotation -0.08942535635652227 0.0004325141775857393 0.9959934329964203 -0.007239081751339502 - name "coneblue87" - color "blue" -} -FsCone { - translation -24.009092643958375 -0.6221225141358231 30.97223712228384 - rotation -0.9422943918697396 0.0025797765865164736 0.3347754826799618 -0.006273303921738609 - name "coneyellow88" - color "yellow" -} -FsCone { - translation -26.009065754011036 -0.6257780965111595 32.87080378560132 - rotation 0.7013174074819084 0.002721435013550043 -0.7128439434787405 0.005385699234406217 - name "coneyellow89" - color "yellow" -} -FsCone { - translation -28.00795786536413 -0.6204882906531174 33.9709142147697 - rotation -0.3759921945354853 0.005698689540726645 0.926605306797834 -0.005705799457075865 - name "coneyellow90" - color "yellow" -} -FsCone { - translation -30.03679188853882 -0.6041074232861604 37.959093969581446 - rotation 0.23709355934293305 0.024762489109414962 0.9711711812297588 -0.009563944095762347 - name "coneblue91" - color "blue" -} -FsCone { - translation -32.957314486739435 -0.5791341351961897 36.95887832245459 - rotation -0.3748624036297507 0.05219543029853143 -0.9256099693720229 0.01087508175446398 - name "coneblue92" - color "blue" -} -FsCone { - translation -35.957228387611735 -0.5603448682580467 34.958442842495955 - rotation 0.48190325010902924 0.02155299971583497 0.8759593173987043 -0.010640482884401807 - name "coneblue93" - color "blue" -} -FsCone { - translation -38.96478086458734 -0.538693709227253 32.945344786163886 - rotation 0.3493418554967238 0.2794598735774526 0.8943502932621984 -0.012258414045383527 - name "coneblue94" - color "blue" -} -FsCone { - translation -39.796111082237054 -0.4241723981354804 29.939802042248264 - rotation -0.0009306614147426766 0.0014472343919395688 0.9999985196898773 -1.6324675533715287 - name "coneblue95" - color "blue" -} -FsCone { - translation -40.90691273939527 -0.5241820529859655 25.990389993164282 - rotation 0.11119874650856056 0.0015900180454894693 -0.9937969161843581 0.011901667398148389 - name "coneblue96" - color "blue" -} -FsCone { - translation -40.792224632333685 -0.4063053007126199 21.94011713212428 - rotation -0.0015477980555277944 0.0009709702182206224 0.9999983307676141 -1.6325908410885492 - name "coneblue97" - color "blue" -} -FsCone { - translation -41.057683479320254 -0.5188228593278204 17.939836163148797 - rotation 0.04966081490568251 0.009991038043151433 0.9987161671975296 -0.008911950826033155 - name "coneblue98" - color "blue" -} -FsCone { - translation -40.008475350592356 -0.5288034450814448 13.989967883813259 - rotation 0.005677657316166586 0.05260212693243922 0.9985994093977745 -0.0053325196352586495 - name "coneblue99" - color "blue" -} -FsCone { - translation -38.00936833336161 -0.533126318207368 10.94029601133002 - rotation 0.5957214381745147 0.054255373437055755 -0.8013565514504097 0.001839234096511536 - name "coneblue100" - color "blue" -} -FsCone { - translation -31.961185730669726 -0.5167111487155948 5.9899649462356255 - rotation -0.011629076520342632 0.03576740737505441 0.999292478280984 0.004561720005205878 - name "coneblue101" - color "blue" -} -FsCone { - translation -33.960872928256194 -0.5248885767975173 7.840123570276487 - rotation 0.12029076071234823 0.029266928623732407 0.9923072003045114 0.0033114441467857413 - name "coneblue102" - color "blue" -} -FsCone { - translation -35.96047178778843 -0.5314695091770749 9.740281077999445 - rotation 0.570379910923606 0.1104243143776518 0.8139245837354988 0.001947840295535033 - name "coneblue103" - color "blue" -} -FsCone { - translation -32.04129731368395 -0.5192582312898297 10.840387485957413 - rotation 0.3071982766023438 0.0021066470200517555 0.9516432004122567 0.004857687256138126 - name "coneyellow104" - color "yellow" -} -FsCone { - translation -34.04101063187457 -0.5295115034828001 12.040468682793628 - rotation -0.5110845509951308 0.041987136999764245 -0.8585043168561639 -0.003379513911392176 - name "coneyellow105" - color "yellow" -} -FsCone { - translation -35.94032028803493 -0.5369285162119632 13.740481863023906 - rotation -0.6646212307916864 0.22419759183479007 -0.7127510500844071 -0.0024299228940199325 - name "coneyellow106" - color "yellow" -} -FsCone { - translation -36.93946948431556 -0.54097436094375 16.89034844080867 - rotation -0.5910084883544859 8.409763011297867e-05 0.8066653330970248 -0.0029137891461895613 - name "coneyellow107" - color "yellow" -} -FsCone { - translation -36.98835335617349 -0.5514788002630017 21.940686825913527 - rotation 0.417386203231948 0.002137764689443099 -0.908726684605306 0.006062050619503889 - name "coneyellow108" - color "yellow" -} -FsCone { - translation -37.038447452431754 -0.5608803580543376 25.99067972890048 - rotation -0.31105499799997127 0.06793676644373396 0.9479606447444996 -0.007409115472946558 - name "coneyellow109" - color "yellow" -} -FsCone { - translation -35.946901192662175 -0.5738664811072212 28.93198294573132 - rotation 0.11569565463025508 0.42706192270352705 -0.8967901815232164 0.006831401076643492 - name "coneyellow110" - color "yellow" -} -FsCone { - translation -33.987673404723274 -0.5868331580191468 31.089955238755923 - rotation -0.022913539358508685 1.8874266097041112e-05 -0.9997374502127186 0.005799137574705356 - name "coneyellow111" - color "yellow" -} -FsCone { - translation -32.0374928659299 -0.5975852871148186 32.93979701222275 - rotation 0.08990497995272585 0.00025191700536912734 0.9959503155868381 -0.006539018074670244 - name "coneyellow112" - color "yellow" -} -FsCone { - translation -30.03783030725939 -0.6095254877664895 33.93992916895695 - rotation -0.1296073475833364 0.0005342047557596542 0.9915652525566289 -0.006090805285368508 - name "coneyellow113" - color "yellow" -} -FsCone { - translation -28.001361044815443 -0.495444756929306 4.969884807589637 - rotation 0.0826005583400385 0.0002360283401371377 -0.9965827070808206 -0.0063000203381506775 - name "coneblue114" - color "blue" -} -FsCone { - translation -28.001263470899886 -0.49515355702677966 9.020156509569762 - rotation -0.12144644011167727 0.0009959820874283082 -0.992597486498874 -0.005858152208469198 - name "coneyellow115" - color "yellow" -} -FsCone { - translation -4.028393407477079 -0.4464823090248474 4.938748421031915 - rotation -0.9757653238394451 0.012196630224320574 -0.21847946128566392 -0.010647172338139735 - name "coneorange116" -} -FsCone { - translation -3.926266175209703 -0.489742093294954 8.987277519641621 - rotation 0.9565478339544617 0.12611997045148804 0.26288779813894597 0.011171138887922134 - name "coneorange117" -} -FsCone { - translation -6.030013685914312 -0.4489912523390167 4.84168966491971 - rotation -0.9991389438251633 0.006286519984927452 -0.04101037183952406 -0.00989845224138458 - name "coneorange118" -} -FsCone { - translation -6.029669289982381 -0.4921912829745796 9.041947698673326 - rotation 0.9966304112990663 0.0007097772905709937 -0.08202023829550598 0.010399417563021028 - name "coneorange119" -} diff --git a/worlds/rosEnabledEndurance.wbt b/worlds/rosEnabledEndurance.wbt deleted file mode 100644 index 4630ae1..0000000 --- a/worlds/rosEnabledEndurance.wbt +++ /dev/null @@ -1,751 +0,0 @@ -#VRML_SIM R2020a utf8 -WorldInfo { - basicTimeStep 8 -} -Viewpoint { - orientation 0.05527980722183459 0.9588282149936775 0.2785544776979094 3.663397040249908 - position -54.49050120212437 47.00166861009106 -46.653594915466 -} -TexturedBackgroundLight { -} -TexturedBackground { - texture "noon_park_empty" -} -UnevenTerrain { - translation 0 -1 0 - size 100 1 100 - appearance Asphalt { - } -} -CoventryVehicle { - hidden position_0_0 -3.5266177056698273e-09 - hidden position2_0_0 10.599259163160374 - hidden position_0_1 -3.53729821750095e-09 - hidden position2_0_1 10.599257133203265 - hidden position_0_2 10.599256232259888 - hidden position_0_3 10.599195533759142 - hidden rotation_1 -1.1735993990195748e-09 -1 1.7633088528349136e-09 1.9671114511987988 - hidden rotation_2 1.1771511044048316e-09 1 1.768649108750475e-09 1.967113481155908 - hidden rotation_3 0 -1 0 1.9671143820992847 - hidden rotation_4 0 1 0 1.9671750806000314 - translation -2.651506759693717 -0.21774984863129668 6.882427344481958 - rotation 0.0036310942627106385 0.9999653781666347 0.0074871638498622516 1.5704952293205388 - controller "ros_fsai" - controllerArgs "--name=fsai" -} -FsCone { - translation -30.04129605292947 -0.5074668023793829 4.939892493100547 - rotation -0.08503554923742575 0.006939786691766896 0.9963537497929951 0.005344455232013093 - name "coneblue0" - color "blue" -} -FsCone { - translation -25.021462012807902 -0.4754280571042264 4.980001571064825 - rotation 0.016181446798725834 0.03681454980884921 -0.9991910976894617 -0.007055967957302639 - name "coneblue1" - color "blue" -} -FsCone { - translation -20.020186472297663 -0.44472636127234316 4.979698165933991 - rotation 0.2956447035473584 0.049924786210367576 0.9539925183072683 0.004476014339573432 - name "coneblue2" - color "blue" -} -FsCone { - translation -15.019933411205235 -0.4372850352623975 4.980587213305684 - rotation 0.9716112504246452 0.0003346567569271663 -0.23658289467565552 0.004494906128173998 - name "coneblue3" - color "blue" -} -FsCone { - translation -9.979802945213862 -0.4476401007194689 5.03133882899257 - rotation 0.9763749526222754 0.012826691397327719 -0.21570217402624203 0.008043978404468157 - name "coneblue4" - color "blue" -} -FsCone { - translation -5.030335665756648 -0.4480760318445029 4.9317030648148465 - rotation 0.9831795412612598 0.0016460668625163685 0.18263427966617554 0.01020307908917416 - name "coneblue5" - color "blue" -} -FsCone { - translation 0.06921340692191737 -0.42954701624039726 4.981572440676656 - rotation -0.8923390462228901 0.018700100263064623 -0.4509781955218837 -0.011747451396840544 - name "coneblue6" - color "blue" -} -FsCone { - translation 4.909345462461777 -0.4008413362485519 5.031051233157617 - rotation -0.8246294856970087 0.03597367659421442 -0.5645282153368257 -0.0122607175902503 - name "coneblue7" - color "blue" -} -FsCone { - translation 10.009605979463593 -0.3653906428941348 4.980619354148515 - rotation 0.8407961351494875 0.018733560935023385 0.5410276451461409 0.010987819116150793 - name "coneblue8" - color "blue" -} -FsCone { - translation 15.049862531831804 -0.3431378391425379 4.970352233650765 - rotation 0.9369174295049287 0.00038757666160253897 0.34955054008570563 0.008538695965528819 - name "coneblue9" - color "blue" -} -FsCone { - translation 19.949918303084434 -0.3321070787222838 5.030239963845743 - rotation 0.9447424896395037 0.0003968983682246953 0.3278131643809282 0.007102341730217007 - name "coneblue10" - color "blue" -} -FsCone { - translation -30.05136555894873 -0.5068892901962393 8.970079958183877 - rotation 0.08342788342559461 0.04381562077364281 0.9955500889675745 0.00554336804219258 - name "coneyellow11" - color "yellow" -} -FsCone { - translation -24.9511637050427 -0.4771463306688719 9.030327753319328 - rotation -0.2700901336379152 0.003622926710775168 -0.962828226691294 -0.006111042200702266 - name "coneyellow12" - color "yellow" -} -FsCone { - translation -20.0003411733326 -0.4536896952460008 9.070603460952285 - rotation -0.823164089346102 0.0004769127406697981 -0.5678033590647741 -0.004083809635370226 - name "coneyellow13" - color "yellow" -} -FsCone { - translation -15.050034171085011 -0.4579300801285309 9.030388723443922 - rotation -0.8500952071242707 0.004251376422872616 0.5266118728464583 -0.0072227271296424825 - name "coneyellow14" - color "yellow" -} -FsCone { - translation -9.949157041079507 -0.48167313721625116 9.031351281793816 - rotation 0.917283163201502 0.06155209214817664 -0.3934500456973272 0.0096696364828841 - name "coneyellow15" - color "yellow" -} -FsCone { - translation -5.050206132322918 -0.4906790966545601 8.97234882896483 - rotation 0.9960289512055353 0.00369679075467767 0.08895314552345938 0.01051218863038286 - name "coneyellow16" - color "yellow" -} -FsCone { - translation -0.0008949129522373529 -0.3598005200557188 9.090189871897824 - rotation -0.99998200617546 0.0005899142245358715 -0.005969868215441443 -1.6324046226712476 - name "coneyellow17" - color "yellow" -} -FsCone { - translation 4.948727945212934 -0.44208635484812864 9.071635897015318 - rotation -0.793806275925897 0.003223457587860241 -0.6081621540525504 -0.012521789529539001 - name "coneyellow18" - color "yellow" -} -FsCone { - translation 9.99930458261043 -0.4024881461962798 9.030920099900893 - rotation -0.7709359301372367 0.004524213815134728 -0.6368966345591636 -0.011165433009628033 - name "coneyellow19" - color "yellow" -} -FsCone { - translation 15.049793424162711 -0.3742049248922057 9.03042655259798 - rotation 0.8450680787676517 0.0010618108169761114 0.5346576613177251 0.008017391881881908 - name "coneyellow20" - color "yellow" -} -FsCone { - translation 19.949937484346762 -0.3573499254072981 9.069771321993239 - rotation -0.8482469030853671 0.07224411643163392 -0.5246503397950836 -0.00641282125004232 - name "coneyellow21" - color "yellow" -} -FsCone { - translation 24.99994017212654 -0.31658983381032896 4.97008843276589 - rotation 0.8421956703863448 0.000661854040934079 0.5391716004499156 0.006516996977828546 - name "coneblue22" - color "blue" -} -FsCone { - translation 24.949839274579123 -0.33756626841926707 9.030172818200773 - rotation -0.7166122646617673 0.0003068479434661707 -0.6974716969029444 -0.006258938741128535 - name "coneblue23" - color "blue" -} -FsCone { - translation 22.399931951821934 -0.3252683778088339 4.970151340978156 - rotation 0.8974036541173764 0.004755821474826079 0.44118484078544645 0.00690710373513616 - name "coneblue24" - color "blue" -} -FsCone { - translation 24.949903808176682 -0.32810298365725976 7.080142881441679 - rotation 0.7947653544947354 0.006121725494052208 0.6068859495587562 0.0066394437006516765 - name "coneblue25" - color "blue" -} -FsCone { - translation 24.949772126901895 -0.3513916071213705 13.9700581311863 - rotation 0.23778222902135332 0.0009880072253695045 0.9713179888189857 0.0050773401295976725 - name "coneblue26" - color "blue" -} -FsCone { - translation 24.949774843633495 -0.35175286934572614 19.01999010950881 - rotation -0.03527731462054903 9.28935917449419e-05 0.9993775575046417 0.004827321452765802 - name "coneblue27" - color "blue" -} -FsCone { - translation 19.999620664451445 -0.37446947077719955 14.030120823990973 - rotation -0.2855021710214833 0.011646039071133367 -0.9583072994170364 -0.0045021659274125355 - name "coneyellow28" - color "yellow" -} -FsCone { - translation 20.04959233729585 -0.37468598778684403 19.0199544414759 - rotation 0.11090324909230571 0.00027932560326893353 -0.9938311684174416 -0.004574782854074777 - name "coneyellow29" - color "yellow" -} -FsCone { - translation 24.999802846710022 -0.366806418906616 28.930137286255174 - rotation -0.5898374741341867 0.0025821850649971625 -0.8075178551755327 -0.0033871112246707373 - name "coneblue30" - color "blue" -} -FsCone { - translation 24.000227972455146 -0.35705923433494524 21.980015108866127 - rotation 0.18828871618434104 0.04672498554768882 0.9810015979004423 0.0045073672940508696 - name "coneblue31" - color "blue" -} -FsCone { - translation 21.999702460197728 -0.3679002223124941 23.93008488943271 - rotation -0.28761880432696874 0.0022481028040185246 -0.957742329351328 -0.004122408480599348 - name "coneblue32" - color "blue" -} -FsCone { - translation 19.999707340636 -0.3773313568684161 25.880095207707406 - rotation -0.2979983644193352 0.005291362415466635 -0.9545517148312026 -0.0036361127610221896 - name "coneblue33" - color "blue" -} -FsCone { - translation 21.999823791166218 -0.3736504111276876 27.93009995823322 - rotation 0.4607001959470215 0.05321333880294897 0.8859591807909767 0.0032849896961850205 - name "coneblue34" - color "blue" -} -FsCone { - translation 18.949685081078474 -0.3789244172746113 20.929980843508673 - rotation -0.055635834193986 0.000256927867678569 0.9984510944165519 0.004514971195265529 - name "coneyellow35" - color "yellow" -} -FsCone { - translation 16.99950776099116 -0.3880251742483446 22.980000616714197 - rotation 0.015007248177209347 0.0002977553549605951 0.9998873405758751 0.005008553414230289 - name "coneyellow36" - color "yellow" -} -FsCone { - translation 15.899431056506927 -0.39353220345303197 25.979979252409105 - rotation 0.02738557256039173 0.014016743800959654 -0.9995266686330875 -0.005708371685973784 - name "coneyellow37" - color "yellow" -} -FsCone { - translation 16.899718080761968 -0.3899076310401038 29.070060206193006 - rotation 0.1871024087191835 0.0011764394640901492 0.9823397093885939 0.003828314693088047 - name "coneyellow38" - color "yellow" -} -FsCone { - translation 19.99975031971174 -0.3832272289847334 30.980182874794064 - rotation 0.5907805886381687 0.0003355654562168651 0.8068321904114656 0.003121049290308493 - name "coneyellow39" - color "yellow" -} -FsCone { - translation 24.94980257291043 -0.3713937366059092 31.020169901530824 - rotation -0.6664338288754886 0.00031484142227337653 -0.7455641170316841 -0.003166095696722493 - name "coneblue40" - color "blue" -} -FsCone { - translation 24.94977740335548 -0.38197246858742706 34.98031873856037 - rotation 0.8148147660608207 0.003894670506172063 0.5797083133360245 0.004077960877798078 - name "coneblue41" - color "blue" -} -FsCone { - translation 19.999758952305555 -0.39500757075872606 34.98038368528958 - rotation -0.8115621025760279 0.02168926045722971 -0.5838634511965917 -0.005092213926513989 - name "coneyellow42" - color "yellow" -} -FsCone { - translation 23.8997157555372 -0.40154797234139855 38.920555885377375 - rotation -0.8267088312068719 0.038090354242331835 -0.5613391428702096 -0.006347254808392647 - name "coneblue43" - color "blue" -} -FsCone { - translation 20.999386481036613 -0.43045641597697326 42.02091124121117 - rotation -0.8269617455698115 0.00020675214956664657 -0.5622581512238654 -0.007292021395415402 - name "coneblue44" - color "blue" -} -FsCone { - translation 17.999352409809166 -0.436017678851758 40.920978757224375 - rotation 0.831982958036663 0.0035428361948334685 0.5547898754017243 0.007706564143909352 - name "coneblue45" - color "blue" -} -FsCone { - translation 14.999643501776943 -0.43153942226599235 37.98047994422736 - rotation 0.7505917844675923 0.00017567412110547706 0.6607661781813279 0.008106422469441552 - name "coneblue46" - color "blue" -} -FsCone { - translation 19.999584127722557 -0.4040613672697488 36.92064527114476 - rotation 0.8394271001295428 0.0005332662183224064 0.5434720408588164 0.006266272683812389 - name "coneyellow47" - color "yellow" -} -FsCone { - translation 17.949863676844064 -0.4063679172811537 36.02030038744063 - rotation -0.7963316300318674 0.009494599483383145 -0.6047857369279135 -0.00660055069089024 - name "coneyellow48" - color "yellow" -} -FsCone { - translation 14.999445774195864 -0.40636722206210985 32.9803218586579 - rotation 0.5524225670418877 0.018790165675493697 0.8333524087063878 0.006286637029984329 - name "coneyellow49" - color "yellow" -} -FsCone { - translation 11.99888954641808 -0.43355482123169065 34.92073882571975 - rotation -0.533744221739763 0.0012875494577130732 -0.845644989328151 -0.00897055174735712 - name "coneblue50" - color "blue" -} -FsCone { - translation 9.028225281578939 -0.4501670670439485 31.94032776734561 - rotation 0.17116138133738426 0.0005891916631126031 0.9852428301651642 0.01056338183559936 - name "coneblue51" - color "blue" -} -FsCone { - translation 6.0282378573288655 -0.4810830586113721 28.989959501879795 - rotation 0.019236296991078504 0.00017550269109989342 -0.9998149499166714 -0.011420768339199496 - name "coneblue52" - color "blue" -} -FsCone { - translation 3.0274789517194334 -0.5155873332651524 25.989858204733444 - rotation -0.06126926243223851 0.0073131297905756915 0.9980944823080004 0.009991732548148209 - name "coneblue53" - color "blue" -} -FsCone { - translation 11.911513069269105 -0.30527009533464095 29.940079688353208 - rotation 0.002046833668008252 0.0014995804134837812 0.999996780860078 1.6307015297126086 - name "coneyellow54" - color "yellow" -} -FsCone { - translation 9.028191125023065 -0.4486391269471519 27.03981556902558 - rotation -0.10051431531652151 0.01476046737374667 0.9948261159717106 0.010880540774422503 - name "coneyellow55" - color "yellow" -} -FsCone { - translation 6.077615210527614 -0.48484663576443776 23.939850001538872 - rotation -0.05181481290384636 0.0021307640491041203 0.9986544372345754 0.011176394301135846 - name "coneyellow56" - color "yellow" -} -FsCone { - translation 3.0477674056816513 -0.5157074613126847 20.940172437517003 - rotation 0.06538926741520018 0.00014085459460334358 0.9978598217519767 0.008949950800839006 - name "coneyellow57" - color "yellow" -} -FsCone { - translation -0.0018048614459934603 -0.5424158908893778 23.09021227676873 - rotation 0.10240225305483229 0.0010899119320796585 0.9947424745436751 0.00789694467395685 - name "coneblue58" - color "blue" -} -FsCone { - translation 0.049511647922749764 -0.5365791623795727 18.979217570640273 - rotation 0.28367207981300757 0.02073259614341749 0.9586971944215319 0.007261738423224471 - name "coneyellow59" - color "yellow" -} -FsCone { - translation -2.0020732479369783 -0.5561152934827829 22.070435078293162 - rotation 0.22317971964590758 0.03048341198770224 0.9743005564672341 0.006845684944628054 - name "coneblue60" - color "blue" -} -FsCone { - translation -2.951370716797733 -0.5518044761265136 17.981045558497676 - rotation 0.613326516723118 0.0018493834864961038 0.7898272998985327 0.005792873608909425 - name "coneyellow61" - color "yellow" -} -FsCone { - translation -4.051480097952915 -0.5654632039933618 20.980749473774342 - rotation 0.5027387299641524 0.0012138010320213786 0.864437560545055 0.004775824490256182 - name "coneblue62" - color "blue" -} -FsCone { - translation -5.950075202935093 -0.44134566720163826 17.041877076159405 - rotation 0.9999973907992603 0.0019061384383065691 -0.0012589801132990076 1.6269573599900655 - name "coneyellow63" - color "yellow" -} -FsCone { - translation -8.949295751639593 -0.5435080724883266 15.971711111972091 - rotation 0.8703952461039585 0.08456620641809885 -0.4850367741642701 0.008072796704757877 - name "coneyellow64" - color "yellow" -} -FsCone { - translation -11.999536613632822 -0.40699632621605175 15.088106512734479 - rotation 0.9998484713219481 0.00881567731265225 -0.015010603874684333 1.6300750802692963 - name "coneyellow65" - color "yellow" -} -FsCone { - translation -14.948796480472415 -0.49479308603322136 13.971919579742282 - rotation -0.8470555758269894 0.00041664971240880177 0.5315041654243401 -0.00997197535481369 - name "coneyellow66" - color "yellow" -} -FsCone { - translation -17.949431455062598 -0.47512475108388286 12.971528257530476 - rotation -0.9527786338693354 0.0032889270010702863 0.30364791749864595 -0.00791118879950291 - name "coneyellow67" - color "yellow" -} -FsCone { - translation -6.950118633781856 -0.5687366296943666 19.931331100975374 - rotation -0.9957483122454972 0.0009666575291009393 -0.09211060869120924 -0.0040731787543161055 - name "coneblue68" - color "blue" -} -FsCone { - translation -9.949146073747727 -0.5599719408412881 19.0218425066809 - rotation 0.9012273719730499 0.012542199058690884 -0.4331650000280745 0.0069257551089203185 - name "coneblue69" - color "blue" -} -FsCone { - translation -12.948655351063564 -0.5402591128216669 18.02239624066678 - rotation 0.8626182759750356 0.029267272363150836 -0.5050080560964135 0.009661916616394017 - name "coneblue70" - color "blue" -} -FsCone { - translation -15.999112390638153 -0.5166553576563695 16.98242828567461 - rotation -0.9201614511107968 0.0013391198986649707 0.3915368573296381 -0.010297939271830026 - name "coneblue71" - color "blue" -} -FsCone { - translation -18.89974961351399 -0.4993180862639842 15.972148487921217 - rotation -0.9931042025018306 0.002140836023212217 0.11721544179127845 -0.00932321237672672 - name "coneblue72" - color "blue" -} -FsCone { - translation -23.000666592816135 -0.4816985749545166 12.96098561551128 - rotation -0.817511167469159 0.0292385754744548 -0.5751700589977169 -0.00722956582981403 - name "coneyellow73" - color "yellow" -} -FsCone { - translation -20.60036059868772 -0.4747581013985824 12.961414798181147 - rotation -0.9693958786675182 0.0010522059662320773 -0.24550055658803516 -0.007236700033601117 - name "coneyellow74" - color "yellow" -} -FsCone { - translation -23.05047214380772 -0.39019081636778713 16.074505701567674 - rotation 0.9999951646377153 0.003095251292737877 -0.00030020097169548626 1.6303160575994173 - name "coneyellow75" - color "yellow" -} -FsCone { - translation -19.95980133727285 -0.5083476153778599 17.011929842373846 - rotation 0.9988418797370917 0.00030062805874505103 -0.04811246102667594 0.00980433360374444 - name "coneblue76" - color "blue" -} -FsCone { - translation -22.990582555691997 -0.5218473827425141 18.012395478770408 - rotation -0.9723467215163033 0.0010505901910638847 -0.23353960995245918 -0.00948625720874032 - name "coneyellow77" - color "yellow" -} -FsCone { - translation -22.989851931448445 -0.5490921250119295 20.96228664875114 - rotation -0.9720958422521558 0.1935480390317832 -0.13254746343488763 -0.009293255254544577 - name "coneyellow78" - color "yellow" -} -FsCone { - translation -19.90977889123559 -0.5282825873897846 19.01273432967641 - rotation -0.9955357806023148 0.008664108286569789 0.09398639671855859 -0.010179429751246435 - name "coneblue79" - color "blue" -} -FsCone { - translation -20.059931057848946 -0.5470358233357367 20.91219784500916 - rotation 0.9999542548090261 3.6781203897316456e-05 -0.009564880368725633 0.009684420667060269 - name "coneblue80" - color "blue" -} -FsCone { - translation -23.050079749992754 -0.581385240298322 24.88241998406514 - rotation 0.9994000972840935 0.007134191515387057 0.03389024726918119 0.007182804682846401 - name "coneyellow81" - color "yellow" -} -FsCone { - translation -20.049838577206593 -0.5821788549901761 24.932593760821025 - rotation 0.9986434252793447 0.005230056295127863 -0.05180690743026081 0.007804247012108741 - name "coneblue82" - color "blue" -} -FsCone { - translation -23.052035568154796 -0.6106828577493806 29.02008746087156 - rotation -0.991279321908705 0.02174692150299959 0.12997067885242528 -0.006891680944438147 - name "coneyellow83" - color "yellow" -} -FsCone { - translation -19.9998729144319 -0.6132031783193047 29.021972591326204 - rotation 0.9957613047366712 0.03605219070089647 -0.08461479501120596 0.007547553867592794 - name "coneblue84" - color "blue" -} -FsCone { - translation -20.999497921102567 -0.639351857447357 32.981285483730375 - rotation 0.9606330648608428 0.05539973959406516 -0.2722406721064544 0.006336997763939921 - name "coneblue85" - color "blue" -} -FsCone { - translation -23.99820530235756 -0.6441305921050816 35.92106185286964 - rotation -0.6040542105928691 0.0639359574534878 0.794374410469982 -0.005376275084114907 - name "coneblue86" - color "blue" -} -FsCone { - translation -26.957166899361173 -0.6289537666044248 37.87025499748336 - rotation -0.08942535635655088 0.0004325141775866308 0.9959934329964178 -0.007239081751327925 - name "coneblue87" - color "blue" -} -FsCone { - translation -24.009092599094245 -0.6221225149975707 30.972237252687083 - rotation -0.9422944077230812 0.002579784624914542 0.3347754379955267 -0.006273303816144418 - name "coneyellow88" - color "yellow" -} -FsCone { - translation -26.00906567105371 -0.6257780971379123 32.87080386892323 - rotation 0.7013174700921867 0.002721427868760564 -0.7128438819081285 0.005385698753514874 - name "coneyellow89" - color "yellow" -} -FsCone { - translation -28.007957724514903 -0.620488291317335 33.97091423356648 - rotation -0.37599212827433215 0.005744162644045106 0.9266050529061759 -0.005705800522215969 - name "coneyellow90" - color "yellow" -} -FsCone { - translation -30.036791586311654 -0.604107426138948 37.959093861025366 - rotation 0.2370932881022626 0.024802450205471997 0.9711702277153386 -0.009563950525684746 - name "coneblue91" - color "blue" -} -FsCone { - translation -32.95731402574208 -0.5791341406131087 36.958878159417296 - rotation -0.374862406975713 0.05219529577416081 -0.9256099756028037 0.010875081678613235 - name "coneblue92" - color "blue" -} -FsCone { - translation -35.95722817476263 -0.5603448708927904 34.95844272941124 - rotation 0.481903317095877 0.02155302214644544 0.8759592799944216 -0.010640481407902457 - name "coneblue93" - color "blue" -} -FsCone { - translation -38.96478062323312 -0.5386937122736769 32.94534469146551 - rotation 0.3493418526867412 0.27945986320378857 0.8943502976012895 -0.012258414029849006 - name "coneblue94" - color "blue" -} -FsCone { - translation -39.79611077115428 -0.4241724014553837 29.939802017034886 - rotation -0.0009306928705167001 0.001447264337947884 0.9999985196172625 -1.6324675533636739 - name "coneblue95" - color "blue" -} -FsCone { - translation -40.90691247849122 -0.524182056107179 25.99039002165558 - rotation 0.11119873889546637 0.0015900222614247189 -0.9937969170294634 0.011901667387985775 - name "coneblue96" - color "blue" -} -FsCone { - translation -40.79222431119906 -0.4063053042247156 21.940117145694895 - rotation -0.001547808965107328 0.0009709806969091323 0.9999983307405534 -1.6325908411198609 - name "coneblue97" - color "blue" -} -FsCone { - translation -41.05768328297971 -0.5188228610844527 17.939836148301765 - rotation 0.04966080839707814 0.009991006854501466 0.9987161678331746 -0.008911950820482212 - name "coneblue98" - color "blue" -} -FsCone { - translation -40.008475181835074 -0.5288034458888227 13.989967867932537 - rotation 0.0056775520926204874 0.05260097854638413 0.9985994704876417 -0.005332517025237274 - name "coneblue99" - color "blue" -} -FsCone { - translation -38.00936830368305 -0.5331263182738332 10.940296035499614 - rotation 0.5957215424110225 0.05425534934290363 -0.8013564755931731 0.0018392337746926868 - name "coneblue100" - color "blue" -} -FsCone { - translation -31.96118582753846 -0.5167111491488972 5.989964944516009 - rotation -0.011629035240143514 0.035758609131390014 0.9992927936357651 0.004561718065187181 - name "coneblue101" - color "blue" -} -FsCone { - translation -33.960872996876574 -0.524888577010718 7.840123577825656 - rotation 0.1202908324745197 0.029260288175955978 0.9923073874351874 0.0033114430347034062 - name "coneblue102" - color "blue" -} -FsCone { - translation -35.96047181665793 -0.531469509238046 9.740281100605966 - rotation 0.5703800287315565 0.11042351636687978 0.8139246094432594 0.001947839903061006 - name "coneblue103" - color "blue" -} -FsCone { - translation -32.04129742005542 -0.519258231851954 10.840387518877726 - rotation 0.30719830805441073 0.002106638839824195 0.951643190277378 0.004857686759122949 - name "coneyellow104" - color "yellow" -} -FsCone { - translation -34.04101070787228 -0.5295115037967126 12.040468716463872 - rotation -0.5110849607239166 0.041971147382797266 -0.8585048547965258 -0.0033795110817424483 - name "coneyellow105" - color "yellow" -} -FsCone { - translation -35.94032030585956 -0.5369285162913019 13.740481900783262 - rotation -0.6646221902084517 0.22419185199823327 -0.7127519609093497 -0.0024299194234430107 - name "coneyellow106" - color "yellow" -} -FsCone { - translation -36.93946943294471 -0.5409743610640235 16.890348471391867 - rotation -0.5910085114283836 9.450252279805463e-05 0.8066653150399362 -0.0029137898063093357 - name "coneyellow107" - color "yellow" -} -FsCone { - translation -36.98835323464971 -0.551478801049444 21.940686876790217 - rotation 0.41738617729518457 0.0021377920742666648 -0.9087266964538677 0.0060620505402784915 - name "coneyellow108" - color "yellow" -} -FsCone { - translation -37.03844729750673 -0.5608803592542411 25.990679778695394 - rotation -0.31105496739881316 0.06793675918623188 0.9479606553057965 -0.007409115390398082 - name "coneyellow109" - color "yellow" -} -FsCone { - translation -35.946901041408545 -0.5738664821591964 28.93198296292195 - rotation 0.11569569603144861 0.4270618831061837 -0.8967901950387276 0.006831398615294678 - name "coneyellow110" - color "yellow" -} -FsCone { - translation -33.98767327346647 -0.5868331588017195 31.08995523582487 - rotation -0.02291354628915918 1.887374548802435e-05 -0.999737450053881 0.005799135821054988 - name "coneyellow111" - color "yellow" -} -FsCone { - translation -32.03749273272686 -0.59758528792802 32.93979699925368 - rotation 0.08990500239178571 0.00025191140639248353 0.9959503135626677 -0.006539016441476711 - name "coneyellow112" - color "yellow" -} -FsCone { - translation -30.037830143435514 -0.6095254886461415 33.939929136902926 - rotation -0.1296074426075784 0.0005919999342418027 0.9915652073145776 -0.006090804156503151 - name "coneyellow113" - color "yellow" -} -FsCone { - translation -28.001361183343107 -0.4954447578051363 4.969884796109915 - rotation 0.0826005638478659 0.00023602832883861264 -0.9965827066243136 -0.006300019918067732 - name "coneblue114" - color "blue" -} -FsCone { - translation -28.00126359918733 -0.4951535577837846 9.020156525263921 - rotation -0.12144644460625864 0.0009959821523295041 -0.9925974859488872 -0.005858151991655742 - name "coneyellow115" - color "yellow" -} -FsCone { - translation -4.0283934647335755 -0.44648231155321855 4.938748650200496 - rotation -0.975765334475813 0.012196663830077892 -0.21847941190583825 -0.010647172222638222 - name "coneorange116" -} -FsCone { - translation -3.9262662205521255 -0.4897420959062759 8.987277755374619 - rotation 0.9565478372397307 0.126120042430037 0.2628877516535134 0.011171138848654135 - name "coneorange117" -} -FsCone { - translation -6.030013702209617 -0.44899125450756683 4.841689883082002 - rotation -0.9991389443116487 0.006286563152297041 -0.04101035337004561 -0.009898452236795733 - name "coneorange118" -} -FsCone { - translation -6.02966927983346 -0.4921912853476501 9.041947927300786 - rotation 0.9966304123657109 0.0007097244782898644 -0.08202022579167804 0.010399417551870566 - name "coneorange119" -}