From 1b20e31fbf2c29281774dad3ad53954e3de2c9c5 Mon Sep 17 00:00:00 2001 From: Dharini Dutia Date: Tue, 8 Nov 2022 13:29:07 -0800 Subject: [PATCH 1/8] cmake temp fix and rosinstall_generator) Signed-off-by: Dharini Dutia --- moveit2/Dockerfile | 31 ++- moveit2/excluded-pkgs.txt | 10 + moveit2/moveit2-pkgs.txt | 35 ++++ moveit2/moveit2.repos | 191 ------------------ moveit2_tutorials/Dockerfile | 64 ------ moveit2_tutorials/README.md | 67 ------ moveit2_tutorials/build.sh | 20 -- moveit2_tutorials/entrypoint.sh | 6 - moveit2_tutorials/moveit2_tutorials.repos | 13 -- .../resources/moveit2-rviz-tutorial.png | Bin 91179 -> 0 bytes moveit2_tutorials/run.sh | 5 - 11 files changed, 74 insertions(+), 368 deletions(-) create mode 100644 moveit2/excluded-pkgs.txt create mode 100644 moveit2/moveit2-pkgs.txt delete mode 100644 moveit2/moveit2.repos delete mode 100644 moveit2_tutorials/Dockerfile delete mode 100644 moveit2_tutorials/README.md delete mode 100755 moveit2_tutorials/build.sh delete mode 100755 moveit2_tutorials/entrypoint.sh delete mode 100644 moveit2_tutorials/moveit2_tutorials.repos delete mode 100644 moveit2_tutorials/resources/moveit2-rviz-tutorial.png delete mode 100755 moveit2_tutorials/run.sh diff --git a/moveit2/Dockerfile b/moveit2/Dockerfile index 5ce409c..9058a0a 100644 --- a/moveit2/Dockerfile +++ b/moveit2/Dockerfile @@ -77,21 +77,48 @@ RUN python3 -m pip install -U \ pytest-rerunfailures \ pytest +# TODO: Temporary CMake Update +RUN wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add - +RUN sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main' +RUN sudo apt-get update && sudo apt-get install \ + cmake-data=3.22.2-0kitware1ubuntu20.04.1 \ + cmake=3.22.2-0kitware1ubuntu20.04.1 \ + -y --allow-downgrades + # Get the MoveIt2 source code WORKDIR ${HOME_DIR} RUN sudo git clone https://github.com/ros-planning/moveit2.git -b main moveit2/src +# Update the ownership of the source files (had to use sudo above to work around +# a possible inherited 'insteadof' from the host that forces use of ssh +RUN sudo chown -R ${USERNAME}:${USERNAME} ${MOVEIT2_DIR} + +# Get rosinstall_generator +RUN sudo apt-get update -y && sudo apt-get install -y python3-rosinstall-generator + +# Generate repos file for moveit2 dependencies, excluding packages from Space ROS core. +COPY --chown=${USERNAME}:${USERNAME} moveit2-pkgs.txt /tmp/ +COPY --chown=${USERNAME}:${USERNAME} excluded-pkgs.txt /tmp/ +RUN rosinstall_generator \ + --rosdistro ${ROSDISTRO} \ + --deps \ + --exclude-path ${SPACEROS_DIR}/src \ + --exclude $(cat /tmp/excluded-pkgs.txt) -- \ + -- $(cat /tmp/moveit2-pkgs.txt) \ + > /tmp/moveit2_generated_pkgs.repos + # Get the repositories required by MoveIt2, but not included in Space ROS WORKDIR ${MOVEIT2_DIR} COPY --chown=${USERNAME}:${USERNAME} moveit2.repos ./ -RUN sudo vcs import src < moveit2.repos +RUN vcs import src < /tmp/moveit2_generated_pkgs.repos # Update the ownership of the source files (had to use sudo above to work around # a possible inherited 'insteadof' from the host that forces use of ssh RUN sudo chown -R ${USERNAME}:${USERNAME} ${MOVEIT2_DIR} # Install system dependencies -RUN rosdep install --from-paths ../spaceros/src src --ignore-src --rosdistro ${ROSDISTRO} -y --skip-keys "console_bridge fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers rmw_connextdds ros_testing rmw_connextdds rmw_fastrtps_cpp rmw_fastrtps_dynamic_cpp composition demo_nodes_py lifecycle rosidl_typesupport_fastrtps_cpp rosidl_typesupport_fastrtps_c ikos diagnostic_aggregator diagnostic_updater joy qt_gui rqt_gui rqt_gui_py" +RUN /bin/bash -c 'source ${SPACEROS_DIR}/install/setup.bash' +RUN rosdep install --from-paths ../spaceros/src src --ignore-src --rosdistro ${ROSDISTRO} -r -y --skip-keys "console_bridge generate_parameter_library fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers rmw_connextdds ros_testing rmw_connextdds rmw_fastrtps_cpp rmw_fastrtps_dynamic_cpp composition demo_nodes_py lifecycle rosidl_typesupport_fastrtps_cpp rosidl_typesupport_fastrtps_c ikos diagnostic_aggregator diagnostic_updater joy qt_gui rqt_gui rqt_gui_py" # Apply a patch to octomap_msgs to work around a build issue COPY --chown=${USERNAME}:${USERNAME} octomap_fix.diff ./src/octomap_msgs diff --git a/moveit2/excluded-pkgs.txt b/moveit2/excluded-pkgs.txt new file mode 100644 index 0000000..890bc00 --- /dev/null +++ b/moveit2/excluded-pkgs.txt @@ -0,0 +1,10 @@ +fastcdr +fastrtps +fastrtps_cmake_module +rmw_fastrtps_cpp +rmw_fastrtps_dynamic_cpp +rmw_fastrtps_shared_cpp +rmw_connextdds +rosidl_typesupport_fastrtps_c +rosidl_typesupport_fastrtps_cpp +urdfdom_headers diff --git a/moveit2/moveit2-pkgs.txt b/moveit2/moveit2-pkgs.txt new file mode 100644 index 0000000..0fd2274 --- /dev/null +++ b/moveit2/moveit2-pkgs.txt @@ -0,0 +1,35 @@ +ackermann_msgs +anglesbackward_ros +control_msgs +control_toolbox +eigen_stl_containers +geometric_shapes +graph_msgs +ignition/ignition_cmake2_vendor +ignition/ignition_math6_vendor +image_common +interactive_markers +joint_state_publisher +laser_geometry +launch_param_builder +moveit_msgs +moveit_resources +navigation_msgs +object_recognition_msgs +octomap +ompl +orocos_kinematics_dynamics +python_qt_binding +random_numbers +realtime_tools +resource_retriever +ros2_control +ros2_controllers +ruckig +rviz2 +srdfdom +urdf_parser_py +vision_opencv +warehouse_ros +xacro +yaml_cpp_vendor diff --git a/moveit2/moveit2.repos b/moveit2/moveit2.repos deleted file mode 100644 index 13b2156..0000000 --- a/moveit2/moveit2.repos +++ /dev/null @@ -1,191 +0,0 @@ -repositories: - ackermann_msgs: - type: git - url: https://github.com/ros-drivers/ackermann_msgs.git - # branch: ros2 - version: 2.0.2 - angles: - type: git - url: https://github.com/ros/angles.git - # branch: ros2 - version: 1.13.0 - backward_ros: - type: git - url: https://github.com/pal-robotics/backward_ros.git - # branch: foxy-devel - version: 1.0.1 - control_msgs: - type: git - url: https://github.com/ros-controls/control_msgs.git - # branch: foxy-devel - version: 3.0.0 - control_toolbox: - type: git - url: https://github.com/ros-controls/control_toolbox.git - # branch: ros2-master - version: 2.0.2 - eigen_stl_containers: - type: git - url: https://github.com/ros/eigen_stl_containers.git - # branch: ros2 - version: 1.0.0 - geometric_shapes: - type: git - url: https://github.com/ros-planning/geometric_shapes.git - # branch: ros2 - version: 2.1.2 - graph_msgs: - type: git - url: https://github.com/PickNikRobotics/graph_msgs.git - # branch: ros2 - version: 0.2.0 - ignition/ignition_cmake2_vendor: - type: git - url: https://github.com/ignition-release/ignition_cmake2_vendor.git - # branch: main - version: 0.0.2 - ignition/ignition_math6_vendor: - type: git - url: https://github.com/ignition-release/ignition_math6_vendor.git - # branch: main - version: 0.0.2 - image_common: - type: git - url: https://github.com/ros-perception/image_common.git - # branch: ros2 - version: 3.1.4 - interactive_markers: - type: git - url: https://github.com/ros-visualization/interactive_markers.git - # branch: ros2 - version: 2.3.1 - joint_state_publisher: - type: git - url: https://github.com/ros/joint_state_publisher.git - # branch: ros2 - version: 2.2.0 - laser_geometry: - type: git - url: https://github.com/ros-perception/laser_geometry.git - # branch: ros2 - version: 2.4.0 - launch_param_builder: - type: git - url: https://github.com/PickNikRobotics/launch_param_builder.git - # branch: main - version: 0.1.0 - moveit_msgs: - type: git - url: https://github.com/ros-planning/moveit_msgs.git - # branch: ros2 - version: 2.2.0 - moveit_resources: - type: git - url: https://github.com/ros-planning/moveit_resources.git - # branch: ros2 - version: 2.0.3 - navigation_msgs: - type: git - url: https://github.com/ros-planning/navigation_msgs.git - # branch: ros2 - version: 2.1.0 - object_recognition_msgs: - type: git - url: https://github.com/wg-perception/object_recognition_msgs.git - # branch: ros2 - version: 2.0.0 - octomap: - type: git - url: https://github.com/octomap/octomap.git - # branch: devel - version: v1.9.7 - octomap_msgs: - type: git - url: https://github.com/octomap/octomap_msgs.git - # branch: ros2 - version: 2.0.0 - ompl: - type: git - url: https://github.com/ompl/ompl.git - # branch: main - version: 1.5.2 - orocos_kinematics_dynamics: - type: git - url: https://github.com/ros2/orocos_kinematics_dynamics.git - # branch: ros2 - version: 3.3.3 - python_qt_binding: - type: git - url: https://github.com/ros-visualization/python_qt_binding.git - # branch: main - version: 1.1.1 - random_numbers: - type: git - url: https://github.com/ros-planning/random_numbers.git - # branch: ros2 - version: 2.0.1 - realtime_tools: - type: git - url: https://github.com/ros-controls/realtime_tools.git - # branch: foxy-devel - version: 2.2.0 - resource_retriever: - type: git - url: https://github.com/ros/resource_retriever.git - # branch: ros2 - version: 3.1.0 - ros2_control: - type: git - url: https://github.com/ros-controls/ros2_control.git - # branch: master - version: 2.13.0 - ros2_controllers: - type: git - url: https://github.com/ros-controls/ros2_controllers.git - # branch: master - version: 2.11.0 - ruckig: - type: git - url: https://github.com/pantor/ruckig.git - # branch: master - version: v0.6.3 - rviz: - type: git - url: https://github.com/ros2/rviz.git - # branch: ros2 - version: 11.1.1 - srdfdom: - type: git - url: https://github.com/ros-planning/srdfdom.git - # branch: ros2 - version: 2.0.4 - urdf_parser_py: - type: git - url: https://github.com/ros/urdf_parser_py.git - # branch: ros2 - version: 1.2.0 - vision_opencv: - type: git - url: https://github.com/ros-perception/vision_opencv.git - # branch: ros2 - version: b1a8980be0c05ba93a98cb07a87bd1589fa1daf2 - warehouse_ros: - type: git - url: https://github.com/ros-planning/warehouse_ros.git - # branch: ros2 - version: 2.0.4 - warehouse_ros_mongo: - type: git - url: https://github.com/ros-planning/warehouse_ros_mongo.git - # branch: ros2 - version: 55118d2b87ba006d256c800def0d354c0b1cff92 - xacro: - type: git - url: https://github.com/ros/xacro.git - # branch: ros2 - version: 2.0.7 - yaml_cpp_vendor: - type: git - url: https://github.com/ros2/yaml_cpp_vendor.git - # branch: master - version: 8.0.0 diff --git a/moveit2_tutorials/Dockerfile b/moveit2_tutorials/Dockerfile deleted file mode 100644 index 6b72dcc..0000000 --- a/moveit2_tutorials/Dockerfile +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright 2021 Open Source Robotics Foundation, Inc. -# -# 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. -# -# A Docker configuration script to build the Space ROS image. -# -# The script provides the following build arguments: -# -# VCS_REF - The git revision of the Space ROS source code (no default value). -# VERSION - The version of Space ROS (default: "preview") - -FROM openrobotics/moveit2:latest - -# Define arguments used in the metadata definition -ARG VCS_REF -ARG VERSION="preview" - -# Specify the docker image metadata -LABEL org.label-schema.schema-version="1.0" -LABEL org.label-schema.name="MoveIt2 Tutorials" -LABEL org.label-schema.description="MoveIt2 Tutorials on the Space ROS platform" -LABEL org.label-schema.vendor="Open Robotics" -LABEL org.label-schema.version=${VERSION} -LABEL org.label-schema.url="https://github.com/space-ros" -LABEL org.label-schema.vcs-url="https://github.com/space-ros/docker-images" -LABEL org.label-schema.vcs-ref=${VCS_REF} - -# Disable prompting during package installation -ARG DEBIAN_FRONTEND=noninteractive - -# Define key locations -ENV MOVEIT2_TUTORIALS_DIR=${HOME_DIR}/moveit2_tutorials - -# Get the MoveIt2 Tutorials source code -WORKDIR ${HOME_DIR} -RUN sudo git clone https://github.com/ros-planning/moveit2_tutorials.git -b main moveit2_tutorials/src/moveit2_tutorials -WORKDIR ${MOVEIT2_TUTORIALS_DIR} -RUN cd src/moveit2_tutorials && sudo git checkout c98d7f10aefb8dffde60621ec5b72d1f5d17caaf - -# Get the repositories required by MoveIt2, but not included in Space ROS -COPY --chown=${USERNAME}:${USERNAME} moveit2_tutorials.repos ./ -RUN sudo vcs import src < moveit2_tutorials.repos - -# Update the ownership of the source files (had to use sudo above to work around -# a possible inherited 'insteadof' from the host that forces use of ssh -RUN sudo chown -R ${USERNAME}:${USERNAME} ${MOVEIT2_TUTORIALS_DIR} - -# Build it -RUN /bin/bash -c 'source ${HOME_DIR}/moveit2/install/setup.bash && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release' - -# Set up the entrypoint -COPY ./entrypoint.sh / -ENTRYPOINT ["/entrypoint.sh"] -CMD ["bash"] diff --git a/moveit2_tutorials/README.md b/moveit2_tutorials/README.md deleted file mode 100644 index c7dcf44..0000000 --- a/moveit2_tutorials/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# MoveIt2 Tutorials Docker Image - -The MoveIt2 Tutorials Docker image uses the MoveIt2 image (*openrobotics/moveit2:latest*) as its base image. The MoveIt2 Tutorials Dockerfile downloads and builds the tutorials source code. - -## Building the MoveIt2 Image - -To build the docker image, run: - -``` -$ ./build.sh -``` - -The build process will take about 10 minutes, depending on the host computer. - -## Running the MoveIt2 Tutorials Docker Image in a Container - -After building the image, you can see the newly-built image by running: - -``` -$ docker image list -``` - -The output will look something like this: - -``` -REPOSITORY TAG IMAGE ID CREATED SIZE -openrobotics/moveit2_tutorials latest 622fe9ec7ed6 11 minutes ago 16GB -openrobotics/moveit2 latest 6edb2edc9643 10 hours ago 15.5GB -openrobotics/spaceros latest 629b13cf7b74 12 hours ago 7.8GB -nvidia/cudagl 11.4.1-devel-ubuntu20.04 336416dfcbba 1 week ago 5.35GB -``` - -The new image is named **openrobotics/moveit2_tutorials:latest**. - -There is a run.sh script provided for convenience that will run the image in a container. - -``` -$ ./run.sh -``` - -Upon startup, the container automatically runs the entrypoint.sh script, which sources the MoveIt2 tutorials, MoveIt2 and Space ROS environment files. You'll now be running inside the container and should see a prompt similar to this: - -``` -spaceros-user@8e73b41a4e16:~/moveit2_tutorials# -``` - -Run the following command to launch the MoveIt2 tutorials demo launch file: - -``` -ros2 launch moveit2_tutorials demo.launch.py rviz_tutorial:=true -``` - -You should see lots of console output and the rviz2 window appear: - -![rviz2 tutorial window](resources/moveit2-rviz-tutorial.png) - -You can now following the [MoveIt2 Tutorial documentation](https://moveit.picknik.ai/galactic/doc/tutorials/quickstart_in_rviz/quickstart_in_rviz_tutorial.html). - -## Running the MoveIt2 Move Group C++ Interface Demo - -To run the Move Group C++ Interface Demo, execute the following command: - -``` -ros2 launch moveit2_tutorials move_group.launch.py -``` - -Then, you can follow the [Move Group C++ Interface Demo documentation](https://moveit.picknik.ai/galactic/doc/examples/move_group_interface/move_group_interface_tutorial.html). diff --git a/moveit2_tutorials/build.sh b/moveit2_tutorials/build.sh deleted file mode 100755 index 92cf58c..0000000 --- a/moveit2_tutorials/build.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash - -ORG=openrobotics -IMAGE=moveit2_tutorials -TAG=latest - -VCS_REF="" -VERSION=preview - -echo "" -echo "##### Building MoveIt2 Tutorials Docker Image #####" -echo "" - -docker build -t $ORG/$IMAGE:$TAG \ - --build-arg VCS_REF="$VCS_REF" \ - --build-arg VERSION="$VERSION" . - -echo "" -echo "##### Done! #####" - diff --git a/moveit2_tutorials/entrypoint.sh b/moveit2_tutorials/entrypoint.sh deleted file mode 100755 index b4a79b1..0000000 --- a/moveit2_tutorials/entrypoint.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -e - -# Setup the MoveIt2 Tutorials environment -source "/home/spaceros-user/moveit2_tutorials/install/setup.bash" -exec "$@" diff --git a/moveit2_tutorials/moveit2_tutorials.repos b/moveit2_tutorials/moveit2_tutorials.repos deleted file mode 100644 index 2b07d09..0000000 --- a/moveit2_tutorials/moveit2_tutorials.repos +++ /dev/null @@ -1,13 +0,0 @@ -repositories: - rviz_visual_tools: - type: git - url: https://github.com/PickNikRobotics/rviz_visual_tools - version: 4.1.2 - moveit_resources: - type: git - url: https://github.com/ros-planning/moveit_resources - version: 2.0.3 - moveit_visual_tools: - type: git - url: https://github.com/ros-planning/moveit_visual_tools - version: 4.0.0 diff --git a/moveit2_tutorials/resources/moveit2-rviz-tutorial.png b/moveit2_tutorials/resources/moveit2-rviz-tutorial.png deleted file mode 100644 index 1472f46611ccb9861a59fd86416a65a8ae71a696..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91179 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� zn62Ey00J)670ajuf)@M~owX|r2kU3Ex&o%*O;ctggwXz4Y z9zp3M0TX;A;*o<&(eHG@CnVd%+GQi-<VTR8IY!ZRQ_;BwW168hjhO`Y?5W1Vy5i}}DZ*OPGTJled_v3T6S zuMBxO-SYnSeYF1r`%ypGxAQ)IHD}*&+ga|22D6cb`hdj4T88x|PCNwh_by(CxSno# zw+7?h+%V`4{DmqwM4_#i^u;8n?t2d-GxIroB>0cGn&;Tr*z~VntwcB~eYr)^i&o7# z{3ixPTtOd)@A3S2%Mjkxv@>4>ZUwH!n;zSF*%Qlu{jM0%l;ADr%weo_YutvDK`9?u zS=g;z%vRi@qR=}9-`MHSaZ7KwC=uJ5Ii19WP2345tzx&wRAW}2RKN-~1#iYsimuGrr%T1ymv(^~lWG0tbLUP9 zMBsfPe7|4$BSt|y>v#!Z>s@ys>~=c;ya-;;8(oM&*+W)IN#-+MBLsEf2qrmjL}{h7 zsESHU*8+H;WjF=EdlvRmgmZ+2g)duJD3Z|EmMv<{WU>R6(A19~#VAg2JN*CcF~{9W@4FQ9~I8t^a%GHj4qo>g&ci}T_y!T4U!}B{$T$@+X@f@@GtlC=f;GJO5^x?dTs^wv6XXKwb_dGNp9LI znXVKkb!ihF2Saz8G_z_i=-DgwT2Mb`NJ zpCt_3(ET*`p8f3-+5i#fB>}>JVYm;D8{4sFZWN1`NJFC`tQ1(muM&L~@E%lGcTdj= z`SCEjCjA*+xv`J9|uSP2pe!`zHXv%@U@42G_KSsDSZ3Fo5*f&58zg+D#kYR)!rVk(hGl&BVgNoSN#mNvASO_r)f%mW1T|Ol!BZHr81{fpHfDsOeoYnLD zKVW61yLj1^@Qmw`YwvJFpFNGdrv;X|tvuz#)*z52Um2AP^hQ zbdD1doB8?$aC7iU(lV=;tu}&9H-0}j=#k1ulqTca$Sq`UAw-o=g0=sVW8ezIZ@{yj zsPGFNSnIo6ynht{*z5t3N$49(mSl->yi#5U{KG~_s2fKLB2>Az7-9f&j2sOlm4KSW zmty`kO<(T$9B%LoO88NYksVAb=dLD4CrJ!F2jss(qm%d_FMI zQ;?AiWbh#l34nE#8VC~y$={JN5&R}wDZrv3z$+8dN#;jDlfVznNK9r8(Z^oWf#lHx z?t%>bs7p0~f>Ak!AqxZey!l89RL&AGiJ=OFcL7?VutzR8+ffeJPTXNSwr(6WQ~tv_ z`z)J3ORf`_+-fHWHPKeS502)UoRMx>D#ng@lao_kQt|{cjmDxl6i4v+}g%QnHg#KhvaJzbVi~SD0S%eaO9{< z>szefa@p88XnYZWvx-dLdcQo+2+dV3zP!A=0oUBA{ZOP80Ayt!a64DQTg>q!KnAOU zm5t4#zrSB$$O?_b5k5ZU$gt2*t|1kdp=E3`GD!r!3|VA7(22rE;4>=<>l1(00Cr{N z3=kaz-_MA9C%G52wLIVAn2A>HVP2lYm?qjSP$e~yO4RA4P{vo6dyPEJk;9%{G+ z@2<_kHg3Q~2MXK=4{Sy<%OM}s6Ux&n#4F$wd8fd(XZlHtgDX%M{E{CrQQ~h~4}i+k z=#YF!MMZ@~7SN)?1YO+HLQ4VG4=5mDktp2E;`VpK!gMT?sigyA!b_wp+77)Lo_;H$ z?xLUOuHAaJ;+IqX{oFQN$<)4}g4z2MLIG7HQ5^J9e;p8B^*>6e3g13M#+rD6ps;~9 zegHa&vu7A=JBb%xa$PM^$v!#RyS}3F1x{5Rdbt}JISGHkZE!qXmbi)VA(|!2f0#_T? z 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

S@GECW8>*}=h>re=s+8m8ph!Nt+9OLWP`*UJ zEf;iYH3mGrVt;?g7==X&*m$pD>P`Q~|APF2eEL`PfN zwTUuu)qY(8QR(MRWF6-=>a>?FW-lXq6wIyjWGFRi2W)-^40enttysDu>w3*I2gAvz zP~EHV1wFWn2hN`ccG02K(qjw$H%q#LcCFgeoHWi)5_g+^y3z7R4(U8Pr)2+flJca* zFY|VO;fziX>UC8`*Y>%7(5rAfF2b5#g$UPwNFXPN0w{ljRbyVgCs+SX7x&Yvbx6$V z%tsq~?xE+bIgu7%vAxuprDAx&A0=ZLCTB`6)R~P{jX6r_y9jK$n=Gia|c;c zFbhG%4xO+=*Mxk*J-Y;`y${F@%AFtz9uV@(RF6z$5O=cLZNSz8tgkp`|Jy)5?aa?h zc)6~aE$^D=!g=d$j#-Z*j%Y3mt8*ti>IO)OjWiuPUZVGy9}Kcq4JQAcN2e|jDF$B*!sNnQGw}1mN7ea%KEJ1Zf3#pxzm=-9vbDzXN%3`0!nWEtL8_l;LUKK^rx-B!X z)jE7S!_>35K3U`CnXfv(iNOO%*Fayt7&n{DZ9!eM8?IXg!w4o!;)zX<_*Ouo;zQ`; zU&LL0KSO423TA){c!CffTUv{nBhYMaY3YXu7YLQmcSir*zy!aXkn@cZ>o>DXU}a?Pe93G@ssIwY*UJ`@1gg>F-M+f05C$HX#~ra36cs7Y=c1HlCVWJfL|iY2zjg<`foZ^B%BFse0Bq7W7nBN`bvY+^OX zF2}l%(_zh;kAjINnL;Aw;TawPNHxU=Ib|mfrMp?#=?WxR zMMOKy4L+j}p|KYc1yRhPqmVH=!71|_A8U9Uc8|FZ?ep2j8y$U8rmfLJ zrS3B^KYL54c|9N1Vh3zu5!rCJulGu#_OXGxw=Z|!Xx%1vWP{@-+RuIT(_)(i`I5X+ zEcT1=u0LMV`Q$kYSmosZ#8h7>l@J*Lcf)}4$ovU->b=lWU`8jIV}tJ5s12%7@}|7W{Sbmw1SFTjI5C@?HeAKjW<_a^cP2+XrTi}eDb%jNAD8EXK1 z6OWqwEHsonToBBRZKDgTjmqOqPR_h6SJHo~Iu_1J9$GSXDP|C_jTWw@c;e3{ zu}x_{f3QulRuC3Xh;;af5HkR2^G|!3aQ#yeRl^CeH`L zEmq+Gw+42^IvDVvmtDE`^aPsD6sRs>_+g=ek7#-Za4MYasuTd7T>gThf^b9eYgBy9Gop+G4+a%Ir7y9@#oJ8M`8C+%-759V+JcXwOnGy8$ba!a%`1z_k~5 zI<0+?2N;fr=w0owGO;Sj;tVek+9r+@O{rSl0b;w7I$bpY-k9Uch02HpV^k=^2Tg%k z%qXGAOWMR;9`AQ?Wu24p$fPvm(sH5wZ7a0CKZ=)mzj6F+cA!Ug7^W z%E4;37#Y8irEJA8S~sv~6(PG>a0y&N2?2<;6IzK5zz44oQQLIp0o*h@+=qsSDpXvd zfFn2q!Qp_+j-QU#7?RfR?Cw?u9f%_VEdMSC!>Yn$H1nu1X+Yb2Sg-&efCHi+u2yGO zu#7SvkxdOr5ee4l%_JT4`mMd~&i;+hb3Tpqrdn+8X~KX*6kkX2iGkeR#j_(DG(`~t z-JoG7%MV7i^^dMw<}DB>>nkd4O4LTPI)M8LovJrH5fc*=OP-ojRC&;v zHtq=X5$!*hme5lg3ej=2^W%MRIXfxoMuc9K=C^@Ibz5Te{P{nv>EZ4I$Vyv*5;yFj zal+j5M|e{Q!Mo$eqI?}Fq8y!;L}ya=i;_Dl8n3e@n)C7;|<+>9^&J2U8d6Q z7WJ(LHwRjt@?Xh-oWSa0MiOcR9&@25W*Sp<-YluJJ@=#A?c=ZWFZnmcCD@-*?xM;4 z^%;kY{py}SLmm6Hf4`dNa@a+C?jhgkxJ5Lyw*?$B&@r`cbIOLq`j9-^Ljm*_1RQ`> z#d*Mlj6ZpJ6d-Lx_esC^MbeO?fw>zLbRAol%sn6x0m%Mn_cs!Otysk<0V@+{tuWNg zxUSw!PK?Ol2$;4D#SAR6DjHA71qo~n)qyr+99nh$sk{@j)V9M>sTo zu#(Rp%*=s!+hI#bCm_6*#_}xg)W^6@oUsWW2%ByWJn}_<6@s2V)I+MZSsTL3BDcm)ixzx7kd^tO+@)=?eO~(bL_xj z#_is0rUHOS4uP$l*pH&Vd=0 z%1TN!J#g{j#dKfNI7*6pL8%5GwWePJU~Oz^=m{-&MzQt+P*%MJ$&H1ag>6UisLgO? z1vId0qAU;nZDVU&3aROPyjuH8cNK`=P(q=XL(k!^pmq?r3vR87!~2JRA#*sK!Z>#m za5swAjuLP_1T&<(iDruh@%MgNg!|Il`d0E^*nf(ox)@yg{99x3$n1mPE1ibk9PjNY z+B6#a`=0P?{(XNY(R}tDoU?Mh+}U=^i-(5XB+_;`wHoCoG`P;4eDm9XFnM!a&-+s? z^IKWjXNS7D%)FAk%l*s9*A^ z0;DsLe0FG6r_!i@Jc#Uj<}A5TKJlLCv}^~pONKsN)_5urlR1s3kx!*BV#kak&L<}e zhPbj%>E&eaDs|gDBW9hHctGn#nZe?S8(%|Y!+!W4DjP}QO%BK91@*&s^bUezN43J{ zX|A2Ep782bB|q~7Md)Z-Lv9D?4H=sJCLMqTfj~|BjJZ;efh>d4IRL#LViDhhsCm$P zR{zi;VW3B0#owlf0+7tj&1Hci@bsB8Jc#N5sl!u(akdT!`?{Bp%-X8^eIOVSu!Vo7 zb^=2CPi#3?*-0Wc}u;bn7 z(fbLzJH4*nVlpmpx*I2wR4^a~9E@Pe`%rpAKnPjjGLpYSC4qzB+Rgp-cHJm6-(y(m zp1*EV6Eq10r{EPKofN%lc>cdrj5i27n0r{VP!=Er<|)n=kWBnh61I=mX=i1!(^<~)ByhCBb-HecquR&!i53RhfwY>-1-Fof2g9tFK`6u zcm>_fukGA{ms1 z+9NBA@3uen-0RG%;QP@XD`TVracWg(u1V-TXEt(Mm^iW5H0s^&3nS;2=!&)cNlp!4 zT5vQUcU1&NJYWx~AWShdbPeS+0F9>Y74QqC0gZ0O#XB2J6dnBFzXU5VQXLEr6Yg-j zr?GAk3&)xTaFNjBTBP8UF%nWO%gjJ@47})*(LB&%IItdTnU9 zk4c}y;e&aO4{C}9g?TbMf$#JG+HZ19&F<5T%U6^3Sw?}G4DQB54Hj2u|7`T8C-byh zdr6^iEWb$zXFVdQsu!P7V?Fp9g+cqV1I3NyD8iYYtbJV9yf1W#U|Chw`eezBcAbsd z2e(GdEz&N}O}~EA<)ic`jk)V|8o86>M$l4ijH?+Q8Cjnx;@24RY5Oabch1PoL%qch!bFi{b~HCQvaK)GF7%>1@2C zH5Y><=OB1&54hNCZMEvKdP7r`D0aJ@yKc{~zSO!ix!q51%p0B>({yZAdv*7_g3r!a zoJuOAw`(-B{kx2eKZ|WL7~QB^ix5cJLci#Hy&+@aOO8c`MAXlGKY<9bTeddr-3HP@HvjcE03Fi3Q1VI%aBwa=6}}_akz7cUKq5s*yrKn+Tt9i7AhR zg9Al(f@e5}1&KbJX1HMQAHn`b4~!5nDg}_l!=OePDsw1(0Ky`(#52408rU~GnjC|xT73_u7hk0MAGemM$Y-ihxN2I&=!{= zt&+0ZKvB@|2t^thhzCiY089hBeGgV3gu&-+Y}gFb&u8OwRmS49JA1a|#|}>fSvG9M zU<*)HV?zc{K=!f=6tGa)$VD3T>;WCm%aF@M`!zrt#+TVkRZ z00eTq6excaGhL_geu zu7Mh7NIMyvun{=*XXHcVfna50T!ZXLjD$vj*Ew<$n%^l+1C)CxQz3pUL{f>b$iw>b zni>lT9q0s>#iDN7+R)Lm@}TX-EW{8wyy$+2E_j6#E&F>0Nj_avCQ% zi6s$d+;7k{kp+G#K>(NcAJz%h);10(gub#X3`vMzGL}^s!bSVX&c*O6HDuMHIFV6##?esyLabl*h$}GJ7S++>|O;JQetOz?7docDVct zYI@Y54AQhvP{=?1m6TKfy8iIA6UcQ(LAnMOU&U{SBfEUqzN6kJ{ULJD8M|P10H8^X zBwlGtclWhNj~>Op0hd?-B{F`)gx@Dt^`0BYZ%0F?u)9d1iTWRF+VW3u#nM;3;K>Os zB}^2FL>Kj_$d@!s+`;P2>; z{dQr7ZTuXljDx>TJl(W&XE5lq1iUOtdBlZHnrP8z-NU!zHOe2K+KJey(+2 zRLY+AW*r3P7G}*@vuK)!c;#kRNU8+CcHCPW(8*Lx@8V}E3+dbj2VZY0F^PSD_#c&n zl5H`VwHwO=fOahzjB>P#d_K7x8W(I~d~oex;J-EJU)(^mS&n2>#tlX(zI=6$3wTv< z-mNG^tZiUKmO>3TRNO9S7q9G0My5bvtQy+_a26`jIa3!*_F9Gg~Fc;dtO!E`X#47xechad(-_KFYDfPI%&>yn{6`a#N^>=vw72smI@{SQ8Vi?J@Zt0X9_C9>(P$C#@m>(M z`BEerZf^Kt-Ovk>*b2B9Hp>A^W{RZA*k+$gwJ$o&f;G?QZu38kP2UQjj4)d;f9L|X zA-*2~l5ORb?ad@-8d~x^*l87^vP8udj^|rvSc3+Co9l!$5zD9q;Jgz!Hy?h20K64J zCTHOANa31)TRnhs;80>SV0sIXa8&C$Wxv!caS~779qWu(b)22Bl9{7`e7m7%`nNB$ z-6kJi6WW>Xab@A0;~L4Tko(c|TYEcF!lJ;sdh?pk+&t>Niy~dt3V%;6FO*1DlJ#m? z+s>!H+T4iit$R|~k(Ew6+}HMSOHwB9e<~r(r6$4Fld2lD2oNu$^5lQb2)II}Yj3YA z>RU+eOdydV<3Da$E_mDUj1Wx8pk&H_foxxvdPYF@*@_G-;+`QQtUztY8(UaZ#12(6 zRTH>uh-ich1c%_8gG;NxMZd&t4nC0hp!mcd6kh)=>;|Hli8Mga9zo5FVK|q;&Om-g z_9=vOQn z8Qa6OV-I{d!MV>3U2w4UzLdel*N>K(eN4&$qUr{M$4YBm$m_fP!+fhnjs-5n5Q%{a zm(3dK;boJqe-1TG+DH3SGy{}?W#{`4>WR~2jZWID%;Qc}EB9M-T`q)KLO1CI^n#7> zTX|u1#bXQ<+!*XxD4pQyGsFG1OQ~rM>UH98(3&51+qh^?8~4!iosq^bU%NgKd=c6a z`TnLvozbbM3UU07X2#+^KGz**=<7GoP(TP7MAjzQyIUUK(4gUr37!3-3Z9h|{3+sA%)^9T8B$JPFr1 zBH?f~0nwmMA+|u;+S`T^$ov!$a+K|Rgh}ZMRlsH^ZdCkp_fWpv^ z*@;*_^xm=nKf!fi=-Wa!EN`-Yq9DD3N)@5~PjID6j;YA^;ks)Do?!xMG}b!=@q@@RC^QyQ z5mplW~a#F_90f@HYC=_CJJK9 z@bnB_?9|V7_2PcW*={%`*i&5On(sKAYdmD{9wg{}6A)}1m}njiMK5OU6D-Z6H3L1v z&AFMIC)zJWn&n7`h1!hB>y}m5&-RRs=UKr_wLL_ znTo3I(kj_2Pz=rvomL5q2xGI5C#-;q7a@0%THQD5O-%-jHg|vr6NSW#+6-VnVM@My zDBE##uU(*h`6B~Oyz(Fps3mYYazb^d2$cNZx6MXxLU9M`Ch4?A1D)qwv}muHnOVR` z31rpcfAilOhiVwx@!QA8EO1Rf!$tV3$pAyM*Q`3JS01R-rfJu7ZVhXRlY#>GOH?*s zj(?@gCAICX4fK7HV_fCHyoP;~kS5E!?yp~=0;3;FssI`!@ou(Wobg44V4q<0(MSQ^ z1x@{ht!eKAL8by?lXm=x;&e73vs_ei6%QrwVF0#~-Wpau5;1_LIdJMBT6;>~!RjDS z6Y(%8GYWpd-AFpdziJ+e3cKX%>#N<3jUk592509+_%tX2ZEDJZ=JVV6k8Uffy`1Ab z=O_EnJ*BmRXc$#GaH> z?G$|vb82qMChN_naG*l86e_Jfxnq4Vii?BfF58ZywiRtA8Xg4vT)}AxBv$v0f+ftz zgdmXE!%5dC`4gg*@%Zy_KLV}|{o#z;8_xve;FL`#HoqCY1dI;{_IxuNP@3`(`~fQWIW>})iq2&o$W?G` zWCMiz1xzCsD&wgXN>miUvpV3Gz&%^`{NU<(%!dP3O|!G{8Xn{Dr%*ohFLpQ=qpQ(B zpV%L??c(1|ADzB+3#UKT+%2(k^EcmeQx(r!0{W>!16K#~*1p?PU@}eno%XLEV;av? zvP()hKo3y>>5b3UP|T8aYkWjw;^gJamj@6K!$h&(aNEfNu4lm1@gY$hDHFU{QQ&`> zMiG=^pT4Q;vn>RF>wvgmn~*pJVjUYXownOJ6R<)+WAV@#gwuy6hP3wdT!%ITO{7{v z5l)?Z@w^z|w8>2yxo1xyo0<>(9na}5_;X6q*YN)h&>;8_4p)Y9MW_`P%Nvh+HBrslY|Km7SO8K`bW@Sq42Fl=g&e zLF~R#Sok(k97KVus0fRSn!>NBH23qraV`Kx;UEw&qDASr25f7jHHHKy52YDUp{e0q z{{=+r=*;&Oq_7tpM}+L+&m%<~vXzk2op|ju76DN{Y*?wybs#{8gh-glii{##2FCfd!SqL2Mv5uL5`uMe+}{Q!fV99S#JsF^#jkK&4**yi#25vj z>111E+II3Y0|Xf&zvd(B30_T{D#%;=j!`HeP>WE!Y?XSx!!`I+$vEg+NvB~U?D#fx zkBlOSTv1N=Lh~>WwhZ9N)C*m_XLpr6^|NMCunUkX$-*sn*q%apgV1kpuyLSc3brXn z+(7I1$aR7=lbra|bn#-=9s`<#)ffc9lQ2uY;PmtO=Xgq1Dj>3;v)6nOT$dVakV2R; zLTYlbTIsgLhm-y#uDQ!3S|;c933MAM66}PUl0d6vV=x z*w1{h=yik02SXu%6m{g}Rz#U38sx5E%f4B!M{`%o&M zj%a@K%eAM;$>83ZPm=?SLY}OY4PidTStKiY+vGvqlHdaAdl8yZWgU7C68(;bB}E*! z46yP$`_nM7T3kP&e7}sUh;5?YWszG~!;U>SwtU7Me88u9MWbj*7Q4m$it%6PM-O#K z6`#9uE$ZQjb4+Q?&&NePW6Xi?4oE-nTW4~&V6d`!PGa$0J=sJ1zlKK|MzE=|Iu&YY z2eL*4gXhG8)3t;?f2a=gA|WTGDiR|zKlE+E+P4Tk@CGliLz@Yjj+t5c`JN!o%F_{6 z7;Aw`3l7RV`0@u0tPHAf`8kA%?w~P4>JXiv;9m?|8-;X0HvPP8BqRw~)=f~%_wnC% zf`e_Us`JWGd;%JcOKGC>lc&#y)2S!<9u`y(zY+*B{U+1^BDT*@ZJ|Jr=!$TCktLzr}=0dq)RuOvZxD ze9#rz`3VL_)i22`bMPP+fRbEvOGpFmOYPo-rYS6|X16ro_vrpsuFV>9a(SyO&$7O_ zz2EZE9;wb&%iVF2j$!NgdwlDY&@e!-0RfbH#2H|Jl(GHf2_HsfDPy40>!E7>f#FR} zhkrh>2+qb2z`;Y~30)@!AF&lnwm}69$Pn*+wNTO6%|2v#BT)*ehH<}wVj`bE_d+4k zV33R-f#z>7L~Cv>+fy4bK?)T-;p}iT5SW7#gyn7Y;v=TlCes!zU0R3(y(nJ_W9~uF zra8Fi<|B~8#X7?vf^S5!RURM4w61I5cx+~P^rv9IyKxbjk(!?03|LNcq_A4_aGj`& z(%Jn`Q)|GV=c1HnsKQ|cZ=hW8xqFx9;!%V?Jy(c2!;=2s)FYV+yqtK!pMl_D)gK4g zfadd+tNY~-6D9@?!3J=bolt=g%|lOF-zH@`zfG7h28aP9o3;yGG=bBAYufPB zeh)sHBzzxvZk&)XpvBL%0zI;5u zD&~ut>)3o?`PAZ(0T^`Z$^2#KwzXK#mk!O*K_e)AE5mZ9Mxut9*@EJLCbw)(#ofCv zR;}60=WEXMG2)M>(@9PFxU$7`NQi4(eqFLU;`rPhKRM|yygUQ@VlnCAT2sVR6m%pt zI}gsm%5A}K4`h96J|YTZ2E--1aEg$5srkbAMyym*c$LV#0ks|Ea3v5L=sw;8H`@*1 zfA(qK;~gvqz%=I&>W!~(9{u9k(Tb_Po^<$N-LlVML3p9C z&Nv)L31Ah1oqy~*b?OwxRKy2#Mx>i=MjP$9+|dh72Dl^IvXb}xQaiP>d!^7^jb)-p ziK)u=QmisJH-C`nFrTaQZa{$2o;{axgEN7ea5&jmXvSO14#W#GacrA7YhyRZFS)6^ zkh%0I&ouoBgEFgq0}p4sG&AcdA5w^vH?e(-wzI^f^kH!DO_7B!>m ze{$+B?l*ik$AI&zvsbNFQXx3W^KdC;K0{j%Pbx zDQey~s`ciDONT;WL*t0d_PSFmANhN}3Tqxx?LO_yH#}{I-;S&AOY6dqE$`VIV&pEh z#K%jqDL&{x#IsA1m$QPEcgI$4tvF+fi&?uk{)M6w#? zDkYwf%nqk$2Ns1ig7+HFHds@T-HbUK7O7irzhC-fj^v5$_tie7C{G)&>8wBLsy;9G ztE1}era!-3T#l{a-j(1sR^_sfZ~xQpr?{Rja^BllH`{r;)yg?t4%;0S`S`?g;;r3} zGbhz^$ZuG}oa=j*i_OZw^O9l2aX*(w)|c&X1_$6^#x|G1xmPO;^f z&VRYQ==HZ}feacNgXo@xUk9asA#PNz{9xTh|{(s0=M)^8RSy^G7`6aYrOB@es?qXzsq zs%E*20Bgdj^r5h@wa(&EyDJ9AlhN#4vx@{8md?pPnUj05!YQ2$8{{(rddx97;%_}r zYRGTa6+SMIZjiU}ow4DP#w!YQoEh(BT(4&AEoB0r+1Ir=CsSfVp(bf}<4Aa%`o?8D zo5!}t#!AZdrCj@+qOn-s_d*!onW*Qi>FM6CoA7 zYAtJ>I`3;eht<6K+gaEwd9gGrul$H~jFR0Q*Qs7BcxEG5InWFG8yk?R62?*&aFT9m z^!y|e$8CHZgCK56|6s-O6gl{^G6^OFO4Qpq-Xn_1)TFzC1v$~zCBe=skYRMRa_pYN-Ac7ZX4Go-ifKO_w zpr#}$wH-qX79dV0RhM4TI@#2W9pGarL|Wrp6~pBI`6A0Ize=W@uEwz#6qV&QvpeOg(S;-iJDDmzn}|4DIespS|!T zAj`lN zkHP5tq(Au%F75mGw=H^}sv~C*kj?2;wixi#g1R~cFpqw)c9+z+ZSDB*`0=ID^*aFP z_}s6p`+eci{sZfMEgWT-L_{u}DzsPP%{_LVC8#?+{*24Zb2kJW9+oA(ljQH=-Wv%S zHQKzblcLkF03pC292#DU40sycS3FJ~!9S*YJgZ;bMw4t==%gUJSO>ox`7!{FLCJpk z-2kGce}GFs2X*z)qZJZOr{}{?^s@daRA9)gn-5Do#zG%4oIvwMBL|RsiSaq@K6{sc z!C|w@Zo5}hOe)Rvg*)A?>=+HP7wdOI=?N*eBBBw%%Td@SxLnO|885tYa`q4zf;0>A zk0O_CHgaK6nACO*QyqeJ5dw4=&qKr{$3wlLI!dSX_qe^L@#e%>ZRTe5Hrf$kvY0kN z+Pd?fFV2LZZy|+F06XhIV@Y#yNc({DW1!wDb^xVT0vx4KU#WL&asP9zuzL39MRseF z8Ezb9Oh0eg9z8c+{rJM!Tj#d+Gc%%Pmoj~fdm~Y%s<~F6j zF@1lOZzVTNM#;RO%C(oX#7afJZv1t@ThkMj%#kA&gUv4lpDS{* zC&h}TeyUt{Iiuw|GE?4z$fIhCjDg@`pTZYHGo(@Wf_#GA!VEHWM523u&&>!N0 zzIYA3J*f7E36h`IeZzz5&@VbJ{A)=Mci1XwLVFiN&a6hCYCV##LJXvx14w$|pv3|qNJ<+}3hb$PxBK$H{?$qZ&RtZ>U;?sOf8_(K3lAITOr_H8}3)!y7IZ{_#mh~8zF z7#C5$$QWu~%)5`-(>hv{IYBYN=f8#d*QVI72bT5ahQue~WJ&%F8;)T1EyQtlxpO2= zw%(8+F#yoDeOSarr3CK>pKqB3i0U0^+2VYOCe=^4P5Lq?F94%a!pZlmQ)co5G}!yW zP%|J1l?DlO1SGzei*lhEo8`vXWUv6}i5i;Tv?V=jM@!p*%?b0;GRm zOHruru>wnT0IQQK`la)|i8VBE)uAt?lX1S~>Uwggh23ne$@1KHE~%~V*6@$^o2|~7 zGXCO^F9iM0)Sl~mX0Nm8#89sZDv14uj9EA)?1GyIxktSRe+>U&W7(bwNItKBrowR>;rqn6(Eo zQiMM1TQ352jpHA7v6Xy$IlRMq8-#?+aPw39g3s96+gl7cO#mXWrY8Adui7|Qy>h+>m7B@ z7k+O;h5j}_{QQOI*puj)2_zmEj`ZYYXfDK*3jAB{$NFCM~B`r z!kRnIU^K`^3WdNb()rwd#Zvlv^l=Ef_{79~fj?}JxceqSRx~H}hxwN)yh+Q7EDA3= z?_pl@Q7~!NxwCOi_1Vi!U(1O0+Y~P~TG8VE^J(J+7mb)}CyGi=s5Y)E>3$}@s<9?x z&T*L)T4!Rtwk^|8JR-bUZbHlXKXL(3d~0y(D93nAOImL$k|=&M|7zfZpGwvh9*X-24g9gzdCO{2p9Xfo# z;NTM|-S~ha1SMtwoC+r)J3E!zViD{x18WT0J?VRnxO$P7L z2&NG903|A>VWJ)o2EGpzcAuKsdI5o}7~g=oF#8o1?cN;WN%gY;NJoJ%ix%ZmPk?)f zlAV#!Xl7yIpJHocvk50NeRe9-PJY=FHT3DzC;EvJpU%6J@(%YBti!7r%UymRq{a^} z9u=IYc;-j(oH`2Xuq-LG5h}5X-#cI#gn#Y$h@AsmB8vO=kzSng_i$U%6gZ-)8Sx1T z6o-I|^$8S*MD2zLJ9?vChtfDtW@2D2)ks+om>vSwi(etHrp6y9N)Y`8Z;Dor>LULZ zk&Cfjng-Y@VS%wTr%$h<{_KT-hrJDV@9dtURdFR-B4$T+Mf0#-Dts2FW3U@{JQh7o zo5qv_G7o(Atm;u;)m>YAEz5T}4IZK32stUF?hu=VWce)fi!-xStmc*ItK zL$!JRWd>j*^Mo^U`~J5r`*Fh+oSYCw@Pd@0K|@ew;Hk`7Fw*l7_%itCR&X8bv1Dip5{HvF)% zwt8r0<7!szTK#ce-MafzeRwCX_kG~rBr#Jx_gzTo@DVjsugLNF#(ZzP=!*@`0H;E$ z`Q7Y|xTB|C5$xr&6m%6mZQ_PlBl_;!%bRXxrk?8P$Zo3_OPM(4g0m$Td? zuP3r!+$ihcrMa&w$uUAu!Iam{aY#zw9NQ)CVQ(+RGXmeiGW#qssY_b5ef;*$7v6Qg zyGE4atax(PtXnv8GfG9->-~Fv`>-(PZ4s(7WLGMf3i0ryomREqtu^bC>NxkLZPScw zHYa)BD6B6I>&^q^z~nv@M>h@;ql4XEUG9~q#Xt2^EX#U-s&o6T!k&$J-*$3_dp7US zXJNh#Z&X6{RJhxuY8ur53=B;A*{EqWxD?a_PxtLpO$fTL%H0;+t`wr5y5mO1&UP`bX@Wi6 z0@3&lY3M4{Buc%V?DJ!*LbI~6L}~!Iy9260-P?6cu7z#EsJEAw;$>a!!H)L!$S&0` zkBF8{8?9G6IHYh#PSZZdrxo_*T`92HyE{QapZl}Wq1^mIE7bbYgo zm%Y9pd6Ao0*+H{PP)qCK%GbIHoS4L3IkeB<9mF=TVb?0YwTxT%=He~P!19u8nv{T= zqUs>k0te5v)h-yeLkuAfbv={VLjz}jGO#}KBp=v3R#WLYAtvd!^PZBm$is8KJ34>- zI8}Ui`cbpra(eX&QEWf)($N(MmReNEaK!~r`(Cidov+HYKh;bsA1wPEx3a~`R0t=Q zYMO6qxsDuPH3-j&ClSKIIFxX74uk-ZmX||Vi(kv~Qzw+dJ!6L*?+t@0TtW}1slwH;V#(u)B6T`ej)9|An|0c4tksV5BO zNoaUD%iAyQXahz^GAC~!f*RNAQTQ4`aYitq_K-zRL*&sd!i z=2Jg|b&O55&2cf`k-a#%@QgW}CZI34mv-Zlq1`kK$$q678$)itZQ|Csn}5gWrE;cz zgoa;Dx_4aqPTh$YR+>Zqh9#rSg|K*f8j?#Jr9yz-QelS+Egl03qCxhXAH&t{~oRE~aSgMy>s!sEFWisxg+z6^Fq|goWWd&4S_}wL4}t?hBBaRU5vG z^{(z)kGgRuW{ffwJXDki?8?Wtyl6oZ5Bm%_|54XHwDSw8$%~&EF5pqtcCxP!Ai>AH zyXu`AmJaXfRb9AVog24jEAT!h?}qIRu!pZTFI%Jaf_9o@wy<{wn%J6{tfB=3&Dts% znH3;`NLr2xG3C#(Kfiwy6@=>gGuBu7Xv;N{0?K--OwN(GpKHiK)rT*hvp|OmHb1-u zyDvG@+1S`#V-j|80~B>1eG_Uhr+g8c}(Y4SUk)Pov0I;f}(aIXZnG=KT>o2Yj| z?h6^c34-T9$MU+E2|gb2kt7WOju&+<7KzSDFm9a3QT2R-s@Gce`6~0nnKn7~)dhHb z5J`V2CKY{IxhXp%6HwhyIo3f$l%n3*X$0d4gqmd zAT=g1E1~{DI2fdGSHJ>MiGuTU_JWZDYmnVIFd5p9tsDTP<)g#GlJ7*#VvKWw1o0@Y zeAB2l#VV&bq5riuy>yA07)^>6f&ia!Yv&k0CIf}0+`*xkOG!)}E>PqbqsX$oAPw9} zWQEQZyK>X=nP6CmHi3rFGqmvcBrYHDZ3~4AdX(Tu0AmH%8IM!@@?r#VkWAvvF(sUd^ z(6ijYHJ71DPrD^3h`u26Pp>UySyyGKuT!mG*RpQw@jx$o`=6oKpqndaibdG_?GAkE z&S7D~c0tHBiCz8Y&MG0D<16_33UzZnMSl1A(1Jg4@817hUqi^>x{T`C)S%gYNMX3B+X3-mu~=d4I;jGvrE9>y}u_sv9>kfZ_#nD9$y>{d23RMVqio0s5DZ{!M9Us4o7*9Pt zJ*`h15i6(mikD)_RxZD8db7Iw{O{NDoV>9?>fx;xl?B7qbF`*yub%u}I?0Ld7{UoBDRr5OJ(^?LxNMvuPGA zj*9JMu%pO+`ey(QhziUY*qfEW?=#iSUbGm~rLMf2UpVZ_+AO*;N z%`WLo=U?%~mUIBFGF}(-CVOURC79?BKX$uVc3D$)3z}rO~rVa7X6vNp< zB|Q{Roj6?AgR-E56sA*j=6WwB_H0m{s&x2{9M#>e8^1?M+CQ32%Bjj;?C`7?k%o2( zY)*&$+lN#(^go*Xy`I<{9NQwEZVb4*1hETI!H}%<@VTb9;1Or;Ldr5If0hG{BO~A# z#biFknYc4Ii$J)uBx^%D{P}>ln>&Vai+#aHXayF!IWY#c3}s#cWW;!YEL@x?2px(GS<-*~-rm2T^HMhFF>Ygi&AUHpqk=^r?)A&qs+z52E_hK32eqO}?D=?f zIbaH}-nfydhk%LZ!AAR13RNO{0F29GgdrT@9lZ(O8O6ydl#_iKBZi<>a$v#U289V7 z@v9BJm5*Vh#)03>rGP>hr|j*OhdQT|ibzd*VA=}j?-z?rp;%(& zAW;-3jk@~@P%-D<1Nn`P-O=bc^|jt4%Kg1{W@>yC6zf%D)jrF5f@h+ht>pT8{EFvBI>XCM7xZ$K{%kW%iHNPY^*sy$tOmo4)g*2^{@O3O$7?ziz z2v2l)1o1LO?9q%^1hV@&G=YE_#VfGhxo8)ZPf*oJ$RMhW67FVFjZ8n=-_UWE8|44x znXax7tL)=DU{vv8-Q)TmWwLM9|FgIc4<3AsJ5#!LilWK@#4)-3{COJUvm$)J`@qmJ zBV9u02(q{ClQo*oR-&zev%zp#6uteEWA{d?5V8Ce)zmD&fKW%%@iGSKQTPRJgNZ`N zRkS0B2|{-oxJcbBj$4Sk#9I##o4smv>w5Mp zyXMUY5OQi8m;Qob?|ar1euV8zR3v-@fG(n|&mq5xZXERY0V_)3o&9~NClHzpj2kCw z^J4ZH{}t9Fygo@(nH2dy z_y+AObwD)cf-=h47iZyp7k5(~jOR?weHa6dAd#@+4B-qQ=0foAknDO1r*b^Lh5cOP z2#2un&V=YeR0fj`kZtQNyY8iVSX}&1A!^59mmp@Tv;q>xfouas3a`Y4yDDCzwH}Vo! z>C+IMpu-OH6Y2tZOGKuL4^7u*6-wM~f*bcW-}I@LGSp1?$$`8K-$kKUx7{(G>oQR-CkwJ^mvA4=pd81Foy))m6Up=StdR zTw#CMp`>=QLAyp;0Bk=Om!0|F2JWM;ap-At13*E$wCrNu10hisOiuJyd>FM~%T~+x zcTVBfn|ErY6FoTRlfb8?YYOM`(lQVF#$xj!a$DlXlZJk)0)P@|KO3y%(Ys!o+7Yoi z&J8h`k(NlDM&#S7En8lykDDJoN<;pTi=m~wdj5dQr<=>s<$7%k@9B~4@M93me(7^w zUdiGcb{*d8cI@t}KK^zR{_{pI$mg4MG5Gl7vK8s+25B`r;#_(~7c(#0b|m8X+sCdU zF=2dX5eVGc-hLT%1h8wusd!~B@Vep12*wL$CLAAFZ0q~SslM1MckkS}guW6wU%Cj+ zCO?$04gLj*RI)3U28jk+`qS_ofJLEPBn8_?*|`)WJ~)Oo zTJgrk=^vO2UmsXi3xEN4=0zxe28FehnD-ytC~!n= zz<(YoyH0%=eD&mRZp6IWp$9QhT~3?SlW^Mw;)b9&3Rne;L`$V}QIi!LP5fB2cW$vY ziDQF;c!9UoCRoe`zpz$Z+z(AtL*oP{5Rwybi_GxQkl3U%cF$lbs?qi6+fdsSrV9ai zFDgvb`%P(ix*{14*_G4>i8u4t!}o!dFsSZ*H%} z#BF%(j=)(9znnV^WT%j_2I&AVW#ym8k3NrWSgrl2Fu_@^W###CgJ6IT36z zM}1#>J=0;ikE^2D6*y(Gl$xO4tQS@x-3Mv~)$KsP&%+8{|4rhdu%K4P8BdHhu{Au5?V-IJOZk! zEgf*GQXNKOnuLxDbDHKw?X8A4PxQ_CF3J0%avl2@#Jv2KggJiAPs2lerLt=U;~OFl?Dz zNJ`WY-BtC{6B%o`Q79Xb^6?l52S}3i0~#p|tQ4^50~yzyG|~#!7KSr=VVk4>u29Nc zufApKpb4$M$L>~W$@2K~)2-7pS}awnUPu{T^G%;|skb{sZ_lQF*= z7s}rilcRet59{Nd0xXsUp)@5PcS9)!#wril1mLDxuPn9sj2qVsYlO{Nps#uM{mC>Y z&cCAY;$CcaqS8<^QB4Td06VZ$_$iJj9tMjIX+S&R8j;N~?$89;mDoqn;fX?fyWH{X zDhfay6#pmThxjH4bOKx-p;T{)2oG*SIY}B3)QoO${hb6;z(5QG%z-k{bpe>>TCzmR z($caxeczG0Q;l|nsGrtJzq?r%#~AwR9|dFH&5v@7DyTklz~y3hFrAn*a0c2QM5w$s zc&s0c{*8uy1Ftu?&&W0=%KUdN{>FRSF_l1csQ18c zLaSP?ei3<>e{6Amo*3GWEpCcVdup%+g=Eim6MqS_C0`3$|THwZ5%6u-V8T(QBt(cHUzp z?NLX^rL0gINQD9l9amxFyM_kGRDN{j&_0o!0Kr&^lG4c)aQmV! zg2&x6rKS%pBMR&2j}s6ZgdkR>@(0Qce<1w6Y5f49dXub3y8+^|BOgT`WeDuDE4+mn z1mDY*H!~4%OvOE_TLx<7FL+}|P#Qxi8@?x2e#73su#JX*l}ISAosNBlD%o*q!m2-~ z9TO3^;{neWVxJ_gdHU40LaQh1JOv-&{nRgl)(QVP}($Xt+y3a1TNDGdcb z+c57vH;Io!Lxlki!+4gBiYE*89gn!tG`j=;p#?axm;rynbpW$KEtm+i2Fm=QxY!)@ zC`@?Qm{?{UT4oP`m{;nwmkelo?LvfV!!o8%p}+V*Er=iPM1lMi?EoVkj5vk^~ub-SN_(Rl2CD)_LURwA0p4GpGtjKK#~&jMgg(0O98ayc(UxmaVW)8CeOCt1e7 zYGy6B;3t*cs(^KHd_$+h$9+V2+L5jA0R9)YPjndQ$_rl1PK>>lC~p$0*z^^n2X%~G z#BfN$!vGmB6G=y)gG#{-3s!Uizz!gVx20i+VpJ%Uv`hOm*ShbCkl)<6P522=MgcklpjFf|G}XxnZ)T}WcDrp%11 zOfRqaSy%mkB#Xsdb9-5FFr2KlubHlq7%MO;Je{|M_w;>cQH|-3yrSY>ba8iT{YYg! zZ*YxQna$~~AGW1rPYQ;jAAHA`^fe))mUQ4Cm{J+-+E@RwRR*7YKj);j6!VNT^!LAi z=51)V_L;p-hT~z`58ZsmgB-KezRrF@f@kR)Q^$$jb{!k1O)iBAPwRIbnvua)lvj1^ zi1^5XczKT3lfdGgdkXZ23TTt|2CiqacqDD>maptrm ztbf0+@6`7lP)ux^v1fPeYbmWE$4%#ET~ytu2pH?1pUPz!Gsgq<-Wed9`cOX0HYFFm ze0%JAh1j9Iw~6S?LBrg>fB%qaeo;xuGkk35P2Rk_DbR8~ec28M;fEIY{QZ@&vf>lw z`uHW4Szb!~OIBiXk9o|ct&5qrENLy`Hs|4y5je)_Zz>h8+WAINS19%_{-3%G?RD$U ziW{v^HS(%jhmtf2H&(jdI4*2dfaXJ+H*So+qM#!QbLEy>s}LlC79<`;!l{wjY-~pm z*UjyC6N>~XbcdQAYd7F9fLe?kEFdSKT`gAXmBG%%F)qBAT^h0R1_(dN8J~cm69?*L zbQANSCIN<{QTOGV`xGnA6%leL`^r94&;V{OW*e`B(AHpJU5gT0CWedds;Z-c(~^EO zXKS;b5S~{3-X2W$%YG<+U!47#hLCNrU=|bpw{IVieHxWcH6MhTDC}rNBszArlyTsZ zgNVJW&i-my0@K<14k;a1GQs|TOI-6?+S}!Es~#&4 zorRm!3`aU)KyEsQ4wq4J1>i6_Rk~y3zLEXevq@T2Hi)?bSW9pjn&kjlGuqS#4;&zH z5gr#f%r$?xL`D90h2LWSnEGMFbE7>-N|{7hLLuVR$nlM^A&d*kPT!n`ORWS@?uouM z^aPZ*j#>r_f?#Tjp8_TI>Y35AO6I91jnCJNZ5@NETopaDWyfkGk41g66!+;8et65T z^QGe9msRtgM6Qa%{ox&P^<#4AKLj(4nt}8(1)^G-sfMwdkKv3$$qhWI4rMmZL?XHw zC?vLEtQY+jKt3^<^9V{d-wP9vz>#1Jv#Uu^2v~t;VBwIxgYS=UtU~a0#^)x1mJL9g zPqFE^W2kv%(9l`HU1sLyKEA$}%Z|OMU#dChzi3G}Y!adB3bu-82q6+5X@;^m!euV+ zHe-%=G;J7HtL?dFkffjc`)vnP-liNc7suZAVcXDGvDAv=bfKx_2OohvVXbk$p!QEZ z7OxkLgk7!6)76@~QI94ZUDeazA7S-earz%zW>hnxR_XWsbPl#*+>8s|@U7zzgF>GX zmtS%A7t>oi-jN6&%2scC&Hfe9wdiV-@l|=c-G{v zY?I~f#eNXN1&x_)Z>H3nM^Q&{e@bq%zhLO1_sU#tug4AD zVdD2A*J#ZVhns* z!}I6Q_n00>Y%WT|Fh5UEPkU4ogRNBaV~5Mhd88ak;!Dq1);v8CeKx8M%EEwMj3et` zh)oN`r6EG;p&y!ygWmpZs&sh`djC#l0Ijd?a+gT+<%-nGN;^Y=2(Yu9>1khEBmA#5=_uhrHH%1&1tJQwCAiRqxLe7EFE#%7~!6 zLY(fek@}R<6&bbROb{Ja3RAmUJ;EIh zV2D)~AOJ}SEc z)91EiS)~;Q5Pz@l!;oTanV}zJ%-uKH?Di&d4Krh5CLlTq!$Z{YODH_`fhIE`N>K-y zQ{#a?PT{DjU5rG)41RIO2&cVwv!=B#$0wgQO!jBcmucs*nHZIy{k+9 zg7fFsfWkl78#7+!JGe(4-CVoc)L%cirX@usdSBOAdJGW5)Py~9azUPd z>pT8u`y8b=awgQwTT)2B_WTL>Aj=yM0((&2s%3?V;%lxqRxMO^E^<@3ecIU~`OmXSkGg zi0P~}7_>BdPkfy!2jrrOs#A2tYwp4j9j#kp-AalkY5$|OFMq^p`~E)?DN0Hx84}ST zLqZWx8H$AFq6{gOAxY-3NisxI6iNdPGGuJz8{w z=REuDz4qE`z1G@izZR$T^M&fi^$#YzQF2`5+OwAp$*s*=v(K@x(CziCg*)%Qbje@p zbONhYL(QZ#)EZ|L|F(oQM2UvAu*LNbqI zcKd}E%zNF*roD+DGPaSy#q^G&&=PaV^Nkz9+d;YEhk zhGd8X9J5WG3R@?z% zg>rTGdUTPW&5`{Ed3wn;ddc=xi9S9Pvs?YT#oR;Yr-ei$t)D!(zIxHVLwK^28M|=< zq6=Ij4KeETfnCTbzyJGqp$S{w8UKT&>mBaA>bL(TzZfuH?@40y=Gq099t{nrI~i8L zW%cuUvwC(^avQ`?Vh8BXUd+nrg+lm1;en=U!o*tVDVF*;r>{$Ps6XwU#gW&OIb4>x zY3-4yWqtfgCHv+AK>%P(;!bRXZm~*j-fL{ab?e;|#$2z|#7Vt7N#j%~hoFVhMd{QH zWujM`wUE!ou~e=XN(^y5Em_;X?6gV3LUrpACi&F!`o&AgnDPa$WkVm-81wvfIg&}A z;^%UvO;Bo;^)$pkm^atxBm^c`S_}t~U|!D{$i6NT^}Ku`zxaOG9_2eZMlaSPEiU1{ zhqY^PPul|@r**TBS>mzxFLd~QGBSt;7LrqhkA7}m9v|U){#UPm-I=o0BF&#>KlY5% zKlsE6M9RY08G&u$|J>zw#kk?Zh6hODD+b3cFgBEQ!4^@c$9WME``H!y^*O*crnjg> z<>^b!fnE481LsKm;|x9LYBybY_271M352jIsq!)A>Eh2Id<{GslfB@&yWIvE)190< zpO)0dT1Yt;zox5XSJnHz5ybH&?V)SoK5sV7jzKa;g-(JymwdD30k+F}D=iZ^rMa6d zUQtJm-6F|Jfeni$OjR z5y^*k!^@#P06P#*h2>*)t% zSy^9fHjE2P<=inTj?9{TzKfrYCHn+U#Nwk`dxjPdnEWT^ytUYhpahp&-LYaeP2fx% zPHXOE^zsc4qnCn3zYp0Hv0y{Yzu<_htiy}@!!tEq%pCbdI`37C zU*w?a%g)Ls&Cf~ItUKJjj$faBf?+`OnA_Ff7cIkw|AvQOdRdP$v0`tAaj2Nxt~72 z&%4ubP`{6(M|)=1Jy-fExdNsj1o9tN-|C!|>A`0VnbQA#!mLx{<>F%Z|0KCDn9=dk zS!v(`v1Szs@_t5Sr2~?iSgocaXl1 zOKiQ{w$z1JXPcaLChEsv_@lRev}FEqlL?_0hBW$&p$O{7f^jDXUDj!mQrt8?{ z7uVDnOI0JUTYFhzk4pCU8jOp~gmU1l$ZaiPhK}9XlzIspAJ|sAH|t}4D$4V$nis7s zW6c>7yD@!^WL^IK#a0+<$3ykj!aB?HOUl)b;9lq5zpbq!MtuJ*`Nhi?dXZxRK0beM zEWnMok5BTm!HGzwA0+P*nOzX-5pZT2AI)JJj-6#j^qk$7C1jV^k7o03{1wJ^*%d9Y z`1`cP#7_-#3>2fn?3E8WmO&#$Td(25a@ z;T<+7#kwQ4+W36#wNiRhNBACCr1B^^eB0ceOSSW(gVM1j>4O$Cvf;OG#c^>N&`Vbz z<#c_vsbb}KpBJ8vI`{=gk5Lo{-k+UuW=1wr^aa?t?(*^1OHN)F{Ku?DDY8UnaVxb+ zr;bir&gRDC#ZoaX)|{GeWkgf!l@T$hB-^b4@ml z*^l=`p=glo=7I^ACtz^IQ$o2?_T>vD&`Ox?kbxItsU68Qtr!}Xi zlGJ+sI3vD@q3PDlL&}k6!k?H}O=^hnUtDC(IAuL!F`V-qJWkQ!Te8hRj|MtOc|raX zZ|~J*X?Vz}$R-_(uaZA`D>3xm#gh99tdA8^ zT$%2Zrz*m%2Mh)4vpU$W3n=xj7jPhgqWurC!hI`C&7Dnr?CY z>~Ky$o9jO>u^x8n2&l>7IgR(c-_;>qFQyKwu|u(`5Bxn!@hYy7U~x3&D?RVXzYnZB zoB7=6TXQ-?iKInyjDE*MhDQxF>$LDL7t#htSYLDcf2$<&E$?@Io}4wlXJTX)AB|up zo!&;eRPZTnEY2vQ5DZ3S>)hyP&f)-ntIe9%_O(wctzB;>Jek8{VonkKh&=XGC#uG zl*rq>qjx_tH~1vqL~hP^eWWz?e{O0<$2Fc~j;S?=W|`Vvr6-<;fZOG%s$Q0`a0pn~ ztkq)JA(o+96{?%Yncl7LzSj7k*2gxmmo8+yo@?1nrB3c1ciem0r~We^8=|RR70hi8j zdR3^}cv!hB&YLeykw=(dik#W+ygLiQ{IdzIe9`G?Ja>^byT@2+N`b~T9}3GVDh287 zsh;k!(x313kKa({+U{#7ARH$BS(PfXj7>K@t6x*sC zO-hwU6Hrl}tXrq%h!w>T@kUdh0*Pwt{WogI7rA@F$zRjI_6oa%Wk>!Ml> z`yUwYL?`kCmeNjv_>rLWZIeA293l`WZylYYufiL`#N!&RIyjtCJ zlCA9TZ&lg(`3)=%Pu88lMBd+O?|Gvf8OC8(ur}`Ac>TH|CuimBvA7I0C`B41T@F** zn)89Z%q`p+W3_qB=DNxlrpIOXcXmpe8ROhDksgNURmt;Wf{F?Zw&QB)&+dgpoeb=C8^^KgM^WA0bsmMTg>yTr6Tn67p^6WZV~KSlXp9 zZvCzQ8BoJ9&88!hRjN56l-E5dlGi@1or+=0i-bR?jqRCm^g!QidUL5M(l_l7C*+gV zCmc=ZYEYCN8Ns#FGWA5CyyliS z-GCml{dBfr%7~4NC(p=^>1a;{W@$c5d(>i0%`{DQw(Amcm`3MglWU;(WxXtX8!*x! zO9T4($I4P3OGkFRJ~KLp;{nvUND`L)96V^T!NlPj_WUO>Peg%)9XFU?xmIlP-^G=? zue(!}z9zoV^+#TD(S-Dc7Y1>uMl=_$`F{HognVw?7~tb~HPL3axp>hP+G3sBKCuTa ziuOl-98@*Ymvdt>VZ+CxD&1;D0&zy|S*9tT*Xa5>IgLx5r{{6_qBGv#k*Ca6xq3_n z&dw&SHjBQ1JaWu@^g$76!v7-dNLZiYcyGpFiHhK!G??cAAD`E+=Ut^st9S6-DJkOw z_T!Zs$KuI9=U9{plE~{Dmpt|J_P^f(aP&0F^+$dg+_YN2YdfYPd-27IyP0y`lHn!X^FrM-JTD-3NeXX4{tEkK#Dy>s4eygawjJa#md zYY}ZaCD7xH4HbCvT;SlBEa5ck_n)Tt7rfHBWRo}fAmP7$UrHZ}EIJ`C@t`E%=J0WQ zdmSDBFE!IFzvHY-``rE$T~v7bP_zx_2A5(5cUMQc2d#^9fz`>Amfdy3x1U#Y=B*B# z+83W%Ql{!Nha?}@PA{9Db2Kri z&HO$+J8FZ#2optHe#d_IAj2a;t!OpuEa|0*j$4;5Z9!&P<&=CooG#z;+PZPECDJQT zS&eQyaP;8})0JmG*eNyrwDch{EitTxyqcPG+oeKiQn`(~6#*WJV+)I}ByF2v_9j+A zO+N-Q>v^AK-Q%6qdAg?lMR>kVN7kjrir&bFvgE1aUGpfu%d#2K3ALT>)>oPJ-L7zu zU}F4{`*a^V@cfWv-1!A2d>{KKIg3~q8sp)|S0O+kSJ`y zlEwm(0QZXKK|@MYFUo|QbB64{2U#*8cl2}E*WcSA$xr{Bkf+rsDfJlp>f&9*6lcFG zKa`MfrEiqe_@`_-+J`)Bu@`0^tG0xb9t>~ z#HnY7=TvZw@H`xm8vJF;^fx%=NoIsrLj}_@Wx(CN;_HV=DXeqtD9y-2~U)j zQWm>2zHm={XIOZ0_$s=?BcVAs!!%bU|ZpkWdlA!h1lL}KXU zq_H?vD2wkNC=0b^O?UJLbHmA)DJ6m*^4CC5y&{&3>@%;+Vu!ENcOxwptumF$hzTD_ z2ucR#j~aveQ9+w>jKUf&_A~*uiXS^9k6-^1Ccj?EHIg&=w5Lg~-O6U>uHJAAdqLo#LU%Qp&Sy7rwpQ`WcPdA9mzbW82 z{L7L#$ePh2o2eAHA!g-EzD=tqa|p2slq{_0uX0==GGIt>6(GP{`{c2>`jG?&DFUo1 zJ`q!?(z7x>#yv(9={OA5NYE%y0_yeq4_S;k+4JM>xA@n%IEOYNB875;+P>CcI@X_3p~ zWCczhs@Q=amrb+GwyIOt-*c?7IiG*%ZX$1cdOrNz<0ZTkeTNg{c{tMYU!gCW*U#cC9@ z^oC8To{}ES?VJ!n>1Myi@9Ox4zHh&i*#Q46Y-D-ezR;H|lj105EO;g!U96rBz8W?m zcM^H|p2{k>o|&05>w6 z-a8K97MJ)&4`vCHB?y`y8Q0Y6mt=$WuxxxDVXYxPC* zyn**PZadg`I`eYrpJX6aYLiwyy{9Jz%Rf$d(YOX4z+&*aR*rXG`0!YPm2oAJ*DJr2 zT-n(b>VXa(g^4hc0aW$+c0YdDFriw~#ccakI*o_TmFdU^IQXc=T>od z;LahK%-K8oox{v=B+#DFXn&6?K?QU#bAucs;q_PP)X-&!UgA}&Uu!G-X}`uW-QWWv zv&$%vlSLS*!jR>|RN`X5Br4jZj6V`ct8@Ni(Y<950RgFNVWK@2nC$_!g^v0}OlALkN>{d73<2 z&*7eqtiT)IVP?^8mZW%txIKR~R#8L2kW3WkeI}btKR5q2Jr9vq9gN-V$w`$SCgK>n zr(ttt^)9BQk```iDhBXQT9}7ETn%K1Lk58^Q`wN93FJ(%ZpXk)*f!u~6^1bn@|nHj z6Jt2Uv)9jM%1b|LH|7JHiiiMj6<%GgLDFZUTK;bBmmwrSi&Xhvkpfhy6nXPWox0xC zc5AFoVJSEyK2ah)?>##HdhC*zAI?csdG~c zTrXt+$w;3;Z@gB9|0^9&HgbJrjx(j}Ev7C1n?`HY^oX977CB;EB zC(7hLQ=gNlmRPVTNyF@)^Mm}_`Dp`tb|PN~!ZQ7{?-joIH9~ksFok?PWHOetuly5q zy~-xFZlxAh*Kf@l_H601n6wZbL4&N00X7}4jI%c@UN}w8F*!qKN!#LGl?~lUX#BAP z269>}*y;2fN{xiB^Cydj?rr`#L%YSwv}jk&FyHMV<79Qc`~9wd2;TZ&Ry&r*}Y#kKvRU zYk_iEbA0Ho=$&1`C+lu;!m;cktIAP{%1$IMwf(Kj6fO2gIBNz1L^FI7^uW^t^CvME z?k;H;ri*5rdVSTiNC%hoRBr}{unlIsNMv_Cdih@NXG3aN?^#|t)6W1b$D>3dQ3)~O zwQy;I2uR}k6&8A2%c2><6ciD&MY&gezMMAlU7E|hPh^3Ub;VQkS zJa9KJeY0AVWSqP-?NAuj)7{x_B3g>P|4^ZE+yEVYHaCZY&19!lAsVD;dXnyJ|QlrY)(p>$SZKjY$0wYJCUaun<-V;RH3OrB_!q$ zH5b`YQ*ZgX^!f6Y(I0Fk_}GLEVTQP`k&)&!swB5BOw#+#PTNb2YDh$)<9SR}%rJW{ zOhMEx#^TheQBvNN>T&z2Y~GX07XYpFMafKyt@+89SyE+V_f;(}m0Hv;6?lc>Ch7U8 zrwD)w^75R%cFn_P+T@OR?UGvSZi(Kw#VL)1lC^fdAoaTh0j}4QB_rmB#MUhwMINtLpR}T9y1Gr1+^h8b z&HKBc`fAGSisYeY8fk7d^Ps_=^IeNqElfbehSp7@wdEElC;Z}&<$jO7b0`hs<|L#| zZMJM?ZZt14jH^0`D68x?hxu6|^QwWqv36V6yg z*cvs71CT~)l=?`z7_>UaC@J2#er4d_{z=P`sbdzPKIV|Ai&%^e5r(3B6AhFlcK4@O zVyJTXe|ipFgQ=U{wpco{Pt+i5C>;Gs+5~SYoO_kdeGn=Pr?Qs;cFI1%XLl0?UoM8w ztNa#cq+eq>#rF;_pJI5$;KWeb&SOJ&DkNPh#>IBjuv0xmo+LsU-1M(pya}vHAb^8U z)>LZ4F#u|3&zGq@*?Zj}moOq1X&~VCNFW)4qn4}|(#|%MpdyNhNLFzjpm{zewhE|) z2%T>Zf-`RooBUt4+*Axn5J{WtSirX^4rq>pyq$Gd4SVjh;c!pE-ApFtWKl7TM0s`J z`_Cd}=a8Xrcp>o~_dg&rVO`*)%;Hr`?Dn{hBGaGpj0E|<1WlEbdZ`BClT~^z?_#ipd3@^GNcXkyReL zgj8hl<8*AY&7nDd!f@JUOr=6{FZwl#SnN#@TC6j2sg_Qa3c!fbII)cs0ZjAxZNm)> zn{6?evIfSo*$H4k7I<7bX0~)2(M>@#IJ;~%`UBv#?j+#p7C`*56c1h!Jq!}HPGm!* zp_1a!wi8n|NMx5t!xb5Gi>WnQr+jwak%R(-sged+&>)>S=bJ9iF;{mGcu+i=WUln! zjg9X!wao&UwZlc%;a#Gc7E%`r$%HxMhgX8qT#MheBg&>2p^G%<4mOk0f9;Rq&;DvN zN%#d~)^=md$?U`lWuWa`74E2~A4|uVjm*hz4nyZkSpZzbps|`e(|6L1zDzw%Z|!dO zeZ2((K}Wr|05NRXy;FtT6q+L{Xvt)93pr&f>>2@o8B#9012@^M+Dx4cfEmf=AZTij z!tYfH&=eC7qA4-JQNALaaU@7)pck)27@JRu2UFBaa=#Ak%g%bTOG17yKSOs(OH#O; z)L}IxpIdEU$@EPaZf)(4P1Nkx4n{A>+&F+O7EvwPpj({4{mHzP%O{8?Y6w0e0ddTg zBSVPWy&8$V(}s(ZPWIU70%uS2B>p1$V4Qp#zNceqt?H^ufQ-h~NC+Ti_=AZjhBwX_ zYjG$L{m|cAY9EbQO@WDHN{tx?|)_1dbO%vN5jRCi3 zwVGKC+B&==eY4hH&quXO!pnN?L(e&k+KR5HXHDG?!>8=cTuih9vQnV;C?zZ`+9NpJq*aj(?@KjoD4HW==9RN#WX{Q*ZQYF>Jamn(kBwBn+wxO9 zWPNZ4gI`~%+@VkBe>fd62Jx~Ius5`{Ps_$)aQh-WzgI7j#5Iv_mZH1o081Evh-vnv zrT`&HrypIiQNl#FKOmBTT6=YOXw=l}c0u<^RPplxUgipFC1r*ga{uE&1@V$D$D_+1 z$+DkxeMI2LY(#rucMW^co?I8Va~@fAcHawCIJ<5ls_5bH-Pn% zhpPmikSkW?%CUb8f~f2R$k`bub3$)>-1HJgE*2vuCz<_4P81rv+Nb@9e z8^S`q$m*7lvoJ6WZ4HL@`$^Fy8|^M$uMCp!x`*Tm68$9Y{C9=3Po*`J^Ip9|;ibbh6 z|0)w>ABU19V^W>dw3GoWDMrX*(hhz9gAYXv+luC)-;DT;5BsYmYumOHo!m~mf;S?W zAibQ%YZc=xQB6dgBsKLjG&^14zh2WCi6SyX5sRcuZTjrfa8$qVE+R(9yxf($sse;QAlN9-OOx0k4Wm_~bg*Yx@7->!_dPHRI;kpTUCL zN%sK6os&K1>}cyw1`dn*Mn;v1QE{sUAGk{20uM@aCL`L05lMJkq;6SS)#99ac4|%t zN#YVHPqPK1;D-ML#~JC}b|4EHzJT+yj;XQ#j zoH1`+-Na7uAXllcGsoEc@i2Q3Cj^w80Rj1H)$CS?v7D;vvWJ6~-2p=thI9tacD~!a zgp}d%#&hLFyR-X=D#ss;WdJr;rUkodicbLe1ql#&uJ2%%H>F4(y5kPE9oPOysFKPy zfgkqTLSC^4;OxxQ?EYpL+z?3!4*{}fel9Q;M7UcE##2nmo%4jetX zmobSZKgcBVNKG?&y+SA+HOyX00$yS4##5)7Wgcdfjk7SU(f4brR1iC?fF0!K6^!*8 z;#cVId*Z(t%O#FitW^V#Ig&VNHodg1kV#t$3tLPKuN4ZM;yyl@){x=O|Az{>1N^GL z!>FG*WPhr`V2$2ch%V#~OblQ>Z&bupdPt=e#P7Qc;@2kgWHiTE@%1n}1K~@|$9y=? zcQsu%IxngSfI)u_?9v55OPVurvSRuP)lZC6rSZ9%2^+?uPqd%$%x}01+FJ;jv8%vN z{UW(PNgoPCEdiD#CP9}r|fMNvqPFcLz{K#sUf(Mq5}K5X#TBvpw&eQri`E0LL^ z>KM)8?K{Z5p#1>;G_ngs(R7i3GR1dzwkuf^4SgeBie4HotGfok zFR~B;0mT>ezt8t5*_f{EQE*yxx7p%trDAxq$r{bAv=SWs-h>m~Z`)^BDd8*#H5=c@ z1#JRLP~ShE@EO2Jl!^S{{U7WcO(2DJ{oRBOiQ7PS*~DKUVA%m^6y}F1MEA~&?yz+m zecvQ7vMOl%u*){EAUrY^V%IlD=p7JWSfKN~Ox20nFDL#97PGB9czC$Qsr|~s z$)Dl_MXLkzz&EGb^9!eW0&xB~4~L#u-A-;OcoL|xf?Pw%R`wIKC}HtdfiXd4C;gi6O`*pfj!u4`ry4f!8z)ioK!Y&PNqs2Cxh;~HQ@KCe zKU68 zdH8q0?4Fk5dG z5dqio3LMb#-LJbv>}90|D!V;yYq9}Z!)uq}P7U_}LWGY~pN|dVM%thI_MkpQfY4O? z&bS%lw--)Dp!SFDNbPCPf#*m3Nq6ScNDdQ9lt%>MlTW&44JHxIRd_1N4T zd+L_)9y`C?@+l#V5yJ84i#ocx1-RLQ&uRQbaX9{j2q-7{aop1ar*gNJpu*Pk1M6O+ zFbB#?8RICU+ynQK+9O#W?!+(*;I(-;?#lxUM0DeHgso;quYCgln7v}S>AcJrw{^F! zC8EL^LkpJv(<&Ik<@nUZ58n|LfJ}l9$C^=88RtqBahTo=6cAix8SaEy zVjzcIDlb@UcXLXGuAf0%t$!`3&i(!U^R&bxxw$@%kVDe~;9s+JpTh4I!3PbCS{1f%ryM|-QFvNq@Saom>q5rlfw*x8Acwp_>A6)jwKF$}ZjEO_SyseeQjJK4*R@KvnEAa28wW_pMXLYv(kP zHJXWk7dA~bH07hc<;IiEye)b&LwYz11?%7+e(v2`u!`Pvs;_V4c{tU5x`i~XF6UXI z)ca;NPQ+G?{owTELy;E$rU`nJ*s z=7-7n6esvfiPGRua{9*bp7GsZDp`1sEhf|G9~fAu#<`9AS;PfxFvd!vGRtDn$?YNy zfQK%al;~+Ly0vQsjwW2Lm-J6(X|poGTC50qI@6O>IO)Aag8zAx!z z3y#1C?%w!T6!lg4$$BIe3kSRvGEBc$A5BlXpgW402T7tIXc{%1l=+bU7ZemUgPkW} zzuvaZiv+fEgLqZ{m`g`=9Bqt95OhbIiCF`Mq`LB-pSNv6m%0-_B{sH1b!PHN(n&4l z>9Ljpa7z@3g&r#(pC;Y&lgd=Y>D{GZk2Lw_IWzSdN0u3D2OOg)gLLB!c=q0JT|^Zn z{STY4o(cLgKx_ap$}J!R3IJ)tR`9Uok2Q{F@}l4C4;0AUHab?_(H0mGppj}2Fwy&7 zs&P2pF&}l$#@~Q=)73WYT4`*T3yeN7lAzfOm>CP4@oAcwY6=A8C@(77vf+4um?kM9U<*4{2wT^zH~mvjL@T(etcfNR*R-k1CDo(PlrRYQDDTTj@hk!MBaws+* zb_Nr@>@_IqtJZv!eNf$T6R$rG{Be^MfiMG+hHc&1XZG$>kr&IgY)Nw^!#KX))q;vo zLR_E4eBpkGc2`<#2D0HHovo(#+7E#5i_9sg6NyF{7(0S}k!U`;HUQnoUw%5GY{8W; ziY@-cf@MtpE>_FxO>)u|7Z=C71qPl7O-Tqk|GcFL{XT)>C~;k>QxTCcbbDVMXeL_J zHCQom5O2V8D8yi%9ZLfZ3Q-;6Fyhi|CVpWc48%qB8~qBqFtIDE>R92ee1I(M^~BV& zi^&zW#elTPm*`gf+t&MxRcBkUeBctNo3PR7yK17+Ghk5mUmyQQME=}2K4KaPYbBXa ze7I>#77)mD>&Fd^Bfb3|y0P zTSZg_JSz@vU|qIxpM;@qSuONu7b#j^0_uga*sSqbr(bstzuPKq{O9B06R<91n%}hE zw`>NR-sejDNR$sb3a+v>@n8}rLnq5>|GA1y4ZY{yb;OLds7|*y6)H7y5yM0l4#?-= z4Dz7#OR|OyvzB4fiQ&$g?#dDbN#9t=7dlv#TEIo(N=%RK=grl5#O(@A_g^<_DG0D7 zwjXEC4;Pm8b-8S1U*I;_3a%)>uK4#GMMQMLoACw=1I^@;j}IzDttr{k7Ex7*QtlbU zhx&(pk2I}_aP572WlQ@K?WWd-xDgf`&{PG0V+p4#Eqjd$5 z`z>n}%Luw6NQI~m8Q=5juDD{HplAW5-TwGu5TfY5?BmQk$=|h{v)%FwB;6^@zRlAM6tO^yc12hRKHx|n2JT>?oc=MU1 zpnwc*F>D$?)HOIWku{^_@$0Y$z6e>vXnzzdfDsIV%8m~d%xx`!)9rx<380bw(@Hok zNx_L5Lcou<trG-H*65ob-u%s&g|~0xEBY$V$eloxmihZm zLLLq}Gu)2m6PdQ2jUvq`)#>0y))0tvl;Sgfe`JUR_KJAGKDRa{Gb^hND4XkCh?@+28R$U|{!R{0eHii4jvnW3&pT=7Hba8=>2Ut8M? zq)X0Dj4GjKf#o7yEUjzXI|`pN9h+FFV(q9Yclr&=sl^gcd{&6B+!NSq%df$G02ib* zWg+oThw2AW4${)yXzO+HsSJWjh+Bbuj~s4Wk!IR(xISUR$DDZ(fYS%%yw+Ky8dO&s zw^esc9xb;^hL1uD+ls{(gg*CVzx)Bp4j^F)(D9RfFY=)ChUwPD9E}_NV$D?t+!6kuWuYl8!HdZ{5qZt z+sTKD7DQA7@s9NMD!_<^B-9}Ya}q1sRT&!0RW`Y$Y4E{l9(?d0vJ_7M#u8qWl#Rv3 z_N4&`NIOQg!tX()Zb0K+rdq|Ky9kk+!J{4k^O1Tt+Fr1YT`Hs0C43ZdDkvQ{LfDNK z4i2o>|HiUaCgWIsZ#T~onNsO+x(<4tl*>PcE=6sVFiJMxL&7uy_{g#)q2B-~&-1wFK^s9<%`H_V+JtQc?XD=KdLGSN>^Cr+X zpaVbZAh<^WGz{F(a}y!vgk+A)zC73ljNuqN`9WxMySn=1Z>gCJppo8yiiunx1;0s* zTINV|>K77f)fPsmSMU!CSd7=uT^&i*XLEAuluHxf zH;Gsn8VBBQ!#mTpbx~Tu__8|y1g;xUeqjZwLi^j5Y!N3ooWOPB%!!R8XcSUS%WMQy z9|2$iWSZm5=*ZigKnR1Xt<#Ed1ki35?XVh~qsj@9P03Skua3W$*WKFj)Cq~CmRHFo zot@)dF+b|h$N?;-Y0g2_IZ^q^nUP+Vn2+N#En{6P=Z1veoEO5sUHk39GRk_b;;kE_ zH~-1F=lk^L{S%uEtCGfYtr}0(Ro6D$wY;;jq5R|Wh9K?Ki2Hk9ocCQMDQ&YZbyGh7 zRonO`p=m|tON!rroF8?wvf{0NtMahR&b={osY*t|=rX?NQBhGYZSkMy#K)CMYJot1 z0Vn6-qet)cHqzH~a&rEem{96faO^6QvF`qca)V_^)m)q!x8F8Ys^)v+hHVDz^GVr% zs;du!{ve={(|&@TgX1fpyueJOB+u?EEs>x5djRQ@Th5C&ma|jmS!?OE(W(bs>`0VU zfJb!Y=Do?u$#+6SpKY;gEy~SR14*Wx|Cf`pXHi2PGZP9X069pL^ut3Oyh)WwuYkwhZkdb+w|(RWKscU_ie7V4ozX7;VvEm-%~ z?ip%z9Msp3LJOUsV)eawGk!GX&y;mvU;4h4h~~IJ-s`3?r2#ken`lgerM*X zsp%~%E4v~k!TL7F2ey~O>AEb@i{4v;BKV&vnXM2MjPLL7UsG82)i%{{B-L#A_iu~R zK+|uoe+(PsCQ&EL#eLq~xnC#P^?FW&sti4_>yB-Z=THMn)39K*G>4j?px|()s)EBp z>laV*Q#U5pzQS5pD$rk#-JjQeS*=pi(uqdi@u8uiAmZ;FJ~(mYn(4RoGW|#hDLCyu z-OzHKV|jVIM{H%C@RM}Ym zw)rYpxl%!czufx~X6g)T$I6C(-s(A>f$Mi7BYXIo5WmQQgo|a~JWJ4>-JAm1v6uqlQ{8b7a8iE4=1OImDV;RD+SCI6dv9aeV zDF>D z0=$l=PM(xI;&YBYJ|n?$Vqj#X3MeYop~nC)s^rB){EMHDz>&RPQSk^C#Vu1l7epic zD?L5yW16eD`ex1zkdH<2{iRP4zBt_M)~8|U4nDmOz~nNxENE#A>cv`sPSFL1_!OTv zjP5IZg#akO2kEzRz~Zg|sa31CqXN+(5bdnd3Hx5t1Vq+To4gaoumbhXmhtn)qBk#N zVhXIQTT9+%W<3P76%!NdKo&RnVnPOLk{rGh6cmLDyp{va`AM}_d(vhS`l=xW)Gz>~ zw}4mF*3&zD?%cU#8Li#BE3n{FK^2TOpoan*rN}UL1aCR>Wx@q@;J2cx5iqLKv)=bH zt@27rhL{l)o%s0a(?wD4t^A?yn$mwwH5rtsSl+ivu3e;64*py@+vYqM8@-){=JMgg z$f!Uc=w)B@9w@&+2EqPi*xfsK{wXYcw*AG;-aIS$*f($97`0j)kCcgT5RmC{x$n0Y zB7Bz)*Z|s2tx5mBIp)bnA;vxN?$XuqxyRmrnXO8-2$(e80-#R?3Dlzrrb(7@r1NV3|2tfx% z26VH}rN=&fnm152Q83h9yFYZ}@qM5Lmgy1gc6g6?_Z8CG^3EK#J;!{`R=4Qrke=`q z9J`{iYt%Hpq0pK=6U8dlNlG5vyZ4rrykV^Fg3;FoaY;uu`1<-<{0>907LeZ?uLI#L z${&7H+?sMXAt3{Ijzpn{g6(7kCK}FnP2uk6>V~2&OADlCfKYrz{gV5>LcWdKb z{@@o7Xt;0Qo(;m;I#;$c%z3F@t76a#TJ?whU*ms#s`&gV)l#~;x8>6@h5Xv1dTF&* z*A2cY;R*cRKVV?+5(~DUdzkrrYlr!bw+<|=b?z&|EpaYNq~pAuwc#D?s**pid4>DG z_F_^v?HV#a^=xBYB-bqyXSXl$|HtRD;{!FuU#Z6bxvU;*RObM4^MeNtp!lC6xA(w-r>I}IR#rBNetpj0=QdU} z2QR|f*WR@&$doT~WW9{cUWIet&iMVA`}gJlxS{?DZkM9y>SJS%KhgB-gEWJT@Ab=z z73E@LkKuDq@>kk$;LxFUn>OtS$K!&93oFB9%u+mOJPO;8zx|48G|OPZ!NhGoVF>z3 zVqB7vWU;Q&ewEfAi?tYA;r*kNY^9Pvul>r(%0u7>TqiGo$jHcO90b)Nk&$tr)Lttr zOarAiDhodXv1kk?TE4ys=7F1^zsvhpI-TeASd~Rz5(npRqL28C8vH#pbil&mCFYcS z@!}|;(1V8$cfl_OKZOIp_RrDIrYz57_kfjK_F<3eAUx5&efvbUkfx{tY9S64B^I<% zvbh=sD#f(YZJG|DBpNvTH-iT@Iy$-o6?&~5UrT=N zb*UT$X$-#=Vk_n;7_{AyV}@6B=q3fyhM}{?R`Qmp+ftX|oDA6X0(G#v;JUXu|9*<< z7YB|V+W>cY*r_KlEyX7gcEIq+#>WTSEr&`|!c&n3#_zW#7K)LxiIJ;K766{r#oLgbpD@(Rvqp-0j!LWq0o0#UpEB zO5rs(D)n8lxXog$_3`7!eHt3qw0G}D9cukkr%t_%KEV91Zqh~UoRkLW(B8L#aFb3bWKrC49B{puB<)L4i^+} zM1Kk1W(&BAcjtdx2A||(@dr*jh()uteN74#klta7>5zv%U7=s*xRRa~Tqxg@rp&rg40zLN686tvl-nMC0g^)v!!{2|cIVrj~q`pCWKo^1ZF>KcP>1{KfWYV6OI4!LtD8Vt62ATB)sR%*2M z2z#g6?-bS|)46}gj>}IzV^s}fcLf8`1yOMY0I)sE#-Ikh7HDIG9zJ|X3<~!3_5ms0 z96WIF;N?ESxA;VOiz@G}hUTmJcrJ)JfdPUD_ z1%>nv(_l1*W^HL0y@H}*C^T~0FeLKZ8um>4K;WQlFH5|LY{8*6-5QJ!cz!C@bZ2 zZTWm}(=#ZxgEFX9z)ou+lzaDHAOb!^ib1@5xep40)%g_Vo zoh(gv4Km%{f_imb_~)3YDB-`rYd^}&f_oQa-D@hper?B&iOY{`yr3U^gk{uskHU?%jDpKAeOjLqkI&f(!n(p!juT|Dl5iE9=t? z;?@Q)QmD?{V>#wFeuq>aZ2m@-LHK;&+&N@A&0+!u z5kD+b4Nj%kpOU?|_0-XM$+a8aH*7?J(5Uv;3s7R>;tKD3UhzncAy$aoYOjsTSHb`M zw3`3@W-bE^sq^^3pZ@EN_uRETvq$SX9@o^+cmYrjiv%btsbcDy{2$Wkd-S&>?J-E0 z#~^)xiP)0bv*Gmqi?^-i>mOAu#L*bWpZ;NM>&BNa*F8&%J7nqmH23pxeKW_u Date: Tue, 8 Nov 2022 14:46:38 -0800 Subject: [PATCH 2/8] removing repos Signed-off-by: Dharini Dutia --- moveit2/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/moveit2/Dockerfile b/moveit2/Dockerfile index 9058a0a..443c391 100644 --- a/moveit2/Dockerfile +++ b/moveit2/Dockerfile @@ -109,7 +109,6 @@ RUN rosinstall_generator \ # Get the repositories required by MoveIt2, but not included in Space ROS WORKDIR ${MOVEIT2_DIR} -COPY --chown=${USERNAME}:${USERNAME} moveit2.repos ./ RUN vcs import src < /tmp/moveit2_generated_pkgs.repos # Update the ownership of the source files (had to use sudo above to work around From 804ef1d57be017cf89c37560caebbb90ea7f44fd Mon Sep 17 00:00:00 2001 From: Dharini Dutia Date: Wed, 9 Nov 2022 09:52:11 -0800 Subject: [PATCH 3/8] moveit tutorials and replaced image for demos Signed-off-by: Dharini Dutia --- moveit2/Dockerfile | 9 ++++---- moveit2/moveit2-pkgs.txt | 4 +++- moveit2/moveit2_tutorials.repos | 17 +++++++++++++++ moveit2/run.sh | 2 +- space_robots/Dockerfile | 32 ++++++++++++++++------------- space_robots/demo_manual_pkgs.repos | 28 ------------------------- 6 files changed, 44 insertions(+), 48 deletions(-) create mode 100644 moveit2/moveit2_tutorials.repos diff --git a/moveit2/Dockerfile b/moveit2/Dockerfile index 443c391..7f9ead1 100644 --- a/moveit2/Dockerfile +++ b/moveit2/Dockerfile @@ -87,7 +87,8 @@ RUN sudo apt-get update && sudo apt-get install \ # Get the MoveIt2 source code WORKDIR ${HOME_DIR} -RUN sudo git clone https://github.com/ros-planning/moveit2.git -b main moveit2/src +RUN sudo git clone https://github.com/ros-planning/moveit2.git -b ${ROSDISTRO} moveit2/src +RUN cd ${MOVEIT2_DIR}/src && sudo git clone https://github.com/ros-planning/moveit2_tutorials.git -b ${ROSDISTRO} # Update the ownership of the source files (had to use sudo above to work around # a possible inherited 'insteadof' from the host that forces use of ssh @@ -110,6 +111,8 @@ RUN rosinstall_generator \ # Get the repositories required by MoveIt2, but not included in Space ROS WORKDIR ${MOVEIT2_DIR} RUN vcs import src < /tmp/moveit2_generated_pkgs.repos +COPY --chown=${USERNAME}:${USERNAME} moveit2_tutorials.repos /tmp/ +RUN vcs import src < /tmp/moveit2_tutorials.repos # Update the ownership of the source files (had to use sudo above to work around # a possible inherited 'insteadof' from the host that forces use of ssh @@ -126,9 +129,7 @@ RUN cd src/octomap_msgs && git apply octomap_fix.diff # Build MoveIt2 RUN /bin/bash -c 'source ${SPACEROS_DIR}/install/setup.bash && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON' -# Enable the container to run GUI apps and add a couple sample apps for testing -RUN touch ${HOME}/.Xauthority -EXPOSE 8887 +# Add a couple sample GUI apps for testing RUN sudo apt-get install -y \ firefox \ glmark2 \ diff --git a/moveit2/moveit2-pkgs.txt b/moveit2/moveit2-pkgs.txt index 0fd2274..0b3fa3a 100644 --- a/moveit2/moveit2-pkgs.txt +++ b/moveit2/moveit2-pkgs.txt @@ -1,5 +1,6 @@ ackermann_msgs -anglesbackward_ros +angles +backward_ros control_msgs control_toolbox eigen_stl_containers @@ -14,6 +15,7 @@ laser_geometry launch_param_builder moveit_msgs moveit_resources +moveit_task_constructor navigation_msgs object_recognition_msgs octomap diff --git a/moveit2/moveit2_tutorials.repos b/moveit2/moveit2_tutorials.repos new file mode 100644 index 0000000..bfbfc0c --- /dev/null +++ b/moveit2/moveit2_tutorials.repos @@ -0,0 +1,17 @@ +repositories: + moveit_task_constructor: + type: git + url: https://github.com/ros-planning/moveit_task_constructor.git + version: ros2 + moveit_visual_tools: + type: git + url: https://github.com/ros-planning/moveit_visual_tools + version: ros2 + rosparam_shortcuts: + type: git + url: https://github.com/PickNikRobotics/rosparam_shortcuts + version: ros2 + rviz_visual_tools: + type: git + url: https://github.com/PickNikRobotics/rviz_visual_tools.git + version: ros2 diff --git a/moveit2/run.sh b/moveit2/run.sh index 4fe8bbb..1c45f67 100755 --- a/moveit2/run.sh +++ b/moveit2/run.sh @@ -1,2 +1,2 @@ # Start the container -docker run --rm --gpus all --net=host -e DISPLAY=$DISPLAY --device=/dev/dri:/dev/dri --volume="$HOME/.Xauthority:/home/spaceros-user/.Xauthority:rw" -it openrobotics/moveit2 +docker run --rm --gpus all --net=host -e DISPLAY=$DISPLAY --device=/dev/dri:/dev/dri --volume="$HOME/.Xauthority:/home/spaceros-user/.Xauthority:rw" -it openrobotics/moveit2:latest diff --git a/space_robots/Dockerfile b/space_robots/Dockerfile index d7b4ecb..af04f4d 100644 --- a/space_robots/Dockerfile +++ b/space_robots/Dockerfile @@ -19,7 +19,7 @@ # VCS_REF - The git revision of the Space ROS source code (no default value). # VERSION - The version of Space ROS (default: "preview") -FROM openrobotics/spaceros:latest +FROM openrobotics/moveit2:latest # Define arguments used in the metadata definition ARG VCS_REF @@ -46,31 +46,35 @@ ARG DEBIAN_FRONTEND=noninteractive # Get rosinstall_generator RUN sudo apt-get update -y && sudo apt-get install -y python3-rosinstall-generator +# TODO: no packages left after exclusions # Generate repos file for demo dependencies, excluding packages from Space ROS core. -COPY --chown=${USERNAME}:${USERNAME} demo-pkgs.txt /tmp/ -COPY --chown=${USERNAME}:${USERNAME} excluded-pkgs.txt /tmp/ -RUN rosinstall_generator \ - --rosdistro ${ROSDISTRO} \ - --deps \ - --exclude-path ${SPACEROS_DIR}/src \ - --exclude $(cat /tmp/excluded-pkgs.txt) -- \ - -- $(cat /tmp/demo-pkgs.txt) \ - > /tmp/demo_generated_pkgs.repos +# COPY --chown=${USERNAME}:${USERNAME} demo-pkgs.txt /tmp/ +# COPY --chown=${USERNAME}:${USERNAME} excluded-pkgs.txt /tmp/ +# RUN rosinstall_generator \ +# --rosdistro ${ROSDISTRO} \ +# --deps \ +# --exclude-path ${SPACEROS_DIR}/src \ +# --exclude-path ${MOVEIT2_DIR}/src \ +# --exclude $(cat /tmp/excluded-pkgs.txt) -- \ +# -- $(cat /tmp/demo-pkgs.txt) \ +# > /tmp/demo_generated_pkgs.repos RUN mkdir -p ${DEMO_DIR}/src WORKDIR ${DEMO_DIR} # Get the source for the dependencies -RUN vcs import src < /tmp/demo_generated_pkgs.repos +# RUN vcs import src < /tmp/demo_generated_pkgs.repos COPY --chown=${USERNAME}:${USERNAME} demo_manual_pkgs.repos /tmp/ -RUN vcs import src < /tmp/demo_manual_pkgs.repos --force +RUN vcs import src < /tmp/demo_manual_pkgs.repos RUN sudo apt-get update -y \ && /bin/bash -c 'source "${SPACEROS_DIR}/install/setup.bash"' \ -&& rosdep install --from-paths src --ignore-src -r -y +&& /bin/bash -c 'source "${MOVEIT2_DIR}/install/setup.bash"' \ +&& rosdep install --from-paths src --ignore-src -r -y --rosdistro ${ROSDISTRO} # Build the demo -RUN /bin/bash -c 'source ${SPACEROS_DIR}/install/setup.bash && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release' +RUN /bin/bash -c 'source ${SPACEROS_DIR}/install/setup.bash && source ${MOVEIT2_DIR}/install/setup.bash \ + && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release' # Add the user to the render group so that the user can access /dev/dri/renderD128 RUN sudo usermod -aG render $USERNAME diff --git a/space_robots/demo_manual_pkgs.repos b/space_robots/demo_manual_pkgs.repos index aedfc53..283966d 100644 --- a/space_robots/demo_manual_pkgs.repos +++ b/space_robots/demo_manual_pkgs.repos @@ -1,16 +1,4 @@ repositories: - ackermann_msgs: - type: git - url: https://github.com/ros-drivers/ackermann_msgs.git - version: ros2 - angles: - type: git - url: https://github.com/ros/angles.git - version: humble-devel - control_toolbox: - type: git - url: https://github.com/ros-controls/control_toolbox.git - version: ros2-master demos: type: git url: https://github.com/space-ros/demos.git @@ -19,22 +7,10 @@ repositories: type: git url: https://github.com/ros-controls/gz_ros2_control.git version: humble - image_common: - type: git - url: https://github.com/ros-perception/image_common.git - version: humble - python_qt_binding: - type: git - url: https://github.com/ros-visualization/python_qt_binding.git - version: humble qt_gui_core: type: git url: https://github.com/ros-visualization/qt_gui_core.git version: humble - ros2_controllers: - type: git - url: https://github.com/tonylitianyu/ros2_controllers.git - version: effort_group_position_controller_2 ros_gz: type: git url: https://github.com/gazebosim/ros_gz.git @@ -43,7 +19,3 @@ repositories: type: git url: https://github.com/space-ros/simulation.git version: main - yaml_cpp_vendor: - type: git - url: https://github.com/ros2/yaml_cpp_vendor.git - version: humble From 2d6034664e7a44b24c7d635c0f58cea5c80b0e75 Mon Sep 17 00:00:00 2001 From: Dharini Dutia Date: Thu, 10 Nov 2022 00:57:05 -0800 Subject: [PATCH 4/8] updates Signed-off-by: Dharini Dutia --- moveit2/Dockerfile | 16 ++++++++++++---- space_robots/Dockerfile | 8 ++++++++ space_robots/demo_manual_pkgs.repos | 6 +++++- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/moveit2/Dockerfile b/moveit2/Dockerfile index 7f9ead1..ec07c09 100644 --- a/moveit2/Dockerfile +++ b/moveit2/Dockerfile @@ -88,7 +88,8 @@ RUN sudo apt-get update && sudo apt-get install \ # Get the MoveIt2 source code WORKDIR ${HOME_DIR} RUN sudo git clone https://github.com/ros-planning/moveit2.git -b ${ROSDISTRO} moveit2/src -RUN cd ${MOVEIT2_DIR}/src && sudo git clone https://github.com/ros-planning/moveit2_tutorials.git -b ${ROSDISTRO} +RUN cd ${MOVEIT2_DIR}/src \ + && sudo git clone https://github.com/ros-planning/moveit2_tutorials.git -b ${ROSDISTRO} # Update the ownership of the source files (had to use sudo above to work around # a possible inherited 'insteadof' from the host that forces use of ssh @@ -114,20 +115,27 @@ RUN vcs import src < /tmp/moveit2_generated_pkgs.repos COPY --chown=${USERNAME}:${USERNAME} moveit2_tutorials.repos /tmp/ RUN vcs import src < /tmp/moveit2_tutorials.repos +# TODO: temp fix for qt compatibility in focal +RUN cd src/moveit_task_constructor \ + && sudo git remote add other https://github.com/ubi-agni/moveit_task_constructor.git \ + && sudo git fetch other \ + && sudo git checkout fix-qt-compat + # Update the ownership of the source files (had to use sudo above to work around # a possible inherited 'insteadof' from the host that forces use of ssh RUN sudo chown -R ${USERNAME}:${USERNAME} ${MOVEIT2_DIR} # Install system dependencies -RUN /bin/bash -c 'source ${SPACEROS_DIR}/install/setup.bash' -RUN rosdep install --from-paths ../spaceros/src src --ignore-src --rosdistro ${ROSDISTRO} -r -y --skip-keys "console_bridge generate_parameter_library fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers rmw_connextdds ros_testing rmw_connextdds rmw_fastrtps_cpp rmw_fastrtps_dynamic_cpp composition demo_nodes_py lifecycle rosidl_typesupport_fastrtps_cpp rosidl_typesupport_fastrtps_c ikos diagnostic_aggregator diagnostic_updater joy qt_gui rqt_gui rqt_gui_py" +RUN /bin/bash -c 'source ${SPACEROS_DIR}/install/setup.bash' \ + && rosdep install --from-paths ../spaceros/src src --ignore-src --rosdistro ${ROSDISTRO} -r -y --skip-keys "console_bridge generate_parameter_library fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers rmw_connextdds ros_testing rmw_connextdds rmw_fastrtps_cpp rmw_fastrtps_dynamic_cpp composition demo_nodes_py lifecycle rosidl_typesupport_fastrtps_cpp rosidl_typesupport_fastrtps_c ikos diagnostic_aggregator diagnostic_updater joy qt_gui rqt_gui rqt_gui_py" # Apply a patch to octomap_msgs to work around a build issue COPY --chown=${USERNAME}:${USERNAME} octomap_fix.diff ./src/octomap_msgs RUN cd src/octomap_msgs && git apply octomap_fix.diff # Build MoveIt2 -RUN /bin/bash -c 'source ${SPACEROS_DIR}/install/setup.bash && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON' +RUN /bin/bash -c 'source ${SPACEROS_DIR}/install/setup.bash \ + && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON --event-handlers desktop_notification- status- --parallel-workers 1' # Add a couple sample GUI apps for testing RUN sudo apt-get install -y \ diff --git a/space_robots/Dockerfile b/space_robots/Dockerfile index af04f4d..370c3a7 100644 --- a/space_robots/Dockerfile +++ b/space_robots/Dockerfile @@ -43,6 +43,14 @@ ENV GZ_VERSION fortress # Disable prompting during package installation ARG DEBIAN_FRONTEND=noninteractive +# TODO: Temporary CMake Update +RUN wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add - +RUN sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main' +RUN sudo apt-get update && sudo apt-get install \ + cmake-data=3.22.2-0kitware1ubuntu20.04.1 \ + cmake=3.22.2-0kitware1ubuntu20.04.1 \ + -y --allow-downgrades + # Get rosinstall_generator RUN sudo apt-get update -y && sudo apt-get install -y python3-rosinstall-generator diff --git a/space_robots/demo_manual_pkgs.repos b/space_robots/demo_manual_pkgs.repos index 283966d..115f9ed 100644 --- a/space_robots/demo_manual_pkgs.repos +++ b/space_robots/demo_manual_pkgs.repos @@ -2,7 +2,7 @@ repositories: demos: type: git url: https://github.com/space-ros/demos.git - version: main + version: quarkytale/canadarm_demo gz_ros2_control: type: git url: https://github.com/ros-controls/gz_ros2_control.git @@ -11,6 +11,10 @@ repositories: type: git url: https://github.com/ros-visualization/qt_gui_core.git version: humble + ros2_controllers: + type: git + url: https://github.com/tonylitianyu/ros2_controllers.git + version: effort_group_position_controller_2 ros_gz: type: git url: https://github.com/gazebosim/ros_gz.git From b313183d6e8d69a11f1dc433943778f68e3d022e Mon Sep 17 00:00:00 2001 From: Dharini Dutia Date: Thu, 10 Nov 2022 09:25:31 -0800 Subject: [PATCH 5/8] shifting to jammy Signed-off-by: Dharini Dutia --- moveit2/Dockerfile | 24 +++++------ space_robots/Dockerfile | 12 +++--- spaceros/Dockerfile | 95 +++++++++++++++++++++++------------------ 3 files changed, 71 insertions(+), 60 deletions(-) diff --git a/moveit2/Dockerfile b/moveit2/Dockerfile index ec07c09..11f24d8 100644 --- a/moveit2/Dockerfile +++ b/moveit2/Dockerfile @@ -59,8 +59,8 @@ RUN sudo apt install -y \ python3-rosdep \ python3-setuptools \ python3-vcstool \ - wget \ - clang-format-10 + wget + # clang-format-10 # Install some pip packages needed for testing RUN python3 -m pip install -U \ @@ -78,12 +78,12 @@ RUN python3 -m pip install -U \ pytest # TODO: Temporary CMake Update -RUN wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add - -RUN sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main' -RUN sudo apt-get update && sudo apt-get install \ - cmake-data=3.22.2-0kitware1ubuntu20.04.1 \ - cmake=3.22.2-0kitware1ubuntu20.04.1 \ - -y --allow-downgrades +# RUN wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add - +# RUN sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main' +# RUN sudo apt-get update && sudo apt-get install \ +# cmake-data=3.22.2-0kitware1ubuntu20.04.1 \ +# cmake=3.22.2-0kitware1ubuntu20.04.1 \ +# -y --allow-downgrades # Get the MoveIt2 source code WORKDIR ${HOME_DIR} @@ -116,10 +116,10 @@ COPY --chown=${USERNAME}:${USERNAME} moveit2_tutorials.repos /tmp/ RUN vcs import src < /tmp/moveit2_tutorials.repos # TODO: temp fix for qt compatibility in focal -RUN cd src/moveit_task_constructor \ - && sudo git remote add other https://github.com/ubi-agni/moveit_task_constructor.git \ - && sudo git fetch other \ - && sudo git checkout fix-qt-compat +# RUN cd src/moveit_task_constructor \ +# && sudo git remote add other https://github.com/ubi-agni/moveit_task_constructor.git \ +# && sudo git fetch other \ +# && sudo git checkout fix-qt-compat # Update the ownership of the source files (had to use sudo above to work around # a possible inherited 'insteadof' from the host that forces use of ssh diff --git a/space_robots/Dockerfile b/space_robots/Dockerfile index 370c3a7..bb1a272 100644 --- a/space_robots/Dockerfile +++ b/space_robots/Dockerfile @@ -44,12 +44,12 @@ ENV GZ_VERSION fortress ARG DEBIAN_FRONTEND=noninteractive # TODO: Temporary CMake Update -RUN wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add - -RUN sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main' -RUN sudo apt-get update && sudo apt-get install \ - cmake-data=3.22.2-0kitware1ubuntu20.04.1 \ - cmake=3.22.2-0kitware1ubuntu20.04.1 \ - -y --allow-downgrades +# RUN wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add - +# RUN sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main' +# RUN sudo apt-get update && sudo apt-get install \ +# cmake-data=3.22.2-0kitware1ubuntu20.04.1 \ +# cmake=3.22.2-0kitware1ubuntu20.04.1 \ +# -y --allow-downgrades # Get rosinstall_generator RUN sudo apt-get update -y && sudo apt-get install -y python3-rosinstall-generator diff --git a/spaceros/Dockerfile b/spaceros/Dockerfile index 1052288..4d663cb 100644 --- a/spaceros/Dockerfile +++ b/spaceros/Dockerfile @@ -19,7 +19,7 @@ # VCS_REF - The git revision of the Space ROS source code (no default value). # VERSION - The version of Space ROS (default: "preview") -FROM nvidia/cudagl:11.4.1-devel-ubuntu20.04 +FROM ubuntu:jammy # Define arguments used in the metadata definition ARG VCS_REF @@ -48,8 +48,8 @@ ENV ROSDISTRO=humble # https://github.com/NVIDIA/cuda-repo-management/issues/1 # Use new GPG keys for nvidia apt repositories that have not yet propagated to base images. -RUN apt-key del 7fa2af80 -RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/3bf863cc.pub +# RUN apt-key del 7fa2af80 +# RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/3bf863cc.pub # Update the Ubuntu software repository RUN apt-get update @@ -75,8 +75,19 @@ RUN apt-get update && apt-get install -y \ git \ python3-colcon-common-extensions \ python3-flake8 \ + python3-flake8-blind-except \ + python3-flake8-builtins \ + python3-flake8-class-newline \ + python3-flake8-comprehensions \ + python3-flake8-deprecated \ + python3-flake8-docstrings \ + python3-flake8-import-order \ + python3-flake8-quotes \ python3-pip \ + python3-pytest \ python3-pytest-cov \ + python3-pytest-repeat \ + python3-pytest-rerunfailures \ python3-rosdep \ python3-setuptools \ python3-vcstool \ @@ -84,19 +95,19 @@ RUN apt-get update && apt-get install -y \ vim # Install the required pip packages -RUN python3 -m pip install -U \ - flake8-blind-except \ - flake8-builtins \ - flake8-class-newline \ - flake8-comprehensions \ - flake8-deprecated \ - flake8-docstrings \ - flake8-import-order \ - flake8-quotes \ - pytest-repeat \ - pytest-rerunfailures \ - pytest \ - setuptools +# RUN python3 -m pip install -U \ +# flake8-blind-except \ +# flake8-builtins \ +# flake8-class-newline \ +# flake8-comprehensions \ +# flake8-deprecated \ +# flake8-docstrings \ +# flake8-import-order \ +# flake8-quotes \ +# pytest-repeat \ +# pytest-rerunfailures \ +# pytest \ +# setuptools # Create a spaceros user RUN useradd -m $USERNAME && \ @@ -123,37 +134,37 @@ RUN sudo rosdep init && \ RUN colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON # Install dependencies needed by the IKOS static analyzer -RUN sudo apt-get install -y \ - clang-9 \ - cmake \ - g++ \ - gcc \ - libboost-dev \ - libboost-filesystem-dev \ - libboost-test-dev \ - libboost-thread-dev \ - libedit-dev \ - libgmp-dev \ - libsqlite3-dev \ - libtbb-dev \ - llvm-9 \ - llvm-9-dev \ - llvm-9-tools \ - python3 \ - python3-pygments \ - zlib1g-dev +# RUN sudo apt-get install -y \ +# clang-9 \ +# cmake \ +# g++ \ +# gcc \ +# libboost-dev \ +# libboost-filesystem-dev \ +# libboost-test-dev \ +# libboost-thread-dev \ +# libedit-dev \ +# libgmp-dev \ +# libsqlite3-dev \ +# libtbb-dev \ +# llvm-9 \ +# llvm-9-dev \ +# llvm-9-tools \ +# python3 \ +# python3-pygments \ +# zlib1g-dev # Get the IKOS source and build it WORKDIR ${HOME_DIR} -RUN git clone https://github.com/NASA-SW-VnV/ikos.git && cd ikos && git checkout 8b0bab34846b72777cca2a60d473282971806cfc -ENV PYTHONPATH "$PYTHONPATH:${IKOS_DIR}/install/lib/python3.8/site-packages" -WORKDIR ${IKOS_DIR} -RUN mkdir build && cd build && cmake .. -DLLVM_CONFIG_EXECUTABLE=/usr/bin/llvm-config-9 --no-warn-unused-cli && make && sudo make install -ENV PATH "$PATH:${IKOS_DIR}/install/bin" -ENV IKOS_SCAN_NOTIFIER_FILES "yes" +# RUN git clone https://github.com/NASA-SW-VnV/ikos.git && cd ikos && git checkout 8b0bab34846b72777cca2a60d473282971806cfc +# ENV PYTHONPATH "$PYTHONPATH:${IKOS_DIR}/install/lib/python3.8/site-packages" +# WORKDIR ${IKOS_DIR} +# RUN mkdir build && cd build && cmake .. -DLLVM_CONFIG_EXECUTABLE=/usr/bin/llvm-config-9 --no-warn-unused-cli && make && sudo make install +# ENV PATH "$PATH:${IKOS_DIR}/install/bin" +# ENV IKOS_SCAN_NOTIFIER_FILES "yes" # The IKOS installation doesn't install the IKOS egg file, so do it manually (https://github.com/NASA-SW-VnV/ikos/issues/185) -RUN cd ${IKOS_DIR}/install/lib/python3.8/site-packages && sudo python3 /usr/lib/python3/dist-packages/easy_install.py ./ikos-3.0-py3.8.egg +# RUN cd ${IKOS_DIR}/install/lib/python3.8/site-packages && sudo python3 /usr/lib/python3/dist-packages/easy_install.py ./ikos-3.0-py3.8.egg # Set up the entrypoint WORKDIR ${SPACEROS_DIR} From 2466c06090aee9e522919679e2706a5d77824146 Mon Sep 17 00:00:00 2001 From: Dharini Dutia Date: Wed, 16 Nov 2022 16:48:42 -0800 Subject: [PATCH 6/8] update readme Signed-off-by: Dharini Dutia --- space_robots/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/space_robots/README.md b/space_robots/README.md index 70df6e4..c53b8ed 100644 --- a/space_robots/README.md +++ b/space_robots/README.md @@ -1,6 +1,6 @@ # Space ROS Space Robots Demo Docker Image -The Space ROS Space Robots Demo docker image uses the Space ROS docker image (*openrobotics/spaceros:latest*) as its base image. Build instructions for that image can be found at [docker/spaceros/README.md](https://github.com/space-ros/docker/blob/main/spaceros/README.md). The Dockerfile installs all of the prerequisite system dependencies along with the demos source code, then builds the Space ROS Space Robots Demo. +The Space ROS Space Robots Demo docker image uses the Space ROS docker image (*openrobotics/moveit2:latest*) as its base image. Build instructions for that image can be found at [docker/moveit2/README.md](https://github.com/space-ros/docker/blob/main/moveit2/README.md). The Dockerfile installs all of the prerequisite system dependencies along with the demos source code, then builds the Space ROS Space Robots Demo. This is for Curiosity Mars rover and Canadarm demos. From 0d517e000d465ae40c8823d6d633594bd794af38 Mon Sep 17 00:00:00 2001 From: Dharini Dutia Date: Thu, 17 Nov 2022 11:39:02 -0800 Subject: [PATCH 7/8] readme Signed-off-by: Dharini Dutia --- moveit2/README.md | 28 +++- moveit2/resources/moveit2-rviz-tutorial.png | Bin 0 -> 91179 bytes space_robots/README.md | 2 +- spaceros/Dockerfile | 173 -------------------- spaceros/README.md | 1 + 5 files changed, 29 insertions(+), 175 deletions(-) create mode 100644 moveit2/resources/moveit2-rviz-tutorial.png delete mode 100644 spaceros/Dockerfile diff --git a/moveit2/README.md b/moveit2/README.md index 084105f..c7550ea 100644 --- a/moveit2/README.md +++ b/moveit2/README.md @@ -1,6 +1,6 @@ # MoveIt2 Docker Image -The MoveIt2 Docker image uses the Space ROS docker image (*openrobotics/spaceros:latest*) as its base image. The MoveIt2 Dockerfile installs all of the prerequisite system dependencies to build MoveIt2 and then pulls and builds the latest MoveIt2 source code. +The MoveIt2 Docker image uses the Space ROS docker image (*openrobotics/spaceros:latest*) as its base image. The MoveIt2 Dockerfile installs all of the prerequisite system dependencies to build MoveIt2 (and Moveit2 tutorials) and then pulls and builds the latest MoveIt2 and Moveit2 tutorials source code. ## Building the MoveIt2 Image @@ -42,3 +42,29 @@ Upon startup, the container automatically runs the entrypoint.sh script, which s ``` spaceros-user@8e73b41a4e16:~/moveit2# ``` + +## Running MoveIt2 Tutorials + +Run the following command to launch the MoveIt2 tutorials demo launch file: + +``` +ros2 launch moveit2_tutorials demo.launch.py rviz_tutorial:=true +``` + +You should see lots of console output and the rviz2 window appear: + +![rviz2 tutorial window](resources/moveit2-rviz-tutorial.png) + +You can now following the [MoveIt2 Tutorial documentation](https://moveit.picknik.ai/galactic/doc/tutorials/quickstart_in_rviz/quickstart_in_rviz_tutorial.html). + +## Running the MoveIt2 Move Group C++ Interface Demo + +To run the Move Group C++ Interface Demo, execute the following command: + +``` +ros2 launch moveit2_tutorials move_group.launch.py +``` + +![rviz2 move group window](resources/moveit2-rviz.png) + +Then, you can follow the [Move Group C++ Interface Demo documentation](https://moveit.picknik.ai/humble/doc/examples/move_group_interface/move_group_interface_tutorial.html). diff --git a/moveit2/resources/moveit2-rviz-tutorial.png b/moveit2/resources/moveit2-rviz-tutorial.png new file mode 100644 index 0000000000000000000000000000000000000000..1472f46611ccb9861a59fd86416a65a8ae71a696 GIT binary patch literal 91179 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� zn62Ey00J)670ajuf)@M~owX|r2kU3Ex&o%*O;ctggwXz4Y z9zp3M0TX;A;*o<&(eHG@CnVd%+GQi-<VTR8IY!ZRQ_;BwW168hjhO`Y?5W1Vy5i}}DZ*OPGTJled_v3T6S zuMBxO-SYnSeYF1r`%ypGxAQ)IHD}*&+ga|22D6cb`hdj4T88x|PCNwh_by(CxSno# zw+7?h+%V`4{DmqwM4_#i^u;8n?t2d-GxIroB>0cGn&;Tr*z~VntwcB~eYr)^i&o7# z{3ixPTtOd)@A3S2%Mjkxv@>4>ZUwH!n;zSF*%Qlu{jM0%l;ADr%weo_YutvDK`9?u zS=g;z%vRi@qR=}9-`MHSaZ7KwC=uJ5Ii19WP2345tzx&wRAW}2RKN-~1#iYsimuGrr%T1ymv(^~lWG0tbLUP9 zMBsfPe7|4$BSt|y>v#!Z>s@ys>~=c;ya-;;8(oM&*+W)IN#-+MBLsEf2qrmjL}{h7 zsESHU*8+H;WjF=EdlvRmgmZ+2g)duJD3Z|EmMv<{WU>R6(A19~#VAg2JN*CcF~{9W@4FQ9~I8t^a%GHj4qo>g&ci}T_y!T4U!}B{$T$@+X@f@@GtlC=f;GJO5^x?dTs^wv6XXKwb_dGNp9LI znXVKkb!ihF2Saz8G_z_i=-DgwT2Mb`NJ zpCt_3(ET*`p8f3-+5i#fB>}>JVYm;D8{4sFZWN1`NJFC`tQ1(muM&L~@E%lGcTdj= z`SCEjCjA*+xv`J9|uSP2pe!`zHXv%@U@42G_KSsDSZ3Fo5*f&58zg+D#kYR)!rVk(hGl&BVgNoSN#mNvASO_r)f%mW1T|Ol!BZHr81{fpHfDsOeoYnLD zKVW61yLj1^@Qmw`YwvJFpFNGdrv;X|tvuz#)*z52Um2AP^hQ zbdD1doB8?$aC7iU(lV=;tu}&9H-0}j=#k1ulqTca$Sq`UAw-o=g0=sVW8ezIZ@{yj zsPGFNSnIo6ynht{*z5t3N$49(mSl->yi#5U{KG~_s2fKLB2>Az7-9f&j2sOlm4KSW zmty`kO<(T$9B%LoO88NYksVAb=dLD4CrJ!F2jss(qm%d_FMI zQ;?AiWbh#l34nE#8VC~y$={JN5&R}wDZrv3z$+8dN#;jDlfVznNK9r8(Z^oWf#lHx z?t%>bs7p0~f>Ak!AqxZey!l89RL&AGiJ=OFcL7?VutzR8+ffeJPTXNSwr(6WQ~tv_ z`z)J3ORf`_+-fHWHPKeS502)UoRMx>D#ng@lao_kQt|{cjmDxl6i4v+}g%QnHg#KhvaJzbVi~SD0S%eaO9{< z>szefa@p88XnYZWvx-dLdcQo+2+dV3zP!A=0oUBA{ZOP80Ayt!a64DQTg>q!KnAOU zm5t4#zrSB$$O?_b5k5ZU$gt2*t|1kdp=E3`GD!r!3|VA7(22rE;4>=<>l1(00Cr{N z3=kaz-_MA9C%G52wLIVAn2A>HVP2lYm?qjSP$e~yO4RA4P{vo6dyPEJk;9%{G+ z@2<_kHg3Q~2MXK=4{Sy<%OM}s6Ux&n#4F$wd8fd(XZlHtgDX%M{E{CrQQ~h~4}i+k z=#YF!MMZ@~7SN)?1YO+HLQ4VG4=5mDktp2E;`VpK!gMT?sigyA!b_wp+77)Lo_;H$ z?xLUOuHAaJ;+IqX{oFQN$<)4}g4z2MLIG7HQ5^J9e;p8B^*>6e3g13M#+rD6ps;~9 zegHa&vu7A=JBb%xa$PM^$v!#RyS}3F1x{5Rdbt}JISGHkZE!qXmbi)VA(|!2f0#_T? z z@>lnS|9SA_kM3%HoOIG&^|SRa`*(e8NY1*2dCrW%5dMeK;) z+1WW%$f^dMqfbgfj1vQ&;d(OsLR2&q`Bq;{@1i=x%gy(1=7d&Sj=xR^snW zRV4xCmN}`?FZ{Wg?+1CxCl`aVuE|`#Ug)|KtfMUTcPwd){TYlF=h%(LfUxJSW$$6B zM*9+Q0(lS*HRiD&lH2UI+?!bny>0EGNj)vOQkis3M(fF642e|9<01_&T2*^{do3Z> zoq$D1RaOxfkhEhY`BgqDt-POCt9duqjM<;byFV1QW-jj^{&e5Ig5M>KfQV!3*pDFE zwHxkb%o{75JEwg2HE0Nt`?ZO|Z-lI@8`!qjr0B{n*-)?F#OmDw(TyBR1FGcO2NR`tUSN5T=|zR&N9?&8#RE!Vm5zOeoM3AG8K66yiZH3e~}33*c~jkXGr zix{R#N124Yud#?86r>E}J%soL9x zO8?avjP@;e_V+F)+TQIFm zx3~WK^=k$VGXIs2>kDy6uTJ>|eY5eE)=r$Y5Op+$1!?*~}^w=>rF0PG`35~RI)(}{PeQ5v`k2Toc->-UgoRcl{=n&dS;gPJ=?)nf z!2k~GU=g?rV;T?OWZ|sOzNE@)*WHdY4ftjo@)7iheR_BP*9!nSe*m0hJZgc_xAbXF z97H5N3dS0oBe4)+a~tFABBjizLtJSqsh@}?7&FiUZDDi?5e3M(gpUmd#}nlA>Ny^s z@f&bePXn}NV5|xVi%;Y#fGj37t)-=9-m9}-L%}}sMjM_+8i>qQ@{AjBqLzQ6YxDH% z3N)V)(P->!B^zA{qa#{N@Rc0qztaP1;QmpAF#;+h150N%PuqYnf)t7LjtN6lXsGtp zRq4<>(dn{ct|OKMzth6?z03TaXy7RbYlJt);L~8aFu8iH43gU*GeFUZ-i0uGkIZs_ z>y_AInSvYUo^584)NS=#8x8pY8F&Dh7_@qMH3{-!8y#N}RfNo>0S(0NX2s(@Z*^y= z2oAOrFiwKwe}O)I^B&R6S7EV;ARZcH=OCt8d^q4cR0at^G`tlvF7pDY68UTI2FzHz z^2fX0N8u0w;TLH38;8I3ty@GHhsH(%!~iE)%&WSIUJk-~z_J6ZFPfDp=%!Z;4c$=> ziIRfLBRal~H4@XsgAY*H*Ti~?lV0HXhVLIfOa@gM(9{0ZG>gji1vR+={n;#gi_QPb zO`12%+ceGFIV%}SM7AxfbowRKDK__MDYqEAv}lx>E8Lba$}iK)9#in5Eyh;H*x6ft zAMk%}XcOodf-8zI*9SC!(@Km3w@ z(}H=R4mLJqWo7K_GV3#T!LP^=C>J<>ELoKcHsjT?o^9GBU;-}=T1HP`i0v2=2KrjH zY;WrP+BIvQDAXWKTWq5Z{2z-6x+q1)vNJ|27v6NPd0vlEzUfm4sjEqAO6 z7m0IxRllP`CMo^shQNlB32%t@tRCq~QcF~Y%C9_RKye*W4t%xcU2f{^aBii zp`6G!w}u(qK3CvISJ#zm<#M+zjrU0YSumi0xdbb29|y;oO69>`k8MtKv$IEz94P{y z3-K7*gW7@q`zFp6jAo{QVo6d+V9wK1RxtR8oK<9~KLuJl zbhmCm7YKJ4K*>XN=;GPnX9XiV^CMHxQ@$yW-OgT^I7P@pY+<6h5GKPKhVEh~QT?4kh z6Q1QG9T5AFRk?ZZh{NV}H@4if-I%23?l0H=tD&JG`QyD4N}_UyhMPR*omu|m8`tsmT`^`R5u^#w4M5zW?E+-#J@nFT9YWhP8)hK{eRatvAvtR4X4)EA>M-zE4a zk6?rf@z;~N2gyyuBY-zKikpwCauOUm5fIa>VXhIz^hsD)WM6zqgDQ&%gRtH3cD$4k zYAZ=x;+l-izD4k=5}n5nXkXA%SE34j`KA8&y(0X_`@j`8>iuH#o0Zv?l@G09YkXPe z?Z5BT_{FPbhn4NA8H)gTr= zg`$rL-$WF~P!O#8dRUs#_0F74`vWQwrhIciD#L^_l{YUZ54dwUPN(x&>BrMw zF>zvix3pJdq@zTSPU_HH`|nHn_B9@x-tWHd^D&Ien{q6U`NBCsPbC33uRX{NIn0L| zm>}hsA0zDIX5`h;5N^Kn`ZW&@p(;B)i>pPVVq!oKodUJ!W3@-zZP7dfWC4C{!Hk(b z{~eeDGLs-eqded^5@*NJsX*p}L$u+*m{zcMs*ct?7!Ug)eJ4Ulm?jZ`0Z%g@wn^1x zn4E_g?d#`v?*6TtEI2tE=C`m&GQofO`qKLvSeS)xO)%kX>BA(Xe8)L&bhDUO^TN)% zYFp9~o%83n;ad5c;gH6&P=0_g^c`x-dGMB; ztn2Z^HZo=w{WE#^2PVRPL)rtUT0I8#!nuuM-A$UHGJ`OvZ2QigGU&)wJ;M?`HR46s zk?}KDN8Ubp{gtW^lAIA(?&ESAb`a~0+F+~@7}QBO+yKMfb4mA$he$KqYsfqNYP;1TpmQpA?ZUIGRD7nO21aJ6iPK{2S!Jt_h zN0$pgJ^-U{Jd<~9AA)5dT}YL*w-?67lSOui@Y8rOi&1VQz7Lm%Tzv*yHmI)PA|)t@ z@JtwbGK>~CmSN`VOr&bg0mFo?$sBZqO+`&Du$kk@!WT~iZp2+U2g#KLjUk!rBsRin zsr_s7CZtw=KLxtC!C)!)Kx9EJ5b6NuekIE;R`&{dwqyNG>ZkP6lBi-F>B6-n8h-y# z@VUalk#20>PRHTWu1Z#-eWGXK@$3@4Gb7@ZQ%iH^kp55OW@l+n!2CTTnOb?2@3y3{ zFx{EF_FPzn8Df?vh zl6IkK9>7!|Vv|BdpA2|}zo!(GAz2DA@~ghq6=}El%-JM(9>!#xDwQ`q0{A>eXI>g+ zrl?9-t7$31$cx=CVi`6%c`u2|=IZEp-Ip)=Q{BafwKLbl>yH~i=|6I@3-6wrn|mE$ zF3I0hM9PUfdNHfkaF=kfU8&^XNwX}@vpeuo#LYq!7l0G!U&p|&ej->CHxbhT5ehk^ zah{0QsEPc#lQ12fjgoW@NTXHWDhM3l+dCjAD9BJ1Hz7esLlbY^drU~E9CI(wKA6t^ zX*@50*8qe@g;#_roBU{wcI@k}Cyo+HPft23=j>FLo|I01??D9Joy{DJ> ze%8sbs#oP#)b+3H&8Y^AYda;%?OC%?6TRl%ba_?#c%LlW+Hae~TFbm5ucxb5}p-MH;epxaRDj>2JpOl0b;`{!Dl zt^Ud`FVJY^J1sr|LzIq@-xMJKh!#yTTp#CC#z$|Fj3NYsi3FxSZ;1V_G8!kLn%S`~ zsklaM{0#REF*0@xd4#V8w}tQkr2yVbk`2Y3>RXm0b?+7@u3sI!>aQQXlHiO5!4g|5eB?n1B+#8a8 z2pGZGukrLavJ@!(rYFa8H8jIF=qN^kAV$lPnN-orT5LbczuegV)Wv-fb_7eG!B2R2wP zG7_gjTsi{KjJgmNDIAq_2MbHoL_R!;NVt({&tTXv1Kcit&(BP=s3gBh04N8zbxF~} zJ1S4JHqHK4#v>%+f^*=mK(XkBYEg<%&6&l{feA|$C~Xbwq~p8xyi;qmbl_h|?KSK#9YaeJ0td;3fumQ9q_Q5!I=SR_BkXYp!02aqFk2F_9cNo+<)EH772^TK+7Zx3}1PG zHo;y4$P*zr6N$n(^XXs|d3Y3;#%p+14x*#z!{Y?{@H~Xd^^ZpA@f-!>QG!5Ig77q` z5SZg{!NSIg@#uKGkS>OAL96QP>wEF-u74ot0${@ul-Chh7BCK>2fGZ&jH_c273MRL z=SXYDLHJT%pm`uPD;V+K@82;qz?o&*_kdX*K&>Gu;8w@;Nz9Eg!yFiNUd9oD zo-u&uqV^&siKalSx{d@6&^CyYrzEFPkU!b=J~dzur@|PZ$Wd%lLwL+#t9?X(41UE| znHLWmP)X{RUT${rkF;3JnH=dI(vcnc)+FsJGlxsgLa-ettIK}2B3hAykQg}Zk@z74 zkzn|@#oMa3JnD_JvO5;&} z{ue0Za`Q31I9K>=2NiIv+zEK2B^S&SF_DkoAH*56?m4<&=-By6zf>ukq+I{#ZcxTf z`i!m&ah_1wv<9 zg~n&&EHtXr2~G%p8)mOhg0};*aSX*)Xj908`p(ezpyu5p4LoK=5xXeZlK5|2g~*SR zY#RhDuw-PqJK81)=%1m3n}M}LZiK8vbjbX8SPB_3j=WkfOvKo+WhEu6QPaqj1Xz@j z2v*-pcVy(-Vx}w zdGkkvQScuW^F%~?VB&{R&EHXb2xrr8)P%@Wv!GwGA@_rNdux zz@Lk~@li)nk@?zh46Dp2_23v*J8ck_@7my&!-vs8kn_=eZ&h-Aspu52Ake;#yqP!JoVY{ z+g332oEt@_#+#CJoOaagSAL&mUv+JJ_N&#L8}4nAqBl%6mAfbRNyQ4#4VYr9_@vR284X;5;5qmNXRp!yb$U}-|jyK`uf zm;4W`U)!-6%D_IE&=aa|5W1Dl6X#H)H*V?u2AEUq8f3If5>>&4_Mk<4QB^kc_Vp~;QN=*80P;^ zwg}!iMziF$@W@{!!w&QME0ZU5&vxeeJGR+eAlU9MNwzN*TO z{i*3y@(S)3((<6Q#Z&#%D9AVr3_q^M88{QS1#SegmeEiEDjY}4LXWlqWUJZW#k9+- z&>B?Fo5PQbIXzm#=-kbh1;M~#F;#>RVD z^x`}Pj(Zm zEm!t6*Y^`??)hw<*UZPM9^H#!S(kjbv##!!Ztj%M38B;d(Z45}!op%*(l|zuxTuDI zpA3~mYh@OH38Pd&0ovfq!%;`(5dp%igTseRj*J4DBoBT>uqeho0kadx5L1M?V8^Y6 z^$2eI{Ia(uu!`f;gNwzp-K!U;&hm8QWGy}U_4u= zBmK2akjD-iXMPlIG9%z0e4lS;cJEa1i^2HF~H+NbX#PrnYG2@R8?z-#7p2DB7}b} zOYjKcu)ez7i4Y?_p63KZQV-&OQO#8a4^Y*2?B0D6@G5YK1Z#kl>LXS#-~ke^c{L+7 zwKRsulg9(i%zKx-(4;CPat$stLv4hVYhm5)Ms+I_6f58zL#!u|G;CGmY^%hxo%r%& z*yLX0&La-+0cL$T^)92^0jRndGBGw*1t?-a)xC=7!$4lJd+omLb>+5^vdP zan$IX?2iK{tR_DB9uZFcz&vcLDJA4G*u6-C~X4`$?o`-xhdh9Ro~4`CUaA zcpz0yR0c5mrdj!@-SEAWr`CyB%G^wJ>`7YbNI{VX&ZMu2a@1>@p$#3*e_-Ap}V>yUTDKTwy(Sn zs%%ULzSf3g#VwL)s(9-)80dt&%WH8KYU&aoFtfVnZqwh;Hj#%gQ(%4(d7A5Qgv}tC z?!;3y;Kc}V;NPT&*=VP+Z{UHhvVQlux;mh1%jV5T1O+kvL}9GxCy){FzcL;)!j!}M zPL*{W3p=32`Oj|=fMNQY)FsB`Pz`5^n0}6Vw^Rf@Kp=my=i%U3k9-7bX(^x>vdY9# zK^~%sGZ^Ws<8af#ZAD22IFn%yApFSDYrXQvnZ#{D`jT;-fD7fAuOo4Lo`dS5@eT8O z@<=H%VGTnLoR?-kHyK)kkBpw(G^xWUD6QY>pfjShhVUXZ4j#Hy3TBN(V3ifI?&B!0S za~=@m)bMPt$Cnk}Lznb?Hf>nmnDCIN@%Vg6_iT2;wV5XgXJ>Vjg@lraa44Biipl{BkUU2k$84xkM`$&vILP~4KqEPjS3UX-f@wVG2;`n(U@D9f zDMw5I(2@^Q773m3qIwa->ZiO zyGr;p!z=bsFYUhAy5U~aBNa@|8|WHuKOyHpqm;jUz^&CgNhpOS{Ozr@s}V8wco9Ri zoP<-UEHc5BH$dp?duIV7M}I-_PB@xJA*C;Y?q593@A@ z^-n&ZqMFsI)2FFWA`s>eFeCPTBv~28Lh+O;&vmhM)dXzaI6JvqVQLKe{jw;Hl%44HTKHB zgZEN*_g}W&ck4{+{a)UT$X}?pa49aVxGA%L{;wC{_Jl^Pk$l+7C3cHPGOfJck|Rwz z!UM6ovXwK+Qn|uJXGQO<${ZFF(t|)hSX06cW2HjXAt7}N7{+UnXGz1t`Sy+J;K77z z1(CR>_<-cuTx9-3zRPkbmfF<-kBVxL03mqD8BPTZ&k*le)!oeaydxrTHsx zIT!}HTb)pm(h(_RtHTjkJ!^dvi<%GW!L@73e|R&2oZ@mOF)M&r$;fl!Q7w=SBM;gn z&UchQLRa8~Q*X|)|8WH?C!ievW(1&&*D-!~G3NTAdACW-CLlP#U%B%{DHzTdAB%BI zLy(9R-g9G`0k=uwmQR-G?aB-#=MmaqRXrBSTH<+DzvBX`%5UcIP=ck3N0vb4$ZE?h;bDEII$Hx z1Vc0J@(I5-R_~xIEDNE}o}q`27+h?eyGTMvfcL_X9%1W)tfy~e6xVbjQd|9oIUk7l z59IN*Fsb1Ym*Mq{A{kiLl;5zm$%rV-whvCdVIwfI;RWL~w1o(4WsI*ySVaHb^Zj#3lSoJSlxP)iWMi=&zW^F^!; zSU9C%yfFIVwQk;%@pd-ZFLNkxkm~URR3LuBMQ?cH6e16=+dEL11VaPX4|#AY4joS@ z2y)AMtg>#0s&gjfw}_IVj(e+Y~H_7}C9Qa;In+8|vQs(8%5Z-7ZOvFK

S@GECW8>*}=h>re=s+8m8ph!Nt+9OLWP`*UJ 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 /dev/null - -# Install required software development tools and ROS tools (and vim, included for convenience) -RUN apt-get update && apt-get install -y \ - bison \ - build-essential \ - cmake \ - git \ - python3-colcon-common-extensions \ - python3-flake8 \ - python3-flake8-blind-except \ - python3-flake8-builtins \ - python3-flake8-class-newline \ - python3-flake8-comprehensions \ - python3-flake8-deprecated \ - python3-flake8-docstrings \ - python3-flake8-import-order \ - python3-flake8-quotes \ - python3-pip \ - python3-pytest \ - python3-pytest-cov \ - python3-pytest-repeat \ - python3-pytest-rerunfailures \ - python3-rosdep \ - python3-setuptools \ - python3-vcstool \ - wget \ - vim - -# Install the required pip packages -# RUN python3 -m pip install -U \ -# flake8-blind-except \ -# flake8-builtins \ -# flake8-class-newline \ -# flake8-comprehensions \ -# flake8-deprecated \ -# flake8-docstrings \ -# flake8-import-order \ -# flake8-quotes \ -# pytest-repeat \ -# pytest-rerunfailures \ -# pytest \ -# setuptools - -# Create a spaceros user -RUN useradd -m $USERNAME && \ - echo "$USERNAME:$USERNAME" | chpasswd && \ - usermod --shell /bin/bash $USERNAME && \ - usermod -aG sudo $USERNAME && \ - mkdir -p /etc/sudoers.d && \ - echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USERNAME && \ - chmod 0440 /etc/sudoers.d/$USERNAME -USER ${USERNAME} - -## Get the Space ROS source code -RUN mkdir -p ${SPACEROS_DIR}/src -WORKDIR ${SPACEROS_DIR} -ADD --chown=${USERNAME}:${USERNAME} ${REPOS_FILE_URL} ros2.repos -RUN vcs import src < ros2.repos - -# Install system dependencies -RUN sudo rosdep init && \ - rosdep update && \ - rosdep install --from-paths src --ignore-src --rosdistro ${ROSDISTRO} -y --skip-keys "console_bridge fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers rmw_connextdds ros_testing rmw_connextdds rmw_fastrtps_cpp rmw_fastrtps_dynamic_cpp composition demo_nodes_py lifecycle rosidl_typesupport_fastrtps_cpp rosidl_typesupport_fastrtps_c ikos" - -# Build the Space ROS source code -RUN colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - -# Install dependencies needed by the IKOS static analyzer -# RUN sudo apt-get install -y \ -# clang-9 \ -# cmake \ -# g++ \ -# gcc \ -# libboost-dev \ -# libboost-filesystem-dev \ -# libboost-test-dev \ -# libboost-thread-dev \ -# libedit-dev \ -# libgmp-dev \ -# libsqlite3-dev \ -# libtbb-dev \ -# llvm-9 \ -# llvm-9-dev \ -# llvm-9-tools \ -# python3 \ -# python3-pygments \ -# zlib1g-dev - -# Get the IKOS source and build it -WORKDIR ${HOME_DIR} -# RUN git clone https://github.com/NASA-SW-VnV/ikos.git && cd ikos && git checkout 8b0bab34846b72777cca2a60d473282971806cfc -# ENV PYTHONPATH "$PYTHONPATH:${IKOS_DIR}/install/lib/python3.8/site-packages" -# WORKDIR ${IKOS_DIR} -# RUN mkdir build && cd build && cmake .. -DLLVM_CONFIG_EXECUTABLE=/usr/bin/llvm-config-9 --no-warn-unused-cli && make && sudo make install -# ENV PATH "$PATH:${IKOS_DIR}/install/bin" -# ENV IKOS_SCAN_NOTIFIER_FILES "yes" - -# The IKOS installation doesn't install the IKOS egg file, so do it manually (https://github.com/NASA-SW-VnV/ikos/issues/185) -# RUN cd ${IKOS_DIR}/install/lib/python3.8/site-packages && sudo python3 /usr/lib/python3/dist-packages/easy_install.py ./ikos-3.0-py3.8.egg - -# Set up the entrypoint -WORKDIR ${SPACEROS_DIR} -COPY ./entrypoint.sh / -ENTRYPOINT ["/entrypoint.sh"] -CMD ["bash"] diff --git a/spaceros/README.md b/spaceros/README.md index 2934b27..1abf83e 100644 --- a/spaceros/README.md +++ b/spaceros/README.md @@ -34,6 +34,7 @@ ubuntu jammy a8780b506fa4 5 days ago The new image is named **osrf/space-ros:latest**. +The `rocker` library is required to run the built image, install it by `sudo apt-get install python3-rocker`. There is a run.sh script provided for convenience that will run the spaceros image in a container. ``` From d296bf53fc7700759364c0df706ce9562c7135b0 Mon Sep 17 00:00:00 2001 From: Dharini Dutia Date: Thu, 17 Nov 2022 13:51:27 -0800 Subject: [PATCH 8/8] cleaning Signed-off-by: Dharini Dutia --- moveit2/Dockerfile | 14 -------------- space_robots/Dockerfile | 16 ++-------------- space_robots/demo_manual_pkgs.repos | 2 +- 3 files changed, 3 insertions(+), 29 deletions(-) diff --git a/moveit2/Dockerfile b/moveit2/Dockerfile index 418d655..6181fd8 100644 --- a/moveit2/Dockerfile +++ b/moveit2/Dockerfile @@ -81,14 +81,6 @@ RUN python3 -m pip install -U \ pytest-rerunfailures \ pytest -# TODO: Temporary CMake Update -# RUN wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add - -# RUN sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main' -# RUN sudo apt-get update && sudo apt-get install \ -# cmake-data=3.22.2-0kitware1ubuntu20.04.1 \ -# cmake=3.22.2-0kitware1ubuntu20.04.1 \ -# -y --allow-downgrades - # Get the MoveIt2 source code WORKDIR ${HOME_DIR} RUN sudo git clone https://github.com/ros-planning/moveit2.git -b ${ROSDISTRO} moveit2/src @@ -119,12 +111,6 @@ RUN vcs import src < /tmp/moveit2_generated_pkgs.repos COPY --chown=${USERNAME}:${USERNAME} moveit2_tutorials.repos /tmp/ RUN vcs import src < /tmp/moveit2_tutorials.repos -# TODO: temp fix for qt compatibility in focal -# RUN cd src/moveit_task_constructor \ -# && sudo git remote add other https://github.com/ubi-agni/moveit_task_constructor.git \ -# && sudo git fetch other \ -# && sudo git checkout fix-qt-compat - # Update the ownership of the source files (had to use sudo above to work around # a possible inherited 'insteadof' from the host that forces use of ssh RUN sudo chown -R ${USERNAME}:${USERNAME} ${MOVEIT2_DIR} diff --git a/space_robots/Dockerfile b/space_robots/Dockerfile index fa8e502..3cd402e 100644 --- a/space_robots/Dockerfile +++ b/space_robots/Dockerfile @@ -19,7 +19,7 @@ # VCS_REF - The git revision of the Space ROS source code (no default value). # VERSION - The version of Space ROS (default: "preview") -FROM osrf/space-ros:latest +FROM openrobotics/moveit2:latest # Define arguments used in the metadata definition ARG VCS_REF @@ -43,22 +43,10 @@ ENV GZ_VERSION fortress # Disable prompting during package installation ARG DEBIAN_FRONTEND=noninteractive -# TODO: Temporary CMake Update -# RUN wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add - -# RUN sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main' -# RUN sudo apt-get update && sudo apt-get install \ -# cmake-data=3.22.2-0kitware1ubuntu20.04.1 \ -# cmake=3.22.2-0kitware1ubuntu20.04.1 \ -# -y --allow-downgrades - -# Clone all space-ros sources -RUN mkdir ${SPACEROS_DIR}/src \ - && vcs import ${SPACEROS_DIR}/src < ${SPACEROS_DIR}/exact.repos - # Get rosinstall_generator RUN sudo apt-get update -y && sudo apt-get install -y python3-rosinstall-generator -# TODO: no packages left after exclusions +# TODO(anyone): remove demo-pkgs.txt, no packages left after exclusions # Generate repos file for demo dependencies, excluding packages from Space ROS core. # COPY --chown=${USERNAME}:${USERNAME} demo-pkgs.txt /tmp/ # COPY --chown=${USERNAME}:${USERNAME} excluded-pkgs.txt /tmp/ diff --git a/space_robots/demo_manual_pkgs.repos b/space_robots/demo_manual_pkgs.repos index 115f9ed..b80e858 100644 --- a/space_robots/demo_manual_pkgs.repos +++ b/space_robots/demo_manual_pkgs.repos @@ -2,7 +2,7 @@ repositories: demos: type: git url: https://github.com/space-ros/demos.git - version: quarkytale/canadarm_demo + version: main gz_ros2_control: type: git url: https://github.com/ros-controls/gz_ros2_control.git