diff --git a/bindings/yarp.i b/bindings/yarp.i index 69471c9d532..ce1649759ad 100644 --- a/bindings/yarp.i +++ b/bindings/yarp.i @@ -1136,8 +1136,8 @@ MAKE_COMMS (Sound, yarp::sig::Sound) } %extend yarp::dev::IControlLimits { - bool getLimits(int axis, std::vector& min, std::vector& max) { - return self->getLimits(axis, &min[0], &max[0]); + bool getPosLimits(int axis, std::vector& min, std::vector& max) { + return self->getPosLimits(axis, &min[0], &max[0]); } bool getVelLimits(int axis, std::vector& min, std::vector& max) { diff --git a/src/devices/controlBoardRemapper/ControlBoardRemapper.cpp b/src/devices/controlBoardRemapper/ControlBoardRemapper.cpp index c3dc8cb550f..92b90be3edc 100644 --- a/src/devices/controlBoardRemapper/ControlBoardRemapper.cpp +++ b/src/devices/controlBoardRemapper/ControlBoardRemapper.cpp @@ -545,7 +545,7 @@ ReturnValue ControlBoardRemapper::setPids(const PidControlTypeEnum& pidtype, con return ret; } -bool ControlBoardRemapper::setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) +ReturnValue ControlBoardRemapper::setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -554,7 +554,7 @@ bool ControlBoardRemapper::setPidReference(const PidControlTypeEnum& pidtype, in if (!p) { - return false; + return ReturnValue::return_code::return_value_error_generic; } if (p->pid) @@ -562,12 +562,12 @@ bool ControlBoardRemapper::setPidReference(const PidControlTypeEnum& pidtype, in return p->pid->setPidReference(pidtype, off, ref); } - return false; + return ReturnValue::return_code::return_value_error_generic; } -bool ControlBoardRemapper::setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) +ReturnValue ControlBoardRemapper::setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) { - bool ret=true; + ReturnValue ret=ReturnValue_ok; for(int l=0;lpid) { - bool ok = p->pid->setPidReference(pidtype, off, refs[l]); + ReturnValue ok = p->pid->setPidReference(pidtype, off, refs[l]); ret=ret&&ok; } else { - ret=false; + ret=ReturnValue::return_code::return_value_error_generic; } } return ret; } -bool ControlBoardRemapper::setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) +ReturnValue ControlBoardRemapper::setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -602,7 +602,7 @@ bool ControlBoardRemapper::setPidErrorLimit(const PidControlTypeEnum& pidtype, i RemappedSubControlBoard *p=remappedControlBoards.getSubControlBoard(subIndex); if (!p) { - return false; + return ReturnValue::return_code::return_value_error_generic; } if (p->pid) @@ -610,12 +610,12 @@ bool ControlBoardRemapper::setPidErrorLimit(const PidControlTypeEnum& pidtype, i return p->pid->setPidErrorLimit(pidtype, off, limit); } - return false; + return ReturnValue::return_code::return_value_error_generic; } -bool ControlBoardRemapper::setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) +ReturnValue ControlBoardRemapper::setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) { - bool ret=true; + ReturnValue ret=ReturnValue_ok; for(int l=0;lpid) { - bool ok = p->pid->setPidErrorLimit(pidtype, off, limits[l]); + ReturnValue ok = p->pid->setPidErrorLimit(pidtype, off, limits[l]); ret=ret&&ok; } else { - ret=false; + ret=ReturnValue::return_code::return_value_error_generic; } } return ret; } -bool ControlBoardRemapper::getPidError(const PidControlTypeEnum& pidtype, int j, double *err) +ReturnValue ControlBoardRemapper::getPidError(const PidControlTypeEnum& pidtype, int j, double *err) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -651,7 +651,7 @@ bool ControlBoardRemapper::getPidError(const PidControlTypeEnum& pidtype, int j, if (!p) { - return false; + return ReturnValue::return_code::return_value_error_generic; } if (p->pid) @@ -659,12 +659,12 @@ bool ControlBoardRemapper::getPidError(const PidControlTypeEnum& pidtype, int j, return p->pid->getPidError(pidtype, off, err); } - return false; + return ReturnValue::return_code::return_value_error_generic; } -bool ControlBoardRemapper::getPidErrors(const PidControlTypeEnum& pidtype, double *errs) +ReturnValue ControlBoardRemapper::getPidErrors(const PidControlTypeEnum& pidtype, double *errs) { - bool ret=true; + ReturnValue ret=ReturnValue_ok; for(int l=0;lpid) { - bool ok = p->pid->getPidError(pidtype, off, errs+l); + ReturnValue ok = p->pid->getPidError(pidtype, off, errs+l); ret=ret&&ok; } else { - ret=false; + ret=ReturnValue::return_code::return_value_error_generic; } } return ret; } -bool ControlBoardRemapper::getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) +ReturnValue ControlBoardRemapper::getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -698,7 +698,7 @@ bool ControlBoardRemapper::getPidOutput(const PidControlTypeEnum& pidtype, int j RemappedSubControlBoard *p=remappedControlBoards.getSubControlBoard(subIndex); if (!p) { - return false; + return ReturnValue::return_code::return_value_error_generic; } if (p->pid) @@ -706,12 +706,12 @@ bool ControlBoardRemapper::getPidOutput(const PidControlTypeEnum& pidtype, int j return p->pid->getPidOutput(pidtype, off, out); } - return false; + return ReturnValue::return_code::return_value_error_generic; } -bool ControlBoardRemapper::getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) +ReturnValue ControlBoardRemapper::getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) { - bool ret=true; + ReturnValue ret=ReturnValue_ok; for(int l=0;lpid) @@ -731,7 +731,7 @@ bool ControlBoardRemapper::getPidOutputs(const PidControlTypeEnum& pidtype, doub } else { - ret=false; + ret=ReturnValue::return_code::return_value_error_generic; } } return ret; @@ -756,7 +756,7 @@ ReturnValue ControlBoardRemapper::setPidOffset(const PidControlTypeEnum& pidtype return ReturnValue::return_code::return_value_error_generic; } -yarp::dev::ReturnValue ControlBoardRemapper::getPidOffset(const PidControlTypeEnum& pidtype, int j, double& v) +ReturnValue ControlBoardRemapper::getPidOffset(const PidControlTypeEnum& pidtype, int j, double& v) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -794,7 +794,7 @@ ReturnValue ControlBoardRemapper::setPidFeedforward(const PidControlTypeEnum& pi return ReturnValue::return_code::return_value_error_generic; } -yarp::dev::ReturnValue ControlBoardRemapper::getPidFeedforward(const PidControlTypeEnum& pidtype, int j, double& v) +ReturnValue ControlBoardRemapper::getPidFeedforward(const PidControlTypeEnum& pidtype, int j, double& v) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -861,7 +861,7 @@ ReturnValue ControlBoardRemapper::getPids(const PidControlTypeEnum& pidtype, Pid return ret; } -bool ControlBoardRemapper::getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) +ReturnValue ControlBoardRemapper::getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -869,7 +869,7 @@ bool ControlBoardRemapper::getPidReference(const PidControlTypeEnum& pidtype, in RemappedSubControlBoard *p=remappedControlBoards.getSubControlBoard(subIndex); if (!p) { - return false; + return ReturnValue::return_code::return_value_error_generic; } if (p->pid) @@ -877,12 +877,12 @@ bool ControlBoardRemapper::getPidReference(const PidControlTypeEnum& pidtype, in return p->pid->getPidReference(pidtype, off, ref); } - return false; + return ReturnValue::return_code::return_value_error_generic; } -bool ControlBoardRemapper::getPidReferences(const PidControlTypeEnum& pidtype, double *refs) +ReturnValue ControlBoardRemapper::getPidReferences(const PidControlTypeEnum& pidtype, double *refs) { - bool ret=true; + ReturnValue ret=ReturnValue_ok; for(int l=0;lpid) { - bool ok = p->pid->getPidReference(pidtype, off, refs+l); + ReturnValue ok = p->pid->getPidReference(pidtype, off, refs+l); ret=ret && ok; } else { - ret=false; + ret=ReturnValue::return_code::return_value_error_generic; } } return ret; } -bool ControlBoardRemapper::getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *limit) +ReturnValue ControlBoardRemapper::getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *limit) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -918,19 +918,19 @@ bool ControlBoardRemapper::getPidErrorLimit(const PidControlTypeEnum& pidtype, i if (!p) { - return false; + return ReturnValue::return_code::return_value_error_generic; } if (p->pid) { return p->pid->getPidErrorLimit(pidtype, off, limit); } - return false; + return ReturnValue::return_code::return_value_error_generic; } -bool ControlBoardRemapper::getPidErrorLimits(const PidControlTypeEnum& pidtype, double *limits) +ReturnValue ControlBoardRemapper::getPidErrorLimits(const PidControlTypeEnum& pidtype, double *limits) { - bool ret=true; + ReturnValue ret=ReturnValue_ok; for(int l=0;lpid) { - bool ok = p->pid->getPidErrorLimit(pidtype, off, limits+l); + ReturnValue ok = p->pid->getPidErrorLimit(pidtype, off, limits+l); ret=ret&&ok; } else { - ret=false; + ret=ReturnValue::return_code::return_value_error_generic; } } return ret; @@ -2980,7 +2980,7 @@ bool ControlBoardRemapper::getPowerSupplyVoltage(int m, double* val) /* IControlLimits */ -bool ControlBoardRemapper::setLimits(int j, double min, double max) +ReturnValue ControlBoardRemapper::setPosLimits(int j, double min, double max) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -2989,18 +2989,18 @@ bool ControlBoardRemapper::setLimits(int j, double min, double max) if (!p) { - return false; + return ReturnValue::return_code::return_value_error_generic; } if (p->lim) { - return p->lim->setLimits(off,min, max); + return p->lim->setPosLimits(off,min, max); } - return false; + return ReturnValue::return_code::return_value_error_generic; } -bool ControlBoardRemapper::getLimits(int j, double *min, double *max) +ReturnValue ControlBoardRemapper::getPosLimits(int j, double *min, double *max) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -3009,18 +3009,18 @@ bool ControlBoardRemapper::getLimits(int j, double *min, double *max) if (!p) { - return false; + return ReturnValue::return_code::return_value_error_generic; } if (p->lim) { - return p->lim->getLimits(off,min, max); + return p->lim->getPosLimits(off,min, max); } - return false; + return ReturnValue::return_code::return_value_error_generic; } -bool ControlBoardRemapper::setVelLimits(int j, double min, double max) +ReturnValue ControlBoardRemapper::setVelLimits(int j, double min, double max) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -3029,18 +3029,18 @@ bool ControlBoardRemapper::setVelLimits(int j, double min, double max) if (!p) { - return false; + return ReturnValue::return_code::return_value_error_generic; } if (!p->lim) { - return false; + return ReturnValue::return_code::return_value_error_generic; } return p->lim->setVelLimits(off,min, max); } -bool ControlBoardRemapper::getVelLimits(int j, double *min, double *max) +ReturnValue ControlBoardRemapper::getVelLimits(int j, double *min, double *max) { int off=(int)remappedControlBoards.lut[j].axisIndexInSubControlBoard; size_t subIndex=remappedControlBoards.lut[j].subControlBoardIndex; @@ -3049,12 +3049,12 @@ bool ControlBoardRemapper::getVelLimits(int j, double *min, double *max) if (!p) { - return false; + return ReturnValue::return_code::return_value_error_generic; } if(!p->lim) { - return false; + return ReturnValue::return_code::return_value_error_generic; } return p->lim->getVelLimits(off,min, max); diff --git a/src/devices/controlBoardRemapper/ControlBoardRemapper.h b/src/devices/controlBoardRemapper/ControlBoardRemapper.h index c9656c6961e..63667070c42 100644 --- a/src/devices/controlBoardRemapper/ControlBoardRemapper.h +++ b/src/devices/controlBoardRemapper/ControlBoardRemapper.h @@ -211,21 +211,21 @@ class ControlBoardRemapper : yarp::dev::ReturnValue setPids(const yarp::dev::PidControlTypeEnum& pidtype,const yarp::dev::Pid *ps) override; - bool setPidReference(const yarp::dev::PidControlTypeEnum& pidtype,int j, double ref) override; + yarp::dev::ReturnValue setPidReference(const yarp::dev::PidControlTypeEnum& pidtype,int j, double ref) override; - bool setPidReferences(const yarp::dev::PidControlTypeEnum& pidtype,const double *refs) override; + yarp::dev::ReturnValue setPidReferences(const yarp::dev::PidControlTypeEnum& pidtype,const double *refs) override; - bool setPidErrorLimit(const yarp::dev::PidControlTypeEnum& pidtype,int j, double limit) override; + yarp::dev::ReturnValue setPidErrorLimit(const yarp::dev::PidControlTypeEnum& pidtype,int j, double limit) override; - bool setPidErrorLimits(const yarp::dev::PidControlTypeEnum& pidtype,const double *limits) override; + yarp::dev::ReturnValue setPidErrorLimits(const yarp::dev::PidControlTypeEnum& pidtype,const double *limits) override; - bool getPidError(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *err) override; + yarp::dev::ReturnValue getPidError(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *err) override; - bool getPidErrors(const yarp::dev::PidControlTypeEnum& pidtype,double *errs) override; + yarp::dev::ReturnValue getPidErrors(const yarp::dev::PidControlTypeEnum& pidtype,double *errs) override; - bool getPidOutput(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *out) override; + yarp::dev::ReturnValue getPidOutput(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *out) override; - bool getPidOutputs(const yarp::dev::PidControlTypeEnum& pidtype,double *outs) override; + yarp::dev::ReturnValue getPidOutputs(const yarp::dev::PidControlTypeEnum& pidtype,double *outs) override; yarp::dev::ReturnValue setPidOffset(const yarp::dev::PidControlTypeEnum& pidtype,int j, double v) override; @@ -239,13 +239,13 @@ class ControlBoardRemapper : yarp::dev::ReturnValue getPids(const yarp::dev::PidControlTypeEnum& pidtype,yarp::dev::Pid *pids) override; - bool getPidReference(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *ref) override; + yarp::dev::ReturnValue getPidReference(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *ref) override; - bool getPidReferences(const yarp::dev::PidControlTypeEnum& pidtype,double *refs) override; + yarp::dev::ReturnValue getPidReferences(const yarp::dev::PidControlTypeEnum& pidtype,double *refs) override; - bool getPidErrorLimit(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *limit) override; + yarp::dev::ReturnValue getPidErrorLimit(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *limit) override; - bool getPidErrorLimits(const yarp::dev::PidControlTypeEnum& pidtype,double *limits) override; + yarp::dev::ReturnValue getPidErrorLimits(const yarp::dev::PidControlTypeEnum& pidtype,double *limits) override; yarp::dev::ReturnValue resetPid(const yarp::dev::PidControlTypeEnum& pidtype,int j) override; @@ -412,13 +412,13 @@ class ControlBoardRemapper : bool getPowerSupplyVoltage(int m, double *val) override; /* IControlLimits */ - bool setLimits(int j, double min, double max) override; + yarp::dev::ReturnValue setPosLimits(int j, double min, double max) override; - bool getLimits(int j, double *min, double *max) override; + yarp::dev::ReturnValue getPosLimits(int j, double *min, double *max) override; - bool setVelLimits(int j, double min, double max) override; + yarp::dev::ReturnValue setVelLimits(int j, double min, double max) override; - bool getVelLimits(int j, double *min, double *max) override; + yarp::dev::ReturnValue getVelLimits(int j, double *min, double *max) override; /* IRemoteVariables */ diff --git a/src/devices/fake/CMakeLists.txt b/src/devices/fake/CMakeLists.txt index 47a2e8e2e28..ac4f35cfc57 100644 --- a/src/devices/fake/CMakeLists.txt +++ b/src/devices/fake/CMakeLists.txt @@ -3,7 +3,6 @@ add_subdirectory(fakeAnalogSensor) add_subdirectory(fakeBattery) -add_subdirectory(fakebot) add_subdirectory(fakeChatBotDevice) add_subdirectory(fakeDepthCamera) add_subdirectory(fakeDeviceWrapped) diff --git a/src/devices/fake/fakeMotionControl/FakeMotionControl.cpp b/src/devices/fake/fakeMotionControl/FakeMotionControl.cpp index 0bf3a53e872..9b308edc062 100644 --- a/src/devices/fake/fakeMotionControl/FakeMotionControl.cpp +++ b/src/devices/fake/fakeMotionControl/FakeMotionControl.cpp @@ -328,6 +328,7 @@ void FakeMotionControl::setInfoMPids(int j) _torqueSensorChan= allocAndCheck(nj); _maxTorque=allocAndCheck(nj); _torques = allocAndCheck(nj); + _minJntCmdVelocity = allocAndCheck(nj); _maxJntCmdVelocity = allocAndCheck(nj); _maxMotorVelocity = allocAndCheck(nj); _newtonsToSensor=allocAndCheck(nj); @@ -454,6 +455,7 @@ bool FakeMotionControl::dealloc() checkAndDestroy(_braked); checkAndDestroy(_autobraked); checkAndDestroy(_maxTorque); + checkAndDestroy(_minJntCmdVelocity); checkAndDestroy(_maxJntCmdVelocity); checkAndDestroy(_maxMotorVelocity); checkAndDestroy(_newtonsToSensor); @@ -597,7 +599,6 @@ FakeMotionControl::FakeMotionControl() : _limitsMin (nullptr), _limitsMax (nullptr), _kinematic_mj (nullptr), - _maxJntCmdVelocity (nullptr), _maxMotorVelocity (nullptr), _velocityShifts (nullptr), _velocityTimeout (nullptr), @@ -660,6 +661,7 @@ bool FakeMotionControl::threadInit() last_velocity_command[i] = -1; last_pwm_command[i] = -1; _controlModes[i] = VOCAB_CM_POSITION; + _minJntCmdVelocity[i]=-50.0; _maxJntCmdVelocity[i]=50.0; } prev_time = yarp::os::Time::now(); @@ -1009,7 +1011,7 @@ ReturnValue FakeMotionControl::setPidsRaw(const PidControlTypeEnum& pidtype, con return ret; } -bool FakeMotionControl::setPidReferenceRaw(const PidControlTypeEnum& pidtype, int j, double ref) +ReturnValue FakeMotionControl::setPidReferenceRaw(const PidControlTypeEnum& pidtype, int j, double ref) { size_t index = PidControlTypeEnum2Index(pidtype); switch (pidtype) @@ -1051,15 +1053,15 @@ bool FakeMotionControl::setPidReferenceRaw(const PidControlTypeEnum& pidtype, in break; default: yCError(FAKEMOTIONCONTROL) << "Invalid pid type"; - return false; + return ReturnValue::return_code::return_value_error_method_failed; break; } - return true; + return ReturnValue_ok; } -bool FakeMotionControl::setPidReferencesRaw(const PidControlTypeEnum& pidtype, const double *refs) +ReturnValue FakeMotionControl::setPidReferencesRaw(const PidControlTypeEnum& pidtype, const double *refs) { - bool ret = true; + ReturnValue ret = ReturnValue_ok; for(int j=0, index=0; j< _njoints; j++, index++) { ret &= setPidReferenceRaw(pidtype, j, refs[index]); @@ -1067,7 +1069,7 @@ bool FakeMotionControl::setPidReferencesRaw(const PidControlTypeEnum& pidtype, c return ret; } -bool FakeMotionControl::setPidErrorLimitRaw(const PidControlTypeEnum& pidtype, int j, double limit) +ReturnValue FakeMotionControl::setPidErrorLimitRaw(const PidControlTypeEnum& pidtype, int j, double limit) { size_t index = PidControlTypeEnum2Index(pidtype); switch (pidtype) @@ -1109,15 +1111,15 @@ bool FakeMotionControl::setPidErrorLimitRaw(const PidControlTypeEnum& pidtype, i break; default: yCError(FAKEMOTIONCONTROL) << "Invalid pid type"; - return false; + return ReturnValue::return_code::return_value_error_method_failed; break; } - return true; + return ReturnValue_ok; } -bool FakeMotionControl::setPidErrorLimitsRaw(const PidControlTypeEnum& pidtype, const double *limits) +ReturnValue FakeMotionControl::setPidErrorLimitsRaw(const PidControlTypeEnum& pidtype, const double *limits) { - bool ret = true; + ReturnValue ret = ReturnValue_ok; for(int j=0, index=0; j< _njoints; j++, index++) { ret &= setPidErrorLimitRaw(pidtype, j, limits[index]); @@ -1125,7 +1127,7 @@ bool FakeMotionControl::setPidErrorLimitsRaw(const PidControlTypeEnum& pidtype, return ret; } -bool FakeMotionControl::getPidErrorRaw(const PidControlTypeEnum& pidtype, int j, double *err) +ReturnValue FakeMotionControl::getPidErrorRaw(const PidControlTypeEnum& pidtype, int j, double *err) { switch (pidtype) { @@ -1166,15 +1168,15 @@ bool FakeMotionControl::getPidErrorRaw(const PidControlTypeEnum& pidtype, int j, break; default: yCError(FAKEMOTIONCONTROL) << "Invalid pid type"; - return false; + return ReturnValue::return_code::return_value_error_method_failed; break; } - return true; + return ReturnValue_ok; } -bool FakeMotionControl::getPidErrorsRaw(const PidControlTypeEnum& pidtype, double *errs) +ReturnValue FakeMotionControl::getPidErrorsRaw(const PidControlTypeEnum& pidtype, double *errs) { - bool ret = true; + ReturnValue ret = ReturnValue_ok; for(int j=0; j< _njoints; j++) { ret &= getPidErrorRaw(pidtype, j, &errs[j]); @@ -1242,7 +1244,7 @@ ReturnValue FakeMotionControl::getPidsRaw(const PidControlTypeEnum& pidtype, Pid return ret; } -bool FakeMotionControl::getPidReferenceRaw(const PidControlTypeEnum& pidtype, int j, double *ref) +ReturnValue FakeMotionControl::getPidReferenceRaw(const PidControlTypeEnum& pidtype, int j, double *ref) { size_t index = PidControlTypeEnum2Index(pidtype); switch (pidtype) @@ -1284,15 +1286,15 @@ bool FakeMotionControl::getPidReferenceRaw(const PidControlTypeEnum& pidtype, in break; default: yCError(FAKEMOTIONCONTROL) << "Invalid pid type"; - return false; + return ReturnValue::return_code::return_value_error_method_failed; break; } - return true; + return ReturnValue_ok; } -bool FakeMotionControl::getPidReferencesRaw(const PidControlTypeEnum& pidtype, double *refs) +ReturnValue FakeMotionControl::getPidReferencesRaw(const PidControlTypeEnum& pidtype, double *refs) { - bool ret = true; + ReturnValue ret = ReturnValue_ok; // just one joint at time, wait answer before getting to the next. // This is because otherwise too many msg will be placed into can queue @@ -1303,7 +1305,7 @@ bool FakeMotionControl::getPidReferencesRaw(const PidControlTypeEnum& pidtype, d return ret; } -bool FakeMotionControl::getPidErrorLimitRaw(const PidControlTypeEnum& pidtype, int j, double *limit) +ReturnValue FakeMotionControl::getPidErrorLimitRaw(const PidControlTypeEnum& pidtype, int j, double *limit) { size_t index = PidControlTypeEnum2Index(pidtype); switch (pidtype) @@ -1345,15 +1347,15 @@ bool FakeMotionControl::getPidErrorLimitRaw(const PidControlTypeEnum& pidtype, i break; default: yCError(FAKEMOTIONCONTROL) << "Invalid pid type"; - return false; + return ReturnValue::return_code::return_value_error_method_failed; break; } - return true; + return ReturnValue_ok; } -bool FakeMotionControl::getPidErrorLimitsRaw(const PidControlTypeEnum& pidtype, double *limits) +ReturnValue FakeMotionControl::getPidErrorLimitsRaw(const PidControlTypeEnum& pidtype, double *limits) { - bool ret = true; + ReturnValue ret = ReturnValue_ok; for(int j=0, index=0; j<_njoints; j++, index++) { ret &=getPidErrorLimitRaw(pidtype, j, &limits[j]); @@ -1706,7 +1708,7 @@ ReturnValue FakeMotionControl::isPidEnabledRaw(const PidControlTypeEnum& pidtype return ReturnValue_ok; } -bool FakeMotionControl::getPidOutputRaw(const PidControlTypeEnum& pidtype, int j, double *out) +ReturnValue FakeMotionControl::getPidOutputRaw(const PidControlTypeEnum& pidtype, int j, double *out) { size_t index = PidControlTypeEnum2Index(pidtype); switch (pidtype) @@ -1748,16 +1750,16 @@ bool FakeMotionControl::getPidOutputRaw(const PidControlTypeEnum& pidtype, int j break; default: yCError(FAKEMOTIONCONTROL) << "Invalid pid type"; - return false; + return ReturnValue::return_code::return_value_error_method_failed; break; } yCDebug(FAKEMOTIONCONTROL) << "getPidOutputRaw" << (yarp::conf::vocab32_t)(pidtype) << j << *out; - return true; + return ReturnValue_ok; } -bool FakeMotionControl::getPidOutputsRaw(const PidControlTypeEnum& pidtype, double *outs) +ReturnValue FakeMotionControl::getPidOutputsRaw(const PidControlTypeEnum& pidtype, double *outs) { - bool ret = true; + ReturnValue ret = ReturnValue_ok; for(int j=0; j< _njoints; j++) { ret &= getPidOutputRaw(pidtype, j, &outs[j]); @@ -2569,17 +2571,18 @@ bool FakeMotionControl::getPowerSupplyVoltageRaw(int m, double* val) // Limit interface -bool FakeMotionControl::setLimitsRaw(int j, double min, double max) +ReturnValue FakeMotionControl::setPosLimitsRaw(int j, double min, double max) { - bool ret = true; - return ret; + _limitsMin[j] = min; + _limitsMax[j] = max; + return ReturnValue_ok; } -bool FakeMotionControl::getLimitsRaw(int j, double *min, double *max) +ReturnValue FakeMotionControl::getPosLimitsRaw(int j, double *min, double *max) { *min = _limitsMin[j]; *max = _limitsMax[j]; - return true; + return ReturnValue_ok; } bool FakeMotionControl::getGearboxRatioRaw(int j, double *gearbox) @@ -2680,16 +2683,18 @@ bool FakeMotionControl::getJointTypeRaw(int axis, yarp::dev::JointTypeEnum& type } // IControlLimits -bool FakeMotionControl::setVelLimitsRaw(int axis, double min, double max) +ReturnValue FakeMotionControl::setVelLimitsRaw(int axis, double min, double max) { - return NOT_YET_IMPLEMENTED("setVelLimitsRaw"); + _minJntCmdVelocity[axis] = min; + _maxJntCmdVelocity[axis] = max; + return ReturnValue_ok; } -bool FakeMotionControl::getVelLimitsRaw(int axis, double *min, double *max) +ReturnValue FakeMotionControl::getVelLimitsRaw(int axis, double *min, double *max) { - *min = 0.0; + *min = _minJntCmdVelocity[axis]; *max = _maxJntCmdVelocity[axis]; - return true; + return ReturnValue_ok; } diff --git a/src/devices/fake/fakeMotionControl/FakeMotionControl.h b/src/devices/fake/fakeMotionControl/FakeMotionControl.h index 46f8b621a69..2b061ed8db1 100644 --- a/src/devices/fake/fakeMotionControl/FakeMotionControl.h +++ b/src/devices/fake/fakeMotionControl/FakeMotionControl.h @@ -216,6 +216,7 @@ class FakeMotionControl : double* _kinematic_mj = nullptr; /** the kinematic coupling matrix from joints space to motor space */ //double *_currentLimits= nullptr; /** current limits */ // MotorCurrentLimits *_currentLimits= nullptr; + double* _minJntCmdVelocity = nullptr; /** max joint commanded velocity */ double* _maxJntCmdVelocity = nullptr; /** max joint commanded velocity */ double* _maxMotorVelocity = nullptr; /** max motor velocity */ int* _velocityShifts = nullptr; /** velocity shifts */ @@ -313,20 +314,20 @@ class FakeMotionControl : ///////// PID INTERFACE ///////// yarp::dev::ReturnValue setPidRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, const yarp::dev::Pid &pid) override; yarp::dev::ReturnValue setPidsRaw(const yarp::dev::PidControlTypeEnum& pidtype,const yarp::dev::Pid *pids) override; - bool setPidReferenceRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double ref) override; - bool setPidReferencesRaw(const yarp::dev::PidControlTypeEnum& pidtype,const double *refs) override; - bool setPidErrorLimitRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double limit) override; - bool setPidErrorLimitsRaw(const yarp::dev::PidControlTypeEnum& pidtype,const double *limits) override; - bool getPidErrorRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *err) override; - bool getPidErrorsRaw(const yarp::dev::PidControlTypeEnum& pidtype, double *errs) override; - bool getPidOutputRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *out) override; - bool getPidOutputsRaw(const yarp::dev::PidControlTypeEnum& pidtype,double *outs) override; + yarp::dev::ReturnValue setPidReferenceRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double ref) override; + yarp::dev::ReturnValue setPidReferencesRaw(const yarp::dev::PidControlTypeEnum& pidtype,const double *refs) override; + yarp::dev::ReturnValue setPidErrorLimitRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double limit) override; + yarp::dev::ReturnValue setPidErrorLimitsRaw(const yarp::dev::PidControlTypeEnum& pidtype,const double *limits) override; + yarp::dev::ReturnValue getPidErrorRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *err) override; + yarp::dev::ReturnValue getPidErrorsRaw(const yarp::dev::PidControlTypeEnum& pidtype, double *errs) override; + yarp::dev::ReturnValue getPidOutputRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *out) override; + yarp::dev::ReturnValue getPidOutputsRaw(const yarp::dev::PidControlTypeEnum& pidtype,double *outs) override; yarp::dev::ReturnValue getPidRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, yarp::dev::Pid *pid) override; yarp::dev::ReturnValue getPidsRaw(const yarp::dev::PidControlTypeEnum& pidtype, yarp::dev::Pid *pids) override; - bool getPidReferenceRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *ref) override; - bool getPidReferencesRaw(const yarp::dev::PidControlTypeEnum& pidtype,double *refs) override; - bool getPidErrorLimitRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *limit) override; - bool getPidErrorLimitsRaw(const yarp::dev::PidControlTypeEnum& pidtype,double *limits) override; + yarp::dev::ReturnValue getPidReferenceRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *ref) override; + yarp::dev::ReturnValue getPidReferencesRaw(const yarp::dev::PidControlTypeEnum& pidtype,double *refs) override; + yarp::dev::ReturnValue getPidErrorLimitRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j, double *limit) override; + yarp::dev::ReturnValue getPidErrorLimitsRaw(const yarp::dev::PidControlTypeEnum& pidtype,double *limits) override; yarp::dev::ReturnValue resetPidRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j) override; yarp::dev::ReturnValue disablePidRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j) override; yarp::dev::ReturnValue enablePidRaw(const yarp::dev::PidControlTypeEnum& pidtype,int j) override; @@ -348,10 +349,10 @@ class FakeMotionControl : bool checkMotionDoneRaw(int j, bool *flag) override; bool setTrajSpeedRaw(int j, double sp) override; bool setTrajSpeedsRaw(const double *spds) override; - bool setTrajAccelerationRaw(int j, double acc) override; - bool setTrajAccelerationsRaw(const double *accs) override; bool getTrajSpeedRaw(int j, double *ref) override; bool getTrajSpeedsRaw(double *spds) override; + bool setTrajAccelerationRaw(int j, double acc) override; + bool setTrajAccelerationsRaw(const double *accs) override; bool getTrajAccelerationRaw(int j, double *acc) override; bool getTrajAccelerationsRaw(double *accs) override; bool stopRaw(int j) override; @@ -370,10 +371,6 @@ class FakeMotionControl : bool getTargetPositionsRaw(double *refs) override; bool getTargetPositionsRaw(const int n_joint, const int *joints, double *refs) override; - // Velocity control interface raw - bool velocityMoveRaw(int j, double sp) override; - bool velocityMoveRaw(const double *sp) override; - // IJointFault bool getLastJointFaultRaw(int j, int& fault, std::string& message) override; @@ -381,19 +378,16 @@ class FakeMotionControl : bool setCalibrationParametersRaw(int axis, const yarp::dev::CalibrationParameters& params) override; bool calibrateAxisWithParamsRaw(int axis, unsigned int type, double p1, double p2, double p3) override; bool calibrationDoneRaw(int j) override; - - /////////////////////////////// END Position Control INTERFACE - // ControlMode + //////////////////////// BEGINControlMode bool getControlModeRaw(int j, int *v) override; bool getControlModesRaw(int *v) override; - - // ControlMode 2 bool getControlModesRaw(const int n_joint, const int *joints, int *modes) override; bool setControlModeRaw(const int j, const int mode) override; bool setControlModesRaw(const int n_joint, const int *joints, int *modes) override; bool setControlModesRaw(int *modes) override; + //////////////////////// END ControlMode //////////////////////// BEGIN EncoderInterface bool resetEncoderRaw(int j) override; @@ -468,11 +462,10 @@ class FakeMotionControl : /////////////// END AMPLIFIER INTERFACE // Limits - bool setLimitsRaw(int axis, double min, double max) override; - bool getLimitsRaw(int axis, double *min, double *max) override; - // Limits 2 - bool setVelLimitsRaw(int axis, double min, double max) override; - bool getVelLimitsRaw(int axis, double *min, double *max) override; + yarp::dev::ReturnValue setPosLimitsRaw(int axis, double min, double max) override; + yarp::dev::ReturnValue getPosLimitsRaw(int axis, double *min, double *max) override; + yarp::dev::ReturnValue setVelLimitsRaw(int axis, double min, double max) override; + yarp::dev::ReturnValue getVelLimitsRaw(int axis, double *min, double *max) override; // Torque control bool getTorqueRaw(int j, double *t) override; @@ -486,9 +479,10 @@ class FakeMotionControl : bool getRefTorqueRaw(int j, double *t) override; bool getMotorTorqueParamsRaw(int j, yarp::dev::MotorTorqueParameters *params) override; bool setMotorTorqueParamsRaw(int j, const yarp::dev::MotorTorqueParameters params) override; -// int32_t getTrajSpeedInTbl(uint8_t boardNum, int j, eOmeas_position_t pos) override; // IVelocityControl interface + bool velocityMoveRaw(int j, double sp) override; + bool velocityMoveRaw(const double *sp) override; bool velocityMoveRaw(const int n_joint, const int *joints, const double *spds) override; bool getTargetVelocityRaw(const int joint, double *ref) override; bool getTargetVelocitiesRaw(double *refs) override; diff --git a/src/devices/fake/fakebot/CMakeLists.txt b/src/devices/fake/fakebot/CMakeLists.txt deleted file mode 100644 index 15e69b9afd2..00000000000 --- a/src/devices/fake/fakebot/CMakeLists.txt +++ /dev/null @@ -1,53 +0,0 @@ -# SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) -# SPDX-FileCopyrightText: 2006-2010 RobotCub Consortium -# SPDX-License-Identifier: BSD-3-Clause - -if (YARP_COMPILE_ALL_FAKE_DEVICES) - set(ENABLE_yarpmod_fakebot ON CACHE BOOL "" FORCE) -endif() - -yarp_prepare_plugin(fakebot - CATEGORY device - TYPE FakeBot - INCLUDE FakeBot.h - DEFAULT OFF - GENERATE_PARSER - DEPENDS "NOT YARP_NO_DEPRECATED" # DEPRECATED Since YARP 3.5 -) - -if(NOT SKIP_fakebot) - yarp_add_plugin(yarp_fakebot) - - target_sources(yarp_fakebot - PRIVATE - FakeBot.cpp - FakeBot.h - FakeBot_ParamsParser.cpp - FakeBot_ParamsParser.h - ) - - target_link_libraries(yarp_fakebot - PRIVATE - YARP::YARP_os - YARP::YARP_sig - YARP::YARP_dev - ) - list(APPEND YARP_${YARP_PLUGIN_MASTER}_PRIVATE_DEPS - YARP_os - YARP_sig - YARP_dev - ) - - yarp_install( - TARGETS yarp_fakebot - EXPORT YARP_${YARP_PLUGIN_MASTER} - COMPONENT ${YARP_PLUGIN_MASTER} - LIBRARY DESTINATION ${YARP_DYNAMIC_PLUGINS_INSTALL_DIR} - ARCHIVE DESTINATION ${YARP_STATIC_PLUGINS_INSTALL_DIR} - YARP_INI DESTINATION ${YARP_PLUGIN_MANIFESTS_INSTALL_DIR} - ) - - set(YARP_${YARP_PLUGIN_MASTER}_PRIVATE_DEPS ${YARP_${YARP_PLUGIN_MASTER}_PRIVATE_DEPS} PARENT_SCOPE) - - set_property(TARGET yarp_fakebot PROPERTY FOLDER "Unsupported") -endif() diff --git a/src/devices/fake/fakebot/FakeBot.cpp b/src/devices/fake/fakebot/FakeBot.cpp deleted file mode 100644 index 93aef32d6a9..00000000000 --- a/src/devices/fake/fakebot/FakeBot.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) - * SPDX-FileCopyrightText: 2006-2010 RobotCub Consortium - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include "FakeBot.h" - -#include -#include -#include - -using namespace yarp::os; -using namespace yarp::sig; -using namespace yarp::sig::draw; -using namespace yarp::sig::file; -using namespace yarp::dev; - -YARP_LOG_COMPONENT(FAKEBOT, "yarp.devices.FakeBot") - - -#define MAXRND 50000 -namespace { -int rnds[MAXRND]; -} - -void FakeBot::init() { - int m_w = 640; - int m_h = 480; - int rr = 30; - - back.resize(m_w,m_h); - PixelRgb w{255,255,255}; - PixelRgb r{128,128,255}; - PixelRgb b{0,0,255}; - IMGFOR(back,x,y) { - back(x,y) = r; - if (y>=m_h*0.75) { - back(x,y) = b; - } - } - for (int i=0; i<=m_w; i+=m_w/10) { - addCircle(back,b,i,int(m_h*0.77),rr); - } - - std::default_random_engine randengine; - std::uniform_real_distribution udist1(-m_w/4,m_w/4); - std::uniform_real_distribution udist2(-int(m_h*0.2),rr); - for (int j=0; j<40; j++) { - int xx = m_w/2 + udist1(randengine); - int yy = int(m_h*0.2) - udist2(randengine); - addCircle(back,w,xx,yy,rr); - } - - m_x = (back.width()-this->m_w)/2; - m_y = (back.height()-this->m_h)/2; - m_dx = m_dy = 0; - - std::normal_distribution ndist(0,255); - for (int & rnd : rnds) { - rnd = int(ndist(randengine)); - } - - fore.resize(64,64); - fore.zero(); - m_tx = back.width()/2; - m_ty = back.height()*0.4; - m_tdx = 1; - m_tdy = 0; -} - - -void scramble(unsigned char& ch, float f) { - int x = ch; - static int idx = 0; - //x += (int)(Random::normal(0,x*f)); - x += (int)(rnds[idx]*f); - idx = (idx+17)%MAXRND; - if (x < 0) { - x = 0; - } - if (x > 255) { - x = 255; - } - ch = (unsigned char) x; -} - - -bool FakeBot::open(yarp::os::Searchable& config) -{ - if (!this->parseParams(config)) {return false;} - - if (m_background !="") { - yarp::sig::file::read(back, m_background); - } - - if (m_target !="") { - yarp::sig::file::read(fore, m_target); - } - - if (m_lifetime>=0) { - start(); - } - return true; -} - - -// IFrameGrabberImage -ReturnValue FakeBot::getImage(yarp::sig::ImageOf& image) { - if (fabs(dpos[0])>0.001||fabs(dpos[0])>0.001) { - pos[0] = m_dx+dpos[0]; - dpos[0] = 0; - pos[1] = m_dy+dpos[1]; - dpos[1] = 0; - } - pos[0] += vel[0]; - pos[1] += vel[1]; - double xx = pos[0]; - double yy = pos[1]; - double dx = (xx-m_dx)*5; - double dy = (yy-m_dy)*5; - m_tx += m_tdx; - m_ty += m_tdy; - if (m_tdx>0 && m_tx>back.width()*0.75) { - m_tdx *= -1; - } - if (m_tdx<0 && m_tx0.5) { - m_dx += dx; - } - if (amp[1]>0.5) { - m_dy += dy; - } - image.resize(m_w,m_h); - back.safePixel(-1,-1) = PixelRgb{255,0,0}; - loc[0] = m_dx; - loc[1] = m_dy; - - double m_dx_scaled = m_dx* m_sx; - double m_dy_scaled = m_dy* m_sy; - IMGFOR(image,x,y) { - int x0 = int(x+m_x+m_dx_scaled*0.5+0.5); - int y0 = int(y+m_y+m_dy_scaled*0.5+0.5); - image(x,y) = back.safePixel(x0,y0); - - if (fore.isPixel(int(x0-m_tx),int(y0-m_ty))) { - PixelRgb& pix = fore(int(x0-m_tx),int(y0-m_ty)); - if (pix.r<200||pix.g>100||pix.b>100) { - image(x,y) = pix; - } - } - } - IMGFOR(image,x2,y2) { - PixelRgb& pix = image(x2,y2); - auto f = (float)(m_noise); - scramble(pix.r,f); - scramble(pix.g,f); - scramble(pix.b,f); - } - Time::delay(0.1); // simulated hardware delay, using mutable clock - return ReturnValue_ok; -} - -void FakeBot::run() { - if (m_lifetime>=0) { - Time::delay(m_lifetime); - std::exit(0); - } -} diff --git a/src/devices/fake/fakebot/FakeBot.h b/src/devices/fake/fakebot/FakeBot.h deleted file mode 100644 index 5d29af088b2..00000000000 --- a/src/devices/fake/fakebot/FakeBot.h +++ /dev/null @@ -1,422 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) - * SPDX-FileCopyrightText: 2006-2010 RobotCub Consortium - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#include -#include -#include -#include -#include -#include -#include "FakeBot_ParamsParser.h" - -YARP_DECLARE_LOG_COMPONENT(FAKEBOT) - -/** - * @ingroup dev_impl_fake dev_impl_deprecated - * - * \brief `fakebot` *deprecated*: Documentation to be added - * - * Parameters required by this device are shown in class: FakeBot_ParamsParser - */ -class FakeBot : - public yarp::dev::DeprecatedDeviceDriver, - public yarp::dev::IPositionControl, - public yarp::dev::IVelocityControl, - public yarp::dev::IAmplifierControl, - public yarp::dev::IEncodersTimed, - public yarp::dev::IFrameGrabberImage, - public yarp::dev::IControlCalibration, - public yarp::dev::IControlLimits, - public yarp::os::Thread, - public FakeBot_ParamsParser -{ -private: - int njoints; - double m_x, m_y; - double m_dx, m_dy; - double m_tx, m_ty; - double m_tdx, m_tdy; - int m_w, m_h; - yarp::sig::Vector pos, dpos, vel, speed, acc, loc, amp; - yarp::sig::ImageOf back, fore; - - void init(); -public: - FakeBot() : - njoints(2), - m_w(128), - m_h(128) - { - pos.resize(njoints); - dpos.resize(njoints); - vel.resize(njoints); - speed.resize(njoints); - acc.resize(njoints); - loc.resize(njoints); - amp.resize(njoints); - for (int i=0; i& image) override; - - int height() const override{ - return m_h; - } - - int width() const override{ - return m_w; - } - - - - // IPositionControl etc. - - bool getAxes(int *ax) override { - *ax = njoints; - return true; - } - - bool positionMove(int j, double ref) override { - if (jacc[j] = acc; - } - return true; - } - - - bool setTrajAccelerations(const double *accs) override { - for (int i=0; iacc[j]; - } - return true; - } - - - bool getTrajAccelerations(double *accs) override { - for (int i=0; i -#include - -namespace { - YARP_LOG_COMPONENT(FakeBotParamsCOMPONENT, "yarp.device.FakeBot") -} - - -FakeBot_ParamsParser::FakeBot_ParamsParser() -{ -} - - -std::vector FakeBot_ParamsParser::getListOfParams() const -{ - std::vector params; - params.push_back("background"); - params.push_back("target"); - params.push_back("noise"); - params.push_back("sx"); - params.push_back("sy"); - params.push_back("lifetime"); - return params; -} - - -bool FakeBot_ParamsParser::getParamValue(const std::string& paramName, std::string& paramValue) const -{ - if (paramName =="background") - { - paramValue = m_background; - return true; - } - if (paramName =="target") - { - paramValue = m_target; - return true; - } - if (paramName =="noise") - { - paramValue = std::to_string(m_noise); - return true; - } - if (paramName =="sx") - { - paramValue = std::to_string(m_sx); - return true; - } - if (paramName =="sy") - { - paramValue = std::to_string(m_sy); - return true; - } - if (paramName =="lifetime") - { - paramValue = std::to_string(m_lifetime); - return true; - } - - yError() <<"parameter '" << paramName << "' was not found"; - return false; - -} - - -std::string FakeBot_ParamsParser::getConfiguration() const -{ - //This is a sub-optimal solution. - //Ideally getConfiguration() should return all parameters but it is currently - //returning only user provided parameters (excluding default values) - //This behaviour will be fixed in the near future. - std::string s_cfg = m_provided_configuration; - return s_cfg; -} - -bool FakeBot_ParamsParser::parseParams(const yarp::os::Searchable & config) -{ - //Check for --help option - if (config.check("help")) - { - yCInfo(FakeBotParamsCOMPONENT) << getDocumentationOfDeviceParams(); - } - - m_provided_configuration = config.toString(); - yarp::os::Property prop_check(m_provided_configuration.c_str()); - //Parser of parameter background - { - if (config.check("background")) - { - m_background = config.find("background").asString(); - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'background' using value:" << m_background; - } - else - { - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'background' using DEFAULT value:" << m_background; - } - prop_check.unput("background"); - } - - //Parser of parameter target - { - if (config.check("target")) - { - m_target = config.find("target").asString(); - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'target' using value:" << m_target; - } - else - { - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'target' using DEFAULT value:" << m_target; - } - prop_check.unput("target"); - } - - //Parser of parameter noise - { - if (config.check("noise")) - { - m_noise = config.find("noise").asFloat64(); - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'noise' using value:" << m_noise; - } - else - { - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'noise' using DEFAULT value:" << m_noise; - } - prop_check.unput("noise"); - } - - //Parser of parameter sx - { - if (config.check("sx")) - { - m_sx = config.find("sx").asFloat64(); - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'sx' using value:" << m_sx; - } - else - { - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'sx' using DEFAULT value:" << m_sx; - } - prop_check.unput("sx"); - } - - //Parser of parameter sy - { - if (config.check("sy")) - { - m_sy = config.find("sy").asFloat64(); - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'sy' using value:" << m_sy; - } - else - { - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'sy' using DEFAULT value:" << m_sy; - } - prop_check.unput("sy"); - } - - //Parser of parameter lifetime - { - if (config.check("lifetime")) - { - m_lifetime = config.find("lifetime").asFloat64(); - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'lifetime' using value:" << m_lifetime; - } - else - { - yCInfo(FakeBotParamsCOMPONENT) << "Parameter 'lifetime' using DEFAULT value:" << m_lifetime; - } - prop_check.unput("lifetime"); - } - - /* - //This code check if the user set some parameter which are not check by the parser - //If the parser is set in strict mode, this will generate an error - if (prop_check.size() > 0) - { - bool extra_params_found = false; - for (auto it=prop_check.begin(); it!=prop_check.end(); it++) - { - if (m_parser_is_strict) - { - yCError(FakeBotParamsCOMPONENT) << "User asking for parameter: "<name <<" which is unknown to this parser!"; - extra_params_found = true; - } - else - { - yCWarning(FakeBotParamsCOMPONENT) << "User asking for parameter: "<< it->name <<" which is unknown to this parser!"; - } - } - - if (m_parser_is_strict && extra_params_found) - { - return false; - } - } - */ - return true; -} - - -std::string FakeBot_ParamsParser::getDocumentationOfDeviceParams() const -{ - std::string doc; - doc = doc + std::string("\n=============================================\n"); - doc = doc + std::string("This is the help for device: FakeBot\n"); - doc = doc + std::string("\n"); - doc = doc + std::string("This is the list of the parameters accepted by the device:\n"); - doc = doc + std::string("'background': background image to use\n"); - doc = doc + std::string("'target': target image to use\n"); - doc = doc + std::string("'noise': pixel noise level\n"); - doc = doc + std::string("'sx': scaling for x coordinate\n"); - doc = doc + std::string("'sy': scaling for y coordinate\n"); - doc = doc + std::string("'lifetime': device should exist for this length of time\n"); - doc = doc + std::string("\n"); - doc = doc + std::string("Here are some examples of invocation command with yarpdev, with all params:\n"); - doc = doc + " yarpdev --device fakebot --background textures/back.ppm --target textures/fore.ppm --noise 0.05 --sx 1.0 --sy 1.0 --lifetime -1.0\n"; - doc = doc + std::string("Using only mandatory params:\n"); - doc = doc + " yarpdev --device fakebot\n"; - doc = doc + std::string("=============================================\n\n"); return doc; -} diff --git a/src/devices/fake/fakebot/FakeBot_ParamsParser.h b/src/devices/fake/fakebot/FakeBot_ParamsParser.h deleted file mode 100644 index 2e6fb414957..00000000000 --- a/src/devices/fake/fakebot/FakeBot_ParamsParser.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023-2023 Istituto Italiano di Tecnologia (IIT) - * SPDX-License-Identifier: LGPL-2.1-or-later - */ - - -// Generated by yarpDeviceParamParserGenerator (2.0) -// This is an automatically generated file. Please do not edit it. -// It will be re-generated if the cmake flag ALLOW_DEVICE_PARAM_PARSER_GERNERATION is ON. - -// Generated on: Thu May 22 11:32:30 2025 - - -#ifndef FAKEBOT_PARAMSPARSER_H -#define FAKEBOT_PARAMSPARSER_H - -#include -#include -#include -#include - -/** -* This class is the parameters parser for class FakeBot. -* -* These are the used parameters: -* | Group name | Parameter name | Type | Units | Default Value | Required | Description | Notes | -* |:----------:|:--------------:|:------:|:-----:|:-----------------:|:--------:|:-------------------------------------------:|:-----:| -* | - | background | string | - | textures/back.ppm | 0 | background image to use | - | -* | - | target | string | - | textures/fore.ppm | 0 | target image to use | - | -* | - | noise | double | - | 0.05 | 0 | pixel noise level | - | -* | - | sx | double | - | 1.0 | 0 | scaling for x coordinate | - | -* | - | sy | double | - | 1.0 | 0 | scaling for y coordinate | - | -* | - | lifetime | double | s | -1.0 | 0 | device should exist for this length of time | - | -* -* The device can be launched by yarpdev using one of the following examples (with and without all optional parameters): -* \code{.unparsed} -* yarpdev --device fakebot --background textures/back.ppm --target textures/fore.ppm --noise 0.05 --sx 1.0 --sy 1.0 --lifetime -1.0 -* \endcode -* -* \code{.unparsed} -* yarpdev --device fakebot -* \endcode -* -*/ - -class FakeBot_ParamsParser : public yarp::dev::IDeviceDriverParams -{ -public: - FakeBot_ParamsParser(); - ~FakeBot_ParamsParser() override = default; - -public: - const std::string m_device_classname = {"FakeBot"}; - const std::string m_device_name = {"fakebot"}; - bool m_parser_is_strict = false; - struct parser_version_type - { - int major = 2; - int minor = 0; - }; - const parser_version_type m_parser_version = {}; - - std::string m_provided_configuration; - - const std::string m_background_defaultValue = {"textures/back.ppm"}; - const std::string m_target_defaultValue = {"textures/fore.ppm"}; - const std::string m_noise_defaultValue = {"0.05"}; - const std::string m_sx_defaultValue = {"1.0"}; - const std::string m_sy_defaultValue = {"1.0"}; - const std::string m_lifetime_defaultValue = {"-1.0"}; - - std::string m_background = {"textures/back.ppm"}; - std::string m_target = {"textures/fore.ppm"}; - double m_noise = {0.05}; - double m_sx = {1.0}; - double m_sy = {1.0}; - double m_lifetime = {-1.0}; - - bool parseParams(const yarp::os::Searchable & config) override; - std::string getDeviceClassName() const override { return m_device_classname; } - std::string getDeviceName() const override { return m_device_name; } - std::string getDocumentationOfDeviceParams() const override; - std::vector getListOfParams() const override; - bool getParamValue(const std::string& paramName, std::string& paramValue) const override; - std::string getConfiguration() const override; -}; - -#endif diff --git a/src/devices/fake/fakebot/FakeBot_params.md b/src/devices/fake/fakebot/FakeBot_params.md deleted file mode 100644 index ace597d8d04..00000000000 --- a/src/devices/fake/fakebot/FakeBot_params.md +++ /dev/null @@ -1,6 +0,0 @@ - * | | background | string | - | textures/back.ppm | No | background image to use | | - * | | target | string | - | textures/fore.ppm | No | target image to use | | - * | | noise | double | - | 0.05 | No | pixel noise level | | - * | | sx | double | - | 1.0 | No | scaling for x coordinate | | - * | | sy | double | - | 1.0 | No | scaling for y coordinate | | - * | | lifetime | double | s | -1.0 | No | device should exist for this length of time | | diff --git a/src/devices/fake/fakebot/fakebot.example.ini b/src/devices/fake/fakebot/fakebot.example.ini deleted file mode 100644 index 00836c81e2f..00000000000 --- a/src/devices/fake/fakebot/fakebot.example.ini +++ /dev/null @@ -1,19 +0,0 @@ -device group - -[part robot] -device fakebot -background textures/back.ppm -target textures/fore.ppm -noise 0.01 -sx 1.0 -sy 1.0 - -[part grab] -device frameGrabber_nws_yarp -subdevice robot -name /fakebot/camera - -[part board] -device controlboard -subdevice robot -name /fakebot/motor diff --git a/src/devices/fake/fakebot/textures/back.ppm b/src/devices/fake/fakebot/textures/back.ppm deleted file mode 100644 index 723fbe43ebd..00000000000 --- a/src/devices/fake/fakebot/textures/back.ppm +++ /dev/null @@ -1,5 +0,0 @@ -P6 -# CREATOR: XV Version 3.10a Rev: 12/29/94 -533 400 -255 -_��`��b��f��h��i��c��f��b��e��g��i��k��o��m��k��m��k��n��r��q��p��p��r��u��s��s��s��r��o��s��q��o��q��p��n��p��q��r��q��n��r��v��r��q��u��r��o��m��q��u��u��t��q��t��q��r��t��p��s��t��t��v��r��t��t��u��t��s��t��q��r��t��u��u��t��u��t��r��s��w��y��x��w��v��x��v��u��r��r��w��v��v��y��y��v��u��v��v��t��w��~��y��}��y��u��w��x��x��{��x��z��z��y��{��x��w��u��s��x��v��t��x��|��|��{��u��x��}����~���逮�~��~���ꁯ�|��{��y��|��z��}��}��}��{��|��y��y��y��|��z��}��}��x��}��{���������~��~�큯끯냱�~������~��~��{��~��{��w�쀲쁯���|����~��~��~��~��~�터쀮ꁭ산쁲���~��|�ꀰ���~�킰��냯�톲�����~�����������~��z��~�����������������������}������퇴톲������������~����������������������������������������������섲탱�텱����������퉲���튴���톴���������������탴쉰눰���튰醲����텳�����퇴������텱���슳����솵퇵�������������������쎲쌳팶����뇴덴퍴틲鍴돳팰�����퍴튲�������������펵��������������튴�������폳늳댳���퍱틱퍴쉱싳���鐵쓷됵ꉶ뒶���싲銲�����銲���쏲苲뉴늲ꊰꋳ닲늱ꊱꌳ싲팵팱捲錳슳덴펱돯꒲뒲데ꐰ폲ꏴ돲쎱됰됰鐰돯쎰폱썰ꎱ�[��b��_��b��b��e��i��n��l��j��j��i��i��j��k��l��m��n��m��o��p��t��r��q��q��o��p��n��n��n��r��r��p��o��r��s��s��u��v��u��n��s��u��t��q��t��t��t��v��v��v��v��u��u��u��w��s��v��t��v��t��u��v��s��s��s��t��v��v��v��t��q��r��u��y��u��u��w��x��x��x��t��u��t��y��w��u��v��y��x��w��v��y��w��u��x��{��{��y��v��w��x��v��z��~��x��x��{��y��}��}��z��{��{��y��{��x��x��y��x��x��x��y��{��z��y��x������|��|��}�뀮산�|��}��~��~���큭���~��~��}��{��{��z��}��w��w��|��~�쁲���|���탯낰냯셲탰뀱�~�뀲��터�����~��}�큯끯킰�~�����}��|��|��~�퀰�~��~�큯뇰탯쁲쁲턲���������~��}�����터탴큯낲���������턲�����}��}���쀱��킰��텳�퇳���������턲��������������클퀲����������������������������������������킳텳�탳�텳���탱솲������������텳������텱톲톲�톳��퇴������������������텴숵������툴���������������������������퍴������팴������������싳�썴���됵쎵쏳펲���폳틳���슴���뉳덱댳����������������슳덴퍴틴쎵쎵쐳펲쎲쐴퐵쌴�팴������ꎲ썱늱숱퓲됳댳싳펱데ꎰ펰팰ꎲ쌳튱쉲ꌵ뇰���퍱틳뎵썴늱ꌳ쌳듰쓱푱썯썱늱ꋲ덱둴썴뎳ꑱ꒱ꐮ�^��a��d��c��b��c��d��g��g��g��i��k��g��h��j��k��m��n��l��m��m��q��n��p��v��r��t��s��o��q��r��o��l��q��s��p��q��q��q��r��r��r��m��q��n��s��p��s��x��w��t��s��s��t��t��u��s��p��o��r��s��p��t��s��s��r��u��r��s��w��u��u��t��u��w��s��q��s��t��u��t��y��u��u��v��t��r��u��w��y��w��s��v��w��z��w��w��w��z��x��t��v��x��v��x��x��w��z��x��x��y��~��y��{��y��y��y��z��s��s��w��y��u��y��z��z��x��x��{��}��|��~�쀮�}��|��{��~��~��y��{��|��|��|��~��}��|��|��|��}��}��}��|��|��}��}��~��{��{��~����~������y��~��|��}��}��~���쀭�}����}��~��~���퀱쁯끯�}��~��}�����낰����탱�}��}������쀱쀲�~�큯�~�����쀰��������~�������퀳�������������������킲���텱������퀲퀲�������������������������톲���������킳텱���퀲����ꄰ텳������탳�����턲텳���������탱큱솲턲탴섲탱샴������텳���������삳큱�������톴������턵���큳툵톲������톲��������������������������������틴슲���쌵퍵������������������쌴�������퉳����튲튴퉳퉳���������팳틴슲틳댳싲뎲싲뇭덳�튱쌳쉲ꉳ텲틳쌳슱ꊲ튱슱苴쉳튱ꈱ鋲틲틲펳ꎲ슱ꍱ덲鍱댰ꍰꏲ썱틯뉰늱싲�a��`��b��f��e��f��d��d��i��k��j��k��j��h��h��k��j��m��o��n��l��o��p��r��q��r��q��r��p��n��n��o��m��m��q��o��l��n��q��q��m��p��p��q��s��q��r��r��u��s��s��s��s��s��r��t��t��n��o��p��n��q��r��p��u��u��r��o��q��u��p��r��s��q��t��p��s��s��q��q��o��t��t��s��r��s��s��y��y��t��u��r��t��u��u��t��s��v��r��v��w��t��u��t��v��y��w��|��y��x��x��{��y��v��x��z��x��t��v��v��y��x��w��s��v��x��z��{��z��{��{��}��~��|��{��{��z��{��{��x��{��x��y��w��x��{��|��z��z��}����}��|��{��|��y��z��{��{��}��~��|��}��|��z��}��}��|��x��|��|��|�킰�}��}��~��~��~��~��~��}��z��|��|��~�ꂰ�}��z��z��}����}��~���쀱쁲퀲�}�ꁯ큮��퀰�}�ꀲ����퀰�}��~�퀲�}����|��|�����삳�������냱탱턲삳������|��~�퀲�|�쀲���|��|��|�����������퀲���������������������턲퀲킳���턲킳큳���퀱산���셱터턲����������쀱삳ꃯ쁲섲큲��삲����터텳큲턵�����킳���������������������������터킳텳큳����������������싲퇰���닲뉳���쎲슲튴������톲튲���뇴튵솳퉳팵튲�톳�����������틳퉱�ꈲ������텱���솰ꉱ싲틲팳슱ꈰ늲튱ꎱ덱텲툲싳슳뉳튴쇰쉳틴솯牲ꉲꉳ퍲錰ꊱꊱ슲튲퉲ꊱꋲ튱ꇱ퇱튱ꊳ뉰鎲쎱데ꊱꊱ숰퉱�`��e��c��f��e��h��d��e��g��i��j��m��j��o��o��n��o��o��p��p��p��q��s��u��p��o��r��r��o��n��n��l��n��k��p��o��n��r��r��q��p��o��m��s��n��t��x��t��v��t��r��q��w��y��t��t��s��o��n��t��v��t��u��s��t��s��p��q��u��p��s��s��u��q��t��u��t��s��u��v��v��w��u��s��w��w��t��s��s��p��s��o��t��w��t��q��s��v��v��x��{��z��x��}��y��u��y��v��x��x��v��u��r��u��r��t��p��v��s��r��v��x��y��w��w��v��t��y��{��|��z��z�逮�~��~��}��|��|��}��}��}��}��{��z��{��x��u��u��{��y��|��{��|��|��{��x��|��|��|��z��|��~��~�����낰�~��~��}�낰�~��}���쁯낮낮끯�~��{��{��}��{��}��}�����쁯���}��~�끲�}��~��~����{��}�郯�~�킰산샴��섰킰��~�������|�큳�����������쁳탱턲킳��������������~����������킴���삲�������턲����������턲����~�����������탱텳킲�����턲탴탴놲톳턵���셳���큲큱�텳�퉳톴킲���샴�����������������퇵�������������톴���쉴뉳��������퇯퉱섰툱��������툵���틴쌵퍶쉳�鎲숲�슲틳뉴덴쌳튲펲쌯猰ꊴ���튳댶��튲팴퉱슲퇴���ꏴ돴鋲錵툰뉳덱닲틳������쑱ꉱ쉲���썱뎲쎲슳눲튲틲퉳튲틲튱쉱슳댳썱덱닯鋲닳폳퐳폴됵ꏳ팰슳덱됳퍯싯늱슱ꌰꐰ됰돯�e��e��c��d��_��a��a��c��i��j��k��l��l��j��l��l��j��l��m��o��q��s��p��q��o��p��r��p��k��i��k��n��p��n��m��j��h��p��k��j��o��p��k��o��t��s��s��t��t��u��s��u��r��r��m��p��u��s��s��q��u��t��q��q��q��l��r��u��y��t��o��q��s��r��p��q��s��u��w��t��x��w��w��v��r��p��p��q��t��s��q��o��t��s��o��k��s��r��p��u��w��r��v��w��u��v��z��z��y��x��x��x��v��u��s��p��p��r��r��q��s��t��t��u��x��w��v��w��~��}��{��z��~��|��{��}��{��{��}��|��w��t��z��y��x��w��w��z��|��v��z��{��v��x��}��~��z��v��y��~��|��{��{��z��|��}��~��{��w��x��{����}��|��~��~��}��~��~��~��z��z��z��z��|��{��z��{��{��}�������~��~���쀱��퀲�z��}��}�퀲�|�쁳���퀱�|��|��~��|������|��{��|��{�킰샱���������~���������|��}����������~����~��������~��~�쁳��������큵������~���������셱큳�~����킳턲살��������������������~�������섲�}�����~�냴퀱섲���}�����큲킳�������탱톴�����큳�������탴���������������퇰����������������������������������턲텳������톲�텳����������싶팵튴�������������퇱퉱�������텳�싲돱담숵쇴�������������탴���썴퇱툱�퇴���툲쉳톴쌳쉴뉶쉰닯늱싲돲ꉱ슳鍲鎰팳쌳ꎵ셴ꉳ튲튲틲뉱쇱눲숲덱덲錱茳�c��d��c��d��c��g��g��k��k��j��k��k��i��k��m��j��n��r��r��p��o��m��p��q��s��t��o��p��s��p��k��k��q��o��r��q��o��q��n��o��o��o��o��s��p��r��q��q��p��r��u��u��q��q��r��r��s��o��i��p��s��q��n��n��n��p��p��r��r��r��s��u��s��o��l��s��r��u��w��u��u��t��s��s��t��p��r��v��r��s��v��v��u��r��t��t��u��q��p��q��r��u��u��r��v��y��v��w��v��v��v��v��s��t��v��v��v��v��u��v��y��w��r��z��z��w��x��z��y��x��y��{��u��v��y��|��z��w��u��x��{��|��}��z��|��{��x��x��{��}��x��y��u��x��}��|��}��~��{��{��z��{��z��{��x��y��z��y��|��}��}��~��{��x��w��{��z��~��{��|��}����{��{��~��~��}��}�郱킰�}��|�끱�~��}��}��~��~��{��{��}��~��}�퀰�����|��|��}��|����������������~��~����텱�����탱큱����냱큲�����~��}��~����퀲���}����퀲�~����~��샴�~�����터텳���킴��퀲킳��퀲�킴큲텳탱턲삲������턲���녱큱���큵���������냴������턲툱������큲탱셳�������������������������������섵턵�������������퇴퇴���퇴������������텳툲쉳�����������������������퉱쇳������솲������솳솳슴닲닲늳鋲鍱툰������쏳폲쎲쌹�銲퉱뉴뉳튲퉲ꌰ쌰퇴튴틳ꌵ늱荴틲눰닲닲덴싳퉴뉳���닲팳슲툰닲錳ꈳꉳ틲팳슱싲댳ꉲꋲ펰펱됰鏲쉱쉰덱�e��e��f��h��g��f��j��h��l��k��j��l��m��n��l��m��o��p��q��p��l��m��p��s��r��n��p��k��n��l��m��s��p��m��n��r��q��s��s��r��q��q��t��t��r��p��p��s��p��p��s��x��v��u��y��u��r��p��o��m��r��r��q��q��q��t��u��t��u��t��r��q��v��u��v��s��q��q��u��v��v��w��x��w��v��w��s��v��u��t��s��v��s��t��s��u��v��v��x��v��x��z��w��t��s��u��x��z��y��x��w��y��x��t��t��t��y��|��x��z��v��v��x��x��z��|��}��z��y��{��}��}��|��z��z��}��}��|��z��|��{��{��|��{��w��x��y��y��}�뀮�}��}��{��{��}��{��~��~������~���큯킰�|��}��{��}�쀰���z��|��~��~��{����~��}��}��{��z��|��}��z��}��~����}���냱퀱산�}�쁱�����|��}��~��{��|��~��~��}�������킳퇰�������샴뀱산쁲�~��~�넲턲���������}����큳�����������}�끱쁲킴���~�탱������~��������큳����섲톳���턲����������턲�샱킲���������텱텱���������텱���텱튲텱퉳냴���퀴���쇰퇰텱퇳������툵���숵������틳셲툶�넲턲����튲鉶탴������퍴ꊴ���늲숵����������톴넲ꌵ틳틳���������퉳튵쌵튲텲톴����쌳쉳튲����쉳튲���튴퇳���덱늰���툲돳펵늱ꍴ담싳팳싳쏳펲퇴댳솳숰닱���덲鋲댳퍲鋳튲퉰눯ꇯ썴틴싴ꋲ錳싲튱썱덱댳썴썱댳싲닲덱댰슳담쏲ꌯ鏯쐮쎱�f��i��f��e��d��g��i��k��n��m��k��o��q��q��n��r��o��p��p��o��q��s��o��m��p��r��r��r��p��o��r��r��k��m��q��p��m��m��n��q��q��p��q��v��s��t��u��t��t��t��v��t��u��v��t��s��l��n��o��p��s��u��r��p��o��p��q��t��s��q��v��t��s��s��p��s��s��r��w��t��w��s��r��r��u��u��s��s��v��o��u��w��q��t��v��w��t��r��s��y��q��r��y��y��u��q��t��w��v��u��r��u��v��v��s��t��u��u��w��{��v��r��x��x��v��x��{��}����}��z��|�뀭�}��z��z��y��{��{��|��x��v��x��z��|��}��{��}��{��{��|��|��{��~�낰�~��z��|��z��z��|��|��y��~��y��{��}��~�끯�~��x��|��y��w��y��{��~�퀰�~��}��~��{��{��x��}����~�낰�~����~��|��~��������}����|��}���{��~�삳��샱�����쀲큳����{�큳��������~�������섰�������탴���큱�����쁳�������}��~�끳�������~��������������~�����������킲�삳���턲��������������������}��������~����������킰섲텱킳탱터텳����턲���솴���������샱큲큳��탴�����������솴����������퉸틳톴��������퇴뇴������툵�����텶���퉳톴�쉱��툱�퇴������������뉱���������툰뉶솳���쉱쌲����퉶����튲���샴솳닲텳텶���텳��늱芴鉱썵���싲낳눵ꎳꈲ섰퉲ꌰꉰ늲������퇴���ꉱ돳튱ꉳ���뎳ꎱ鍲鋲돲ꍰꋯ鎳ꊱ花ꉱ슱쎱�b��d��i��k��g��e��h��k��m��o��o��k��l��p��p��p��l��p��o��n��p��r��r��s��q��q��q��t��p��q��m��n��m��o��m��l��p��o��r��r��r��s��p��o��s��p��p��r��s��u��s��t��s��t��s��s��q��p��s��s��u��u��v��s��t��u��t��u��s��u��t��s��w��v��v��u��v��t��v��u��t��u��t��t��w��t��o��u��w��t��u��w��q��p��u��y��v��v��u��t��r��z��y��w��v��w��z��t��x��x��w��w��w��x��x��w��y��{��z��w��u��u��y��|��z��|��{��{��z��y��~�쀮�}��}��z��{��x��w��u��x��{��|��{��z��{��z��{��{��{��{��y��y��x��z��}��y��|��}��y��~����|��|��}��~��~��}��{��}�큱�~��|��z��{��}��|��z��z��|��~�뀰���~��}��~�퀰������~��|��~�쁵�~��~��}��{��}��}��z��{���쀲����퀲���큳�}��}�����~��}��������������큳���퀰���������������샱�셳���������������������텱���������퀲큲�~�큳���������퀴����킵텲퇴���큳톲퇰톲��셳���������퇶텳��킴슴��������솴���퇴튳늱쇰�숵���������늵숵퍴����������숵�퇵����퉳쇴����������쌳�������������솵튴���퇯쌳튲튲펲썱닲늴쌳슴ꋳ퍴퐵쉳퉳늵쌳�틲튲������툲퇴담싲닲틲팳쌳ꏲ쎲늱ꊳ늲퉱쌴���틲늰���쌴퉳틳팳쉲ꌳ쏳튳뇴퉴돳펲싲닲닲펱됳튱싲닲댰ꎱ데ꎱ�c��e��h��f��f��e��l��j��k��j��l��o��k��o��r��q��q��q��r��q��p��q��o��q��s��u��q��r��m��l��p��q��o��r��o��n��o��p��q��r��p��r��q��r��p��q��t��t��s��q��s��t��t��u��u��v��s��p��o��s��u��v��t��n��q��s��s��o��r��s��p��m��r��w��t��v��u��s��s��u��u��v��s��r��v��{��x��v��w��p��u��t��u��v��v��v��v��y��u��w��t��w��y��y��t��w��x��}��w��u��y��z��y��w��y��x��z��x��y��w��w��x��y��|��y��w��v��x��|��~��~��~��}��}��y��w��~��|��v��z��{��{��}��{��{��y��z��}��}��{��x��v��z��}��}��}��y��z��}��~��~��~��}��~��~�퀱�~��{����}��}������}��{����}����~��}�퀰�����}��~��}��}�������}��|������낵퀱쁱�}��~�샴���텱�|�쀲�~�큳��������{��~������~�큳������퀲턲���퀲탴킰섲������}�����������������킳��������~��쁱�������������������������턲������섰터턲����턲����탴��������킳�탱퇰���퇴툵������������텳���������������튲�������퉳�������쉳����퉲�������퉳튲퉳�����������틳���담쌳슷���싳폳퍴틳�퉲ꈲ숴����튴���퇴팴뉳�ꋴ쇶슴�쌵팵틳퉰뎳ꋲ퉲���툵늴쌳쌳싲팳ꌳ썴퍴틲댴퍱뇲鉴늳닲튲팴쌳쉳쎲쉱쉳튳늱ꊳ댳쌯鐳팰ꊲ틲錳ꊲ틲덲鎱錯鍰ꐰ�c��g��g��e��g��m��l��m��m��o��m��n��p��m��q��q��q��r��p��q��m��p��r��r��o��s��q��p��r��o��m��n��q��t��q��q��p��r��q��q��o��o��n��u��n��m��n��p��r��q��q��s��t��t��q��q��p��p��r��t��u��u��r��q��m��n��q��u��w��r��v��t��t��u��u��r��u��u��r��q��s��v��u��v��w��v��s��s��u��w��w��v��u��r��p��t��w��x��v��u��y��x��w��z��u��u��v��w��x��u��t��v��u��w��y��y��v��v��y��x��t��v��z��|��z��z��z��z��}�ꀮ�}��|��{��}��{��y��x��w��t��y��y��z��x��|��w��w��z��|��|��|��y��y��}��{��x��y��|��~��|��y��}��}��{��}��}��}��{��}��z��z��~��{��y��|��|��~�퀰���z��~����|��|����z��{��~���큳���|��|�퀴�~��{���퀰퀱쀲���퀲퀲퀲큲텳�~�퀲�~��|��}�퀲퀲�~�탱샱��쁵����쀴������넲���샶큳������~����}�������터텳���������턲������킳�����������������������������삳퀲�����������~�샱퇳���턲텱셳텳�}�ꁲ턲���턲���퀳샱슳�큲퀲텳����킳텳�������톲텱���놴���������녶����������������퉶������쉳���덵����������쉱������������쌴덴틲튲퇰���톴뉴넲퇵�퇴퇴솵퇴퉳퉳퉳튱ꍴ뉳툰튲퍴돶팴���텴셳숵숷���쉴뉳뉴뉶쉱ꉲꋳ���늱쌵틲닲뉳튲獴퉱슰쐴썱돳틳팳덲鏴늱ꉰ鋯錳쉴늳덱댰ꊱꋲ뎲�h��i��h��i��j��l��n��o��m��m��m��o��v��q��q��q��v��r��r��q��l��o��q��o��n��l��p��s��t��q��p��q��p��r��p��o��q��t��x��w��v��u��t��y��u��u��r��u��z��u��t��w��s��r��s��s��t��p��q��u��w��u��u��p��u��w��t��t��r��o��u��p��s��s��r��u��q��v��v��w��r��q��r��w��w��s��v��t��s��t��q��p��t��s��u��u��v��v��y��z��{��z��w��x��x��x��z��v��s��v��v��u��u��u��w��y��y��z��{��z��w��v��y��w��|�週쀮���}��|��x��{��}��~��|��{��z��{��}��|��z��z��|��|��{��}��}��~��~��}��|��|��{����|��{��y��}��{��~��~������|������~�퀰���}��}��~��{��y��|�샱뀰�~��~����{��~�퀲�~���섲퇱텲끲�~��~�탯쀱쁱큲큲큵삳퀲�~��}��~�끳���~���냱탱탱톲큲킳���톳셶�������탳���������������������탴톲����������큳��������������쉳���탵������탴샴�������������������성쉱톲�������쇴퇳�������탴������텳����튵슴��������������������������������퍶���������������������������튵쌳�ꌵ튴�����퍶튴�틳튲툲쌴퇴툵��������퉳틳퉳퉴뉲ꋲ닲됳팳틲댳����������펲쉳텲퉳쇴튳�쌳쌳싲덱폳鍴퍱늱ꉶ�������덴댳쎱댳쇴눰댵팳쎵퍴퉳ꋲ늲퍴쐵쑴쌱茳쎳ꎲ쏳퍱늱ꊲ튲퍱퍱뎱�f��h��h��j��i��i��j��r��o��n��m��n��u��w��v��q��r��p��u��t��t��r��q��q��m��n��s��p��p��s��q��n��p��s��u��t��r��s��s��u��u��u��u��v��r��q��v��u��t��r��p��t��u��t��s��t��u��u��x��t��s��r��t��v��v��u��s��t��x��u��x��v��y��w��z��w��v��t��s��w��z��w��w��u��t��u��v��w��u��u��x��t��x��u��u��r��w��v��x��x��y����z��v��x��{��t��|��z��y��}��{��y��y��w��v��y��{��{��z��y��{��z��|��}��}��y��|��|��z��{��{��|��y��}��|��{��z��z��|��{��|��{��y��|��~��{��|��|��}��}��}��~����}��~����~��|��|��z��z��}��~�����낰쁲��쁲큲�~��~���퀲�}��}����}����}��~�焲�~��������턲���~�쀰���}�큲퀰톴�������~����������{�����삳���텱��������큵������킴��}����셲큳���������������������������������������������턱�������톴������������������������������툴������쇴성ꆲ�����~��������텳������킲��������������톳ꉳ������툴������퉶튴����탱텳����������댳싳��������퉳틳���쌵틵�ꍵ釴늲���튱ꉶ�����������������ꏶ퍴튲����������댴���돲ꍴ퇴�������숱�������������쏶팳썴폳���튵쌳닳����티犵쌴댳싴쎱鍴툵���퍸ꇴ쐴쏳푴싳���ꐳ돴鎵쉱쏳펲숲쌳ꏴ돴돴됳듲됳퍱돲꒲돴덶썴뎱璳鎱�f��h��k��k��m��n��l��n��p��n��o��o��p��r��r��p��p��t��t��s��p��r��q��p��i��m��t��k��n��r��r��p��p��l��n��o��t��s��r��s��t��u��u��u��s��u��v��t��u��t��r��o��r��t��s��r��r��q��s��r��s��q��s��s��q��n��s��s��r��r��p��p��s��t��u��u��v��w��t��v��t��v��w��v��q��r��u��s��n��s��p��t��w��v��w��x��y��y��v��x��|��{��{��x��{��{��{��z��x��z��v��v��y��v��w��w��w��w��v��y��~��|��}��}��}����{��{��z��y��z��|��|��|��|��}��}����}��z��{��{��z��|��~��|��|��}��{��w��{��|��}���낰���{��x��z��z��z��}������}�週�~���산산�~��~��}��}��}������{��x��x��{��~��~�산큱���}�킰삳탱산쀲���~��~�큳삳��퀴�~�퀴�����퀲큳킲���z�끳큲킲�������퀴��큵텳�~����}��������큳��퀴����~���������������������~�������������턵�큳������������킴���탴���턲톴������������녲냱셳�����������������������������������������쇳���퇴틳������������������������������������틴쉶�������퇴퉳퇴솵툵������������틳슲����팵폶눷����댴鉴鉶늳늳댵튱ꉱ쇴퇴튲폳팳싴쌶���툵쇴늴�팵펲싲뉳늲틴습싴쎶ꎵ슲틲틲댳퇴튵슱ꎲ싯鐴싲닲덴팳쏱�k��k��k��l��g��g��o��n��n��o��r��p��r��p��r��q��o��q��q��r��u��r��r��q��s��r��p��o��t��u��r��q��v��t��r��s��s��w��v��v��u��s��u��w��t��u��x��v��s��w��t��t��q��u��u��u��q��q��p��u��r��s��u��v��x��v��t��v��t��s��s��v��z��w��w��v��y��y��r��w��u��w��x��y��u��t��t��y��v��z��w��s��u��x��y��w��w��x��w��y��z��y��t��t��u��x��z��y��z��x��y��y��z��y��x��z��z��|��y��z��w��x��{��x��z��|��}�끯�~��~����~��������~��}�낰�}��}��~��}��}��|��z��y��|������������}��z��~�냱탯쀱쁲큳�~�낰성셲탱��쀰���쀱�~�ꅱ끳�}���쀲�~�큳�~��쀳��퀲���|���킳낵����탱턲쁳�}����턵���������}��|�큱���섵��������������������킴���������탴��������~�턲�������������������������툵���텳����������������킳텳������탴������퇴�톲�������������������퉶�����������톳톴��������������펵�����������������������퍵��������튲팴슳닳틲퉱������������������쌵팴���������퉳���튴팳ꍴ튲튴쌳팳�팳틴쎵덴됴됵썴틲댳슴싴ꌵ틳�������쌳슴퍴퍴틳덴퉱���돲쎲쏳퐴���쌲�������ꌳ싴쎵쐳펳ꋳ���ꏱ뎳ꋲ돳퍱뎱鎱鐳듳쒲�i��l��k��i��i��l��o��p��n��p��r��q��s��v��u��s��s��t��w��u��s��p��s��u��p��o��p��p��s��q��t��u��s��u��t��s��q��p��v��u��v��t��u��s��u��s��q��s��s��r��q��t��q��n��t��s��s��r��q��q��t��w��w��s��w��u��t��w��w��t��t��v��s��s��w��u��w��x��{��v��v��x��w��t��z��y��{��|��z��x��u��y��w��u��z��x��w��x��w��{��x��w��v��y��|��}��x��y��z��y��v��v��w��v��y��y��|�쁮�~��~��}��|��}��z��z������~����~�쁮逮�|������{��z��|��|��}��|��}��|��~��}��}���큯�~��~��}�遯�~��}��~��~��|���큯���}�ꁲ퀱���|��}��~����}�뀲�킳퀳쀱��뀲���{��|���킳��쁴퀳쀲퀱냶퀴�~�탱쁲큱��������킴�~����|��}���퀴�}���������큳����������킴톴��������������������������톴�������냶툵�����������툲��탴���������퇴텶�����������퇴튲팵퍵���툵�������퇴퉳퉳툲����������������쏳팴�덶���������슸���퍵������툵튵숵�������튲퉳퉳틵펵쌳鎵������팴�����툵틴쉳팵퉳톳펵������쌵늵숵���틶퍴뎵쏴錵덶쎵�����������솵퉳튴툵퐵썴펶�됴����팵鍵銵숵���뎲슳늵썴팵팳ꎳꌵ팶���퐳돴댵뎲쌳쌴���싵퍴튱ꋲ덴팳쏳펵썴둶�k��l��m��n��p��q��o��r��p��r��v��q��s��s��q��q��s��r��q��s��t��v��v��x��s��t��s��q��t��s��t��s��s��t��t��u��v��t��t��s��v��w��v��t��v��u��q��r��q��r��v��v��v��u��u��u��s��t��w��v��r��t��t��x��w��u��r��u��v��u��s��v��x��y��{��w��u��t��u��x��{��y��y��y��y��w��y��z��u��x��x��v��t��x��y��y��y��z��y��w��w��v��w��z��|��}��v��w��z��z��z��{��y��y��x��|��y��|��}���큯���}��}��}���킮끭�|��{��~��~��x��}������}��}��~��}��}��|��|��z��}��|���쀱���|�逰삯����|��|�쀲���|�쁲��퀰���}��|��}��������~��{��{�삲������~��~�퀰������~���턵쀳쁳���큲탱�����끳텱��퀴킳�������턲�}������������������탱킳�����������������������������������������������������������통톴������������턷쇶�����턵���퇴톳�������퇴�����������톳쉱�������숵슴���������쌵퇴틸쉶���싶퇴퉶쐵쐴팴틶퍴���숵�����������팴鑶댵팶���珳ꊵ쌴������튴����썴닳틳�����썴틲팳���������습ꌵ틳���틳덴틳댵팵튵싶늵ꍶ퉶팲����ꎵ쌳�퍵���튳����슴싴쌵팵틲됳튲틶틴쎱닲퐳펲쐴쌵펶ꏴ늴댵퍶썲鑴ꊱꏳ폳퐳뒵폲莳ꌳ펲�p��m��n��q��p��n��q��t��t��v��x��v��w��x��x��y��w��u��v��u��u��x��t��v��t��q��s��r��t��q��o��r��r��s��s��u��x��y��v��u��t��u��t��t��t��w��t��u��t��s��u��t��v��v��x��v��x��w��u��v��x��v��v��t��v��v��x��w��x��w��x��z��w��u��u��w��v��t��t��x��{��w��x��v��v��u��y��z��w��u��s��y��u��u��x��x��z��x��y��t��v��y��x��w��z��z��w��z��z��y��z��x��{��y��y��z��z��z��~��}��~��~��{��~��~��{��}��|��}��~�쁭ꀬ逮섭�~��~����~��~��~��}���퀱�|�聯�~��}�쀱쁯뀱�|��~�ꅱ��������~���끳탱탱퀱산산쀱�������~��}�뀰�큯냱큲킳큯낲�~���턲���퀲킲����~����|���킳����~�쀲턲킳�~�ꅶ���킴������������������������������������냶������탱킳킳��뇵���툰뇴���쉶����������������������톴������������������������������셳���������������튴����������턵툵������텳���������퇴퍵��쌵퍶튵쉶����������틳���������닲눶��������������쌷썴덵���쉳������������퍴팴���퍴����튴퐵쌳쌵폶펵댴玵틴싲튲튲펵싲퉳�썴������덴툵틲댵팵펵썴됵쐵쐳돳틲퐴쐵쎵썴폶쑵덴펵ꌳꋶ틵쏶틲鍴덴댳ꏶ쌵펵슲퇳���펵쎶鐵ꍶꉶ툵튳댷���덶데莵쐵ꑶ폳폶쎷퐵썶쎵쑶퍴돳푴쏳퍱덴닲늱ꋲ덱돲쑴쐵쑴�n��q��q��q��s��r��s��u��u��u��v��v��t��u��t��t��o��s��t��s��w��v��t��t��q��t��t��t��q��q��s��v��v��u��t��t��u��u��t��v��s��p��m��u��u��u��v��x��q��r��s��t��o��q��t��u��u��x��z��x��w��u��u��w��u��u��u��u��w��w��y��w��v��v��x��r��t��u��u��u��w��x��t��t��v��w��u��w��v��t��u��u��y��w��x��w��{��z��y��z��y��z��}��{��x��x��{��{��{��z��y��x��{��{��|��}��y��w��|��~��}��|��}��|��|��}��}��|��}����{��}��}��}��}����}��|�쀱��끯���}��}��~��}��}��|����~���삳큲큱�~����}��}������~��~�쀲��킳�~�쁲탱쀱쁱�~�퀲큲탱���쀴�����������������|����셳�����퀲클����톴�������������������������������������������툶��������������������������삳���텶���톲�������������������������������������������������������������퇴퇵�������썵�������������숵������텯錴�������������������펵튷���틵��쌳싵����������������뎷덴퍴퍴팳썴틳쇳��������������튴���������퍴팵틲늱ꈲ���팴�틳���듸ꎵ쌳쎹���퍴틵펵���뎵펵ꍴ뇱덴펵퍴튲퍴퍴팳쌴펵틵퍴펵쌴菷뎵쎵썶쌵펳ꐳ돴됵썲琵쌳쒷鏴鏴뎳ꐵ쐴폴덱둶푶ꐵꋴ쏳폴錵鐵�p��o��n��m��n��p��q��p��w��u��v��r��p��t��x��w��r��r��s��u��t��u��t��s��r��q��q��o��r��v��x��t��s��v��u��q��u��v��w��v��u��u��t��t��u��p��v��v��v��v��w��t��s��s��r��r��s��r��u��x��t��u��x��y��{��|��w��v��v��y��w��x��u��t��v��z��w��z��y��x��y��z��y��v��u��w��{��z��x��y��v��w��z��{��z��{��|��z��y��y��{��y��z��z��~��z��{��z��x��y��z��{��|��~��|��}��}��~��{����|��{��z��~��}��{�뀰�~��}�ꀱ�}��}��}��|��{��}��}��|��|��|��~��|�逰��퀱쁯끯끲퀱녳��ꀱ쀲�~��}�큳���큳�~����~����|����킮넲���}�����~����}�����퀲퀲킴����������}������������������큳����킳큳탴������톴����쇴퇵��������������퇴탴�����샱퇵�����������������������������������툵�������통툶���������������������눵���������������������숵�������������틵����������������������싵�����������������틳�������펵썴펵���트싶펵쏶풵퐴������돶팵덴툵���퉶�팵틵쏶퐸쎵툷ꎵ쌴팳쎵폶���쎵싴쌶������������퍶틴쌳����풷퍴퍴팴��������퍴푶펶ꍵ�����썶쎳蒵뎲쎵���담쌳퐵쑶푵쒵풵펵쎵썴퍴퐴담쎵돴둴쒳萳둴쓷딵蔵ꕴꖶ锳钵�n��p��o��o��t��u��t��v��w��t��p��t��v��w��u��u��x��x��w��u��t��u��t��s��q��t��s��y��t��s��u��t��u��r��s��u��t��q��q��s��v��u��t��y��z��w��v��w��w��v��s��p��s��t��t��p��p��t��w��w��v��w��x��w��y��y��x��w��x��w��y��v��v��v��z��w��{��z��y��x��w��y��x��x��y��y��z��{��x��x��v��x��}�怭�y��y��{��{��{��{��}��{��y��{��}�뀭�y��~��w��w��{��|��}��z��z��z��~����}��|��|��}���큯�{��~�쀱�}��{���낰�}��y��{��|��|�邰쀮�}������}�낳쀮����쀲�|�耰�����쁲큯뀰�����|�쀲�����퀲퀲������턲�����큵������턵������탴���킴�~����샳���������������퇳������������������������������������������퇶�쇵�������������������������통톴���������톷���������������������������������������������턶늹퇳��������썵��������������튴������������숶���퍵����틶팵퍵���������������팵뎵퐴ꌷ���퉶���폳틴쎵퉶���팴틹퍸���펵��튴����쌵틴쎵펵쏳푵팵폶폶팳슴퍴폳퍴퍶퍶ꑴ쏸鎵���폶퍴돶퐷쎵팷썴댷쐴쌵돳푶팳ꍴ덶퍵����쒵퐳뒵퓶���쏶펷퍴됴쌴荴댳ꎶꑶ푶푶둴ꓶ앶鐳钶ꔵꕴꕶ앶울웷閶�p��o��r��q��s��u��v��r��v��w��t��r��y��v��t��x��t��u��v��u��u��w��u��s��s��s��v��u��r��s��u��s��u��s��v��v��v��v��r��s��r��s��s��s��u��y��x��t��s��s��v��u��u��t��t��s��o��p��s��v��x��z��u��q��x��w��v��t��u��w��u��v��w��y��y��y��v��v��z��y��u��w��y��y��y��v��v��w��z��{��z��{��x��|��|��y��x��y��z��{��{��{��v��x��{��~��{��y��t��y��|��|��{��}�뀮�z��y��{��{��|��y��~��}��}��}��~��}��~��{��}��~��~��~��~��~���낰���z��~����~�끯뀮쀮鄲��뀲�~����|�쀴킰���퀴�������삳��쁳����}�퀲�~��}��}�탵�����퀴������킴�������������������������텶����ꂷ낵샴������������섵������탳��샵������������������통퉶���������������섵����������텳����������턵�������������������퇶퇴����튴����������������������튷�������텶�������������������늴�������������팶���펵튴�����������������������썵���팶���싸쉸���쌳���썵�������쎷퍶쓳쒷쑶퍶�������됵썴���������뎵푶퐸쎵슴썴뎵�썶팵델���퍶쌵퍵����숵쎷쐵쎵슴���펵싶덶쑶펶ꍶ썴뎵팵폶푶둴쐵쐴뒵둶푴쑴쏳퐴펵썶쎵꒶ꐵ鎳ꐳ뒶ꔸ쑶돴뎳ꏴ镵ꗶ웷頻Ꞹ�o��r��r��s��u��s��s��u��v��v��v��t��y��x��v��u��v��u��u��u��v��t��q��r��u��v��t��u��w��v��v��w��y��v��v��u��{��{��v��v��{��y��r��v��w��x��u��v��w��r��s��v��u��s��w��w��v��w��y��w��x��x��x��y��u��y��w��t��u��z��}��~��x��x��x��~��x��v��z��{��y��z��y��y��y��z��{��{��y��y��w��{��v��z��~��|��w��w��z��z��|��|�聯퀬�}��{��|��|��y��|��|��y��w��~��|��|��}�큯��퀱쀱����낰쁯뀱�{�����쁯낰�~�ꃱ킮냯쁯�{��|�쀱����킰�~�����쁯녮샯��뀲퀱삳�~����킲���킲������킳쁲퀲큲큲킲����~�ꃱ�����턵살���텳�������툶�쁲턵����������������������퉶�����������������������������������������������툵��������������������������툵���������������������������������퇴툶��������������닶뉶퇴툹�����툵�쉸�������������������������������쎵������튴���������������쎵썸퍶썶쎹������틶팵퐹쏶팳ꐷ�������썵������썶���쌴쎶ꏸ퍵�����������썵���퍶쏷뎵쎵쎵틲뎵���������폶퍴펵�델튵싵�폶쑶풵퐵쎵����퍴퍶쎷펵뎷풵뒵됸쐵鐵쑵돶푹푶뎷튷푹펵쓸픵둶떷픵둶뒷쑴ꑶ뎵쌳쒵픵ꔵ딵됴撶ꑶ폴铷됳鐵꒵뗷ꝷꢸ硹霶�p��t��u��{��v��w��t��t��y��{��y��z��t��u��u��u��u��u��r��s��v��v��v��u��t��v��w��y��x��w��u��w��y��v��s��v��w��v��v��v��w��z��t��p��q��s��r��w��z��x��u��t��w��u��u��x��t��u��y��x��u��v��z��v��y��v��x��y��y��{��y��y��y��x��w��y��z��y��y��z��~��y��x��w��w��u��r��w��{��|��{��{��|�耮�|��{��}��}�뀮�|��|��z��|��}��|��~��}��{�쁯�|��|��|�끭ꂮ�~��|�뀮ꂮ�{��|�뀮���}�ꀱ샯산���~��~��~��|��~���}��}��y��x��~��~�쀰킳쁲��녴쁲�{�逳쁲킳���큲��쀴셳킳킳탱턲탳�킳�����������톴�����킲�������툶�톴�������큶셸텶퇴��������������������������튷�����툶��턵����������������������������������������������������팶����������鐳덵�������������툶����������툷����������������팵팷����퍵����닳�������퍶쌵덶쎷틵�승����틳��담썸�����������퍷�튷��������������퍶������쐵쏶펵������썴푶폶茳쏸���쎵���폶푼�틳���덴됵쑶퍴늴����������둶푵됵ꓶ쒷쓸폶퍴펳ꎵ��팷ꑴ툵숵���ꍶ썵钷돷萸뎵썵������쎵쑶ꐵ鏶펷ꑶ듶앵듸쒷딵떵뙷阸둴ꑶ듸쒶ꕴ듴꒵풵푶딵ꓴꔵ딵뒵뙹Ꞻꝸ睷蛴�u��u��x��x��s��q��r��r��r��r��q��t��u��u��s��u��u��u��v��s��u��s��t��t��y��v��t��u��u��v��t��v��u��v��w��v��{��w��v��w��v��w��w��u��s��v��r��r��v��w��t��v��w��v��v��w��w��x��v��y��v��v��y��w��x��z��{��z��x��u��y��v��x��y��{��y��{��w��y��{��}��{��{��|��y��z��z��}��y��{��{��~��z��{��|��|��}��~��~�逮�}��z��y��{��z��~��{��|��|��z��~����}��~��|��~�뀱샯���}��~��}��~��}�뀱쀱��쀱����퀱�~�뀲��뀱�~�ꀱ쀰�}�뀰���~���샱큲�~�쀰텱�����~�삲���큳�����샴탴�~�낰산삳�~������킳큳���������������킳���������탶������������������������������������������������������������퇵���������������������������������������������������������툶����������������������������������������������������������������������팴����������������������뇵���������������튷튴���������������퍴���뎳ꍶ���댴둶ꐷ썸퍶쌷������틶늷�댴��������������������������펷펷팵퍴푵싴싵ꐷ���튴���쑶펷돶퐷편ꏷꎷ펷둶폶펵싳슷퐷ꊹ팵폶푹팷틵�폶퍴델퍸듶쑶됷쏸씸엶왷雷隸씸쓷땶땴ꓴꓶ쑶뒵듴꒵둵铷뗶옶웶띸ힸ靸眶�q��v��y��z��w��t��t��u��z��w��u��v��v��s��q��t��v��u��v��u��u��s��u��u��w��v��u��t��x��z��x��x��|��|��{��z��w��y��|��z��|��z��~��~��w��z��w��v��v��x��w��w��y��y��x��v��v��|��y��|��{��y��w��x��w��z��y��y��|��|��{��y��{��y��y��~��|��z��{��y��{��~��{��y��x��|��|��z��z��x��|����{��x��{��}���낰쁯���}��}��}��~����~��|��|���퀮�|��{��{���쀮ꁯ끭ꆯ킮끭ꁯ낰셳�}��~�낳��뀱쁲킳킳쀲퀱샱쁲�}�샱텳낰��녲큲삳턱샴녳킳킵쁵낳����샱�~��������탴텳����~�����텶��������������������������������������������툶������������������������������������������������������������������������������������������숵���������펵썴퍵������틶퉶���������퉶����퉶쇹���펷����폷����������������������������쒶�鑸����펷퐷쑶닳�팴�������폶쐵쑸�툷�틵��퐸쌵펵���쏺펷퍶���퍶쌵편�쏶폶����폳펶�퉶�싸�펵쑸펵쑶풵폶퐸쐷쒷쐸쐸쐷풷둵쏶풵둶덴펵쓷듶쑴쒵풷쐷퐷폸둵鑵锸쑶ꎵ쏸���폶퐵ꑶ뒷쑶둶둶뒷쐷얺馾頺떷ꖷ왹인혶藵痷藷ꖷꔵ뒵땶옶ꟶ訽ꪽ襺奻꡸�s��r��s��s��x��w��w��v��w��y��v��y��x��z��y��u��s��w��u��t��v��u��u��u��y��z��w��q��v��x��{��{��{��z��{��|��z��{��v��v��z��z��y��z��x��v��w��w��u��w��x��t��w��y��}��|��{��z��z��}��z��x��u��v��z��x��y��y��y��y��{��z��x��x��{��z��}��}��{��{��{��z��{��|��~�聭�}��{��|��{��{��~��{��|��|��z��~��~������~������}����~��}��~��}��~��}��~��|��}�遯큯뀱산ꇱ턱산쁯넱쀱쀲�~��~���쀲킰산��쁴큳�~��}�끳������~�퀲퀲큲턲쀱쀲��쁴냴�}�큳���텳킵�셳���섵톴�킳툶������������������������������툵������늷�����������������������������������������������������������������������������������������쎵��������������������������������퉸��������������������������튴썸펷���������퍸��������펵쐷����������������퍵��������틺��������쏶����뎷���폶���틴ꋵ뎵쎷됷쐹���돶퓸폶쒵풷풵퐵쌵펷���뎷둶됵쎵쏶펵쐵쎵����쑶ꏹ돶풵핵폸퐸쐵ꓸ풷펵뒷쓸풷쓸폶퍴폶팷둶덶둶뎵쏶폶퐷폶푶푶퓸호럻ꤿ즼럻꘺ꙷ���쥻ꝸ矺陸癹ꓷ锵ꖵ옶읷꣹ꪽ謽詼离蟺�w��w��v��s��w��y��v��v��x��u��u��x��y��v��v��w��y��}��y��u��z��v��v��t��t��u��u��t��w��x��z��y��{��|��{��{��z��w��w��w��w��u��v��x��w��w��x��x��w��v��u��t��w��w��w��x��y��y��w��x��y��y��|��{��z��}��y��y��z��z��z��x��z��{��~��z��}��z��y��{��z��y��x��x��v��v��{��~��~��{��}��}��|��|��~��~�ꂰ뀮�~��|��}��~�끯끮�����|��~��~��~��}��}��}��~��~���쁲킮넰퀱뀱냱샱킰샱탱큯뀲�~�샱���}�뀴��쀲퀲큲퀰��삳쁳���텳����턲섵퀴���턵������섵������������������������������������������������������������������������������������������������������������������������������������������������������������������������퉶������������������������퍸����������������������팷퍸퉶������������������������������ꌷ쉸��������폶퐷푸������펷폶펷폶쏷돸쌵鏸���퐷�쐵꒺폶푶퓶�풷둶돶퐹쒷썶슷����팷푶픷펵쒷폸쎷퓶�쎷됹펵쐷�펷폶풷쒷쐵쎵쏶푶퐸쒷쒷쑶풵뗶옷휷잺잽욺霸蠺뤼잺陹ꙹ왹왹욶薷얶陷頻ꤼ覻榽磻飹Ꞹ�v��v��x��y��z��y��|��}��{��x��{��y��x��u��u��v��y��}��z��w��u��u��v��u��u��w��z��x��y��{��{��x��z��z��{��{��{��y��|��~��z��v��y��w��v��x��x��z��x��x��{��z��y��x��x��x��|��{��y��y��{��}��{��z��w��y��}��}��}��~�倩�}��z��{����|��|��{��z��y��{��{��|��|��~��|��|��z�悯ꁭ�|���끯�}�遯뀮���|������~��z��~��|�遲�~�ꀬ�|��}��~��~��|��}�����}��}�ꁲ텱녲끲쀲퀲퀱산섰터탯삳��쁳�}�邴�~�샱턳낵쁲삳���녷샴섷섲턴��툵쉴눵����쀳삳턵���������솵툴���������������튴������텶팴�������틵����튷������������������������������������������튷����쉶튷����������폴눵���������������������������������������쎷쉸������튷�������팶�����������틺�������菸������펶ꓸ팷������틹편�����푹풷쏸������펶�����������쏶펷��편����쐴폶틵�쓸폺쒷쐸씹쐸����푶ꏶ푸�뒷뒷쑶풵푵돶풵씴핳펷델핶돷뎷퐷ꐸ쐸쏷덶쎷펶��픵둲获됸쓶쓶쓶쏴錹����돶햶ꏷ덶��퐷뒷쏶폸쑶뒵뒷쓶쐷ꖵ떵뙷홷홷랹렷鞺웹횸왷陷陷뗶왷흸ힸ룹觼饺颺蝹韶ꜵ�t��x��z��v��v��y��|��}��w��w��t��v��v��v��v��w��w��|��w��u��x��x��x��y��z��w��z��w��{��|��x��v��w��x��z��z��z��{��x��z��v��w��z��u��r��t��y��v��x��z��w��y��|��|��z��x��z��~��|��{��}��z��z��x��|��y��z��z��v��w��y��|��{��z��x��z��|����~����~�耮�{��{��}��}��}��{��{��~��|��~��{�惴�}��|��}�쀮샯쁯낰쀮��퀱�~��}��{��{����}������~�遯뀱���}���삳탱샱삳킳�}�뀱셱퀲큲탱큲퀱샱턲쁱��쁲킲���킳���탴����~�������������섷����������삳킶턷���������������������������������������������������������������������������������������������������������������퉸�������������������������퇵���������������������������������������������������������������������������퐷���������������������������������������쐷������������������������������틵���������쎷퍸쎷폶퐹퐸쑹폸��푺펷폸���퐹퍸튷������팷��썸퍸퐹���������풷쐸쑶꒶ꓸ푶폶�폸쎹쏶퐸쒷듸팷�뒷쓸쑹퍸�쒲퐵ꓸ풵풷쐸쐷���쏶팳쎷풷둹퐸쒷쐸쓸푶폶펶�앶땶딷풷쒶꒷쐸쓸햵옸뜺죾릻襻꠻ꚸꙷ뗶왷뜶盺雺陹蜻ꟻ렷鞸뚶蛶땶�u��v��w��u��w��y��y��y��w��u��y��x��x��z��z��x��z��y��u��x��z��y��y��w��v��w��z��x��y��{��v��w��w��x��y��z��x��x��x��{��|��x��x��|��w��w��z��y��w��y��{��{��y��x��y��{��x��x��z��z��y��x��z��y��y��y��|��{����~��|��}��~��~��{���났���{��~�ꃭ酭���~�聭ꂫ��耮�}�遲�~��~��z��{��|��~��|��~�ꀮ�}��~���뀬끯��뀱��뀱쁯뀱�}��~�쁱��끯뀰��냴퀱냱삳큳��냴��ꀰ샱퀱쀲탴�~��~�낳킳냴���������퉳툵���쇴톳숵����숵�퇴��퇴���������������������������������������������������������������������������������������������������������������������������������������������������������������������펵���������퍶���������������������������������������쎹��������������������������폸�������������펵���������됸쎷푸풷쏶풹����쏸쏸쏸ꏶ푹쑹쒷쓸쏸썸퍴돶폸����픵딴푸�폶폶풷쓸퐷ꑶ듸��팷����퐷둹푹폶퐷퐸쎵얻�뒵햷쓶쓸풷쒷��뒷둹쑹헸헶쓸푹퓸쓶픸씸Ꜻ젼쥽馽韼蛻ꙹꙹꜸ꡸꣹ꢺ꡼띹霸Ꜹꖵ떷얶陷떵�{��x��y��x��z��z��z��~��u��s��w��w��w��v��u��x��z��{��z��z��{��z��v��x��z��z��w��w��y��w��y��~��~��x��v��x��x��}��|��y��x��x��w��x��|��|��x��u��t��w��x��x��y��y��|��}��}��|�怪�}��y��z����~��~����|��|����|��|��{��y��}��~��}��~����z��{����y��y��{��z��z��|���聯��遰�}�炰낮�~�ꂯꄭ녮쁯큯�}��~���뀮ꀬ鄰탯�~�끲쀱낯脱ꃱ쁯녮쇰터탱샱쀱삳킳넳끶��ꁲ탱���~�쀴���퇴킰녳��넲톳셴섵퀲牳퉳������턷ꃶ톷텶���눵성솴���쉳�������������눷툵�튴釴톴������퉸���튷�������턲�������퉶�����������됹����鉸�������������팵팷����������������덶쏶���������������폶�����������������틺������썵�����������������������������������������팵덷����퍶����������폸���쐷���뎵���������퐷픹퐸鐸쎵�퓸풷쐸쐸쎵����쓶씵돴鍵鍺��퍸펹풷쒷쓸푶듸펷듸햷쏷뒹�듸쒺폷뎵쐸쑹푶돷돸쑹폶폸쎷뎶ꏶ퓸푶ꑶ뉷뎸�쐸쒷쑵�씵땵푵钶ꐹ펹폶폸쐴摶둺�푸�쑹쏷둵퐷�ꓸ쐻씷푵�픸앶엸ꔸ엸픷퓶쑴ꔷ푹쐹폷돲쒶�풶ꓸ엷꛷隵꘶앶뗷ꚹ螺餼ꥻꣻ랸隺뚺頻ꥺ颺衼롼랸隸왷픷헶햴ꓷ�v��y��y��w��y��x��x��z��z��y��u��v��y��x��w��v��x��x��s��q��s��v��z��{��y��x��x��y��z��{��y��y��y��{��y��x��y��{��y��{��x��{��}��|��w��y��{��{��w��v��y��z��~��}��|��|����~��z��y��x��y��}��{��x��y��|��{��|��~��{��y��{��y��|��|��}����x��|��|��}��{��}�逮���~�週�z��|��~��~��}��}��|��~���끲�~����}��}�週�~��~���ꄱ쀱낯ꃱ�}��~�낱鄳뀱�~�����쀳삵��삳큳��쀱쀴킳킳킴킳턲샴퇶솴솴탵������������슴���킵솴턵���������������퇶��������������������������������������������쌶����������������������톷���눹����������������������툷��������������������������������������������������쌶��������������������������������������������튷�����������������쏷����������������쎶��������������쎹������특�����������썷��폺펹쐷팷����퓸퓸�쓸풷쎷퍸폺폺���쐹폶�둹쐵쓶쎷��������������펷뒺�������쒷����ꓷ땶씷퐷�됸됻���옹떷앹핹푹퐹쐸쑸돷뎷푸��씹퓸쓸쓶앸풺퍶쒷핺쒺핸�씷핹픸얷옸띻���ꣻ雺陹웶랸롹餺륺餺랺Ꝺ뚵억됵鑶ꑴꓷ땶�{��z��z��y��y��z��|��w��v��y��u��u��z��y��v��x��z��w��w��u��u��x��z��y��z��z��z��x��z��{��x��z��z��y��x��z��y��y��y��z��x��x��z��y��z��z��}��{��y��|��}��}��{��x��z��{��~��z��z��~����|��}��|��}����}��z��{��~����~��~��|��|��z��}����y��{��{��{�耮郱�~��}�����耳��쀮ꁯ끯끯�~��|��}��~��������~��}��}�뀲�����}�ꄲ낰산샱킳쀲큳탴낳클퀱섲샴쁴킴텱텲눵쇴놵뇶���������솴���튴툷��������������������������솷���������������������톷���������������������������������������������������������������������������������퍷�����������������������������������������������������������������������������������������펷����������������������������������������������펶�퐻������������푺��������쒹���������������폷��픹푸����됸쑺���퓸쑹퐸쓸쒷뒷��틸썶쌹����쒷쐷���풺쏸퓶쐷�풼얹펹퓸옹줼쨾����������ꗹ钷딸씸쎹쑹퓶쓸푹쑹풷픹푶둹퐸쓸픹�뒷됹핺퐷����폺푹퓸픹퓸푹픹앶똹횺뛹뜺욺鞽젻ꤺ렼렺띶욵열옶앶씵둴쒵듶�y��y��x��x��y��y��w��w��y��{��w��u��w��y��x��y��z��y��w��w��w��y��v��x��y��}��z��|��y��w��{��x��z��z��|��y��w��w��w��x��x��x��z��{��x��y��y��{��x��z��w��y��y��}��}��}��~����{��{��|��z��y��z��}��~��{��|��{����~�瀬逮�~��}��}��y�炰�{��{��}��}��~�聯�~��~��~�炯�}��|�週뀳쀱넲킰쀱���|��}��}����~��}��}��~����{��}�뀱샱숲셲큲큲턲퉳퉱솰샴텲낳냴�}�ꀳ섲톳톳셴삳퀱쀱삳톳��큲킳턳뇵���퇶���퇶���클탴���통턷�������������숵�����������섷��������������������������������텳��������������������������������������������������������텶���������������������������쇸���������쎹��������������������������퐷���쌶����������������쌺쏸�������틹틸����팹����������������������������������������������쏶폸퍶핹핹푹퓸픸씸쓸풹�쒷푸�퐷�푹썸�폸푹폸�얷헸혹쑺�딹휽꥽먽꪿������쨽꠼뙹쒸钺딼�풺풺풷씹�풺푹푹퓸쑶ꔸ얷엸ꓸ풺꒺푶둶둸퐹푸퓸씹풷듷딸얺혷혶엶억딹픹횹엸똸靼랺ꟻ뛻웹뜸꛷隸앴꘷풶ꑶꕴ꘶�y��x��v��w��x��y��y��x��{��{��w��u��u��x��w��w��v��v��t��w��w��z��u��y��|��|��|��{��y��y��y��y��x��y��~��y��{��{�䀬�|��y��w��y��y��x��w��z��|��|��{��w��x��y��}��|��y�倮�~��z��z��|������~��z��{��|��~��|�灯ꂯ耭�|��z��}��|��~��{��~��|��}��~�聯���}��~��}��}�聯��ꀮ��뀱酲낮끯�~��~�끲쀱��ꀱ쁲ꃲꀱ遲ꃲꄱꆰꁲ쁲셳넲탯샱쇴퉱삳킳텳냱섲턵텴샱샱킳솴큲삳녴ꄵ������툲숵퇵���������툹�퇴��������퇵��������������������숶�����퉸�������������������������������싸������������������������������������������������������������������������틸����������������������������������������������������슷���������������������������������������폸�������������������쑹푹푸��������쓸풶���퐹���퐷쑹퐸쑺��푹쒺풹��푸����펷풹�쑹퓸풺픹폶펹�쑶폶�������������홺ꢽ졻쟻��쥽먽ꪼꬽ룹蝽씺떺풷둹쒷쓸풺쐹폸쒹�퐸쐻쐸쐹쒺퓸풺퐺쑹핸핹픹퓸씹픹픸씹픹햺얻픸쑶ꔹ햷횸똸똸뙺횺떷ꔸ억뙷햷앶뗵뚵쓷�{��y��~��~��{��z��y��|�䀨���z��{��y��{��y��y��y��x����{��z��}��|��y��{��}�火�{��z��}��}��|��}��}��}�倪�|����z��y��{��}��{��~��}��y��|�瀩�}��~��{��z��y��{����{�怯傰䀯�|��|��|��x��|�ꁭ�}��}��~��}��z��{��}�����끭ꂯ脮�z��}�ꁯ�}��~�ꂲ��뀬郬ꀮꁯ낰쁯넱산�~��|��}�����샯성�~��}���퀰샯샱��샱퇲酴ꃴ셴셴섳녴셴ꈵ퀵郵ꃵꇴ텲튲퇴퇴퉴눳ꄳ녴쇶슲턲툶ꊸ쉶������뉶쉷�퇴퉳틵�퇵����������������������쇶쉶�����������틹툷툷����������������������������������������������튷���������폸��������������쎸��������������鋳���������펹����������������펹쎹���쐸쐷듸쒷���닸�����������뎹�������퓸�����������풺�����������퐹푸�ꓻ씹���쑸뒺핺픸�폺퓻쓸������쐹��쓸픹픹꒺�헻푺쏽�펺둽얺핶씷풺둹폸핹핺쑹ꔹ픷퓸씹푻퐺쐸떺땹똹똹떼횻횺룾����������뗻�헸됺쓸쒺쓻핺��퐸쓻쑹얺핸핺쓷듷뗸핹핹헻�햺���뒷딹헸햷헶옷픵ꗸ홹씷픸씹퓷険혶옶씸쓷딵�{��|��{��z��|��������z��y��{��y��v��u��z���倨�z��{���偩䀨�{��z��{��|��x��z��x��y��z��}��~��~��}��|��y��z��{��y��z��y��x��z��}��~�逬���}��~��{��{������|��{��~�週�}��}��~������}��}�遯�~��|��}���肯��耮鄮���~��~�遯ꂰ��逭胰끮烰酯냬ꂰ낰�~���탲ꃰ낰ꈵ���}��}�뀲큯넲�}�悯ꄱ산냱턳녴샱섲톳솳샱샴톳�~�낵탵ꈵ킳넵킵샴솵뇴톴쇶텳���숷퉶���셷셶툶��퇵���쉶������턵턷숷���쉶툵쇹쇵����������������������������팶������������������������������������퇹�������������������������팷���������������������팺펹������������������������������������������������������틶펵쑵���팻���퓼�퓶퐷�푹펹��������폸����������쎷펹���������������푹폸쏸쑺����쏷됼펺됺쑹쓻뒷듸얷씹펺뒹��핹핹땸�������������폷ꓸ퓶���얺퐹풺퐸뎹돸쐹퐹퐷푹쒺�얷퓸풺ꔹ핹뛻ꚺ듹ꏷꔹ횺ퟻꦽ����顼뙹ꖻ앶딷풷씹퓸핹픸씸씷헸씷핺퐺앺쓷떷씸쓸쓷뗸핹핹헸홺헻홺헸ퟻ뤼꥽뤻ힸ뗸햷엶홶둶ꕺ똹햵뙺阶억땶뒵�~��z��{����|��x��w��x��{��}����|��x��x��z��|�䀪�|��x��v��y��y��y��w��z��}��y��y��y��z��z��~��~��|��z��y��{��{��}��}��}��z��z��z��y��}��z��{��|��y��z��y��{��y��|��y��{��{��{��}�惭���|��}��}�逮���{����~��{�����愮肯肯耯���}��|��}�낰삯ꁫ��뀲샲ꀱ뀱쁰聯�~�큳ꅲ낮뀮ꀱ�}���끯끯냱���~�ꃱ턳낳탱퀱냴삵쁵텳���퇴낵��큳���턷���킶���퇶�탶턶낳낳녴슴툵숵쇶섵턵텴솴����������튷������������������툷���������퇹������������������������툷톷��������������������������������펶���������������������������������������튷�������������������������퉸�����������������������������폸������쏺푺폸�쎹쐹픹푺푹쒺햹폺됹�����������핸폺푹풺폸����픹돺퐹푹퓻퐻풺퓸풺쐺ꑹ폶�뒺퐹픹펷됷�풷뒺쐹펹����픸씸얷퓶쐸듸씸앹핸얻엽휻�����竿䞾핹阼왻뗸딸쓸씸씸쓸쐸딹픹햺엸핶딸얻앺픹핹푹쓸씹퓻햻ꑺ으ꝼ꠼젺뜼혺ꖺ씸얷핶쓷뒶ꕺ픹퓷뗸픸쑶뒷쓷뒶ꗸ헶엵�|��|��z��}��x��y��y��|��|��{�ဪ�w��z��|��|��z��}��{��{��y��x��y��}����}��z��z��~��{��x��y��y��z��}��z��|��~��|��}���偫瀭�{��z��}��z��y��y��x��{��z��{��{��~��}��}��z��y��}���耮�~��~��|�耮遮邯聰聰肯聰恰�|��~��}�������週��끯뀮ꁲꂱ逮��뀱끲��녱胲��샱숳ꆳ���~�쁲샲ꅲ뇱퇱텲뇲醳��킵삳뇴遴뀳섵퉳통텴솴탴삳텶통텶셲넵텶���ꅶ샸쇹���������쇸����쇶������튵쉶���������통툶�������������������������������������썸퐹��������������������쎻�����펷틸���������틸���������������쉶���������������������������������������������폸����������폺퐹�����������쎹����퐻���펷�특��푺����쑺�������쐺쏹됻������푺퐺쑺����쏺푹씹푺������쓸픹핺핺쓻�푸�쒺핸�����얹핸������둹풺픹핹픹풺���픹�쓸핺픺딹헻핺헸똹앹뒼쒺뚻����訽ꚹ皺飾���윺엸핹뜺홺픸앹픹픹풺핺앹핹핸쐹퓻혼��푺핹훻뛹뛺�ꕹ땹픸앹헻혹홺씸얷헶퓲蘷혷헶쓴�|��{��{��{��}��|��z��z��|��z��}��|��{��|��z��x��}��}��|��{��x��y��|��~��v��{��|��}��}��|��z��}��}��~��~���瀭�~��x��w��{��z��|��{�䀪���z��|��z��|��y��y��|��{��|��~��|��}��~�����聭���}��}��}�耯����惭灰���~�瀯瀬酯邱郰鄮肯胰냱��끲퀱냲ꄱꂰ쁲샲ꃰ뀮�~�ꂳ넱ꃴ��킰끯냱쁰聲쁲샱섲킳텳녴솳솳슴���ꇴ텴솳샴섵탴킵텳텳셴ꈵ숵솵클넵���탶퇶������셸튷�����������������������톷����������������������������������팶��������������������������������������������������������������������������������������툹��������������������������������������������������������������������������������퐸쑸������폺�������풹���������������������������푹폸�����������퐻���풻�푺��핺푸푻푺쓸앺앹픹땺풷뎹쒻퓸쓻풺햹쒺풺쒺픹퓻듷듸푹픸ꔺ뒻퓻햹풹�������픹풺�쑹씹핺풺��뚼������꡼雼靼ꤿ��꠻蝹阺Ꜿ얺풺풼쓻픹푹씷픷헺�픹픹픹픹햺혹앺햺옹옹얷앹햺픸씹헸헸핹퓷똷헸픹픹핸헴옵핶듷듴�z��{��|����|��|�怪�{��x��y��y��{��y��w��{��{��}��{��|��}��}��}��}��}��y��z��~��{��|��|��}��}����}��|����~��|��y��}����}��y��~��~��~��|��~��|��}��|��y��{��{��~����}��|��~��{��{��}��|��{�聮酭ꃭ瀯瀮邯���~��|���낯ꁮ邰냱샰낰뀮邯ꁯꁲ쁲샱삱��耱끲삳녲내鄲터킳����냱성성ꁮ燱눲섳낳넵큲샲ꄳ낳녲눵솵턱솳섶녶셳킳툷턷���ꆵ퇵���퀵녴쉳팵퇴퇴퇶숳ꊴ틵������������������튷����������숷������������������������������������슷��������������������������������������������������������������������������������������������������������������������������������������쐹���������틺����픹퐸싸��퐻��������������쏷ꑺ�퐹픹������퓻�������폺�쒷쒺퓻���푼����앺��픸쐺쏺퐹퐹푸픹푹폸��푹씹��풺픹푹풷쓻�쏷꒺풺푹헺�쒺퐸쒺푸씸쑹펷뒷듷뒺풺픹퐸뒺��피핹햻씹럾졼롽훺電왺훼줿袽윺윻Ꝼ횺땹픹풺앺햺픷헸풺푹앺풺핺엸핺홺헸혹씸씸앹픷퓻픹햷옷햷앶듷�y��y��z��|��}��}��}��{��z��z��|��~��{��{��}��}��|��~��~��}��|��}��~������~��}��|��~��~���耭恩䁫�}��|��|��{����~��{��|��z��~����}��~�炯聪���|����~��|��~��}��|��}��~��{��{��}�邯聮邮뀭耭��惰遮炯愳�~��~��|��|����|���逳�~�耱����耱��쁲���}�뀴ꄳ녲넱ꄳ녴삱鄲텲눯艱쁮邳턲큲ꂵ셳삵쁴녳턵턳놵통탴쇶솵툵슸쇴툵텴솳ꇶ쇶팵텲놳쉳뇶��������톷�툷틸���������������������퉸���������������������틶팶������틶닸�������������������������������������������������������������������������팹�����퓺��팻������������������������덻������������������퐻��������������퓻������������푹풼햹풻��������������뒺퓼��풺풺쑻푹퓻���핹풷썸퓼���쑺앺풺�펹쒺푹쑹쓸퓸픸쓸쐹퐸씹햹떺쒺퓻쑹쓻�앺퓻얹염�쒺웽휼뛽홺핺락줿젻ꜻꝻ혼퓸쒺퓻핸핺핺홸�픹햻뙷홷핶듸핸떷씹�햺햷씸앹뗷ꗶ엶씸삪�|��{��{��~��|��|��}��}��~��z��}��~��|��|��}�您惪�}��y������z��{��}��~��|��}����z��z��~�炭䀭�{��}������|����|��|��|��}��{��}��}��}��|��|��{��}�瀮遯ꃭ烰�{����|��z��~��}�聮傯�~�������瀱逮ꁭꂰ�~��~��|��|��~��}��~��}�耱낰냲ꅲ놰ꁯꃴ삳끲샴놰ꄱꃱ쀳쀳쀲퀱끲쀱끴��낳��酴셲눲솳섲턷통놵놵퇵���튲퇶ꉴ놵낵샴숷턵킵삵섵툵쇶툵뇶탸톷������������������������승�����������톷�����������쐹������������튷���������튷�������������������������������������������������������������������������������������������������������������������������������������퍻������������핺�����퓻����풻�������������퐻������������������퐻���퐹픹�햻얺쑺핹퓻햻퐺쓻������푺햶�퓻핺피퓻얺엻엻왻霼뚺뚺뚻씼햺햻풺햻�앻엻��엸혹�씹햻픸꒺퓸엸혹풺픹헶왹쓻앹뙺호딸ꕹ퓷땶듶씹���{����|��}��}��~����}��{�䀪䃪傫�~�〭�|��}���カレ䁩���~����|���恫���{��}��z��{��}��~��y��z��{��~��}��}��|��|��{��~����{��|��}���耭䁮倯瀭恰�}���怱��怯炱遰�|��}�끭ꀮ��ꀱ�}�烲ꁰ䅳烰�~�쁯ꀱ�~�恳聲ꀱ�~�ꁲꂯ膳샰遲쀳�|�鄱ꃲꃲꄳ넳끴퀳쁲�~�낳텲酴섳鈵숲쁲ꁴ통뇱놳ꇴ늵습ꇵ鄶넶눵틳���鉴鈷툷텷셷쉶툵���뉸눷뉸싸�����ꉸ�������퍶���퉸����������쐹������������톷���������������������������������튷���������������������������������������팹�������������������������������������������팻����������������������������������푺퍺��������팻������팹��������푸��������������쏿���폺푹폸풺핺��퓽���풻풻��풺������������픹푺�피�핺�쓻약��피퓻씹핺픹픹�퓽앹혹쒺픺됸딼혹풺���헼�혹씾�옼얺앻웼웽ꗻ떺쑹쑺�핹혼�퓻�혹옼�혹띸홺홺픺떼핺��얺외홹윺횹뙷혹혶옷핺씸씸쓸�����{��y��~��~�
�}��}��|��~�䁫�}��{��{��}��~��z��z��}�䀭悬�}��|�倭聬���}�ヰ��Ⴐ�����{��~���倭�|��|��{��~��{�怮����偮瀭惭��倭��催恫倮��恮焬火偰��耯瀭聰脱胰灯�~��~�逯�}��~���週遲ꂱ邱遯ꃲꃲꃲꃲꀱ週냱샲ꄱꆳ섳넳醳ꄱꁴ냴솳셲뀱郲肳끴퀱鄳뀳샲ꅲ뇴툲숲쉳톳솵뇶솳쇴퇴뇴놵통퇶쉴뇴통눵셴셴숵셲넵탶턷쇶퍶숵싶틵���쌺댷싹튷���������������퍸퉶툺���솸퇺������썶쌷���������������������������������쉶��������틺�������������������퍺����������틹틸������������������������������������������������������쐺쒺퐻���������쎼���퐹�����쑺폸��������푼����푹푺���쓻퐸뒺����푺��풻퓻핺퓻앹퓻���풻홺핺폺퓻퓻핺헻뗻픺듻떻핺뗻픹햻퓻풺됸铻�픹픸쒺�햻왺헼�핺헽얺�핽뙺픹옹퓹ꖺ옹엻햺엸똹으앹퐹푻딼옹핺옹얻�푻퓻픹피핹핹헸홸�햷외�픸얻얺똸뗶옷헸���~��}��|��z�に�~�䂭䂫〫�x��}��|��}��y��|��{��}��{��{��{��~��}��z��|��{��~����{����|��z��|��}���怭�|��|��{��z��}����|��z����~�䀯��怭���}��|��}�䀮�z��{��|���怮����耱邯肯肱酲낯耯炱鄱ꃰ邱遰胰郲ꂰ낰�~��~�週��������ꀱ邱鄳낳넳넱��ꁲꁴ뀵냴샲ꃰ郰鄳끲쁲ꅴꂵ쀳ꁲ쁴킳텴섳녴ꄶ냵ꂳ넵통놵냶큶섷섷���큶섵톳슴탵ꄶ녷쇶쇶쇶섵통눷튵솸톹댶���숷���������턹������슸숷������퉸슷����������눺툺팹����������������������싸�����������������������펹�펹��������������������������������������������������������������������������������������푺���퐺앺팷쑸��������������������������������풺풺풼�퓻��������퐻��������������푻펼�����푻푺�����풺�����풺픹햺퓻퓻쐸쐹피�����뙺핺햻�혹씺땹떼헻햺얺뒺핺풺���씸쓻약픹햺픸쓻�옹혹얺햺횺뚸욺햺햷울ꓻ얻쒺퓻엸혹앶阶ꙷ퀫�~��{��z��}���䀮‫���Ⴉ�����~��~��}��{��|�瀭��偩䄫悪��レ䄫���|���怭䂬�~�䁮倭�~��~����~��~�倯炯耭�~��{��}�邯ꂬ怯�}��}���恮灮��慯酯끯ꁰ腯鄮�}�逮醱慰灰耱��瀱遴퀲퀯煲끴��뀱끳臱뇯ꁮ鄱쁴낵섲텲톰ꇱ놳샱셴섳뀴톳ꅲ邵톳쇱뇴통텴셴셴솵턳냴솵퉳���팳ꋴ色懴늷���툵셷샶턶����퇴퉳팵튷퇶숷눷닸퉶�����퉸�쎷��������������퇸�������틹닺�����������퐹팼퇺�����������펹�����������������������퐸쌺���������������������폺��������������������������������������������������퓼����풻�������피��������쏺피���������풺핺픹��핺�������풺���푺������핺피�������쒻�ꔼ웻씹혽�뛼퓸씼���앺엻혼�얻�홺퓻��딼�왽�픹�핺햺�앺햻햺엻�옼혹옼��옾혼����홹왽횻�횹혹옹욺헷ꗻ욺홸〮�~�ހ��~��}��|�キ䁬レ����な�~��{�䁩䄫悬�~�䁫催悬慬烪倯�|������}��}��}��~�热遫灮�~����~�倭䀭��䀭愮胭�|�倭愮聮瀯烰�~�週끮炯�~��}��~�聰聰肯胫慯�|��z��{�聰脳����耱��聲����胲ꂱ遲ꁴ녲놳쁲ꀱ郲ꅴ샴셴쁴낳놳샲ꆳꄳ뀳쁲샲ꅲ뇱녲넳넳넵킴鄳釴튲튱싴습숷텴ꆴ舶ꆵ뇶싶댵뇶쇶싶틲놵넵톷섶뉶퇶쇶쉶퉶������������퉸�����������������델������싺������숺퉽�����������������틹틸�����������퐹������������������������������������������������������������������������������������������풺풻���������������������퐹풽���퍻���피����풷듸약���������풽�����햼햺��얻����푼둼���������쑼�앹핻옾햼혹퓻피�엻푻햻헻혼핺옾�떼피�햻훼풺풺헻쓹꒺피핽씼헼�헻퓻�뗻헻�혼혼혼����혼홹욻�픹헻햻홺홺홺혼핹딸앹퓸엶욷홹쁫炬�}��{��z��|��y��~�倭䁮倮�|��~��~����}��~�ၯ〭�~��~��������~��}��~�灮��倭䁮偮倯倯瀭悬愭兮��偮瀯瀯���}�䂯���|��~�瀮�}��|�倯�}��~�����聮邬���}����~���ꀱ邱遰���~�烱삯��聴��遴�}�耱週邱鄱ꃲꄲ턳냴삳낳끲ꃲꄱ���}�鄳놵텲酲넲킱鄳끲ꃶ킳뀳ꁴ넶녴ꄳ酴ꄵ통탶턶뇴눵쇶ꈷ뇶슷뇴낵샶놸퇶뇸������쌷숵쇶쇶슷트슸숵쉸���������톸톷���������������������ꉸ���������틺�퉻���팹���팹�퍻팹������������������������������쐻����������퉻������������������������������팻�승�����������������������쌹��������������������������퓺����픹��쐻������퐻�����풻�쏸��퓻���������������푺�풻����딼��씼���풼햻헼���퓻풺햾�핽�피씼퐺쒻�푺쓻햻피퓻�퓻헽됸뗼��피핺핺퓻씾뒺헻땶떺뚼왺훼씺똾�햻왺앺햺얺앹혹떷쓸씹픹햷엸픵ꇮ僬₫カㄭキ�~����|����|��|��{��}�䁩䂬��〭�~�倭怪䂬愭冯兮䀮↮郪カ���|�〯倭�~���恮炬��怯瀭䅰倯��怭怭愮肯耮邯脮脯愮腯遮煲醱憯凮郰烰酯醱慰烰郰遮郱샲ꅲ郰熳ꇰ膰ꁲꅴ샲ꃲꄳ鄳遳聲섳눵샵ꁴ녴솳섳놵통턳놵넳酴쇴턳녴솳솳솵녴ꂵ샴쇴뉶툶ꉴ눶ꇴ놵툷툶ꉷ눵쉶트쉷뇶솵냶킵특퇶숷펷퍸���톷특퉸�쉻���������트ꌹ���싹퍻펹���팻������풻싹팺����������틸������������������픹��������������������������������������������������������폽������������������쑼��������������������풽�����풻��풼피�퓼������피���픾��������������헽����핺�홽�퓽핽�햻혾헽쒻옾똼똾��헼�퓻�혾�왺홺훽홿욻횻�������피�혼왽핽웽홽횾햺얻��홺헻흻훻윺픹픹횻�옸뗻핹호雹뚸꘹씹����倭䁬〫���䀪�����|��|��|����z��}�䂭�~�����キ䂬恫偫偫催悭䂭䇰䁪⃫肬��灮焮耯��催悬悯腰煮䂫����䀭䃮兮恮�}���聮灮灰���~�倯僲聰恰悯��遰膱胰炰낰�~��~���烲聰胲ꅲ냲ꀳꄳ遲��肳낳녲鄳뀱놵텴ꄳ醳솳샴삵삳녴쇴뇴넱舷텴셴솳솳샲ꅴ쉱쇱녲놳ꉶ퉷뉷당툶ꇴ뇶퇶턶노킵ꅶ툵숷텷솵댷ꋶ鉹ꈸ銸숶ꊸ쇹쉻쇸������트싸승퉸��펹뉸쉸����������툼팹����특팺���틸�쎹쉻��퍸퍸�����������퍻��������������������������������������������������쐾����������������������������������������������쑺����퓽푼���������������������쏽��������약�������������햻��풾�ꐺ씼햼홽���듻헽엻홽핺욻�얼헼����횾헽혾핽휾앻엽옾혼옼�왽퓽옾피햼헻햺홽혼약욻뙿훼�옼엻혹옼�욼웽혹옹옼ퟺ왹엻햼헻호뙹욹휷쀭�~��z��{��z��{��{��|��z��v��z�〭����䁩䂩����儭儫䁮�{��}��}�䃭烬䅬ㅫ逯�~�ၯは�~��z��~�儯悭䀭䀯��ძ惫怮�|��|��}��}��}��}��|��z��}�耲灮��怮逮邰�~���耱�}���偳腳焲悯悱��ꂳ������ꃰ郲ꆰꃲꂳ큲ꃴ샵ꂳ냲ꆳꃲ肳냵ꃵꂵ쁴넳넳냴쀳ꀱ酳퇴튴성ꇶ퉶툶ꌵ늵ꊵ숶ꇷ臶숵톳ꇴ뇴눵넶녷솸킷턵킵숷퍸퉴늴숵슷툷퉶���놺숺틹트쎸����퐷���특펹����팹���닻승펷���특�����������������팷펼��������������������鏸쎷둺늼�����������쏼������������������폽������������틽�������������펼����튾������������퍻퐾�������������������퓽������������������������������픹햻퐻������핽��쒺피����혽�����씼���얻�����헻혼��ꓻ�햻�떿홽훽딼풺핽��왻隼꛻웻��훻�핾엽쓽핽�핺�횼엻떼햻���ꖼ훼��퓻��웼�ꕹ훻���뚼욺혹웻�헻횻ꚼ윻����뙺햺�인흸햺홽�~�䁮偯�~����偫��ぬ〭�����~�‭䀭��〭�~��{��~�灮邬惭��瀭䀭�~�催脭ㄭㅮ悬�~��}�怭���|���ヮ儯���{��}��}�逮遮��悯脯愮聰耯灰腲넱胰邯脱ꃰ���~��}�遲ꄳ遰胲ꃰ鄱ꃲꀱ鄳넱ꅲ뀱逵끲ꆳ셲끲ꇱ낯腴ꁵ冶犵섳녳솵뇴놴腴ꇶ샵ꅴꇶ셲酴ꇴ눳ꅴ샴솵뉶퉸쉷銷퇶ꈷ놵통놳ꇴ툷틹툵숷툷퉸쇹쉶퉶틶틶틶퉶퉶튷쎵쉶툷펹���퉷뉶퉸����鋹늼���숹�톺쉻틺튼����폺틸��팺썻펼썻퐹틺�퍽팼푻됺싹덽�팻�뒻��������퍽팻����������������������������������팺�����쌾������푹쒻�����������������������������풻�����������핺���������헻��������핺�헽���씼핽�������옼�피�����핽왽홺혼���혾헻혾홽헽�잼헼�헽Ꜿ랽顽읾뚼꘼욼왻阼ꙿ���엽�ꗻ똽�혾홽욻욿뚾홿�핽옼�휾혼옽꘾홽홽횾뜾꘼왽훽랾휼휼뚻�Ꞽ욻헻훹훻옼앹홺�홺홺퀰���{��{�‮‭�~��~���〫�~�₫ガ恫儫慩傭䀭䀭悬����怯瀭恮偮儮�}���偮偮�~��}��|�倯炯聮灮瀮遰脮耭�}�耮遮灰怳�}�僱儯䂰䁰恰聰肱逯瀱��邱炱遰肱郲ꃲꂱ邱焱胰煲邯惲脳鄱腰燲遲ꄳ酴ꂵ쀳ꁳ腴삳톳솵醴膳ꃴ샴섳놴憳ꆳ셲뇴눶ꅴꃴ솵툶ꇵ釴뇴뇶섶눷툶ꊴ쉶툵쉶툵쉸눷텶통특����툷퇶싺���슸쉷뉸톸퉸�������ꋺ퉻숺늹����틹펹�����������������특틺�������������������퍸퍻���퍸��������������폺����������������������������������������������펽��������������������������������������������������������������������푼���픹햻얾��퓻����������������������퓼�������������������쓽핾얿똾혼욾횾�핿�쒼쓻�홽훽휾뗼隿왾띾뢿렼랿왾뙾뚿웽뜼혹왽씼횾��윾뗽�뙽햻햼훼홽휾헽씼햼혼엽약홽���옼옾홽훼홽홽�훽휺훽혽ꚿ왽훽횻으횺뚸웹횺홺햺얺왺픸ꕹ홺�}���倪䂬�~���僬䃬₭���ル愭偮��䀭䀪�~�‫⃫惫惭瀭悯怭怯瀯傯怭�~�偮儯怭�}��{�䀯炭䃫惭灮逮逯��怯��惰熯焯䂰䆱䃱��䄱ꄮ肬悱��郲脱���{�ꀳ산끯ꂱ週鄳놴脳熳ꄱꅲ鄱ꄳ냴성ꃲ脳녲늵솱憴膱苴슳燶ꆵ내邳녴솳쉴덵醳ꅴ쇶ꅴꆵ鉸솵뇴놳숵눵熸눷늹쌵뎷텷섵특錷싶퉶턷쇵���튷슷퉸������ꌼ특틹펹퉷鋺�������썸댻틺������썻쎼폻싺��������퐻�튻�����ꉻ썻���퍻펼퍼�펼����������������폽��������쏿�����������������������������푼����퍻������������������쏽���������썻폽���������폽����퐻���������������������됻������퓼���������듻������������얿햼햻���핽�����쒼�������뒼쑻���앾꘾뙽횾�땾약����핺씼피뙾���꛼혼횼엻혼쟾���뙽헽��떾헿�휾阼왽�얺꘾햾떼핽��핽홽��헹睿흾뜾웽홽햼피얼떺엽휾꙽휼땿霼휾웽뛻윾흻휾뜾럾줼잽락욼왽혽꛽홽흽�훼���엻횼ꙻ땹땹땺�끬Ⴍ‮���レ䃬䀪�}�ါ���‫₭䁮��ぬ���}��}�怭怭䀮₰䄯⃬⃬ℯ䁯グ䄯↯ㅬヮ偬の瀯�|����䃰�{��}�䁮僰炯肯惭焮舱釰息ケ烰煰熯兰焱ꂱ焱ꂯꃰ逳��耲瀲灳肱僲胱쁲쁴낳낳냲胲肴鈶臲郲憵酳煲釵釵醳ꇴ넳郲ꃵꃵꃴ섶녴ꆵ녴ꈵ숳ꇴ뉶퇴녲뇴퇶습ꍴ눵숵쎷뉶퉸셷숷툷툷퉶툵쇶ꋺ닶틴썶쉴狹펷퍶ꏸ싶특틹틹퍸퐹폸쎷늷덷鐹틹퍻鍻트ꏺ쐹썻팺쌺싺퐸쐹퍻팺싹돺���쏺퍸펹쌷ꍻ팺싹팺퍻퐹푺펼싺푼퐾����퍽펼팼팻�쒶ꑸ���퐹퐹������푽���퍻��햿��폽�����������������������������������������뒽��쒺퐻����������������헽픾헻헽�������������������횾����얼퓻��쓼��횾�ꗻ뙽��������혾휾땺��혼얼뗽흽뛽횺뜼럾홹꙽홽혾핹霼혽ꚿ윾떼혼�락욿옽����꙽�왽휽Ꜽ뜽�홽휾욼왺홽�웻웽횼으���왹ꝿ혼�횾옽ꙿ�뜽��ힽ좽쥼������묾棼塼럻횻��횼Ꜽ헸횻ꙹ蚻��퀭䁮偯ၯ�~������}��~�倫₫ル怭��カレ䂭Ⅾ䄯䂭����䀭䃮僮僮偮偰�~�倯偮��䀯�}�怯炰䇲瀮 偰惮ㇰ恮偮炯悯悯恮儯恰�~��~��~�耱邱炴�}���ꂱ傱郲胲膳ꃰ爱釰耱��進燲醴艴煳焳눳艴끲ꁴ녴ꅴꅲ醵邴邳녴솳ꄳ鄳醵뇶쇴뇴냵ꃵꆳ솵뇶ꅴꉴ눳ꉴ鋶錵鍶ꈶꈷ퉷넶놸늸쌵닶툶ꈶꉷ늸쉷뉷늵쌷쌷ꋶ銵艶톸뉷鎹눷툵쌷ꋹ당틹틹틹펹썸돸���닻싸팺틹특툵������썽댻��������������틽�쌻�팹��������펼틺펼���풺�����������������틽����������������������������������������������������������������������������쐾펼푽�������핽��땺�피혾�햻���������엽������혽���햼햼헽쓽��雽횾�핽��휼옼�왽홽헽�홽홽욼으똽Ꜿ홽홽흽욺靿엿�홿�홽홽횾홽혾휼횼웼�혼��횾햼헼�헻뚾웽홿�횼옼웽훻욼왽���훽햼홽�뜼렼쥽����������꨽蟹Ꜽ훻왽혼욻훽횼욼옼횼욼왺호띻훻왺횻띾�傭䂭⃮ၯႰ䂭Å䂯�~�傭䂬����ᄭㄭキ䂭䁮倯倯儯慮䁮傯胮儯䄯䃮偮瀯灮偰恮催悰䁰䁰䂬悬悫㇮熮↱䁯ケ瀱鄯慰瀭��恰悯惲ꂴ炴傱炱灳惲腴ꃰ爲쇱냲肱焳냲ꃰ熳ꅴ胵胲膳셴샴성ꄳ끴내逳脶눷놵釶섵턶냲腲釴놵뇶ꇴ녴셷솵뇶ꆵ釴뉴눳艷뉷鈷뇶ꇶꊸ썸뇵犸숶ꌷ쉸쉸숷늹특튵숵쉶퉷닶뉷뉶툷퉸쎹승트쌷썸팷싹틹트슸쎹쌺싹퍸팷쏺틺팺쎼�������������폺팻퐻팻��������������퍻펼퍻���������튼펾���������������������������������������������������������������������������������������������������������������������������������������������������ꗻ딼피혾왽홽헽�����엻혾홿흿��읽엽옽꘾혾웽횻�횼옼혾엽왽욿얼홽옾훽휾헻뗻똾뙽�웽햼똾헽엽옼��휾욿왾똼웻엽ꖼ핽얼뗽웽띿훽뛽뛻Ꝼ휼횾횿읽좾�������������뤼ꟹ잽읽웽뛽혼훼횺훻헻떺얺욻엻횺횺헻혼쁫儭凬ᆫ߄�䂯息は���}�䀭恮��ヮ僬䄯惮ᆯㄭㄭㆮ⊯䅮ℯ↯ヮ�}��}��}��|�偮僮傯惮兰焯慰兮Ⅾ₰�~��~�炱热燰䆱聯ꁰ慳僱グ䃰焱肯愱ꆳꇲ燲灳惲惰炯慲鄱肴炴熳ꄱ脲慳焳酴ꅴꃲꇴ툱釰艴늵ꆳꃵ膵鈳芵셴삳뇶셲鈳ꆳꉷ뇶ꊵꈳ艷눶ꆵ鉷늵ꊵꉶ툵숷퉸숷뉷錷ꏶ팷슸습ꎹ닶델뎹쌷썸트싹틹늸ꉸ쌸鏷덶ꈶ莶鎸萸鏴菷늸승트싺����뎹쌺슺댺쌺썻쌺뎹쐹펹썻틻쌼퍻펹���퍻���쏺폺퍻퍻퐹폺���팻��������퐻틻쎼�������펼푼������������������������������������������������������������������������푼�������������뗽����쓽홾���옼쓽����햾��������훿�������������욾헻혼��햻핽�옾혾혾헽왽훽훽헽��뙾땾옾헼��뜼혾���혾혾햻�뙽홽훽헻똼꙽헿��으휼뚿옾햿��뚾�홽혽ꚿ왽혾햿핾옽ꚼꝽ웽똼윾뙽뙽훽����웽휽�휾윾잽졽좿����������頼읻휺윾웽휾웼��훻햺흽뜾으띻훹뙻阽꛻���წℭの�~���の��ク恬�~���悬��ㄬ熭惬⃱儯䃬䃮僮ㅬ㇮兰偰䀯偮�~���怯傰䀭䀯炱鄱耭䁮傯悰䃱ㄯ䄯䅰傱儲懲焱�}��}�耳脱腲邱酳煳僲脲恰恳脳烲慳儴��瀳ꁴ逳腴ꇵ邴瀲煲酲넳鈷톳ꆳꃴ섵탴섵킵삵쀵낷텶탵ꇶ습솯燴턳뉳툲쇶ꈸ鈶艷酷ꆸ녷ꈷ뉶튷댷쉸숷녴艶퉶쉸쉷銸슸슺눻ꈷ�쉷댷ꌵ錵錷쉸솸톹싻쌺싹틺���팻싺���ꍶꋹ특���틻쉼댻썻�푽퍻�������������퍻������튼����폺틹퍼����쑼��팾�쑾����펼���퓻틽�����������������풽���������������폽�������������������������������������������������������피������������퓽��������땾쐿헿�������홽헼�혾��������������������횾���������횾�����으훽혼왿횼얾�얼혽�ꕾ꘾얻����똾약�옼웻읻�홽혺ꙿ앾엻휾뙾뚿욿왾뙽홽핾얿햼홽엽왾뜼똾햾홿�욼잼�홽홽혾핽뙾뛿옾횾읽좾������ힽ왽�뢽꧿�����뢽졽잼뙾뛽꛽뙻락잾휼헽��헻혾혾휾왹웻ꄯⅮ↮ℭႰ䁯⃮〮ᆮℭိ䉮㇮煮息ヰ烮冯烮ㄯ䄯䄯䅰冯冯僬ℯ息ㆯ焭偮傰䅰ㇰ䄯䁮儯愯憱惱僱兰僱ㇰ䈯懰憯熯傱烲悱僲胲ꄱ臲熴肴僵慳煲��耲焳熴聳恵��䁳腲釵鉴鉴鈳拳狵牴鈳ꊵ쇵釴냵ꇶꆶ熶燷臵父ꉶ퇴눵섳醵통뉷덶쉴댷ꊸ솵뉷댵덶쌷쉷뉹ꋹ델펶ꋶ뉷댷쎷트ꊸꍸ닶鋹당뎷닶鎷폸싹틹팺델돸썸당당닺팺썻퍻폸쐹폺펹썻틺쏸특퍼���튼폽슼쐹퐻펼툺뎾쎼�������쏽��풻������������폽폽����������������������풽�������������������������핽���씼���������핽�햾��햾�����홽�������약���������혾��������헻��홿���홿�횾�옾��헿��똾똾혾�����홿왿�옽꛽훽훽��옾홽훽휼�웽홽혾윾혾앾씿씼햼홿���횾똾헽�흽홾뙿옾뚿웽휾왽횾�횼꛽홽혼잾럾ힼힾ휾윾혼윾읽���흿��읿죿��������졼뢼���좼���뢿����훽랽좽졽횺락쟽젼으흽혽Ᵹ잼횺뛻으홾뚼ꝼ꡼뜽ꄯ䁯ヮᅮ‮ヮုはㅮ䈭Ⅾ⃮僮刯悫ᇮ刭䆭䄭ㅮ䅮恮��䆱愭ケ僮な偮傯惰灯ヲ�~��~���ヰ��恰胰遳脲愯䅳熱䈱关烱ㅳ焱耲瀲儳鄳��ꁲ셳焱ꅲ鄱腲醴膴膴聳惵肵ꁴ냱솳섳늵쉴醴膴懵煳父ꈶꇵ釴낱爵쉴눶ꇶꃵ胵脶눵싶뉷녷ꂴ鉸쇶ꅴ膵늸슸ꉷ銸슸쉹ꈷ늸슸싹퉸싶델퇶승습ꊸ슸ꍸ델뉻ꌷꋶ鎹쌷ꋹ댺싹뎹쐻���틺���댺쏺폺팺쌺쐹뎼썸덻틺팺싽튼퉻�틻쎹�폽퍽폺팺쌾��팾��푿��폽폺풺�����쑽���������������������������풻����������������������풻�푿�������������������������횾����엽���������������햾������������������������������왿�������������횾옾���피햾��������읿혽꘾혾홿일Ꜿ�홿��욿웿헽�왽휼뜾햼햼혾락왻陽횾뛽훽횻혾혼헽왽홻뜾��옽ꕾꜾ웻ꝿ��옾혾뜾웽홽웽뜾��퟿횿윾��똾홽횾잾��훿����飾鞽��립驾맽졽ힽ읿흿흿흽��락웽락젼잾헻뚻웽럻휼럻라뚺뚼왽횼잼ᄮ���〫�~�₯悭ℯ息グ䂬惬��ク愭ㅬㆯ儯䁯〯〯ゲば恰惮僮僰炯肭ℯ䁰��聮煰焮肯聮醮녰灮偮瀭恰肯聰脳郱傯惰烰瀱遲ꀲ炱熱懲烱儲憱愱ꅵ扱勰僰灴遴遴邴焳燲爳腲邳넳釴뉴烲憵鄳釶쉷銵臵熶父ꋴꈳꆳꉶ통녷숶苶뉷냵ꄳ鈷퇶ꇶ쉶샴싶錴猷ꋹ퉷錷슸ꊸꈶꈶꆸ鉹ꋶ鎷댷슸솸뉸쉸퇷芺당당틹특톸덻퍸팷쌺쌺싹뎹쌼틻싹팻쇶승튼쉺�폺팺쉻쉻싻썼���닺�����팼퉽�퉸슾������쑺���퍽���폽썽퉷鏿�������펾�����������������������������������풼����폿�����������������������������������퓼����������듻����������������������������������������엿����������������������������픽閾��씼햾��햻엽옾헽����������옼씾�������횿왿홾뚾���옼헽엽씽뗿�����웽ꙿ왽햿혾홿왿��쓼꘼횿��햾으혼����혾뙿��홾뚾왽혾혼잾휼휼퟿��꙾꘾����윾����땻蜾으랿����뛽뛽횻횿엽흼뛻웻으락으띾띾뜼뜾ꗻ뙽혼훹뚺뙾똽ꚼ꛽휼끮傭䆮⇯ㄭㄭ僬℮���ㆮ↯ㄭᅭᇬᄬ߇�ㆯㄯ₰↯ㇰ䃮ჱヮ兮慰凱㉱䆮偰��䁮冯焭凲冱䈲䄯⃰烰瀲ゲㄱ脱脲惲悵䄴兲醱胱ㄲㆱ䈱燲醳ꈳ懲傴炴烲聳胵胱剴鈳腲酴ꆳꅴꅴꈷ톳ꉴ눶ꆴ膵釵釴눳膴膵釶ꉷ뇵懷艶퇵鉷뉷덶습舸鋴菴鍵芵숵쉷뎷돷ꏷꌵ錷ꋹ댷ꍶꍶꎷ팷슸승튺늸ꍸ덶ꌷꋹ당델델팷썸펹쌺싶鎹썸뎹쐹폸썸댺싺퐹퐹펹팹���퍸푸폺퍽퍼���쌺퍻팼팺쑺튼튺돽��������펾������퐾��������������������쒻퐾�������������������������������������������������헼��햾���������������������핾엿�����혾�������������������약���뚾옾횾����햿홿������������횾�흿퟿����헽옾햿햾홽혼휾혼얿����욿왾뙿��딾蚿������횿��왿윾����뙿�ꚿ욾ힿ읾뜼띾����욿욾홿�횾�횿욿왿옾뙽햿횿읽웽��횿왿왾��잾퟾흽윾쟿휼뛽뚿왽훽흽욿욿욿윾왽휽�잽랿����휾욿왾��ힿ윾뜾읽뛼��뜾뛽랼�횾��홾뜾욼꛻읽윽蠼으흻���훼웻읽샬Ⅾ䄭ᅮⅭᅭხはㄯⅮ⃮ㅮ䃮ᄯ↯ㄭᇯㆮ⃱偰䃱冯ㆯはヰ熱腰ㆱ戰䇯ケ傱僮ㄯ䄭ᇯㆯㅰ凲焯䆯刯慰凰䅰ㅳ儲ㅳ炱关焲䄲䄲惲愴冴恳怲儳酴脳焳煴腳熴慳燵醴腴ꆳꉴ鈶舶ꇵ酲銳담싶튵숳ꉴ鉲芵ꈶꈶ臵父ꇷ苶鋴芳猵鈶芸ꈶꈶꊸꎸꊳ錷ꌷ슸쎸ꍵ荸펷뎹썸델댷ꍸ델댷ꌷꍸ틹틹늸ꑼ댷ꍸ팷썸트ꋹ늸썻댺쌺쎹쎹쌺슼푹쑹쏺트쏺쒾썻폸쏺퍻쐹퍻퍻틽퐻펼��������������푺폽푼풽��풼��������������뒾�����퐾�������������������핽���������������������������������������왿�����������������������������������햿햾혾����왿���햿��욿��햾��핽���혾홽혾�������홿��휾뛽������왿����Ꜿ윾옾뙿뜾옾혾�읿읿��흽웽����훿횼욾홽홾뚿왿왿웿혾횾핾������웽뙽������홿�홾뛽띿홽횼��홾ꚼꜾ����뙽휾일뜾��뚿왿옾������홾뜾윾���쟿읽졽짿��������왽홻락잾흽윾휾읿���띿훽ힼ��훽휼휼흻흻ힼ헻뜼럾흽옾뜾욼Ꜿ왻락ᇯㄯ䁯ㄮ���ℯ‮���↮ⅮℭㅮⅮ⇯ㅮ↮ᆰ⃱ぱ₲ゲヱ傰䃱傰䁯ㄯ䅰冱愭㇮凰䆯ㅮ∰䂰₲ク憱舰㈱僰焲懲凰䅰ㅳ烲愲䅳儳煳爳愴冴憴恵烲腳煳焴冶熴脳炴灳恴遴遵熵釲牴酴腴肴鈶ꊵꆶ熶熵酳狶눶ꈶ舶臷舸鉷鈶膵錵뉷鉷錵鋴荶ꍶꊸ쉷덶ꌵ銸ꊸꌷꎹ팷ꏷ댵鈸錷쌵錷ꊸꋹ댷ꌷ싹특툸鈸鋹늸ꎹ썸델델델델돺폺폺트ꋻ쎹쌺싻싹뎹썸됻폺펹쎹쑺쏺팺쐹퐹팺싻쌺퐻���쎹쏻썻펾쏺폽���풾������������돽풻팾���������������������������������������핿����씾���������������������������������������������������씾���햿핽����������������엽�������������������햿떿홿�횾뙿��������햾�����������뗿����뙿욾��홿윾으뙽홿��혾����잾휼뙿왾뚿옾��윾똾뙾뙾뙾뙿옾뜾웽헽욾횾뚿왽횾����홾��똿����홿욿잿읿욿옾땽혾혼��왿윽�뛽띿왿옾뗽웿��흿윽꛽Ꜿ웽횼��욿뙾뙾��횿왾뜾��횿윾쟿퟾윽ꞽ렺렿����������왽훽ힾ���윽ꞽ잽읽으락ힿ읾렿웽뛽랽잽웻ꝼ뜾욼욹ꝼ랽왾뛽Ꜽ뜼랼일눭ᇬ���ℬ������ㅮⅮ↯ㆮ↮ⅮⅮℲ怲关焯Ⅾ⇰䄯ⁱ₲ㄯ↱䄭ㆱ愯惭煮䆯ㆮᇯⅮ⇰䅮ⅰび䁳䂰⃱关焲䅱ⅰㅳ僲慳煳兰割臲冴脲慰ㅳ爳ꉰ鉲艱兴脶酴ꇲ鄱舱鉰爳戶焴兴膱抳뇴놵鄴兴腳父ꇷ臵猵鋶鈸鉷鉴犵荵鍶ꍶꌴ菴銵腷ꅷꈷ뉷鉷銸ꉷ늸쇵犸ꋹ댷싶틶늸ꊸ쌷ꋹ닻숸鈶茷ꌷꍸ돸썶ꍸ트슸썶ꓹꏹ돹둻팸鏻쏹钺돹당뎹쎷뎺돻쏻쏻쌺댺싹ꋻ덻쏻쏻쑽펹쏺퐹푻폻썻팺쑼퍻팺쏽쏽쑼푼푼푻픾��������쒽����퐿풾������푽����������������������������������������������������������������������������홽������뚿욾����피������������헽����������������왿��������햾��혾훿��웿���얿��혾���윾������럾ힿ읿�����퟿����왿얼떼阾��왿윽ꚿ������홿��������홿욾왾뙿읿윽ꞿ읾띿ힾힽ뛽랾ힾ훽������잾퟿Ꜿ왾꛽뛽띿읿욿욿띿휾����뜾윾��욿읿������흽읽욼Ꜿ웼鞿������윾쟾퟾��읾�����흿������������랿잾휼ힿ읿젿ힽ잽잽라Ꞿ흽읻휺잾욺霺읻흻흼뜼뜼라랽읽읿횼ꄯℲ䂰⃱ㅯᇯ↮ᅭ���ゲヱ㉮⃱��↴愲䄲䄲慰ㅰㇰ慮䇰憯兰兰焯悱倲�~�䀴悴炴傲ケ僲肯艰釲冱䂰䃲肴烲脳焴关熱腰燲熱惱儲懲关烵膴胲愳釲炶耵邴郵ꁴ鄳鈳掸ꅳ兴성臶ꅷ膴抳狴苶醴舷눶茵錵鋶뉷넶鈶ꍵ鍴늸싶錴茵鋷苷苶銸ꊸ쉷댷ꌷꈷ늹트ꊸꊸꋶ鎷델뉹ꇹꊺ당돺폹钸呶ꋹ특틻쉹ꉻ슺뉷鍻슸ꍸ뎷듻폸썻���쌺쏸씹틻싺���썻퉻쌼틻싽풻팺���퍻퍽������퍼���폽���둼�쎾��������퐾�펾헽������������������������������������������������������������������������������������������������������������������������������������������������얾��������혾�����������씾���������������혾뗿����혾뛿��훿�����������뙽������������홿����������훽뙿����혾뚿옾혾������떿��햿햿��������왾Ᵹ웽����훽락쟾������ힿ��흿횿��횾흿윾읿홽혾����윾��������흽젼젿휾왿왽횾��홿��헽��홾��������홿��������퟾졽좾�������ힿ읾럾��잾휽��Ꝿ럿ꞽ쟾흼랽좾ힽ으뛽횾랿졽졽���잽으뜼띾넭ᄭㅮ䇯ㄬ߅�⇯ㅮ䅭������ᅰㅮⅮⅯᅱℯⅰㆯ㈱凲煰冱䅰ㅰ偯��⁰䆱慰儲悰䃰煳煳凰悰䁰䃳䈰䆱䆱䃱冱慳煳熴懲冱䄲䃲惲慳冱䈳愲䃱グ⇵鄴僲怳�~�慴ꅳ凵鉴燵愳然녴膶烵ꃵꃵ聵熵鈶ꇷ脶燷芵芵ꋶ닶댵鎸ꊵ苶늵ꉷ銵茵鈶茵鋳獵錵鎶鐵鍵鎶ꑷ莶銺뇹ꊸꊸ쉸쌷ꊺ뎹쏷ꏷꏹ덹ꏹ둻팷ꋹꋹ당델뎹쎹쌷ꎺ돻싻쉻싻뎺돺퍻퍼���푻댺쌺썻펼썻팼싻썻펹쑻퓻푻뒼쌼퍽퍽팿폻썻쎼���펼폿픾퐾��������퐾�������������������������������������������얾��������������핽�������������퓿����핾얾헽엿������������������������������왿����ꝿ욿앿������������������虿�������핾�������핾옾������옾훿�����횿윾욿씽땾옾��횾옼옾��흿ힿ��������얿뙿왾떿떿똾헽����혾떿��엽꘾����횿��홿왿������읿휾욾횿옾������욿으휾ꙿ��ힾ��ힿ��홽훿욿뙾Ꜿ뙾뙽홽횼윾욾��������������옿����웽��욿뚾�����읿������윾젿����뜾������혾퟿젿ힾ휾왾뙾뛿�����휾읿��흽쟾쟾졽���훽횿읽젿퟾젿흾라럾휼뚾靼ꟽ녮∰㇯���ㅭދ�Ⅽᅮ䆮ኯ㇯ㆮ≮㌰䊮⊮⇯ㅮⅮ⇯ㇰ䆲㈲䆱䁱ℴ偱⃱儲悰䅰僱僲悱僱刱凲僳䄲戳想䈱凯㈱焲悰䅳冱䆱䄲䄴兵慳煳煳僱ヵ恳䇵燲兴腴肱制ꋳ拳犵ꈳ艴鈳ꇵ狶錵늵ꈷ눶ꈶꆵ釶ꉷ釶ꈶꌵ鋴芵芵ꍶꍶꈶ舸鉷鈶舶腷艹ꊸꇵ父芸錸錷ꎹ쎶鍶ꉹꉹꊺ뉷뇹슸싹댺싹뎹썸당튺늺ꋻ쌺쏹뎸ꌺ썻싹ꌺ쌺쌺싹퍻폹됸뎺닻싻슼폹돺폺튺당덶ꏸ쓼�풻퐼펼펼팼퍻펼���펼펼팼펾쐾���듽픾퍻푼�������쓽쑼��퐻폽�퓿��������햾핽������쓿���������퍿������������������������������������������������약������������혾혾헿����������왽횿뙿������햾��혾����헽����앾앿�����������헿�������������������������������������햿������쓾떿홾뚿��홿����픾��왿����왿욿쟿��홿왿옾햿훿��홽휾����윾읿홾������왾����홿윾뜾옾띿흼ꞿ옾����������휾쟿흿옾홿��휾읿��홿욿뚿욿����횿욿��읿ힾힾ������������흿��졽��ힽ읿������휾띿읾럾����퟾��흿��왿�����읾띿����퟿잾��������ꟿ쟿읿읽윻ꞿ욿��ힽ락쟾휺읽뜾렿��졽셯ᅭ���ርᆰℰᄭხᅰ㈭⌭∰ㇱㄯ⃮ᆯ凰慮ℯ䅰燲煰ㇱㆯㆯㆯㆲ㈯慯ሲ䅮₭↱䈱刱燯ㅰヱ凵熱䆯㉲懲儲懲凵醳ꄱ脱胲����僲慲酴胱㈱勲酳儴刳戳戶臲冴憴胲腴胶냶뇶ꆴ抵苶鈶ꆵ넶釷芵舶舶舶苴荵鈸鉷銵荶ꌶ莸ꌶ茶舸銵菴荶ꊵ芸ꊺ뉹ꊸꎺ뎷댷ꋹ닻슸錷쌺슸ꌷꏺ특犺ꉹ鋹늸쉸솸鍸퍸덻쐼댺쌺싻슺덽퉻쌼쌺뒻쌼쏻쑹퐹퍻퐺쐼팻鎺鑻뎽댼퍻폻쑽펼쎽돻쒺퓽���퍽퍽퉻싽푽쐿펾푿��쐿퐼풽����폿�����쑼퐾�������������������������������������������������������������������������풾퐾����������������������������������������������������������������땾쑻땿홿욿왿��������������홿���������������홿����픿옾����얿횾���홾뜾�������������������������������������혾뙿�������������������횿욿��왿흿������홿��왾����왾꘾��뙿����흿ힿ윾띿혽��������욿��욿��������������ꚿ����휼띿����뙿왿��홾뙽횾������������ꞿ������휾뜾뚿��ힿ웽뜾읿������홾뛿����흿������흿������홿������������훻����흿����������������퟾잾���윾읽젿��뜼띿퟾으띾라꠿ힽ럾��흽잾ힽ녮↱䁯Ⴐ⃮ᅮℬ߇�∰㈲䅮↯ㅱ⇱㈰ᇯ���⊰ᇱㅰㇱ㊮���ㇰ䃱ㄲ䇰䇰䆲ㆰ∰䆱䅰凲熯到䇯ㅮℯ↱䅳儲惱傲ㇶꆴ戲䇱㈳扴爳舳膴愴䃵愴䂴灳慵抳爱刳慵懵熴膳ꇴ놴脴冶燷腳䉷艷鈶芵艷鉴犳狴ꈸ鈸錵鍵鉷錷ꈶ艷鈶ꋶ댷쌸鋴获뎸ꌸ鋶錷ꋹ늸ꊸꍸ댵銸ꊺ뉷鎺뒷델폺퐹瑹ꎹ슸ꋹ당댺쌺숺댺썸덹ꍹꌺ쌼튺늺댼팺뎼푻둻됼퐺쏻슽싻됺쓻푻폻ꎽ뎽뎼푻푺폻쑽덻썻펼팻씼풼쓽푽�앿픾������퓾땾앾쓾뒽꓾뒼쏻쓿�����퐾�����핽���������������������������������������������������������������������핽������������������������햾���홿왽홽픿������������������횿��홿��������뙿������횿웿����������������얿헿�웽뜾����왿����횿윾잾ힾ������홿��������������훽��옾���휾����횿읿������������������������������왾��홾뙿������욿왿������랽��흿횾��뙿��ힿ��������읿잿잿웽����읿��������������흽쟿Ꝿ頿ힿ��흿�������옾������ꟾ읾��������흿��������홿������횿잿������휾랿젿렿��휾렼룾�������렿���렿ힿ��퟾젿�����������퟾흽쟾웽똼읿휾쟾ힿ��������뢾ힿ��퟾ꁯჱㅮℭᅮ⇰䅮⇰䇱ㆯ㈰䇯ケ傰䆯㉱凯㊲剳冱䇰憯㇯∰ㇱㅰㅳ犲傰ヱ僱倲偳䃳䅰凲焲䄲䄲䅳儲䄴儲䃵ꄲ戲∱凵酳牴醱憴膴脴儶煴舶ꊶ犴挶臲傴兵戴剴父ꇵ父ꊵꊳ鋴芵茸銸ꊵ臷牷芵艷酷腷芵茴茷ꌴ获뉷釹쇹숸銶狳猸鋻鍷鎶鎶鏷ꍶꌷꍸ뉷鎹쌷ꎹ썸뎸ꎷ뎷뎷델뎷돸싹댷ꍸ뎹썽돻쏸싹댺싹덻틹댺쒼쓻쒾뎼쏺펼푽쏺퍻쑽팼튼팼팼퍻팺덻쌺덻쎼펼폻쐼덽풾퐾펼퓿�푼�쑽쏽�퍻쏿��픾�펼햾씾���������퓿������������������������������������������������������������������핽������헿�������횾���헿�������������픾������������������������������엿������������������햿혾��혾횿옽陿�����������������������������������������������������������������얿�����홿��왿����뜾���������흿흿�뚿��횿����흿퟿��������윾윾������휾뚿윾��욿����흿��횿��홾��������������������흿픽����휾����흼ꝿ읿����똿ꝿ��흾�������������������퟿����휾��흿��ힿ����ힿ잿잿잿��������������뢿럾읿흿���흿������������쟾쟾ힼ졻젼롾꡽젼잽일ꝿ휾쟾퟾읿휾읾렿ힿ쉱䆰⇱ㇰ䅰ヮᆯㇰ䈰㉮≯���䅱∲䅭ᅮ∳慰ㆱ䅰ゲゲヱ㇯⍱㈮߄�㉱Ⅎ䃳䂱关傲〲ケ关僱〰ᆴ悰₲ㄴ儲㊴慳䃳䃳䅳关凵熴憶烵悶慵憴憵郵膶熴拴色懵爳扴爳戳扴狶銵茶茵錶荵掷勵勷苶銵苶鋶鉷鉷鈶芵苶鋴苶鉷鉷鋶鉷鋶鈶艷荹ꎸ茸錷ꌷꋹꌸ鍻싻늸鎸ꍷ鉹ꋹ댷ꋶ錺쌸鎸ꌺ댺댺당ꇻ놸錺뎺델덼ꋺ茻鍻쐼뒼쏻쏻쌼팼퍻쎺댼슸鐺쌺썻팺쏻쐾폾썽틹ꍸ늺늼팼쐿팻鎼쒻锿쐼둽듽풼퐾���댼펽���쓽���씾�퓿��햾�������������핾씾������쓾���������������������픾����������������������������혾�����앿���������������������읿������햿퓿������헽ꖿ픾�����������������������헿����������홽횾��������������홿욿����������홾뙾����������왿��������홿���헿���얿������욿��윾������홿����������������������������띿윾������������홾��횿뚿��옾떿����횼����������������홿����������읿휾��흿읿읿욿����왿��������������������잿졽졽��횿����웽��������������잿��������������젿흾렿렿흽�������������������랽랾퟾ힾ띿������ힽ렿젻ꟾ읾랿쟾쟾좾퟾��ힿ슯䌰⌲ㆯ㇯⎯⊮⇯⊳熯ㇰ䋱↰∰㊯㋱ⅱ⇱㈱兰僲惱ㆱ䊰Ᏹጲグ⇲爱刱僱ⅱ≱䈰㈳懰䊯㋰䉲懱㊲劲关䅳关僱ㅳ关燲爳臲剴熴扴狵狳䉴熴懳䋴苵狵狳拳憴戶芳獵鉴父舶舶茷ꌶ莶銵茴菴銵茷ꇷ舶苶鍶ꊵ茷ꍷ鏷ꌵ錷ꊸꌷ쏹돹鏷萺썶쌵鎶鐸鍹ꎸꏹ덹ꎹ쎹썸당됼폹돹돹덶ꏸ쎷돸쑽銺늺당댼폻쑹ꑹꑻ뎺둻퐺쑽쐼퐸둻퐼둻됺쌺푻퍽팼퍽퍽둽꒾둻픽�푻퓻쒼씿쑻뒾푻���피퓻쏽镾꒼쑼�씾�쐾�앿쐿풼약����꒾핿�������������������퓾�����������������������������������������������������뙾떾����홿��햾������������������������������홿����뚿��������홿��������헿����������������홿����������������������������������������������������������������������������������왿�������������������������혾��흿읿�����������������������������흿������������욿������옾������ힿ��윾������읿햾��흿잿������������������왿������������������������흿ힿ읿�������������흾��������흿쟾읿������������휾����횿������띿�������������잿��������읾����흼�������������������������������젿���퟾젿������ퟻ뢾�������좿렿ힿ읿쉱䈭ᇯㆯㇰ憭䅮∰䉮⊰ቱ≱䆯ㆯ㈰㉱⇲兰熯劯䇱ㅳ僳䄲䈲䈰ㇲ儳熯㇯Ⅎㆱ䈰㋳䈴ᇳℲ䄳烱ㄲ惵ꀴ惲戲䇲儲䅳刳戳臲熱䇲剴釲鈳苵牴熴扵拴艷鉵挴犴懵燵牷鈳扴犵芵艷醴戶芵艴鉷鉷鍶ꉴ猷ꊵ舶艷鉷醴拶鋶鎸ꏷ葶ꍷ銺ꊺ芸鉹銺눺늺늸ꊸꎸꎸꌺ슸ꌷꍻ쏻莺덻퐺쏷ꐹ瑺葹꒺돻ꏻꌻ댺싻쏺뒼쒺둻퍻폽퍻쒾ꋹꍻ썻썻쎽됼폽���쑽쐿펽뎼퍻쏻ꕻ쓻푽펾���쐾��������퓽폽����풾폿��������������쓿쓿������������옾퓿�����������푿�����������������������������������������������������������풾�����������������������핿�������������������������������������������������������������헿������������������������������횿����������������������������������������������������������������������������������횾����엿������쟿�������������������������������������������������욿��횿����띿윾잾����흿읿옿������랽颾ힾ흿흿��휾띿��������������������������흿읿��흿����죽������������������������������흿���������������������������������������������윾��잿��ힿ젿�����������뢾���좾����������흽쟾휾읿솭䇰䅰ㆲ㉱⊯ㆯ㈰䇬ᇰ䃱ㆰ������ᄲ悰䄲䄲䅰凰䆱䃱冱䇲僱ㇲ剱䈰ᅳ䉱䊰ᇯℲ䅳凳䉵惱关燲凳䃱儳焳灵兵扳劲剳勵匴劲㉳兵愴冴扴煳䅳䉵戴劵臵然醶然熶牴犵苴艴犴捵扵憴券臷膶燷艷鈶芵艷銵茵錵銵艷鉷뉷錸錶菸挸錷ꏹ덷鎸ꌶ荷鐺ꌸ錺싹당댼팺덹ꏻꎷ吺ꋹꏻ쏹鏹돹됼퍹ꐹ퐾썹ꑽ쒻鎺됼퍹ꏻꏾ쉼늼틻쌺쏻쏽铼ꑺ蒺뒼썹꒾鏾ꏺ琺썽퍻펼펽됿펾쏾쐿폾슽쏽����핽��퓽퓼蔽둽쓽핽떿피퓽쒾풻���풾�����������������씿���������������������������������������������퐾����������������������������������햿���������똾��������������������혾뚿앿���������������뙿얾������������������������핿���������뗽��������������������������������욾������������������������������������������������햿����������������������������������������������������퟿����홾������욿����읿��횿띿윾��잿쟾잿읿��������휾띿����������������������흿����������������읿��������흾띿�������������������������������휾����ꟾ죿������퟿�������������������������������������������퟾죾럾ꟾ��좿뢽젿뢿렿������ힿ잿��뉱⊰ጰ⋯ቱ䆰⇯���ߏ�㋱↲ሯ拰䌲ㅮ↱䆱䇰䇰䇲兰ㆰⅱ≳冱䆱䉳刲䈲∲Ⅾ↱䇲刲䍳⌲ሲ䇰䋱⌲㉳刴勴⊲勳扳刴凲关凲凲凵焴兵兵憴懵燵爳戶腳熵郵腷ꃵ憶犵芵艴狶銵芶猵鋴芶狶鋴茵鋶鈶舶舸鉷鋳猵銵莶鎶犸鋷葹ꎶ鋷菺퍵鐸鑺莸荹ꏹ鋹ꊸꋹꋹꍻ썻쎺鏹뒻鐺ꎺ됸뒷듹ꑺ葹ꑹꑹꐺ싹돻쓹ꔹ摹꒺둻돾썼ꐼ鐼됼둽쐼됼됺꒽꒻锽땻씺镻ꑹꏻ葽ꖿ퓼ꏻꐼ뒾풼쏻쑼듾듽퐼퓽픽땾쑻뒼픽长镾씼피핾앾ꔽ锼퓽풾픿씾�������씾�쓼ꖼ镾��땾씿��픿��햿햿��떿픿������������픾햾얿핿��������������������������������������������푽�������������������������������������앾ꙿ�������������������������������难�������������������������������������������������������������횿��������������햿혾������������������������������홿������������������������������������������������랿욾����������������������������������횿���������������������욿����흾띾����������흿윾뜾����������흿������렿������흿��횿������ꝿ����ힿ������������읾�����������������������������������������������������������������������룿�����������젿뢾���ힿ����������좿����ힾ���뢿랿������젿��줿젼낲ㄲ䆱䊯䊰ሰዯ㉮↰⇱ㆲቱℲㆴ懰䇲兰㈰ኰ߈�㊲捳䈲䆱䆱䆱䇰䆲㉰爯愲ㅳ䇲凲刲䈲䉲戱熱䂰∳憱䅳冶煳冲㈲䇰䇲关冴戴勴⊴䇵熴兵愳熴芳鈴労拳狳戴創戶舶舶苶鍷鉴熶爸釷腸燵犵芹牷膹臹ꉸ쌶菷ꍷ錶茷ꆸ銸ꊺ놸鋺蔺됶玸ꍹꍸ델뎺덹荹ꍹ荸덹ꌻ錻鎸茺덼ꏺ珹됸쏷늸ꋹꍻ썹ꌺ쌺슺뎼뒻鏹당뉽쌼퐼폻썼꓿쐺쌼팺뎼틹ꎾ鑻듽풺듻풾둻뎸ꑿ���됿��쎽댼쏿푽씽땾쒻픾푻풼앻엽ꕽ�됼��핽����풾듽��핻쓾�풽���똿ꖿ��퓿����픾���������쓿떿혽꘿�������������������������������������������������������������������������������������������������������������������������������������������������������������������왿������������������������������������������������������������������������������������������훿흿������������������������������������헿������������������������홿��������������������훿��������옿������������������������������흿����������ힿ쟿����������������������읿����������������������������������읿�������������������������������������������������������������������줿줿ꢿ���������������������������������좿렿렿�������������������줿��산⇱㊲劯㊰ሰᇱㆰ∱到䊰ߋ����䅰ㅰㄲ䈲≱↰≱⌲ጲ㋰到䅰冱愲䄲䉳劲㈳���䉱⌲㋱⇯���傰Ⅎ䅳关剴燲勵煳䃳ㄴ冴懵煳凳䇱㉲戳懵燵父牵慳割憶燷臵犵舶芸ꅵ凷臵鋶팶荷狵犳鉸拶銳牴父苶錶茴号芴捹ꌸ猸鈶臹ꌸ鍹ꌸ銸鎽뎺당ꋹ뉹ꉹ銺菻荷玺鎺덹ꍹꋹ늸ꎸꑹꐸ鏹鎺鎺鏹덷錻錻鐺ꑺ攽鐺ꋻ싻쏻쐼됼鏾ꑽ쐼뎽뎽뒾뒽꒽ꐼ푻듼ꖻ嗹摼鎼퐼듿쑽쑼钺뒺퓽푽쏾��쑽쑽퐻��쏾��폽풾픾����푽ꔿ씿ꖿ픾������약�듽������쓿������핿핾쓿�����������엽ꗽ얿푿�������������������������������������������������������������������������������������������������������햿������������������������왿������������떿��������������������������������������������������������������옾��������������옾�����������������������������������������������������������������흿����횿��홿옾��������횿������������흿����������������������������������������띿����읿흿����������욿��������������������������������������������읿�����������퟾��윾������흿��흿�������������������������흿�����������흿����������꠿����띿������퟾�����������������������������렿���좾������렿�����ꢿ�����������������솱䌲㋱���勱≲������ވ�∰ጳ܌�ቱ⇱ሴ㉱⇱ᆱ䉱䋱∰ታ㈲䅯ሱ刱凱㈲䈰ㇱᅴ⇳䈰ጲㇱㆰ∲䈲䇰䉱剳剳剱∱儲䅵愴䆵㊴䈲≲挴犴䋷䇶䆶状叵䈲䊴戶膴拶㌴卵扳創扵捵揵抲㏷芶狶銵苷荷狵犵ꋶ鍵荶ꊸ鈶獷鍶ꎶ猸鉹ꎷ됸됸늸鋹ꎺ덹ꌻ鋹ꏹ鍸呼鍷瑺攻摷揷茸銸ꎺ鋹ꌺ돹鐸鐸鏸䎹捼ꊺꏻ쏻ꑻ됺ꍹ菻쏻ꎸ萺쑽��뎾쐼돻ꐻ蓾듻쓹蕻ꖼ뒻铹萺ꐼ뒽꒾뒾폻ꐼ뒼픿쑺蒼쐾쒺뒽ꔿ쒼픾��씾ꔽ듻씼퓽풾폽���쓿쒾��떿퓻쓽쓽���햾��������듿����혾������ꗽ����떿����떿떿땾����헽����앿������픾���������������앾����������������������������������������������������������������햿핿������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������윾����흿�������������쟾��������������젿�����������������흿젿렿����쟾꠽靾鞿������������������흿�����잿��������������������퟾��礿��������잿����줿����������������������������젿뢾����줿죾룿뢾ힿ��흿��ꟿ����젼��������뉳㉱⋱���ފ�ሰ㊲到㋱���ዯዯ㈰ኰጰ⋱Ⅎ㈳戲⇯���ㇲ剳㈴ㆴ冴凲劵臱ጵ㉳ㆲヱㆲㆴ憱懲儴关剳刴創戲䈴㈴㉳㌶扵䆵ㆶ慵冶抶勵刴关煵憴劳牲挵㋵燵鈳懳䉵拴芵艵䍶䋷扸扷鋶눶狷艵掸莶鋵狷芸銸鋷茸獷玸茸鋷莸ꉷ莸菺琻莸莸ꎺ狻錺뎺댺덹ꎸ萸덶ꏹ뎸莺鏹鍹ꍹꐸ钻琹琸鑹ꏻ荼莽鏺풺땻葼璼쐼폻쎼퍼ꍽ팼ꎽ鏻莼퐼풽꓾链덼꒾퓽쏺폺퍻퐼둽쒼앻쒼쓽푼钾폹둻풾푼锿쑽쐾푽쓿쓾똾뗽ꗼ闽ꕾ쒼쐾퓽퓽퓾됿풾쓾듾��픿ꔿ씾땿��������퓿앾��������얿듿����떿핿����홿얿�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������횿�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������흿읿������������왿왽ힾ��������������������������������흿��������������렿랿����������잿����������������������������������������������������������������������좿��졽������������������잿����������������������뢿렿�������좿뢿롾��젿��뉱⋱������ቱ≱≯���������⃳䅰㄰ሲ⌱剱䉲戲䇱㉳ㇱሲ≱䇱ㇱㇱ㉳劳߈�ㅳ䆲㋵狳䇳䁵剴猴凳䈲䊴䍳⎲⋳䊴挷䊵⊴䋳戱創懶䆵㉳匴獵抲勴舳脴制爴㊴䉳創抸釷状猶芶匶艷苷艷鈶ꆶ懺犻拷䌶拷抸ꉷ鉹鉷苷莸ꍷ牷荻쌸鍶ꍷ珹鍸叹鋷荸당뎸ꐺ쏹铷鑺菺瓹改擽瑺萹瑼鏺獹揻ꐺꑺ撻璻璻鑽ꍻ쏻썹菻꒽ꔺ疾푻퐼듽풻钻镻앻쒻钽蕻蔽锽锺疻藼锽长锿쐼돾��씿ꗽ꓾��ꑼ铿쌿쐾쐿퐿��햿퓼蕾꒽꒾퓿�퓽핾씿씿��쓿����풾뒾��쓾딾퓿듾딽딿쓿����������딿������������������������얿����폿�����������얿�������������홿씿��������������������������������������헿������������������������햿픾�������������������������������������������������������������������������������������������������������������������������������������������욿�����������������������������������������������������������������������������������������������������������������������������������������������������������������������흿��흿������ힿ����������흿�����������������������������������������������잿����띿�������������������������������������������������������������������������������������������������휾������������������������좽褿��ꆰ���䇲ߋ�ވ�߇�䇱㈲∲䈰䍱兯ᇯ㋳抲㋳䋱⋱⇱ㇱ㈲䊴戰ቱ≱䉱䉳剴ታ刲䉵愳ᇳ⍲懯⋳䊲㉲拳拳䍳���ዴ∳戴关䉵䉵䋴⊵∴ㆲጴ獲挲㊴䉵扳厴ጴ牵拷苵犵腳䆶犴揵䌶拴葺菸扸愷䉺卸剹釷猸鋵獷獷珸捶䎸莸茶葶ꕷ璷䏺琹珹鎺鎹揸䔸菸摹꒸鏹뎸萻撻珼揺咸瑹쎸ꑹꐹ叻ꐼ鑼鎽덽덼ꑻ푹ꐺ꒺뒻鑾璼쓾鑹ꐹ푻��퓻씾�쒽ꓼꖻ蕻ꐿ돾ꔽ둼铼ꔺ閼��돾꒾풾��풽��ꑽꔾ헽씼픽떾閿����퓿��퐿��핽��땿��씿꒾����엾閿����옾����������씿�������땾��������閿����떿��������딿얾����핿����������앾ꙿ����������������������������������������������������������������������������������������������������������������������������������������������������������홿�������������������������������������������흿훿������������������������������������������������������������������������������������������������������������������흿������������������������������������������������������잿������������������鞽������������������������������������������ힿ����읿���������������������흾������������������������럾����줿�����������������������������������흿�����������������������������������餿ꤿ����������툰ሲ䈲䇯���ᆮ߉�䊲剱䈲䅱���ኲ到㉱⊲㈳������ゲ≵䎳���䇱ㇱᆲ㈳憱懳䅯ኲ㌵ቲފ�ⅴ∴劲㎷匲፳䈴債䉳劲ㅳ䅳䉳労䊶㊵⋴⊲㉳剴熴慵悴煵抵苵牴鈳抶狷芴䊶剷芶珸揸䌶捵苶닶錶莶状剸憶愷戸銶玶獷玹掷司䏺司揷茸鎹䒹䔺玺銸錻獼茸玺鐹吹吺ꌶ掹掸莹쌺쏻ꏺ珺獹茻鎺鎺돻쎺鑻됻蓼ꏺ琻蕻菾ꐼ푻됼퐻딼푺핾엽ꔺ畻ꓻ쓽푻돽쐼픾쐼链됼钿锿钾듾딽隿딿ꏾ��픿꓾钽ꕽ퓽풾푻푽씽锽떿픿ꔿ꓾됿����ꔿ����������픾����똾햿핿����������������픿��떿픾�����������������옾헽��옾��������������������������������������������������������������������������������������������������������������������������������훿����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������띿����靿������������������������������������������������������������젿����������������������������������������������뢿頿��������������좿��������������젿�����������������������������������������袿��좿맿��������ꤿꢿ��뉯���ㇱ㉱䍳䎴刲䅱���⋱������݋�䆰⇱㇯⇲劲危ጰ⊲抴慱���䆰Ⅎ㈳挲ߊ�㋳䊳ߌ����߉�䈱労抴䎸臶䈴㋱∲ℷ䆴労捳䉴ት⇶䈴㋵刲∶舶艴熲㌴即⍶䌵㌴卵挵Ꮇ㍶䎷制爸舶狴艴燵拷拵牴狷拷扷苷苷苷菷ꐶ呷捵莶錴瑶ꑵ咷䎻匸珹钻钸吻萺ꏻꎺ鏺璻璻町钸璼撻珹钸琻萹呺萸鏻菺瓹蔺鑼鐼뎺鏹链뒽ꓼꓽ푻땾ꗽ꙾꘽瘿꒾돾쓾锺瑼钽ꔿ쑼鐿폻ꕾꖽ葼铼꘽ꖽ蕼疽藾镾ꖿ떿뗽앻ꕻꔼ��꘿ꙿ옾풾뎿꒽藾��閽薼����땾꘿ꕾꔿ����쓾땿��퓾鑾蓾딾����딽똿ꕾ꓾����������햿��딿����혿��떿떿����������왽혾�����������������������횾����������������������������������������������������������������������������������������������������������훿������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������잿������������랿졾������������������������������������������������쟾������������������������������������������������������젿��쟾������������꠿룿����졾ꢿ餿ꤿ죾������뉲���∰፳⌱ފ�ᅯߊ�߇�ᇳ≴ߍ�ߊ�㊲匲ጲ߇�≳㊲ㆰ⇲創抴䌲㏳㌲ዳ䊳ᄲ㉲茲㌵ㅴ���ስ߅�ކ�㊴拱⌲㋳戲䇶䍵拷䊵���߈�ᇸㇷ冷ⅵㇳ⍷爷制牵抶状猶挶捵揵捳䏵␶厶猸猶搶琹卹挸狷抸銸ꋷ抴䌶莸菸䐶㏸拹ꉹꌸ銺ꉷ菹钸珸揸擹葺搻捹ꈻꍹꍼ芻揻萼덼ꐹ玺猻鉹鏺琺ꏻ莹䑺茻厺琻葼琼鍻쑼畿镺敼璻瑼璽瓽璼摼璽ꕻ蘺蒽��꒽畿锾葼瓾锾藾阿ꕿ长链듽풼쒽��뒽蓽퓼ꔽ锿쒾풽ꐻ擾长镾ꕾ씼헽엽��������딿씿왿쓾阾떿����ꗾ瘿��똿��똿ꗽꔿ��쓿앾꘾핾����������꘾똿��������딿��������������������얿����������������������픿������띿��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������桾������������������������������������������������������������������������������������������響��Ꝿ��������������������������������������������������������颿���������������������������������죾�����������줿�������袿����������������ꦾꟾ��줿����댲ߌ�ߍ����ވ�܋����ߏ�ߌ�ދ�⇱㈰ヲ���⋳䆰���䈲⇱ሴ㉳㉱䇰䆱䊴䊲㉳劲ㇱ㊴戲ⅴ∷刴㈴㋵即䐲⍳⋴⌲፳䅳冴創䌵㉳㈷凵牵拶㈴ㇵ父至≵≳励荵搶㍶䎷厴㌵ዷ䊶㊶卹艵䋷抶㈷㋸⊶㍷狴茴猴珷ꌴ猸勷掸菸挸犸錸鍹ꍸ㎷㒸玸ꎺ瓹攺珼抹㐻挻犻揻萻葺菹鍼ꌻ錸叹됸鑺蔺珹鎽덼ꏻ萼鏻莽鏻莺璽꒻畼瓾됼鐼鐿댽莽鑽ꓼꑻ뎽锿ꑾ蔽鑺政ꎽ钾뒽꒽꓾둼锽锽딼푼链뒾퐿뒽薽薿딽链藾隿똿ꕾ��핾ꕿ阿��뗽ꗽꓼ蓿씿엾长��듿����ꔿꔿ씿쒽ꖿ핾������뙿쓿����얿핾얿����얿떿��������왾꘾��햿��씽��������픿������쓿����������������듽������������앾��������������������������������������ꙿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������렿������������������������������������������������꠿렿����������������������ꢿ���������������������������������������������������������������������������줿������颿韾����ꎲ⎳������ᇲ߉����ߊ�㌱ޏ�ߎ����⍳���ሴ㉳㉴ߋ����∲↲㊲勴≳㋱ގ����⊴䍳������䊲㉳㉵⋶፳���፳⌲Ꮄ፳���⊲㊳狵叵⋶ኵ⊵⋴���㊴䊴䌴勴���ߋ�㋶㌵㏵䊴䊴䍵捵抴扵扵挶芶牷茶捷狺舷卹芶狵獷琹厷号ꍷ玹掸茶荹ꍹ菷萺䎹䎸菺瑼琻莸莺鍹葺萻摼鎸苹ꌽ苼獼葺摷䒼撻瑼瓽瑺摻뒻铼蓼蒻甾蘾땼痾长��ꓼ葻둻듽퓼ꕻꓼ蕻蓹葼镾얼阿꘽闽ꕾꑽꑽ��꒿钽꓾钻锽锾薽藽꒼쒾풾뒾듼ꕻ蘾떽����씿ꕾꗾ长钾����똿ꙿ얿떿듿얿땿��땿阿����떿떿딽뒼얿������엾��씿��핾얿����������������씿��������떿��������땾ꙿ������땿����������������������������������������������������������������������������������������������������������������������������������������������������������������얿��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������횿������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������뢿������������������������ꤿ�����������������������������ꉲތ�ߋ����ሴቴᇳ������ߏ�ߌ�ލ�ዱ���㈰ጲኳ߉�䇲凳䉱∰ኴ䌵㊳ጵ㉲ލ�⎳���������ވ�Ꮄጲߋ�∲䋳䍳⌲ሴ創捴ߋ�⌵㌵㎴㌲ߋ�ጷ⊴䉳勴⋴≳㉳㋵狵猶拴≵䊶卶䍶⍷狵猶挷䍶䍵搹匸犸ꋷ挶捵捷獹荷獷状㊻抻揸撸呷䎷㑹ꏺ珼拺揼摺菷莺돹钻璻玺猻鍹荹苻鋻鎺瓹葺蒻鍼ꏻꑺ萻落琻菹鐼됻攻敼瘽闼蕼璽蓼葾蔾꓾듽疽蓾鑾蓼薻蘽锾蔿꒽蕻菾��쒾듾铼蓾锿꓾钽蕿锾��ꐼ链阾��ꔽ땾앾앾ꖿ딿��������픿앾����똿ꖿ픿옾떿��픿ꖼ阾떿����홾땾ꖿ����똿ꕿ��옾��픿������������헽ꖿ����떿������뙿������얿똾��������������������������얿������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������뢿���������������������������������������������������������������������������������������ꢿ������������������������좿��������������������������������뢿��������뤿������������������������������������뉴ሳ���≳㈲∲䈲↲ㇳ≴ቲ���⊳߉����㊳ኵ���ބ�↵㈲⋱⌲ዴ������䎲⑶㊵∴㋴⍳���ጵኳኳጷ䋴⍵捷燶⇶⌶抴䎴Ꮄታㅳ䈶状牵扴犵⌷⊷ሷ㋶㌵㈹䄴䊶犴戴㋵劵⌷䍷猶捸厹捸㌸牷茸獷鍵鏸掹䋺䎹䎺鉷艹鍹葺携䏸䏺厺玹掹撻珻菻萼鐻摼鏺瑹ꐺꐼ鏻苺摽꒽菺吻葺攽鑺攺瑺葹꒻锹喻疽蓹敿钻琻擾锾蓾蕼疼鑼链딿钻玽뎾쒿镻蔽钽蒽꒽꒼擾链链锿ꔿꗾ百藽ꖼ镾ꕿ锿꒽��ꔿ��ꕿ��ꕾꕾꖿ땾����씿꘿꙾��앾����������됿��������ꗾ������ꔿ��쑾��떿핾��������딿锿��듿����������������땿����풾퓿����������������������������������������������������������������������햿�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������꠿��������������������렿����������������������������������������������������������������������������������������������������������������������뢿�������������������������ꈳ���܈�߈�މ�ߊ�ݍ����∵߈�݌�ߌ�ዲݎ�⌲ߎ�ᑱ⑱⏴ጲዴ⌲ߍ�ލ�߉����㎴吵኷ኵ⎴ᑷ䌵㋴������ލ�Ᏻ㉳割戲⊳ኳድߋ�������ዴ���Ꮈ���ߎ�ᑶ␷⊶㌸剸⌹㍸⌴舴勵厶牱⏷茵㌵㎶狵匸牸扸䌸錸猶葷䍹捹揸䐺䓺吶㎺獼莺답獷琹珸掷呼携䏺琺ꏺ厽銽ꋺ萻萻莺덼ꌻ哼葼珺呺萻擼蒻琼덻씺铽琻哽璽琽瑾葾葾畻藹瓼虾ꗹ撽ꑻ뒿鑾葾莽钾딽딺痾甾蕾쑽䕿铺嗾锾蔾蓾钽蕿畿甿����쐿��뛽꙾꙾뗽��헾阿薽����땾����땾ꖿ땿阿꙾薾����떼阿꓾����얿������������虾꙾ꑽ��씿옿������땾씽����������씿��씿��엽��������������������������������������������������������������������������������������������������������혿����������������������욿�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������袿�����������������響������������������뢿������ꟾꟾ����좿��蠿����럿����������ힿ�����������������������������������������������������뤿����쟿�������������������������������������������頿���餿����즾��젿������������������駾��숱݉����⊳ߋ����⇱ቲ���������፴ߋ�ߊ�ތ�ߊ�߈�㊴䊴ފ�ތ�㋳拴∲⋳抲㉴ቴ፳⊳ስߋ�፶⋴������������刴労挵㌶���߉�ߋ�劶創⊵⏵⎴ጵዶ㌵ቲދ�拵司䏵Ⓓ䐺䊴䍵扸扸䍸㋶㊶猸鐹琶㋸≸䍷猶慸獸卺䎸␷⑸㏸䎹䎺玺珺珸撸哹搻捺䍼莺璻琹吺ꐺꐹ瓹摷䓹萻菻菺喼镼璼撻瓽疽薻瑼珻蕻蕺攻擼蒽蒽ꐼ둽꒽ꔽ땻ꎺ듼蔽鍼搿��藾链둽��钽葾菾��땿链蓽甾蔾蔾蔾蕿长链蔿长閼锾��ꔾ蘾����똿ꔿꔿ����듿������ꔽ��땿��ꖿ땾꒿����앾��������픿ꔽ��핿������떿����������������얿������������햿���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������릿��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������렿������������������������������������������������������������������������������������������������������댱ތ�ߌ�ߍ�ሳތ�㏱ޏ�ތ�ތ�ގ�݊�݋�������㈱߉�䆲߉�㋳䎴፳���㉳㊴挴勶ቲގ�፳���⊶㋴⋴⌵፳���ጶ搷␵ኵ⊶劵���勸ᇵ懵錷䍶⌵ዶ㉵䉵⏵⍶⋶ጷ፷᏶Ꮉ挸叹㉸䈸挸卸吶㐶㎷㍶䍹荷瑷摶㒷䑷䏹㎸Ⓓ䒹䋸⏺唺璸厹揺琺䐹厹䏺璽ꎹ掺瑼鐹瑹ꎺ玺玻卸㑷䕼璻町瑼瑼畼甹呼攺瑺摼瓽璹䑼璽蔾蔾蓽��뒼䔾��ꗹ昽痾锽땾ꔽ锿��떼閺ꗽ앿长��蔾薼闼薽蕻蔿꓿쐿듿����꘿꘿꘾딾��������헾阿������������꘿蘿ꔽ��꘿��閿����옿������������떿떿떿딿��똿��홿얿떿����������딾������������������阿��풾��������������������������������������������������������혿������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������룿���������������������������������������������������������������������짽즾������������������������뤿��늰ߌ�ኴދ�݋�ߍ�ߏ�ጳ܍�ߑ����݉�ދ����⏱ጱލ�ߎ����ߊ�ߋ�ߎ�������ߋ�ߌ����ߋ�݌�ኲ㌵㎴ᐵ␷⎸⊵���⊶㋴⌵㊳፳␶㏴���ኵ���Ꮇ匶扴፶⌵ጵጵ፴ߐ�ᑷ䌴制狷䌷⍸剸抹㍸㊵舶苷捶䑵珸搶㎸茶搷���䍶䎷吵ᑷ䏸搹珸䏸䒸哸司䏺呻咸玻卼挽菻蒻瑻吻搹唻撹䑻咻瓹蓹摻哽瓼蒼斻瓽獽呼携䒽瓽瓽��閽薽旾阽闼钻発疽藾百藾链藾阿ꔾ蔾蔽链��똿꘿ꐻ啾ꔽ链铼藽꘽陻藼镾ꔿꔿꔿꔽ��땿锿��꘿蘿꘿����������������옿����꘿����陾蝾띿��������ꚿ뙿옿��욿뚿똿������������뗾��������������������꘾����떿��������������������������������������홿�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ꦿ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������줿��������������������������������������������ꉲލ����������������ވ�⊳ኴދ�ߌ�ވ�݊�ߍ�ߍ�ߋ�ݍ����ފ�ߊ�ߋ�ጶ���߇�މ�ߍ�⊴ދ�⎴፳���������߈�ᆵ኶勵創⊴䉳労挵ድ剴ዶ㍶⌵኷኶㊶㉵⇶䈴匵Ᏽ⌵㋵劶叵䏵䍶䍸㎷㎹䍸匸匹㍸厶玷卸司揸挸厷㍸㐹吹司䏵䒶搹珸搹玶獷鑺敺䕷䑻叼搻摼珸䑻咼摺摷摺菺呺撻瑼鍹掺璻璽葼珼摾藽ꕿ钽璻瓼葾畿铽瓾蔾薽藼蔾蔿閿뗽꒽蓾锿��ꔾ蓼蕾ꕿ��꒼斿뒿钿钻甾蕿��ꔽ锽镾꓾钿������꘿��똿��长����������ꔿ����ꔿ������딿镾ꖿ����蓾��������������������뗾闾阿����������쓾�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������뜾����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������蝿����������������������������������������������������짿��������������������������������������ꋴ⋴���������ߍ�ߍ����ߋ�ގ����ߍ�䋴���ߏ�ߏ�፳⌲፳���ߌ�ቲ���߉�ኵ���ᑶ⋵ߌ�፳⌶���ዶቴߎ�㍳���⏶Ꮅ���ߋ����扴ߌ�ዱލ����⌵㌶���፶䋳䋵劶剸捶䏵䍵拷䋷䎶琹獸⎹䌶挶撹䐷⌷䌸鎹揹㎹䌸狷揸擸䒷ᏸ䐹咹䒹䐺䐺䐺䕾ꎸ菹钽琻蒼搹唹唹呻唻擹敻蕺敺敼璻玻叼摼撼施蕼瓽甾蕼疽蕼璻畻ꕹ链镾꘽瘻嗼蕿长锿꓾锽떼锽闽ꕿ阿꙾��땿锾蘿ꕿ锿閿똽隿뗼������픿��꘿꘿����떿����똿����꓾����Ꜿ띾��ꔿ����뙿������뙾��똿虾����뙿욿��瘿������������뚿��������������������욿����������띾������홾������������������홽����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ힿ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������슳ኳኳ፳���ߎ�ߎ����߉�������ߊ�݋����ޑ����ߋ�⏳㎵���ލ�⇲݋����������������ދ����㍷ድߐ�፳���Ꮄጲߋ�⍷ᑸ㋶ጷ⌵㏴���␵⎴ᎴᏴޏ�≵䊶勶㌵ᏸ䐶㑶㏴ዶᅸ㉷莸茷⋶ᏸ䏸䏹㐹勷䊹猷䍸呷䒸司䎹摸㐶㋷捹揹ᒹ⑻去䎻䓺咸哼莻叺唻擺喻畺敻萻捼搻搻摺攻撽珼擽瑼掻䏼撽瓺喽萻攽鐺䔾蒻疿땿闾��얽薽薽施晿旾镻蘾떽藾闾癿旾嘿蚿똿꓾蕿锾蔽��꙾꙾ꕿ��ꗾ��딾虾藾链��씾����㕿����ꕿ��皿阿������������꘿꙾꙾虿晿��百����뚿隿长��������������뚿����ꕿ��������������랿ꜽ����������������������������������ꖽ������������뚿��ꗾ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������랿��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������覿����������������쐵⎳���ދ����ሳފ�ߋ�������ߎ����ߊ�ߒ�⒱���������⊵≴ߌ�ߋ�⍳���ᑸ㎵���ߏ�ድߌ�ފ�ㅵ㉸␷⏴ތ����ᐵ⎵���ߊ�ㇶ⇶∷㈹䄸���ߍ�᏶᏶ዴ���፶䋶㌷䊶㍸司䍷፶䊴䌶掷㍶Ⓓ⑸㎹䎹掹䎷㌷␺䏹㏹㐺䎹䍺㎹䎸菺玹䏺犹劺苷䏸擺啼獺䍼揼捼搽珺珻莺玻咻璼擽町獸㐽瑻啼瑺揻ꏼ搻揺咻瑼琻哽璽璽璼昽ꗾ铽瓽瓽畾ꖽ蒿锿ꗾ长阿蘽癿旽䛾朽暿阿藼虾薽䙾��쒽����ꑽ����꘿蘿����딿��蘿蘿������땿锾��������������뙿욿뚿��链锿��������阿��������똿��������霾��꘿������������������������������������������������������헾���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ꞿ��������������������������������������뛾����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������뢾������������������������������������������������������������������������������������������������������������릿艶���ድߍ�ߎ�������ސ�ߐ�ߐ�Ᏼ���ݏ�ގ����ኳߐ�ݏ�߈�ዴ⌱ݐ�Ꮅ������ᐵߏ�␵⋶���⌵㏴ᓶ���኶勴⍳���ጶ���ߐ�ߓ�⏵⍷Ꮈ⍸⊷ጷ␷���ጵ㌵㎴㐵⏵⍶䍶⑷䎸���ᏹ㐷⑶���䒹ⒹⒹ䏹㍸㍸㏹㏹㑻吺䑻咹䌸匸叹㑻呻叹㒽萻搻吺䕺旹撼搽琼鏺璻璼搻叺叻葺撽瓽甾蒼施蒹䘽꛽ꗼ昺疽薽蒻瑾茽葼镾꒽璽町畺䖽昿虾蚼阽瘾��畼喽��癿��长��隿陾ꗾ��皽嘿������옾㙿����枾坽昿����蘿��闾��������朿圿陾ꚿ��蚿����������阿蘿ꖿ딿��隿뛾螿����왾������隿������꛾��������ꙿ������������꘿������ꞿ��������������������������������휾�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������꨿��������������������������������������������������������������������ꊳߋ����ߑ�፴ߌ�������߇�݉�ߍ�ߌ�ސ�ݒ�������������፸㌲ߎ�ߍ�፷ኴދ�ߋ����ޒ�ᐵᎳߏ����ᐳݐ�ߍ�᏶Ꮅ������㋶������ጵዶ㈴ሷዸ⋶ጷጶ������⍶⎷㑷䐶㑶㒷㍸⎸⎸␷⎷㍸㏺䏹㌷⊹匹㌷Ꮇ㏸䍶䎷卸叹㐻搻捺䍺䑷擸哺㕼哹擹摺擹敼唻撻鎺琹哹旼蕺斻啼哽璼攻斻甹啼画擼菼挻吻撻疽藼斻噻虼斻唿鐽放藾痽䖽撽��ꔾ薽��ꗾ疽薽虾虾藾闾隿����������碿瞾��������皿��꘿������阾뜾뙿��癿��������������������������������꘿꙾蚿��������ꕿ������������������옿��������������ꚿ��엾������������������������������������������������������������뚿����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������訿������돴���݊����ߍ�ߍ�܊�ތ�ގ����߈�މ�߉�፳⎳���ߊ�ތ�݊�ߊ�ߏ����ߍ�ߍ�ߋ����㎴Ꮃߏ�������ߌ�������⍶⌵ᐷ⏴���᏶ድߍ�᏶ኵ⏵⑶⏴���ᐶ㋴⇶⇶⋵卵户ዸ⏹㒷㌵ጷ䏹㌵ጶ捸叹㏹㎹䋷䍸㐺䐺⎸���ᐺ䐷Ⓓ䒹䑺揹㍸⏸䎹䐻咼䑼摼瓺唻䖽蓼萻叺叼捺䐻摼璻瑺揻菻蒻甹喽葻去吽甿ꕻ蒻瓽畿閽撽瓾锾薽撻甽듽画䘽瘿ꓼ蕿瘽瘽痾瓾蔿ꕿ百虾蛾�������������������������������������噿����长癿朿盾昿꓾����뗾百꙾꘿蘿��������长��씿��땿��������������阿������욿��ꚿ霾뜿��욿��虿����������������������������������������ꚿ���������������������������������������������������������������������������������������������������������������碿矿棿����������������������������������������������������������������������������������������������������������������������좿������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������댱ޏ����ޑ�ߍ����Ꮃߐ�Ᏼ���ߎ�ݑ�㊰݌�ސ����Ᏼ���ݑ�ޑ�ގ�ߎ�ߎ����ߏ�ޏ�������ᑳ���⌷䊵���������᏶ᐵᓵ⑶⏴������᏶ጷ䐷⑸㍷፷ᑶ␶㋶኷ᏺ䎸⎸⎸���㎷㐷⎸⎷㍶␷⓸䏹㎷㏵䐶㒹䒹⑶⑸㎸␷▹㏹㏺䎹㑻吺䎹䐹呺擽琺䐺䑻叺䏺䑻呻咻珼撽瓼葼瓽璹䓺咹䖽攻䒼擺啼㔾掻叼哽疻痾锻敼喽敿啿嗽䘽瘿ꖽ昿薽蔽长疽��闾啿嘿����枾��������������������������������������������������蝾瘿����隿��������虾������뙿������闾��������癿��������百蚿뛽ꞿ꘿����ꚿ隿��������������������虿����ꙿ��똿��������������������������������������������������������ꞿ������������������������������������������������������馿��������������祽㥾��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ߍ�ߎ����ߐ�ߑ����ߎ�ߌ�ዱ���㊳ߌ�ߍ�ߎ�ዴ���ቴޏ�Ꮅ���ߍ�␵Ᏼ���ߌ�ጷᐵ⒵ݒ�ݑ�␵⎸⍷᏶ߏ�ߏ�ᐴ䒷㑶⍷፶⌵ᕶᔵ���⏵⎴㎸⎷㊳ߌ�ዴ������Ꮇ㐶㐶㐷⑷䑸㎸���Ꮇ㎹䍸㎷司揸䏸䏸䑷䑷摷摺敷䐺䐹吻挸咹䓺吻叺吻撻瓽琺䔻攻擽厹㐻咼擺啼瑼摼摼摼撽瓾蓽璼撼䑽䐽琽瑼撽璽甾旾长长疽昽阽闾��闾嗾瘽��쓼藽��蘿藾痾矿���������������������������������������������������������������朿��������瘿蘿����������盾曾������������ꕿ����뛾蚿����꘿������������������������������������������������������������������������������������������������������������������������������������������������������榿��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������뎵������ߎ����ߏ����ޏ�������ߎ����ߎ�ߏ����ߍ�፴ߍ�ߌ�ዴ���ጳތ�ድߌ����ލ�ߍ����ݎ�ގ�ߐ�ᐵᑶ㏶ᐵᐵᐷ␷⒵ߑ����ސ�ጶ���ᐺ䐷⋶���ᏹድߍ�ቲޏ�⏴���㓸⑸㍶䌷䍶⏹㑸㑸㏶ᒹ䑸㑸㏹㐺䐺䒹䔹哺吺␹咹䓸䕺揺䍺䐻撼擺哺哺吻掻呼琺䓾莻咼撹䑻咼攻敼画攻施蔻擺啻蕼疽擼葼施蘿ꓽ疽藽䘾嘿昿敿��꒻甿ꔾ蕿闼曾薽����喽䚻䠼��߾��������������������������������������������������������������������������虾虾��瘿昿蚿��������畿瘿蛾����������뚿뚿��������晿����������������������������������앿������昿虾��螿����������������������윿������������������������������������������������������������������響壿����䦾䣿��磿䢾������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������쏴���ݐ�ݐ�ݍ�ގ�ߐ�ߏ����ތ�މ�ߋ�ߋ�ߋ�ߌ����ߐ�Ꮃߎ�ގ�ސ�ߎ�ݍ�ߋ�ߏ�������������ތ�ދ�ߏ�������ጶ���᏶ᐵᑶ���ߏ�ސ�ߐ�⍴ߏ�ᐷ⑶������ᑶ⍸㎷㎷㎸⑸ᒹ␷���䏸䏹㎷㐹卶⎸⏺䎸⎴ᐶ㒷㒷㒸厹䍺䎹䐹吺䓸䔹呻叺吺⑸ᑸ㑺撼摻哺呻咼摼琻撼攺町甹喻咼携䓽璼摼撽璼旼蓸䖽蓾钼䖻嘻嗼斻喻喻啿疽暽嚽㔾����啽ᙼ昽阽瘾嚽囼坹ऺ�����������������������������������������������������������������������������������������癿��癿昿����痽��晿䚿靿��ꜿ��������噿曾暽������������������蘿����������������ꚿ������������虿������ꚽ������������������������������������������������������������������������������뜿堽奾��栾⠾䢾墾��桿���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������顾����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������쎳ݎ�ݍ�݌�ލ�ߌ�ߌ����ތ�ލ�ߍ�ޑ�ݐ�ݍ�ގ�ލ�ݏ�ސ�ݑ�������ዶኵ������ܑ�܍�ߍ�␵ᐵ᏶ߎ�ސ�ᐵᒴᑴޒ�ᒵߔ�⒴ᐷ⏶ᐵᒵߐ�ᐵ⎳���᏶ᐷ⎸⎸␷⏶ᒹ䒷㑸㒹䎹䑸㏶ᒹ䍷Ꮈ⑸ߓ�Ⓑ㓸䏹㏹㎹䎷㑸㑸㒹␺⑸㏸䍸␺䑸㓺唻╼呼搻撼撼攻敼疻璽瑻呻哽瓽画擺唻斻畺敼畼瑼撼敼瓺呾蓽嗾啼唾擽疽蕿璼䒼䕿唾蔾蔾藾癿旿㕿瓽瓺㗺䝺⥽�����������������������������������������������������������������������������������������������������ꙿ����晾蚿뗼暿阿��������阿��陾����隿隿��ꗾ������������������������������������������������������������������������������������������������������������������������������柼䟼桾朼㞾塾����壿䢾㥿��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������꒳������ޏ����ᐳݐ�ߍ�ڎ�ۍ�ڌ�ُ�܍�ݎ�ݎ�ݐ�ۏ�ގ�ߏ����������ߋ�ߎ�ޓ�ܓ�ړ�ߒ�ܔ�ݓ�܏�ޑ�ߐ�Ᏼ���ݐ�ߑ�ܑ�ے�ߒ�ܑ�܏�ݏ����ߐ�ᐵᎵ���⌶���������ߒ�㓵⓶���Ⓑᒹ⍷ᐷ⑸㓸䐷⑸㒸匵ጷ⎹䏸䏵⑸㒹䏹㒹䕷䖷䐺⓺㖻叺䐼ᑻᓹ���⓺㑽䒼摻哺唻攻旹敼唻䖻発瘺瓺唻智嚻晼斻唾蕼瘻啼嗿㔾䖽晼晼敿疽显嘾噿晾��镼㕿閿땼圽改吷▷࠹᣼䪾������������������������������������������������������������������������������������������������������������鞿������������皿��阽睾����眿瘿����������ꚿ陿������������������蝾������������������������昿������������������������������������������������������������������������������杽䡼碿碿硾��袿祾榽梾妿����������������������������������������������������觾觾����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������鑲ے�ܑ�ے�ݒ�ߎ�ݏ�������ސ�ߑ����ߑ�ލ�ݍ�ݏ�ޑ�ލ�܎�������␲ߒ�ޒ�ܗ�ۙ�ܖ�ؕ�ܐ�ݓ�ޕ�ܔ�ݎ�ސ�⏶ߎ�ܐ�ݐ�᏶᏶Ꮅ���ߐ�ᕴ������㑶⑶␵ᑶ␵ᑶ⑶␵᏶ᑸ㐷���ᐷ���ᑸᑸᎸ⏹㒷㒷㑸㏹㐷���␺⏹ᒷᔹ㎺ߏ�䑺掹䎹䎻吼㐼㐺╻♼╻◺䖹㓸䕺旹掻去叼搻吻啼畺䔹㖽敼嗼擽㓽㓽哽啼哽嘽痺䗽䖼㘿薽旽䛼嘾��放撽畿长閻哸䑶㘹⦾��������������������������������������������������������������������������������������������������������������������虿䜿瘾噾蜿眿��蜿����������������痽����������虿��������������������������������������������������������������������������������������������������������������������������眿瞿��矿梿��裿����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������꨿�������������������觾������������������������芴ދ�ߍ�ܐ�ߎ�ߋ�ޏ����ގ�ߌ�݋�ܐ�ߑ�ސ�ݏ�ސ�ݓ�ܓ�ߎ�ݎ�ߎ�ݒ�ߌ�ݓ�ޙ�ۜ�ۛ�ۘ�ٔ�ݔ�ݘ�۔�ې�ݏ�᏶᏶ߎ����㏶᏶ᐲߐ�ݔ�ݓ�܏�ޏ�᏶Ꮅ������␷⑶⏶᏶፶⏶ᑶ⑶⑶⓶���ᒷ㑸㐷␷������䐷┷ᔵⒷ䓸䍺㏹ᓸ⎹㍺䍺䍺㎹㏻⑼摼画撹┻敺䓺㑻啼甹㔻撼撼搼㒾命䒼䔾擽唾旾锻䔾葼摼琻撿蔾敼㔾䗾唾放旾發暽嘾嗽䘿��萻匷ጱۖ�䟻�������������������������������������������������������������������������������������������������������������������������曾������������������蘿蛾蘽����睿����隿隿霾뛾��ꜿ��������������������������������������������������������������������������������������������������������������������������������柿�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������馿������������������������������������������������������������������������������������������������������둳���ފ�݊�ߏ�Ᏼ���ލ�ޑ�ߒ�ኵߍ�ݍ�ߌ�ޏ�ޏ�ڒ�ޓ�ݒ�ߐ�ߔ�ߒ�ْ�ږ�ۘ�ۜ�ݞ�ۛ�ݜ�ۜ�ٙ�ە�ܕ�ݎ�܌�ߏ�ߐ�᏶᏶ߑ����ޒ�ۖ�ڕ�ܐ�ߎ�������ᑷ䑸㓸䒹䎸⍷ᐶ㒷㕷ݔ�ߒ�㐺Ⓓ���ߓ����ߔ�ᑶ���䒷㕶㙵䓸咹䕸ޗ�ߐ�⑻卸␻咹⑻㎻哼蕺䓸⑸ߒ�Ⓓ���╺䔹㔹嗼施蕿铽��땺䗼敼疽薼㖻吺䒼擽畼嗼敻蘿曾䚽㖽䒽���啿长闾痼晿晿��䎺᏶ᒲۘ�᤺㬿�����������������������������������������������������������������������������������������������������������������������ߺ�ި�᝿������垿衾螿������������������嘿暿�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������馿�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������蓶ޑ�ܒ�ܓ�ߎ�ݎ�ߑ����ߎ�ݏ�ޒ�ݑ�ڑ�ٓ�ܒ�ۑ�ܒ�ے�ؔ�ے�ݒ�ݑ�ٝ�١�ڝ�՞�ڛ�ۛ�؛�ۛ�ٙ�ڗ�ۓ�ڒ�ܓ����������ᒵߎ�ߑ����ޕ�ٗ�ړ�ܑ�ޓ����ߏ����⏶ߐ����ᑶ���㏹᏶ݒ�⑶⓶ޔ�ᔶ㓸Ⓒߑ����ᒷ㐷⑸㒹䕸���ᓸⒹⒸߕ����ߒ����┺ᑻ㑻㑻㓽啼啼咼擺喽薻啼唻䑻㓽哺唻擽咼䒽甿长璼䓽咾吼㕼瘺盼嗽䓺ᖽ䕼㗽♿显啻◽✿疽䗾嗺⓴ߌ�ݒ�ܘ�ߩ�⮿ݹ�������������������������������������������������������������������������������������������������������������������������߷�����������曾䙿敿嚿长������霾������板��������癿䛾���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������掵���ܒ�ܓ�ߐ�ዲۏ�ޑ�ލ�ێ�ۑ�ی�ٌ�א�ُ�א�ד�ؓ�ז�ܓ�ܒ�ٖ�ٟ�أ�ס�՞�ל�ڜ�ٚ�ٜ�ԝ�ؗ�ے�ߑ�ސ�ߑ�������ߍ�ݎ�ܑ�ڕ�ڐ�ڌ�ې�ݐ�ݓ�ݓ�ܓ����ߐ�ߑ�������ᓸ䓸⑶���㐶ݏ�፸⍸⍷ߏ�ᑸ㐷���ᐷ���㒹䒹Ⓓ⑸㑷䖹㓸䐺䐺䓺哺唺ᕻⒹⒹⒹ⓺唻敺䖽䔻Ⓖ䒼䓽咼䓽瑻喽蕼啺䘾嚽嗺♿晿敼唻䕼喼㛼囼喽䕼唾蕼瓹���旽䖽晼䚻䓶���܍�ޒ�ޗ�ݨ���߸������������������������������������߾����߿������޼������������������������������������������������������������������������៿����朿��������������朿��盾����盾晾��畿��陿�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������菵ܒ�ݒ�ڒ�ڔ�ݔ�ݔ�ݒ�܎�ݓ�܏�ڐ�ݒ�ؒ�ؓ�ڐ�َ�֑�ڑ�ڑ�ؑ�ؖ�ܛ�آ�֣�נ�כ�ן�֟�ٟ�؜�ؗ�ے�ܒ�ݑ����ߐ�⎵���ݏ�ܒ�ޒ�ݓ�ݐ�ޑ�ޔ����ߓ�ߏ�������ޔ�ސ����┶㓶������ᏹᑸᐺ���ߕ����ߓ�㒹⑸㐷���ᔷᏹ㐺䏹㑻咹⓺㖼㒹���ᓽ哺ᔺᕻ┻䕺䖹㗺䘻噺嘻㒼╽ᓽ㓽唾蓺唾擽啼㙼䘻嗼施敼疻嗼放藾瘻喻盾䚻䗽��阾囿㗽䔾薽䕶ߑ�ݐ�ݐ�ߖ�ݞ�ߦ�߰���������������������߿�ݽ�ۼ�ߺ�����ߺ�����ߵ�޸�����������������������������������������������������������������������������������������硾棿����������������������矿������朿��������瞾������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������匱ۏ�ޑ�ޑ�ܑ�ܑ�ܑ�ۑ�ڌ�܍�܍�ܐ�׏�ؐ�׍�ٍ�܎�ۏ�ې�ݏ�ے�ٖ�ܖ�ژ�ٚ�מ�ٟ�Ԟ�Ԥ�ء�ڙ�ړ�ڒ�ݏ�܏�ޏ�ސ�ۓ�ߔ����ܑ�ݒ�ޑ�ߏ�ݒ�ߏ�ލ�ە�ݕ�ݓ����⓸␷������␷���ޓ�ޔ�㓶���ߐ����ጹ␺⑸㓸┺ߓ�ޓ�䓺㓸┹㑶���㐺���㓺㎸���㒼┻䖻哺㔻┻ⒼⒼ䔻䔻䒾ᒼ攻䕼唻Ⓖ╼啼啻☻㗽䖽䖼㘽發䖼ᒼ䕺暽㖻嗽╽ᑻ㘿旿㔾䕼㗽䓺Ꮃݏ�ܐ�ߐ�ޒ�ޙ�ޤ�ޭ���������������޸�ܶ�ݶ�ݳ�ܲ�߰�߲�ޱ�߭�ެ�ݮ�ݳ���޻�������������������������������������������������������������������������䜾��晿晿����Ꝿ��������������蘿������������������蜿��虿��������響������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������摲ݒ�ޏ�ڑ�ܒ�ޑ�ݏ�ܐ�ݐ�ߑ�ލ�ޓ����ߐ�܎�֏�ܐ�ۏ�ڐ�ݐ�ܑ�ܒ�ے�ّ�ؖ�ܛ�۟�դ�إ�ӥ�֝�ך�֗�ے�ۓ�ߔ����ܔ�ݓ�ޒ�ݐ�ے�ݐ�ړ�⒵ݑ�܏�ܑ�ᓹ���⏶ᓴݓ�ސ�ⒷᒷᓸⒷᎵ܏�ߌ�ߏ�㒷ᐷޓ�ޓ�ޒ�ߖ�ᙹ���ߖ�ޗ�㕷䑶Ⓓ���㏹㓸䕶ᗺ╻ߖ�ᒹ���㒹���ᓺᕽᕻ���ᕽᒹ┻╼㔻▽䗽▼ᖹߘ����ᓺ㖸哸喹㙺嘹書⠺ߜ�㛶ᛸ♹���ᙼ䗽䕼哸╴���ݔ�ߑ�ތ�ݐ�ޝ�᪼����߼���������߬�۫�ݬ�଼਻ܭ�ݰ�۬�ۨ�ߤ�ݤ�ߨ�߮�޳��������������������������������������������������������������������੽ޠ�����噿䝿��������������板������������������圿������瞾埿枿����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������捲ܒ�ޓ�ސ�ݑ�ޏ�ۍ�ܐ�ݐ�ڏ�ْ�ޕ�ڒ�ے�ے�ْ�ې�ݑ�ݖ�ݔ�ۏ�ڍ�ݏ�ؓ�ڒ�ۖ�ڛ�١�ա�Ԡ�Ӡ�Ԟ�՚�ؔ�ؒ�ߑ����ݔ�ߐ�ܑ�ܒ�ۖ�ܗ�ۗ�ݖ�ݖ�ݕ�ޒ�ݐ����ߑ����ߒ�ߖ�␷���⏶ݐ�ޒ�ߒ�㐵ߕ�Ⓔޑ�ߓ����┷ᗶ♹���ޗ�ߗ�ޔ�ߒ�ᒹ䔹嗸㖹㗶䖹㓹ݔ�ޗ�☻㗹ߕ�ޔ�⓹ޓ�╼璼䓺㕻╻♺㘹䗺◺⚺ᚺ���♶���ޖ����䘻㚺���✼㝺⚺ᙺ㗽䙼䙻᜾䙼␶ݐ�┰⑰ܐ�ڕ�ޔ�ݚ�ܨ�௾ߵ�����޳�ާ�ڢ�٢�ݢ�ۡ�ޞ�ޣ�ܦ�ܦ�ޠ�ߠ�ߡ�ޤ�ݥ�ܨ�߰�߲�ܹ�߹�������������������������������������������������������ᠾ��������睾睽䞾������柿坽䟿����碾柿杽����眿������������曾����������������矿��������������������������������������������������������������������������������������������������������������������������������������������������������������������������覿����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������菵܌�ّ�܎�ې�݌�ْ�ޔ�ݑ�ۏ�ڐ�ݏ�ܐ�ߐ�ݒ�ٓ�ڔ�ے�ے�ݑ�ܑ�ۑ�ޏ�܏�ܑ�ܓ�ݔ�ؕ�ڗ�ؘ�֙�ך�ږ�ٓ�ؒ�ޑ�ޒ�ޔ�ݒ�ّ�ؘ�ܗ�ے�ٕ�ڒ�ݒ�ߔ�ߔ�ߑ�ޏ�܏�ߐ����ߕ����ߓ�ޑ�ܓ�ܕ����ᐷޖ�䔷ᓶ���ߐ����ᒷᔺᒺޕ�������ᐺ������㒹������䗺䓺ᑻᒼ䒼䑼摼敼㗽䗺䕺撼䗺䛼唺ᓺᓺᐺ␺┺ᔹ㕸◸嗶♺㘻ᘻ㓺咷ᗺ☻㘻ᖼ㖻嘻嘻㗺◺䏴ދ�ی�ݐ�ޑ�ߐ����۔�ݝ�ަ�ݫ�ޱ�߭�ߠ�ܗ�ۘ�ޙ�ݙ�ݙ�ݗ�ݝ�ޜ�ܚ�ޘ�ߘ�ߛ�ߛ�ޟ�ߠ�ޠ�ޡ�ߦ�߫�ޯ�������ܷ��������޿������������߿��������������ᢾ������曽㞿蟿����嘿朿睿��曾��朿埿柿������������柿����������柿������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������樿����������������������������������������������������������������瓴Ꮃߒ�Ᏺ܍�ݑ�۔�ۓ�ߑ�ے�ۋ�ߎ�܋�ی�ڒ�ߎ�ݍ�ݎ�ߏ�ᑶ���ڎ�ݐ�ݒ�ې�۔�ߏ�ّ�ْ�ٙ�ږ�ڙ�ڗ�ו�ؑ�ܐ����ݓ�ܒ�ٕ�ږ�ڕ�ٗ�ݚ�ޔ�ݔ�ߐ�ߖ�㖷⓴ߑ����ߏ�⑸㔷ߓ����㑶␷⍷ᓸ⓺ᎺᎸ⑸ᒹ���ߕ����������ᓸ▷▷⑻ᕺ䕻ߓ�ᓸ䗹摻ᑻ㓺唹㗽䕼喼㔹㔹㕼吼ᓾᘻ᛽㕺䖹㘻㛻♹���㖹㚻䙻ᖹߖ�ᘻᘻᘹ◸㗸ᚼᚺᙽᗽ⚽㙼▹ᑴގ�ۑ�ݎ�ݐ�ߓ�܌�ݏ�ޔ�ݞ�ݥ�ܤ�ݢ�ᙱݖ�ߑ�ږ�ޔ�ݖ�ߓ�ޔ�ݑ�ە����ܘ�ޖ�ޝ����ݝ�ޙ�ݛ�ិࡹߥ�⥼ާ�ߪ�����߷�޳�޳�����ߵ�޹�߻���߾�����������㠾➾����板������������柿������噿������碿睽松����蟿棿柿������������瞾����������������������������袿������������������������������蟿���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������䓶ލ�ݎ�ߑ����ړ�ۖ�ۗ�ے�ܔ�ۑ�ݏ�ڒ�ݑ�ٔ�ݒ�܏�ܑ�ܒ�ۓ�ە�ܓ�ܓ�ݒ�ޔ�ے�ڑ�ݒ�ے�ܕ�ڒ�ٔ�ٗ�ۖ�ږ�ݔ�ݔ�ݔ�ِ�ٓ�ڕ�ٗ�ە�ڔ�ے�ڔ�ܕ�ޔ�ݔ�ݔ�ݕ�ܖ�ޓ�܎�ۏ�ޓ�������ޓ�������ޔ�ߒ�ߏ�ޒ�ߓ����ߖ����ߒ�ߒ�ᖹᗹߗ�ߖ�ᙹ⚺ᗺ���▷���ᖹᖼ㔺ᔻ┻◽䖼㕺䕻⓺ᕸ���ᚺᖼ㕻◺䘹♹���������⛻☺���㚺㛸▷���⚷᝹᜹ᗸᘹ┹㖼㗺䑲ߕ�ޕ�ܓ�ܒ�ݒ�ޓ�ّ�ܑ�ݔ�ݗ�ޗ�ޘ�Ᏸݏ�ݓ�ܕ�ې�ۗ�ݔ�ߐ�ܒ�ݓ�ܔ�ە�ܖ�ݗ�ޙ�ߛ�ݙ�ܙ�ܚ�ޜ�ޟ�ܥ�ܩ�ڭ�ެ�ݯ�߮�߮�߱�߱�ݱ�ݲ�ݵ�޹������������⨿ߟ�ޝ�塾����睿����松瞾��板������睿埿������朿������������睿��������梿��眿����������矿��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������䕵ސ�ے�ۏ�ڍ�ې�ۑ�ّ�ِ�ٕ�ړ�ړ�ۓ�ۓ�ۑ�ۏ�܏�ړ�ݑ�ܑ�ޔ�ݓ�ܑ�ޒ�ܔ�ݔ�ݓ�ݒ�܏�ܑ�ۖ�ޔ�ݓ�ܓ�ܑ�ڒ�ے�ܔ�۔�ږ�ܔ�ؖ�ڕ�ٕ�ٖ�ڗ�ڙ�ۑ�َ�ݏ�ܐ�ݐ�ݓ�ޒ�ݔ�ݔ�ݑ�ܖ�ߕ�ݕ�ܖ�ޖ�ݘ�ߕ�ݑ�ߒ�ߕ����ߕ�ޔ�ߕ�ޖ�ޑ�ޒ����ݐ�ޖ�ᒹ␺������㓹���ᔺᖹᘺ���ᗺ���䔺ᕻ┺ᗸᙹ���ᚻ䙺㚺᛻ᘺ���▼ᔾ䓽哺㓸☹☻咽���☻嗽䖼���ᙺ嘹◸ᒳޏ�ܐ�۔�ᕱ���ސ�ݐ�ގ�܏�ސ�ߋ�݊�ގ�ߐ�ܓ�ܑ�ړ�ܒ�ݏ�܎�ݏ�ݔ�۔�ߖ�ݕ�ە�ޔ�ߘ����ޘ�ޗ�ޗ�ޘ�ܙ�ܞ�ަ�ॹګ�ݬ�ݬ�ߪ�ݯ�޲�޴�ݸ�޶�ݶ�߸�������ܨ�ݠ�៼䜿������枾䡿埽����朿��晿䜾㟿坽㠾䝿圿圿��睿��䟿塿坿������眿��磿��柿埿����������������������蝿��������������������������������������������������������������������������栾⣿����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������婿���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������䑲ݓ�ݒ�ږ�ݑ�ܒ�ݐ�ۑ�ܑ�ؕ�ړ�ڑ�ړ�ܒ�ۑ�ۑ�۔�ے�ړ�ޒ�܏�ގ�ގ�ݔ�ߑ�ۏ�ڒ�ۓ�ݑ�ە�ݕ�ܓ�ٖ�ڕ�ܒ�ܓ�ܕ�ܕ�ٟ�؝�؛�ܚ�ט�ٜ�؛�כ�ٙ�ڕ�ؕ�ٗ�ۖ�ۘ�ݕ�ܕ�ܔ�ݔ�ݐ�ތ�ޒ�ᖸޕ�ޖ�ߔ�ݔ�ݓ�ޓ�ޗ�ߕ�ݔ�ޔ�ߔ�ߔ�ߖ�ߖ�ߕ����ߘ����⓺ᒹ���◺☻ᗺ���ᙹ���☻ᙼ▹ߕ�♼⚻䗸ᗽ䖼ᘻ㙺㘻ᖼᕽᗽ╼㕼㖼㘻㘻᛻♼✿嚽㗽♼♼▼㖻嗸㕶ᕶᘵᙶ▵ᗷ������ݑ�ޏ�ގ�ݎ�ޑ�ߐ�ݓ�ޔ�ݓ�ڐ�ܐ�ܑ�ߑ�ޓ�ޏ�ۓ�ޖ�ߖ�ޑ�ޏ�ۓ�ޕ�ۘ�ޖ�ۗ�ܛ�ߛ�ߛ�ޝ�ݡ�ܨ�۩�ݩ�ި�ݫ�ߩ�߯�����߶���߫�߬�িݦ�ᠼ᜼➾��������板䡾桾��������������㝿��枿蟿埿��柿桿埿������栽����������������鞿��������������������������������������������������������������������������������������������������妿碿����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������咲ؓ�ۑ�۔�ݔ�ݑ�۔�ې�ڑ�ܑ�ܑ�ۍ�ڔ�ܓ�ږ�ݓ�ܓ�ې�ڔ����ޒ�ݐ�ێ�ۑ�ޒ�ߒ�ۖ�ܕ����ܐ�ݓ�ܔ�ܖ�ܖ�ܒ�ړ�۔�ڕ�؝�ٛ�ל�۠�מ�ٚ�؜�ڛ�ٚ�ۙ�ۖ�ږ�ٖ�ٗ�ۓ�ݔ����ޓ�ܗ�ޔ�ے�ߒ�ߖ����ߒ�ܓ�ޖ�♶⚶ޘ�ݖ�ᘴ㕵ܕ�ޔ�ߓ�ޓ�☸ߙ�ᔺߐ����������▼ᕻ������⓺ᓺᖼ㕸���啸╺䕻♼⚼ᖼᗺ���㘻ᘻ㖼㕽ᖼᙼ䘻㕻♺㜼㚼◽☾㗿㗽☻㘻㘻㙼䚺ᚺᖸޚ�ᛶᖳߐ�ސ�ߋ�܌�ے�ޏ�ێ�ݎ����ޑ�ڑ�ܓ�ܗ�ݔ�ږ�ڒ�ݖ����ݕ�������ܓ�ݖ�ߕ�ޕ�ܘ�ݙ�ޘ�ߗ�ޙ�ޝ�ߣ�⦺ۧ�ࢹ⦹᥻਺ޮ�ް�ޱ�߯�ॽߠ�䝾��⠾䜽朾䜾䜾䜾䝿��朾䝿埿柿��栾䞾��瞾䞿❽䞾埿��桿��枾��������柿梿��蟿��蟿塿������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ꣿ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������䑲ݒ�ޒ�ٓ�ڐ�ً�׍�ړ�ܒ�ޑ�ܓ�ڔ�ٔ�ے�ّ�ؑ�ڔ�ٓ�ړ�ڐ�؎�ِ�ݕ�ܖ�ۘ�ܑ�؎�ܒ�۔�ۗ�ܓ�ڏ�ړ�ޒ�ߑ�ޒ�ܕ�ٜ�ۢ�آ�֝�գ�ל�ן�؞�؛�֚�ٚ�ٚ�ؘ�ו�ٔ�ە�ە�ۓ�ݓ����ߒ�ߔ�ݖ�ߘ�ޕ�ߑ�ߕ�ޖ�ߕ�ߒ�ݔ�ܕ�ޔ�ޓ����ᔺᕸޓ�ۓ�ߗ����ᔷߕ����ߕ����ߘ�ᓺᑻᑻ㕿嘾㖹ߖ�ᙻ������ᙻᖼᔻ▼㗺������⚺᝺♹���㖼㗽䖼㔼���❺⛸⚹噺嗺䖼㘾㘾▾⛽㘸ߚ�┷ߓ�ᓲ���ݍ�ޑ�ݓ�ߒ�ݏ�܏�ސ�ޏ�ܐ�ޏ�ߋ�ލ�ߎ�ޑ�ޓ�ܓ�ڒ�ٔ�ڕ�ޕ�ޒ�ۓ�ܔ�ߔ�ᖶݘ�ݙ�ݗ�۝�ߜ�ݡ�ߡ�ޡ�ܡ�ݢ�ڥ�ک�ߩ�⨿᧾ࣽ⠾⚼⛾晼䝽晿����坽����枾垾圿圿��圿埿坿��᝿噿晿����埿板圾䟿������������䜿矿��������板墿��ꟿ����������������������������������������������������響����������������������������������������������������������������������������������颿��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������姿����������������������������������������������������������������������������������������������������������߭�������������������������������������ᬿ��������������������������������������������������������������������������������������������������������������������������������������������������������������⓳ٓ�ٓ�ے�ے�ْ�ؕ�ܒ�ٔ�ۑ�ّ�؎�׎�ڒ�ۑ�ڑ�ړ�ړ�ڑ�܎�ے�ܓ�ݑ�ٓ�ݕ�ޓ�ژ�ܗ�ە�ܔ�ܓ�ە�ܖ�ۗ�ܗ�ۖ�ۘ�ٞ�ۡ�ף�נ�Ԡ�է�آ�֣�ۡ�ٝ�ښ�ؗ�֕�ח�ۗ�٘�ۖ�۔�ݕ�ߑ�ޑ�ܔ�ܒ�ߔ�ߕ����ޗ�ޘ�ߚ�ߗ�ޕ�ݕ�ߗ�ᖷ▷���ߕ����ޕ����ޖ�ᖹߔ�ߓ�ޘ�������ߖ�㒹���㕻������╻╺䚽㗹ߙ�ߚ����ᚼ☺���ᖹᘻ㘺���☻㖼㙽᛻➻㟻㚺ᚼ⛻➺ᚼ��䛽���㚺ុ㘺���ᔷᐲߐ�ޑ�ݒ�ޕ�ޓ�ޏ�۔�ߔ�ޏ�܏�ݓ�ޔ�ߒ�ޔ����ߓ�ޒ�ݔ�ᒳ���ᖵ㓴ߓ�ޔ�ޓ�ߔ�ߚ�ޘ�ޗ����㜸ߚ�ݡ�⠺ݡ�ޠ�ݝ�᝹ा㤼��⦼᡽䠼㚺��板����柿埿壽⡽䢾塿埿��瞾䜾㝿垾垾��㞿⠾䡿塿����图��梿祾楾桿㡿㞿➿��䡿��䟿墿����������������������������������������������������������������������������������������������������������㦾��桿�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������߫�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ߕ�ޖ�ݑ�ۑ�ے�ە�ܒ�ۏ�ؓ�۔�܌�א�ْ�۔�ې�۔�ݖ�ږ�ۓ�ۓ�ܓ�۔�ۗ�ܒ�ې�ڔ�ܓ�ڔ�ۗ�ܗ�ܘ�ݕ�ܒ�ۓ�ە�ܒ�ڔ�ۚ�ܛ�ڡ�ۣ�ԡ�ԣ�դ�ڜ�ۜ�ٝ�֙�֚�ؙ�ؖ�ח�ؕ�ۓ�ۓ�ݒ�ݒ�ݓ�ܓ�ݒ�ݔ�ݔ�ޗ����ܛ����ݕ�ݖ�ݕ�ޓ�������ߖ�ߔ�ݖ�ߘ�ߘ�������ߔ�ߖ�ߘ�ߙ�╻���ߘ�ᕻ┺ᕻ◺���ᙻᘺ������ᖹᘻᙻ���ᙹ���䛼啻������♺㙽ᗽᘼ���⚺ᚼ♻᛻☻ᘻᙻᘻ᛾䙹���ᘸߙ����ޙ����ݑ�ޑ�ߖ�ޔ�ܑ�ޑ�ݒ����ߓ�ߔ�ߖ�ߗ�ᖶݔ�ݖ�ݘ�ߘ�ݙ�ݘ�ߙ�☺���ݕ�ߘ�ߛ�ߖ�ݖ�ᘸᛷߛ�᜹᝺➺❹ᠹ⟻㞼⟻⡻࠾䝿垾䝽㟿坿䞾��䝿������坽䟿垾��朿睽㟿��㝿䝿��圿��松睾眾㞼⢾栽坿䜾��睿��睿����㠾⡿��袾壿梿��������������������������������睿������������������������������������������������������������瞾���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ᨿ᤼ા����������ߵ��������������������������������������������������������������������㬿౿�������������������������������������������������������������������������������������������������������������������������ݎ�֐�ّ�۔�ݔ�ٕ�ܓ�ە�ڕ�ڑ�ؐ�َ�ٕ�ے�ؒ�ە�ܕ�ח�ٓ�ۓ�ݖ�ە�ڑ�ڐ�ۓ�ڙ�ݒ�ڒ�ܒ�ݓ�ݒ�ڙ�ݗ�۔�ܐ�ݓ�ޓ�ܐ�ؕ�ؘ�ٙ�ٙ�כ�ח�ؙ�ۗ�ڕ�֚�ۚ�ܙ�ژ�ӗ�ԓ�ؐ�ۓ�ޔ�ޕ�ߒ�ے�ݏ�ݔ�ݔ�ܖ�ޓ�ܕ�ޕ�ޕ�ܖ�ݔ�ޕ����ޖ�ݕ�ܕ�ܗ�ޛ�ޘ�ߖ�ᑸߒ�ߘ����ޕ�ޔ�������ݗ�ߗ�ᖺޔ�ߏ����㖹ߘ�ߖ�ߘ����ޝ�ᚺ���ߔ�ߕ����ᙻᚼ☺���┼���ߚ�᛽㙹���❺➻㚺᛽㙻���ᚼ╻���ߖ�ߕ�������ᘸߙ����������ᛶᚷߗ����ᗺ▷◷���㛹ߙ����㕸☸ឺᠼ㚺���☺���ߖ�☹䙼䘻ᘹ✹ᙼ⚽㙻᝽䟻⢻㡽➼���㛻ើ垾��䜾��板垿✾��䛽㠽堽坾��板䟿��䜾㗿��朾䖽����蝽䜾䝿��������杽㟿杽����㞾䢾㡿��矿栾䢿����������������������������������������������������������������������������������������������硿������槿������������������������������������䜺������������������������������������������������⬺�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������߽�������߳�߲�ఽ୽ߩ�ި�ߦ�ߪ�୽����������߱�߱���ⲿ߲�ݸ���������߾���������������������������������������������������⪽ޮ�߲������������������������������������������������������������������������������������������������������������������������������⓳ړ�ڕ�ٖ�٘�ښ�ܖ�ڕ�ٕ�ٓ�ْ�ڑ�ؓ�ړ�ۑ�ړ�ڒ�ٓ�ڒ�ړ�ܔ�ۗ�۔�ۓ�ږ�ە�ܕ�ޒ�ٔ�ٔ�ٓ�ٓ�ڔ�ە�ژ�ۗ�ڔ�ڏ�ב�ؒ�ה�ؗ�ؗ�ؕ�ؚ�ڜ�ܖ�ך�ٙ�ٙ�٘�ٙ�ڗ�ܕ�ܔ�۔�ە�ݓ�ۖ�ݖ�ݕ�ݕ�ݕ�ݖ�ߕ�ݖ�ߗ�ᗷ������ݔ�ݗ�ߗ�ݗ�ߕ�ޘ�ݙ�ݚ�ޗ�ߘ����ߙ�ᙹ���ޗ�ߚ�ᘸޙ�ߖ�ߔ�ߙ�ᙺ㕻���ᛸ������ᙻᙹߛ�ߜ����➼✺���᜹ឺ᜺���⚼⚺᛻ᚺ���ᚼ⚼☸ߛ�♼☹☻㘻᛼ߛ�ᚺᚻ䛻✺���������⚺㜹᝺⛻⛽㙻᛽㘾㚼᜼✼➺ᠹឺ➻㜼㜼㛻⚺᛻❻ូ���⛽���㞻㟼䠼䞼⠽墾査㟼䠽堼䝽㟿嚼ᚼᠽ圾㞾��圿国㛿㝿䟿塿坽㜼⠾⡿㟿坽㠽砼㢾㡽⣿䠾✾㠾��⣿䡽䠼䡿��㞿⟿垾埿������梾������梾��������������������������������棿�����������������������������������������������������������������ݸ�����ݰ�૾ެ�������������������柿哶���������������������������������������������������䫵�������������������泿�����াঽ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������婿������޽���߽�ݷ���߭�ݬ�ݨ�ަ�ݧ�઺ܫ�ݬ���Ჿߴ���������߲�޶���߷�����߸�������������������������������������߱���������᯿௿����ᨼ߭�߰������������������������������������������������������������������������������������������߻�޶�ⰾ����������������߿���������������ߒ�ۓ�ړ�ړ�ڔ�ە�ڙ�ݖ�ۑ�ّ�ڒ�ُ�ג�ْ�ٓ�ט�ܖ�ڕ�ڐ�ې�ے�ڔ�ۓ�ۏ�ړ�ݖ�ە�ܔ�ے�ޔ�ޕ�ڕ�ܔ�ܔ�۔�ݒ�ܒ�ٔ�ۓ�ؑ�֔�ؓ�ז�ږ�ܗ�ږ�ە�ܖ�ٙ�ڗ�ړ�ڔ�ݔ�ܓ�ܓ�ݒ�ܔ�ܔ�ܒ�ݔ�ܔ�ݒ�ݕ�ݗ�ޘ�ߖ�ޒ�ܔ�ܓ�ޕ����ݕ�ݓ�ޓ�ޒ�ߕ����ߗ�ߕ����ߖ�ߔ�ݘ�ᓹޖ�ޙ�♹���ᗹߗ�ߚ����ߔ�ᖹߘ�ޙ�������ޖ�ᙺ㗺���ߗ�������������䙽᝻᝻ᘻᙻᙻᙻ᛻♻ᙼ♼⛻⛻☻ᙼ⚼⛻⛻⚺᜼㚺᜼㜺���ᘻᙻ᝻᛽⚼᝻᜺���♼▼ᙼ䛽㚽㙼♼⛽������⟽㚼᜾㝿⛽♽᛾䛽㜾㜾㝿䝽㟽㞻㝽䝽㟽㝽㜾㛼ߡ�㜽���➾坿��ᠾ✾㞾䡽⣿䞼✼㝿䛿����㜾᝻ូ✼❽����㝽㝽㞾��桽䠾䟽㟿垾䠾����枾䟿垾䡿�����������������⣻ݢ���������������������������������������������板��������������������������������������᩹ګ���߼�⧸֦�ܪ�ڹ�����������������䘻Ᏺ܎�����������������������������������������������������������������������������������ڬ�᥿⡸ڸ�����������䣺ܵ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������㥽ߧ���������߷�����᱾ૻݩ�ݢ�ޡ�⦼㧻ॼާ�ޮ�⫽������ి޲�����޳�޷�⵿��߶�����޹�߿����������������������������߰�᯿��������੿䥽᧽䧺䬻⯽�����������������������������������������������������������������������������������ⲿᮾ୽߰�����������������߽���������┴۔�ے�ڑ�ؕ�ږ�ږ�ٔ�ۑ�ْ�ٖ�ڕ�ْ�ّ�ٔ�ٗ�۔�۔�ٔ�ۑ�ِ�ؔ�۔�۔�۔�ٖ�ۓ�ڔ�۔�ڔ�ڔ�۔�ە�ۓ�ٓ�ڕ�ܓ�ړ�ڐ�ד�ؔ�֕�ח�ە�ژ�ܖ�۔�ۗ�ܕ�ܕ�ۓ�ٓ�ڕ�ܖ�ܔ�ܒ�۔�ܓ�ۑ�ܒ�ߒ�ݕ�ܙ�ߖ�ݔ�ܔ�ܕ�ܘ�ߗ�ܛ�������ݑ�ݔ�ݗ�ޗ�ޚ�ޚ�ޙ����ߘ�ߖ�ޗ����ᗺ���ޕ�ߕ�ߘ����ޕ�������ޕ�ݖ�ޚ�ᘺ���������ᚺᙹߙ�ᙻᚺ㜹㙻ᙻ���☺���☺������ᙻ᛻⚺ᙻᙻᗸᔻ┼������ូ✺���������ߛ�᛽♹ߜ�㚼➼✹ឺូ⚺᛽✼✺���᝹������ߜ����ߝ�៻❻᡿㠾➼���✾㝿䠾⡾࠼㞼❽䛽✾㝾ᠾ䠽囻⟽㟻���䟻㠽垼⠾䟽㛾����䝿䞾䝿圿噿䜾䡽䝽��䞾䝽㚼᝽㢾㞼��䛿㟿塾板䟿堼㣿栾��㡿��⟿埿垿��⠽߽������������۟�؟���㣿������������������������������������������������������������������㣽৾௿��㧹ݩ�߲�᣷ة���޸�଻ܬ�ۮ�ۿ���氿ީ�ߨ�᣼۳�馾���ߌ����⎱۫����������������������������������������������屻��������������������������������߲�᝵י�߶���������ޣ�ܶ�����������������������������������䰾ۮ����������������������������������������������������������������������������������������߸�������������������������������������������������������������������������������������������������������������������㣽⤼ޫ���ா߭�ޱ�Ჿ߶�����ઽޡ�ޟ�✸ߠ�⡺㥻⨻㧽䥻૾߮�߱�߰�ް�߱�������᳾޵���ߵ�����߻������������߽�ݾ���������������߹�����ޱ�ૹު�૾ߪ�ߩ�ாߴ�����������������������������������������������������������������������޳�������᯽ా������������߲�����޷�߸���������ᗳږ�ڔ�ؓ�ה�ו�ؗ�ۗ�ۖ�ڕ�ٖ�ڕ�ڗ�ؗ�ؖ�ڗ�ە�ۓ�ٕ�ڔ�ۓ�ڔ�۔�ڔ�ؓ�ٔ�۔�ۖ�ٕ�ڐ�ה�ے�ڗ�ܔ�۔�ܔ�ܓ�ٔ�ڕ�ٕ�ْ�ڒ�ڔ�ݔ�ݓ�ؓ�ړ�ڗ�ە�ْ�ڕ�ܘ�ܕ�۔�ܔ�ܓ�۔�ٖ�ܕ�ݒ�ݒ�ۘ�ܛ�ݝ�ܚ�ۙ�ݖ�ݗ�ޖ�ܘ�ܗ�ݗ�ݘ�ޗ�ޚ�ߙ�ޗ�������ߒ�ݗ�ߖ�ݗ�ߔ�ߘ����ܖ�ۙ�ߜ����ߕ�ܘ����ܗ�ۙ�ߘ����ܚ�ޗ�ߗ����ᙹߘ�ߛ�❹���ޗ�ߜ�㙹������ᙹߝ�ܜ�ޘ�ᘺ������⛻᛻ᛸ������ޙ�ݛ�ᚺ᛻ᚼ᛼ߜ�⚷ߜ�᝺❹ឺ៻㞺ូ���ߚ����᜼♻���ᚺ᝺❽㜼㜾䝿䘿���ᘼࣿ䞿������❿❽㝻ᠾ⟼䜼㞿⟻���❾᝾ᠾࡿ᝾ᠼ៼䞻㞾䝾᡿��䞿���᡾������䞾䡿垺ߝ�ݞ�䝿䛿㝾᡽��塽⟽ᠾ䞿❾ߞ�⠾䡽䡽⠾����硿��⡿��㡿㙵ڸ�������������ᱼҠ�Ӡ�ץ�ܥ�ޢ���������梿������䡿����������㞾䟿塾ࡽ��坿��������������������㡵ژ�է�۷����㳾ڣ�נ�۪�޳�⮽ܩ�ک�׾���ݳ�ۯ�ܧ�۫�ܧ�ࣻݢ����ۋ�݋�ݒ�ߔ�ݭ��������������������������������������������������������������������������������ؔ�ٚ�߸���������������������������������������������������禺ի�������������������������׿���������������������������������������������������������߳�����������������������������������������������������������������������������������������������������������������������������塽䤾㦼઼᪼૿૿��߬�௿ా᪼ॸॼ桸⣹ࢻڥ�৾ऻڧ�ۥ�ܧ�ާ�ޮ���޶�ݴ�ݷ�����޸�������߼�������������ݾ�޼�߼�޺�޵�ݶ�޴�߲�ݵ�����ߵ���଻ܦ�ݧ�ީ�ݫ�ެ�޲�����������������������������������������������������������������������������Ȿޯ�ޯ�౽㮼߮�߰���ᲿṾ޸�����߱���Ჿߴ�ߵ���☱ٕ�ؗ�ږ�ڔ�ڒ�ْ�ٓ�ٖ�ؗ�ו�Ԓ�ڎ�ْ�ے�ٗ�ۑ�ړ�ܕ�٘�ٖ�ٖ�ړ�ڒ�ٕ�ٕ�ؓ�ٕ�ؔ�ۓ�ۓ�ے�ڕ�ݔ�ܓ�ٓ�ړ�ږ�ݓ�ٖ�ܒ�ے�ݕ�ے�۔�ܒ�ڎ�ד�ۗ�ޗ�ۖ�ٗ�ܖ�ݗ�ۓ�ݓ�ݕ�ޖ�ߔ�ܑ�ޔ�ے�ؖ�ޔ�ݓ�ݘ�ߙ�ݘ�ڗ�ݔ�ە�ޗ�ߗ�ޖ�ݗ�ޗ�ߓ�ޗ�ߙ�ݗ�ݚ�᛹ߗ�ݕ�ޗ�ޜ�ߗ�ݙ����ߗ�ޖ�ᘺ���ᗹߚ����ޘ�ߘ�ߘ����ᙹߘ�ޘ�ߙ�ޚ����᛹ߖ�ᘺ���㚻䚺᛽㘻ᘻ᛻❺➻㚺᛻✺������䗹ޘ�ߝ�✼⚺���☹⚼ᘼ������ᙹ♻᝿♻ޝ�☻ᚽ㙼⚼⛻⚺᛻៽៽㟽㞼������❽䞼♽ᚽ圽���ߛ�➼✼⟽㡽䝻᜾㙽ᘾ⚼᜼㜼㠾���✾䛽㛽㜼⛿᝾ូ���᛽㝿坽䝽䜾䚼⛻➻㜾䜾䞻㞻㜼埿圿ߜ�᝽㠾��㜽���枾䛽⡽����ᠾ➾䞾䜼▴ڭ�������������䩷ѝ�ڗ�ؠ�ݟ�ۢ�㡿����桿��������������䞾䘵ߌ�׎�ק�䢶ی�ы�ؒ�ߖ����ޭ��������ٴ�ޟ�֑�҇�Ԍ�՟�ک�ַ�۾�޺�ܨ�כ�٣�⢹ۢ�ڦ�ޤ�֭�ݯ�⩹ڢ�أ�٭�㏪Ջ�ߋ�������܍�ߍ�ޑ�ާ�����������������������������������������������������ܻ�������������������������椷ؕ�㦼���������������������ڼ�������������������������������Ҽ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������奿������������������������椻䢹㣺㠷ॻॻ਼ݩ�ެ�߱���௾߫�ߩ�ݥ�ߡ�ߢ�ޣ�ߦ�⢼ߟ�⣻᤻ݥ�ާ�ު�ޯ�ް�߱�����ݴ�ݷ�߻���߻��������������޿�߹�޹�����ߴ�������ି߭���߮�߫�㨺ऻݧ�ࣻߣ�ަ�ݮ�߶�߾����������������������������߿��������������������������������������ܺ�����߲�߳�௿��Ჿ᳽��㴾����ޱ�����߰�޳�����ᒲْ�ْ�ْ�ڒ�ٔ�ד�ؓ�ڔ�ؒ�֓�ٕ�ڔ�ؖ�ژ�ٙ�ږ�ڗ�ۖ�ڕ�ٕ�ٕ�ڒ�ْ�ڕ�ۗ�ۖ�ٗ�ږ�ۓ�ړ�ړ�ٕ�ړ�ڑ�ؖ�ؗ�ؖ�ٓ�ؗ�ڕ�ڒ�ڐ�ڑ�ؕ�ܑ�ڌ�܏�ܕ�ە�ٔ�ڕ�ۖ�ݓ�ړ�ܓ�ܔ�ܗ�ܗ�ۖ�ܔ�ܕ�ݕ�ܖ�ݕ�٘�ږ�ݔ�ܕ�ߖ�ߕ�ޕ�ߒ�ݒ�ޒ�ݕ�۔�ޔ�ܗ�ߕ�ޕ�ޖ�ޘ�ߘ�ޘ�ޛ�ߗ�ޖ�ޕ�ޗ�ޘ�ޘ�ޙ�ߘ�������ߛ�ݜ�������ߚ�ߙ�ޘ�ߚ�ޞ�ߜ�ݞ�㝹���ߜ����ᛸ���ᘺ���᛻ᚺ������ᚺ���ᙻᘺ���ᙻ᜺���ߝ�ߛ�ݝ�ޞ�㘺���ߛ�ߛ�᝺䚺���ߠ�᝻ᚺᙻᚼ᛽♽᛻៽㛻⚺᝻៻⟽㜼㜼⛽⟽៽㝽㜼❻ូ➼⚺���㝾ߝ�ߛ�៽㟽㟽㛼ߝ�㞾䝽䝽㡿㠼ឺߡ�⟽㝽㞾䟽㠼㟽㜼⚾❽㟽㛼ߟ�ᠾ䟽㟽㟽㜼➿➼࠼៻⡽䣿格᩽޿������ߴ�޳�ߣ�ړ�ܟ�ݪ�ۚ�׎�ӏ�Ґ�ҏ�ӊ�Ո�Տ�َ�֔�ڕ�ܑ�ܑ�ܓ�ܔ�ݙ�ޞ�⚺ᗹߑ�ډ�ֆ�Չ�֑�٘�ڍ�ф�Ճ�Ո�Ո�Ո�ӗ�ש�ڷ�ஹ׬�ܣ�ܐ�ԇ�ԃ�Ԕ�զ�ٮ�ۭ�۬�ۦ�פ�؜�ؕ�؛�٩�ޣ�ڤ�ݧ�ߩ�䞶ܩ�㖲َ�܈�݈�߉�ߋ�ߍ�܍�ݍ�ק����������������������������������������㰼���������窷ת�����������������ض��������������������������߿�۵����������������������������������㯻������������������������������������������������ߩ���������������������������������������������������������������������������������߾�������������������������������������������������������������������������������������������������᤾ᢺࣻᦹ᧺⣺㠷ᨼ᩽��������ߵ�����᱾ެ�᩽ެ�੼ݣ�ߡ�ࣻ᣹ޤ�ݥ�ީ�߫�ߨ�ޫ�ᬼް���ി߷���߹�޻�����߹�ߺ���߶�޵���ݱ�ߴ�߹���㲿߯�ߪ�ު�ߪ�ު�ऺߣ�ަ�ߥ�ਿ߫�������޻�����޻�߷�߳�޵�޵�޶�߳�߶���߿�������������������������߾�޶�෿㴾��ൿ��඿඿����������߹���������޿�޼�޺�۔�ٓ�ו�ْ�ٓ�ٕ�ْ�ؔ�֓�ג�ד�ٓ�ە�ٖ�ؘ�ړ�՘�ۘ�ۓ�ٓ�ٕ�ٗ�ڕ�ٖ�ە�ٗ�ږ�ٖ�ڕ�۔�۔�ڕ�ٔ�ؒ�ؕ�ז�ԕ�Ӗ�ו�ؔ�ؒ�ٓ�۔�ڔ�ږ�ڕ�ڕ�ܖ�ڔ�ڔ�ڔ�ۗ�ܕ�ە�ۓ�ڒ�ڔ�ڗ�ە�ۑ�ܐ�ۓ�ۖ�ݕ�ܔ�ݔ�ݔ�ޖ�ݗ�ۖ�ژ�ޘ�ܙ�ݙ�ݚ�ݛ�ߗ�ޗ�ޙ�ݚ�ޘ�ޘ�ߚ�ߛ�ߛ�ޛ�ޛ�ޛ����ᕻ���ߖ�ݖ�ޖ�ޘ�۟�ܛ�ܚ�ܙ�ݛ�ߜ�ޛ�ߘ�ޛ�ݝ�ޟ�ޜ�ݟ����ߛ�ߛ����ߚ�ᚺᙹߚ����ߜ�ޞ�������⚺���ݘ����ޜ�ݙ�������ߟ�ޞ�᛻ᙹߜ����ߟ�ឺߝ�ߙ����᜽ޟ�ߟ����ߛ�ߞ�ޢ�ߟ����ݠ�ߟ����❺✼⚼ߝ�ߝ�᛼ߞ�❽䛻✼㞼���ޢ�ݡ�ܟ�ߝ�✽���ࡽ䞿➼���᜽������㝽㟻ࡽ⣽⣽⢾㝾ើ䠾䠼㟽㡾���ߡ�ᠼ㡽䠼㠼៽㟽㞼⠼䢾塻��眲׹����������������㕯Ԉ�ن�Ղ��~��{�ֆ�א�ԑ�ҋ�ӈ�և�Ԋ�Ն�ԃ�Հ�׀�օ�Ն�փ�҆�Ն�؀�ԃ�ׅ�؄�Շ�Ҋ�Ո�Ԇ�ԃ�ѓ�ܐ�ҕ�Ս�Ӌ�Ґ�Ԓ�֝���������ی��y�τ�ҏ�Ӎ�͚�՘�՚�՚�Ҩ�ٯ����ח�ی�؊�֋�Ґ�ۑ�ߎ�׏�ۋ�݌����≭݋�ߌ�ۏ�ޏ�ږ�׮���������������������������������������������������ݩ�ݴ�������������誻գ�ܤ�ٱ�������������������ۨ�َ�י�ܻ�������������������������������ڬ�ս���������������������������������������屼ܪ�ݧ�ۼ��������������������������������������������������������������������������������������ி۹�������������������������������������������������������������������������������������������������⧿��䧽⪾᧻ީ�ݧ�ܪ�߱�޵�޻�����ݸ�޼���߳�ݱ�߲�୽ߦ�ߠ�᝹᣺㥹ަ�ܦ�ݣ�ަ�ݩ�߯�௾߳�ޱ�ݳ�ܴ�ܷ�ݸ�޸�޸���޻���߹�߷�߶�߸�����߰�ޯ�ાߪ�઺ܬ�ݩ�ݥ�ऺᢺॽ㧻ި���Ჿᴿ߲�߲�߰�ൿ⵽᱾౾ಿ߲�ߵ�����߼�������������������������߽�����ⲿߴ���������ߴ�߷�޽���޿�������������������������ؔ�ّ�ْ�ّ�׏�֔�ؕ�ّ�ؐ�ؓ�ږ�Փ�ٓ�ٓ�ٖ�ژ�ח�ؔ�ە�ܔ�ؔ�ؓ�ڑ�ړ�ܓ�ڒ�֔�ە�ٓ�ٓ�ۓ�ے�ٔ�ڔ�ّ�ؐ�ؐ�ב�֗�ۗ�ؗ�ږ�ݓ�ڐ�ۑ�ږ�ݓ�َ�ٓ�ۚ�ޘ�۔�ڒ�ٔ�ۗ�ܓ�ڒ�ڔ�ۑ�ޔ�ܗ�ܘ�ڕ�ۓ�ږ�ۘ�ݖ�ە�ޓ�ܓ�ݕ�ݘ�ݙ�ޗ�ᖶܕ�ݓ�ޒ�ݙ�ޙ�ݙ�ޗ�ޙ�ޚ�ݛ�ݓ�ڗ�ޚ�ܙ�ݒ�ݙ�◹ߗ����ᖹߘ�ޙ�ݙ�ۛ�ۚ�ܛ�ޛ�ܛ�ߘ�ߙ�ᖹߚ�������ᗹߚ�ᘸߚ�ᘸޚ����ᘸߘ�ܚ�ޗ�ޚ�ᚺ㖹ߚ�ߚ�ޘ�ߘ����ٚ�ޛ�ߚ����ۘ�ߚ�ᙹߚ�ޛ�ᚺ㚺㚺���ޜ�❺✼坺⛻ᚼᙹߛ�ݡ�������ូ������ޝ�ݝ�ݝ�ޞ�᝽㜼➼⟻㞺ߟ�ܠ�ߟ�㟽㞼ࡽ䜼㝿䞼ࣽ✽���ߜ�➼������❻៽㜾㛽❽䝽柽㛽✼⟻���ߜ�⠾䟽㝽㡿㡽✼➻ݖ�ړ�٘�٧������֭�ش�᥷ۂ��y��v��u��z�Ӂ�Ն�և�ъ�Պ�э�ӎ�؍�؈�؇�ڃ�ԃ�օ�օ�ӂ�҃�ׂ�ց�Ӏ�փ�Ԇ�ф�Ӈ�Շ�ӏ�׊�Ш�޵�޷�޵�ߪ�θ�߫�ؖ�Տ�Ԇ��~������z��|��z��}�ϋ�֖�ץ�ڰ�ګ�֛�Қ�ע�ݓ�֗�ٖ����ݎ�ۊ�܌�ލ�ߍ�܈�ۉ�ދ�ݍ�ڏ����ݶ�������������������������������������������������޾�䙰���������������ݶ�ڞ�ٚ�ݠ�޵����������������갾ؐ�֍�ڤ���������������������������վ�������������楰̴�ݿ�ాٚ�Җ�ե�������������ٯ�ڠ�ܮ������ڿ���������������������������������������������������������������������������������������߭�਼ݪ�޺���ݼ�߶���߬�����������������������������������������������������������������������������������⬿��᪾᧻ܫ�߳�ܺ�ۼ�ۿ����������۽�ݻ�޷�޵�߯�߭�᤻ݡ�㟹ޡ�ݡ�ڡ�ڤ�ޤ����ޤ�ߧ�ۨ�۬�߯�ݳ�����ݲ�ޱ�޵�ܳ�ܴ���ߺ�����޺���߰�ߴ�߮�ߨ�ݦ�૽ᨼݡ�᣸夷ᢸߧ�ᨺ઼ૻݯ�௾߮�߲�౻߱�޶�ൽᲿ��⵿⵾߶�������߹�ܸ�ټ��������߶�ݲ�ಿ����ߴ�߶�޶�����߳�ڸ�޿�޾�������������������������ᓳږ�ڕ�ז�ڒ�֔�ړ�ؕ�ۓ�ד�Օ�֑�֑�א�א�ד�ו�ؒ�Օ�ؕ�ٔ�ے�ڔ�ؖ�ؔ�֕�ْ�ٓ�ח�ږ�ٖ�ۖ�ړ�ڔ�ۓ�ג�֕�٘�ښ�ە�ؗ�ؘ�ך�ٗ�۔�ٔ�ۓ�ڔ�ە�ٗ�ۓ�ړ�ڕ�ܔ�ۗ�ܖ�ۗ�Օ�ו�ۓ�ۓ�٘�ۙ�ܗ�ݕ�ڗ�ٚ�ۚ�ۗ�ݕ�ږ�ݓ�ڙ�ۜ�ۛ�ۙ�ۚ�ۚ�ݕ�ܕ�ܗ�ߗ�ޚ�ߖ�ޗ�ߗ�ޗ�ݚ�ޕ�ژ�ܚ�ݙ�ޚ�ޚ�ܚ�ܚ�ܜ�ߚ�ޘ�ߘ�ߙ�������ޛ�ޜ�ߜ�ߜ����ߞ�ߜ�ݜ�ޙ����ܘ����ᗹޚ�ޜ�ޙ�ۜ����ݝ�ܞ�ۚ�ޝ�ߝ�ߝ�ޝ�������ߚ�ܛ�ݝ�ߝ�ߝ�������⛻ᚼ᝻ߜ����᝻ូޚ�ߛ�ߜ����ូ���ۛ�ߝ�ߠ�ߠ�ߞ�ޢ�៻���ޟ�ޡ�ࡺ⟻ࢾ㝹���៻⠼᣽ࡻ���✼⟻���࠾࠽ߟ�ߠ�࠾࠺ߡ�⟽㟼䠹ᢺ࠾✾㜾䟼䜼✼✾㛽⛼ߟ�㠾⡿៽៽㝹ޙ�ی�Շ�׏�ڑ�٠�ݥ�ժ�ۖ�Ԇ��|��{��|��w���Չ�ԙ�݉�҅�Җ�؟�ר�ٻ�诿Ꭵя�ؘ�ת�ۢ�ӕ�Ӎ�؉�ن�ه�Ջ�ӏ�ԏ�Ӝ�ڞ�ת�ޔ�ȿ���޵�׻���ܴ�ڤ�՝�֌�ԅ�Ղ�ԅ�Ճ�؁��}��~�ց�ӈ�ԓ�Ӡ����꼾ջ����������森̓�ڋ�܉�݆�؍�܌�ݏ�ݎ�ڌ�ۍ�܍�ܐ�ݛ����������������������������踺���������������������ᢲӗ������������������ڝ�ۚ�ޛ�ܞ�ٸ����������������⧵К�۠�������������������㴼Ѽ�߬�ת���������۟�ԙ�מ�ݝ�ړ�ۅ�ك�܊�ۋ�֙�������᯺ڡ�ܲ�檻٨�٨�۴�޾�������������������������������������������������߷����������������������������஻۩�ݣ�ܩ�ݷ����������߽���ܮ���������������������������������������������������������������ޭ�ᦾ਽ܼ���������⮾ߴ�ܷ�ݹ�߶�ޯ����������������������������ع�ܳ�ܱ�ாిா߭�ް�઼᪼৾ਿ᩽ޫ�ߩ�ݩ�ߪ�⪼ா௿��������ܸ�޺���ݽ���߹�ᶾ������ޫ�ު�ݩ�ݪ�ۧ�ޣ�ߦ�ߨ�ަ�ݩ�߬�௿௾ݱ�߰�᱾௼ޱ�౾ޱ�޴�ݸ�����޴�߳�޲�ߴ���߻���߻�޽�߻�޸�ఽ߯�߰�௾߰�ಿᶾ⹿߽���߿�������޿�߾����������������������ߙ�֕�֑�ؒ�ٕ�ט�ٖ�ٔ�ؕ�ٔ�ו�ٕ�ܒ�ٓ�ג�ؓ�ٕ�ٖ�ڒ�ّ�ؕ�ٖ�ٕ�ٕ�ٓ�ח�ٔ�֒�ٗ�ܔ�ّ�Ֆ�֕�ז�ו�ٔ�ړ�ؕ�ٙ�ڙ�ڗ�ו�ב�ٓ�ٖ�ڕ�ٕ�ٖ�ۚ�ܕ�ړ�ؕ�۔�ۓ�ݒ�ܒ�ڔ�ڕ�ٕ�ܕ�۔�ؗ�ٗ�ؚ�ܕ�ٖ�ܕ�ܕ�ܖ�ݕ�ۗ�ޕ�ݕ�ݖ�ܚ�ܕ�ܗ�ۖ�ܖ�ܚ�ޚ�ۛ�ݘ�ݔ�ٗ�ݖ�ݘ�ܗ�ۗ�ݗ�ޖ�ݖ�ݕ�ݕ�ݗ�ߗ�ޙ�ߗ�ޗ�ߘ����ݛ�ܜ����ޜ�ߜ�ߜ�ߘ�ޜ����᛹ߚ�ޛ�ߜ�ޛ�ݜ�ݜ�ߝ����ݛ�ݝ�ݛ�ݛ�ݟ�������ߝ�ܞ�ݡ�ޟ�ޝ�������ޝ�ߙ�ۛ�ᚺ���������✺���ޜ�ޛ�᝻ߜ�ޜ�ޞ�ᠺߟ�������࠼᡻���ޝ����ᚸޞ����ޠ�៻���۞����ߢ�ᡸᡸᢼ᡽➼⛻៻ࣽ⠾❾᜼⟽㠽ݠ�ݝ�᛽➿��⡾���ޝ�᝿䞼࠾ࡿ㛹ݤ�ᢼ᧾޵�޳�ެ�ঽߒ�֌�ڊ�Ր�ֈ�χ�Ԃ�Ӏ��~��|��z�Յ�ԋ�Շ�Ӈ�҈�ԏ�Շ�ӈ�ѧ�ۻ�ॵ֕�ґ�ғ�֘�٘�؞�ӟ�Ӝ�א�Ԋ�Ԏ�֞�ٲ������娸ܕ�؏�ד�َ�є�Ҕ�Ԕ�Ӕ�ϓ�ԍ�ҍ�ԉ�ւ�Ѓ�҃��~���Ԁ�҄��|�р�ф�ѐ�Ԛ�Ҥ�־��������٠�З�؏�ِ�ފ�܊�܍�܋�ݎ�⍮Ꭽۓ�ܝ�۬�ٻ����������������������������������������������破Ռ�׈�מ����������������㢲֧�ۨ�ܚ�ٝ�ض������������䶽כ�ե������������ݞ�ٓ�ٙ�ݟ�ڗ�؛�ܡ�آ�ލ�Ԃ�ҋ�٘�ޑ�Ո�ׁ�ӂ�Ԇ�Ԉ�؈�ל�ޚ�՜�ٜ�ݥ�ۢ�֩�ݞ�ۤ�⚲ֻ����������������������������������������������������������������������������߬�ܡ�ޠ�ߣ�ު�޹����������޾�ݺ�߲�߯�߰�������������ߥ�ݪ�������������������������������������ି৶ע�ۜ�ح���������ި�؞�ٝ�ܩ�ݺ�����߳�������������׵�������������������߾�޽���߽������������߳�ܲ���䰿ޫ�ܪ�ݨ�ީ�ݫ�߫�ޭ�۰�޴�ߵ�ܷ�޶�ߴ�ిޭ�௿ಿ��Ȿ౾ି߫�ޭ�߭�߫�߫�᭻଺߭�߰�౿ⲿ᱾޲�߯�߯�ޯ�߯�߳�౾ޯ�޳���߳�޶�߶�ߵ���᰿ޱ�޶�޸�ⴿߵ�೾޲�߯�ް�߯�ܳ�ಽݽ������������������ݺ�ݻ�������������������ޜ�՗�ؐ�א�ԕ�ד�ב�ד�ח�ڕ�ؔ�ؕ�ِ�ؔ�ٗ�ؔ�ٕ�ڑ�؏�ؑ�ה�֔�Ֆ�Ֆ�ԓ�Ք�֕�ד�ג�ْ�ؕ�ٓ�Ւ�֔�֖�ؔ�ؒ�ٔ�ٕ�ؕ�ؔ�ؔ�ړ�ٗ�ۖ�ژ�ە�ٕ�ٔ�ۓ�ړ�ّ�ٔ�ۖ�ړ�ڒ�ٓ�ْ�֔�ْ�ْ�ڔ�ۗ�ۘ�ڔ�ٖ�ږ�ژ�ܔ�ڔ�ۖ�ܕ�ܔ�ۖ�ړ�ْ�ږ�ߘ�ݙ�ۚ�ۖ�ܕ�ݑ�ْ�ږ�ݖ�ܙ�ݚ�ߚ�ߗ�ޖ�ܘ�ݚ�ޙ�ޘ�ߘ�ߕ�ܚ�ߚ�ݙ�ݛ�ݛ�ݘ�ޚ�ߚ�ܜ�ܛ�ߝ�ޙ�ݚ�ޙ�ݗ�ݕ�ܘ�ޝ�ޟ�ޚ����ݛ�ߛ�ܙ�ۛ�ݜ�ݝ�ޝ�ޜ����ݘ�ܟ�ܠ�ݙ�ݚ�ޜ�ޜ�ޛ�ݙ�ݘ�ܞ�⟸���ޚ�ޝ�ߗ�ܙ�ޝ�ݟ�ޟ�ޞ�ݜ����ឺ᜺������ߛ�⟽㟸࠺ߝ�ߜ�ޟ�������������❺⟽ូ���᝻᛻᝻ݛ�ߟ�࠺ݝ�ߜ�✽���ޠ�ߠ�❾ូޜ�ܜ�࠾䢼ߟ�ަ�ݮ���ޮ�۷�ߧ�ئ�ط����޵�ٛ�Ջ�ֈ�օ�ҁ�Ӏ��~��x��z��}�Ӏ�ԃ�ԋ�Ԑ�ԏ�ֆ�х�ւ�ӂ�Ӄ�҈�ӓ�Ռ�Ӑ�׎�Ԑ�ԋ�Ҍ�Ҏ�ԋ�҅�Ћ�օ�ӆ�Շ�Ж�֖�ѓ�ё�Ӌ�Պ�؊�׉�Ӆ�҅�ӈ�։�ԇ�Ԇ�ӆ�ԇ�Ղ�у�҄�҅�҂�Ҁ�҂�Ѓ�υ�Ѓ�ф�ҋ�ӑ�Ң�Ԫ�Ѻ����᪱ͩ�ի�ި�ݝ�ג�ԍ�؏�ݐ�������ۙ�ݤ�ۯ�ؼ����������������ܺ����ܸ�۹����߼�ݤ�ˮ�׺�ߧ�֏�Ճ�؅�ԇ�٘�������޺�ؿ�旪ˡ�ܧ�ޛ�׊�ҕ�Ԩ�ܨ����������睫Ң�ض����ᦶ׎�Ԉ�֋�׍�ُ�ח�ې�؆�Ԁ�Ӂ�؁�ֆ�Ս�֍�؅����~�ׅ�ۇ�؄�ւ�օ�Ԙ�٪�߬�ۨ�ڠ�ۓ�ד�ژ�ڭ����������������������������������������������������ܷ������������������������ڣ�ڡ����ޙ�ڤ�ټ������������������ڻ����������޸�ߢ�ן�׮�����ܵ�޲�������������߬�������������⠳ԩ����奵ٟ�߳�������߱�؞�֚�ܜ�ޗ�ݘ�٠�ۮ�������������䫵������������������������������߿���������������ݳ�ߺ�ḿܷ�ૻܥ�ܪ�ݪ�۪�ި�߫�߬�ݯ�߰�ݲ�߯�ૻܮ�߱�ᮿݰ�᱾ି߫���ᦽߦ�ߩ�ݫ�ߨ�߫�⫾߫�߯�ߵ�඿೾ޫ�ݩ�ݪ�૽᩼ܫ�߮�ిಿ߱�ޱ�ാ᱾ޮ�ݰ�ߵ�߰�ݱ�޲�߲�߰�୻ޫ�߯���߲���޻�޾�������޾�ݻ�߷���޷�ݷ������������������ݛ�ҙ�Ӕ�֕�֕�֖�ט�Ֆ�՗�֚�؝�֚�՗�֖�ٓ�ؔ�۔�ٕ�ژ�ך�ՙ�֖�ו�ٚ�ؕ�֕�ّ�֓�ڔ�֖�֖�ؕ�ו�ٓ�ד�֖�ؘ�ٕ�ؙ�ڗ�ڕ�ڒ�ؕ�ٔ�ؔ�ڔ�ړ�ٔ�ڕ�ٕ�ٖ�ږ�ڗ�ؘ�ٕ�ܕ�ܔ�ؓ�Ֆ�ږ�ؙ�ݘ�ޕ�ژ�ܔ�ܔ�ܓ�ڕ�ܔ�۔�ۗ�ٙ�ږ�ܘ�ܖ�ݖ�ݙ�ޖ�ݕ�ޘ�ߝ�᝶ߖ�ܗ�ݛ�ޛ�ߙ�ޙ�ޘ�ߖ�ݖ�ݗ�ޕ�ݗ�ߚ�ޝ�ޛ�ޚ�ݚ�ۛ�ޜ�ޝ�ߚ�ޛ����ݝ�ܛ�ߙ�ߘ�ޗ�ݗ�ޗ�ޙ�ݟ�ޢ�ݠ�ܜ�ܛ�ݜ�ޟ�ޛ�ݝ�ޝ�ޝ�ܞ�ߟ����ߝ�ޝ�ڞ�ݟ�ޡ�ݟ�ܞ�ݞ�ޟ�ޟ����ݟ�ޝ�ޟ�ޠ�ܡ�������ߜ����ߚ�ޜ�ޝ�ݞ�ߜ�ޜ����ޞ�ޞ�ޞ����ߟ����ݞ�۟�ܞ�ݞ�ݞ�ݞ�ݟ�ࡻ࠼ᠼ៹ޝ�➼���ܠ�۞����➼⟽㝾᝻ݟ�ޢ�ᢼߟ�ࣻߥ�٭�������������������ؼ�۹�ء�ю�ό�׋�֊�օ�ф�ԅ�Ճ�҂�с��}�Ӏ���т�ӄ�҆�ӄ�Є�҃�ф�Ԅ�Ձ��z���ԇ�Պ�Ո�Ԋ�؆�ԃ�Ԅ�ԉ�֍�ׇ�ԅ�Ҋ�Ѝ�ъ�ҍ�Ԍ�ҍ�ю�Ԑ�֏�׎�֊�Չ�Ԍ�ԏ�׋�я�χ��|��z��{�Ӏ��~�Ҁ�Ԅ�ԉ�ч�����τ�Ҏ�ҕ�Л�П�Ҧ�ԣ�ΰ����������۾�������㬺׮�ܻ���������������������������������௸թ�ϫ�Ԯ�٭�خ�׭�ګ�ڗ�؈�։�؈�؇�ҫ���޶�ܩ�ؚ�Ց�ו�ٚ�ߌ�ֈ�Ֆ�ٝ�ժ�ױ����阬ϕ�ק�ڥ�֎�Մ�ׅ�؅�Ն�׌�Փ�ۊ�ׂ��}�҃�Ӄ�ׇ�֏�ڋ�؄�ӆ�ׇ�چ�ׇ�ԃ�Ӂ�؃�Օ�ݐ�֎�֙�۔�؊�ؖ�ܘ�٤�۴�৷ث����������������������ܺ������������������ٿ����������������������紻բ�٣�ޜ�ۛ�ܢ�ܨ�ڸ����������������������������������ޭ�ݢ�ܬ�����������������������߰���������ݼ�������ޮ�������ࣲٟ�୼���������߰�۞�ܛ�ܖ�ݕ�ۚ�ܥ�۶����������ᴻ������������������������������޽����������ڼ�ݯ�ܶ�߾����ݺ�۴�߭�ީ�ݪ�ު�ݬ�ா������߰�ޭ�⨿����������߰�߮���ି߮�߭�ᬿ߬�߫�ޭ�ެ�ީ�ۮ�ݪ�ۥ�٧�ٮ�ޯ�߬�ܭ�ૻ߭�ޮ�ݯ�ޯ�ޮ�߱�᭼ݬ�ݮ�߮�߰�಼ߴ�ᴾ᯼ޱ�ൿⶾ��ᴿݶ�߻���������ߺ�ಿ᰽߲���߳�߳�޷�������������ߢ�՟�ӝ�ӟ�ԟ�Ҡ�Ӝ�Н�џ�ӟ�Ӡ�ԟ�֜�ә�֔�ؒ�֔�ט�ט�՗�ؗ�ڔ�ԑ�Ӕ�ԙ�ؙ�ٔ�֖�ך�ژ�ؗ�ؘ�י�ږ�ؖ�ԙ�՘�ז�ז�ٓ�ג�ْ�ْ�ۓ�ړ�ۑ�ْ�ٓ�ٗ�ْ�ّ�ڑ�ْ�ԕ�Փ�ד�ٔ�ؓ�ח�ْ�ו�٘�ڕ�ۖ�ܒ�ڔ�ۗ�ۗ�۔�ݒ�ݕ�ܚ�ݘ�ܚ�ޙ�ޖ�ݛ�ܛ�ޗ�ޖ�ݘ�ڛ�ܘ�٘�ږ�ܗ�ޗ�ݙ�ݙ�ݙ�ޙ�ޚ�ޗ�ޗ�ݚ�ܙ�ݙ�ݗ�ޕ�ݗ�ޗ�ݘ�ޙ����ݛ�ݞ�ۚ�ܙ�ޜ�ߛ�ߗ�ޙ�ݛ�؟�ؠ�ף�ڧ�ۭ�ݪ�ۨ�ۢ�ݝ�ܙ�ݝ�ߝ�ޞ�ݟ�࠺ߞ�ߜ�ݚ�ޛ����ܞ�ڞ�۝�ڠ�ݢ�ޢ�ߤ�ߞ�ߡ�ុݣ�ݟ�ܞ�ߝ�ݛ�ݞ�➺⛼ߚ�ܛ�ߞ�ࣽޠ�ߛ�ᙹߞ�ឺߝ�ۜ�ݟ�᝺䜺ޝ�ޜ����᝹៻㜼➼ޞ�᝻᝻ݝ�ݝ�ܝ�ݜ�᝻ߠ�ߜ�ܛ�ݞ����ߠ�ޞ�ӡ�Ь�ڰ����������ܦ�ʘ�Ҍ�Շ�ԍ�׍�ӆ��{��|��}�с�ҍ�֊�΂��z��|��}���Ђ�҃��~��}�τ�Յ�Ղ��|�Ӂ�у�Ԇ�Ԅ�҃�Ӂ�Ӏ�Ӆ�ԁ�Ѓ�Ӈ�Շ�ׄ�Մ�҇�҆�Ӈ�ӌ�׋�Ո�ӈ�ӊ�Ջ�Ռ�ҋ�Ӊ�щ�ѐ�Տ�Љ�т��{��y��}�с��|��~��{��|��|��{����Ŋ�ț�Ж�ʏ�̎�Ɗ����������ě�š����Ǖ�������ȕ�������������������ǭ�Ӫ�Ҭ�֪�Ӥ�ԣ�ա�Ң�Ф�Ԥ�ե�֤�ת�٨�ޏ�Ո�ڂ�؃�Օ�٣�ڝ�ؘ�ܐ�ۂ�҆�Ջ�׉�ׂ�Ԍ�ؖ�ؕ�؞�֥�ם�Қ�٠�׏�Չ�ۃ�ڀ���ӄ�Ր�֕�َ�؅��~�׀���؂�ю�؊��}�Ձ�؁�؂�ۂ�ـ�ց�Մ�؁�Ճ�Ջ�֓�Վ�ֆ�؊�Ք�ؔ�ؖ�۔�ݔ�ڥ�������������������޾������������������������������������������ٟ�؟�৹ݩ�ޢ�ߠ����۶���������������������޿�޳�������ޫ�֥�٢�ٰ������������������������ޭ�ک�ݩ�ܲ���ݵ�۾���������㬹ٟ�ڥ�޳�������������⪷ژ�ޔ�ܙ�ݖ�ᙲۧ����������ڱ����������ܿ�ں�������������������������޿�ز�ݭ�ں���������ޮ�٭�گ�ିݪ�ܭ���������������������߯�ޭ�ߨ�㧾��������ޯ�ܭ�ઽݢ�Ӳ�������ܳ�ݦ�ܡ�٣�ۮ�ܾ�䴿߭�ݧ�ݩ�߭�ު�۩�ܬ�୽߬�ݯ�௿૾ް�߲���Ჽݵ�඿౾����߷�߻���޾�޽�߳�ޭ�ᬼݮ�ఽ౼ܰ�߲������������⡴Ҟ�ϥ�ӥ�ӟ�Ҟ�Ҝ�Ϡ�Ѣ�ң�ӡ�Р�ѡ�ԟ�Қ�ӗ�ҕ�Ք�Ԕ�Օ�֔�ՙ�ؙ�ՙ�՜�ӝ�ؖ�Ӓ�ԓ�٘�ן�ԥ�զ�֥�ՠ�՚�Օ�Ֆ�Ֆ�֕�ג�ؒ�ٕ�ڐ�ّ�ڑ�ٕ�ٗ�ؕ�ו�ٓ�ڕ�ٗ�֙�ؖ�֔�ԓ�Օ�۔�ڔ�ڒ�ؕ�ۖ�Օ�ו�۔�ږ�ڕ�ے�ړ�ٔ�ۘ�ܘ�ۘ�ڔ�ז�ڙ�ܗ�ܔ�ޔ�ܗ�ۖ�ܖ�ژ�ؚ�ٙ�ۖ�ܕ�ٗ�ۗ�ܖ�ۖ�ۙ�ۙ�ۛ�ܙ�ݘ�ޗ�ޖ�ݕ�ܘ�ܘ�ܛ�ߗ�ۗ�ۗ�ۗ�ۜ����ݚ�ޙ�ݟ�ݣ�ק�خ�ش�ٸ�ٺ�ڸ�ٶ�۳�׫�ף�ڛ�ڝ�ܛ�ܞ�٠�ڞ�ٛ�ڛ�ۜ�ڝ�ڝ�ܞ�ݛ�ڗ�ܘ�ݜ�ޚ�ޜ����ߟ�۠�ݛ�ۜ�ܜ�ܝ�ޚ�ޙ�ߞ�ޟ�ޝ�ܞ�ݛ�ۛ�ݝ�ߞ�ߞ�ݚ�٠�ޒ�ӑ�֖�ה�ә�֝�ݟ�ߞ�ߟ�࠺ߟ�ޟ�ޠ�ڣ�מ�Ә�ԙ�ؙ�ښ�ٔ�ڏ�ؑ�؏�ԑ�Ց�ב�։�֎�ԇ�Ѝ�ь�Ђ�̆�Ԅ�Ղ�Ԅ�Ҋ�Ն�Њ�ԇ��|��|��y��|��}��{��{��}��|��{��y��}�с�Ղ�Љ�҄�с�р�Ђ�х�Ҁ��|��{��}�Ӂ�Ԁ����|��~�Ѐ�х�ԁ�Ҁ�ӂ�Պ�Ӎ�Ջ�Ӎ�օ�Ѐ��~�΂�ч�ш�҃�υ�Ӈ�҈�т�ˁ��v��t��n��l��k��f��e��i��l��j����ƒ��x��p��s��y��{�������}��w��u��v��r��u��t��x��r��s��r��p��p��v��x����Ċ�Ǝ�ˈ�ˈ�Ɏ�͑�җ�Ԛ�ԡ�٠�֝�݊�ׁ���Ԁ�և�և�ґ�Ր�Ԑ�چ�օ�Ձ��~��{���օ�Փ�ٔ�Ԗ�ה�֔�ؑ�ڄ�؄����~��~�ւ�؇�ڏ�Ս�Ӏ�΀��~�����̂�ˁ��}��}�ρ�Ճ�ׄ�Ԋ�Ց�ل��~�ֆ�،�؏�ً�և�Ԇ�ԍ�ח�֛�Ֆ�؎�ٔ�ֿ�������������������������������������������������������������ݷ�ٝ�ם�ߢ�ݧ�٢�١�ޥ�ڦ�ٴ������������������ح�������魸Ԭ�ݠ�ۭ����������������������������ർر�߰�ޫ�٦�Է�������ܺ�ޠ�٢�ܲ�ി���������ۮ�ۛ�ە�ڔ�ۖ�ݔ�ڗ�ج�������㲷Թ�������۽�ܲ�خ�۶����������������������߹�ڣ�۪����������������ٷ�߮�޵���߯�ߟ�۠�ڦ�ۮ�߰�۳�ڳ���ߪ�ޫ�ި�ܭ�ެ�ݭ�ݦ�ڦ�ڶ�߸���߹�ߵ�ܷ������������ᬹۢ�ڦ�������߽���ݰ�ݩ�ߧ�ۧ�ګ�ެ�ޭ�ݮ�ޮ�߮�ް�ಿߴ���޷�ߴ�߭�ݭ�ޭ�ް�᰿��߲�ݱ�ޯ�ܯ�ܨ�۩�ݯ�௾߬�߭�ܲ�ޱ�ܴ�ݸ�ߗ�Ν�ѡ�Р�Ӝ�ӛ�Ҝ�О�Ѡ�ӣ�Ԧ�թ�ԥ�ҡ�Ϡ�ќ�К�Ι�З�ԙ�ؕ�֓�Օ�ԗ�֗�ј�֘�ҙ�֖�Й�Ҟ�Ҥ�դ�ԥ�ӧ�ס�՚�ՙ�Ֆ�Ֆ�ז�ٕ�ٔ�ؖ�֖�Օ�Ԕ�ؔ�ٔ�ח�ږ�ٗ�ږ�י�ؖ�՗�ٙ�ۘ�ܚ�ؕ�ّ�ד�ٗ�ܓ�ٗ�ؚ�ۚ�ۚ�ۗ�ٕ�٘�ڕ�ۗ�ۘ�ܕ�ٕ�ٚ�ۚ�ۘ�ܘ�ڞ�כ�ؙ�ܗ�ٕ�ۗ�ܙ�ڙ�ښ�ܙ�ۗ�ۛ�ښ�ݚ�ݗ�ە�ۚ�ޛ�ޛ�ܛ�ޙ�ۙ�ۘ�ܙ�ݙ�ݚ�۝�ܚ�ݜ�ۜ�ݛ�آ�֬�خ�״�ٽ����������������׻�ٮ�إ�٥�ܣ�ڡ�ؠ�ۚ�ݛ�ޜ�۝�ڝ�ܜ�ݟ�ܛ�ڕ�ٙ�۞�ڝ�؝�ڟ�ڟ�۟�ޚ�ޛ�ݡ�ޠ�ߜ�ݝ�ڝ�ڟ�ܝ�ޕ�ٓ�ڑ�բ�׭�٣�Ԕ�ϖ�ӊ��}�І�Ԋ�Ҏ�֔�Ք�Ԟ�ڡ�ݟ�ܝ�ޟ�ڠ�Ԡ�Ҝ�֔�֑�Պ�ӂ�π�҂�э�؎�֎�Ґ�ԍ�ч�҄���ς�ф�х�Ѕ�І�҂�Ѐ�ρ�Ѕ�Ԅ�҈�Մ�ԁ��~���Ҁ�҂����}��}��{��x�Ѐ�փ�օ�Ї�τ�Ҁ��~�Ђ�Ҋ�Ԇ��y��w��|��{�����Ӂ�Ҁ��{��z���щ�ԍ�З�Ӓ�ђ�ώ�Ї��}��}�с�χ�͈�˃����~��s��i��h��d��i��h��f��e��e��b��e��g��g��q��n��l��i��l��r��u��s��l��n��o��k��l��o��l��i��m��m��n��p��n��q��r��l��l��q��t��p��q��m��q����Ə�ʗ�ҏ�̔�Ԓ�Ԇ�π�҂�щ�ւ�ы�ؐ�Ӓ�֐�؅�ҁ�ӂ�ׄ�Ԇ�֊�ӗ�ݖ�֝�֘�Ӎ�҃�����؁�ց��}��w����q��n��o��j��k��l��k��l��l��q��~��~�΁�Ӂ�щ�Ջ�փ�р�Ԅ�ӊ�׎�֋�Ո�Մ�ҍ�ז�֜�ז�׉�ԏ�֣�ڹ����������������������������������������޲�������������߻�Ѣ�֛�ܝ�ۥ�ܲ�㢲֦�ޞ�٦�ܳ�۷���������������ծ�������㱷џ�ؠ�۪�ն�޽����������������������߿�ع�ܷ����������������෻֡�ݥ�ޱ�ު�۬�ټ�ݳ�٠�֙�ٙ�ٗ�ې�ِ�ٕ�ܛ�׸����ܦ�̺�������������ܮ�ԯ�ؼ����������������������ح�ع����������ܽ����ᶿܩ�ֿ������ݥ�ٞ�ޭ�㩹ۡ�ڮ�������෿֠�ך�ݣ�஽ܬ�ܩ�ڞ�۠�ۭ�ެ�٬�״�������ߵ�ػ�᳾޳�ܼ�ஹ׫�������ܾ�������޽�۲�ܫ�ۭ�ݭ�ޯ�߳�޳�ް�ݰ�����޲�߳�ൾ߱�ܰ�ݲ�߱�ಿ᱾ް�௿ି߫�ܭ�ޯ�હڰ�ா߯�ݰ�߱���ߴ�ߛ�Ϡ�ѥ�Ӟ�Ϙ�З�Ϛ�њ�Π�ϡ�Н�Р�ѣ�ϣ�О�ќ�ә�֘�ؓ�֓�ד�֘�ט�Ԝ�՝�Ә�ѝ�Ԟ�Ϡ�Ҡ�Ҟ�Ѡ�ѣ�Ӣ�Ҡ�Ѣ�՝�Ҝ�՛�՚�љ�Ә�ו�ח�ؙ�Ԛ�؛�֗�Ԙ�Ւ�֑�ْ�֕�ג�֖�ז�ُ�֔�ە�ٗ�ؘ�ڔ�ؓ�ڒ�ٕ�ۖ�٘�ۗ�ۖ�ؘ�ٔ�ڔ�۔�ڗ�۔�ܓ�ړ�ە�٘�ٗ�ٖ�ژ�ڛ�ܘ�ܘ�ܜ�ޘ�ܖ�ڙ�ט�ؕ�ܕ�ۚ�ޚ�ݚ�ڙ�ڙ�ڛ�ݘ�ڜ�ݗ�ٔ�ٕ�ܖ�ߛ�ܚ�ט�ܙ�ݟ�ݞ�ڟ�ا�ڭ�װ�ٶ�׼����ؿ����������ָ�ٯ�ح�ת�ت�۝�ԝ�ڝ�ޚ�ޚ�ڞ�ڟ�ݜ�ݘ�ٗ�֙�٘�ؐ�ˏ�΋�̋�̎�ϗ�֝�ܟ�ݝ�ܘ�ڗ�ܛ�ᚸڙ�ۈ�Հ��}��~�Ӄ�҉�Ն�Ճ�ӄ�Ӏ���Ճ�ԇ�҉�ԇ�Ԋ�ӓ�Օ�֜�ِ�ؓ�՜�ݑ�׊�׃�҃�҄�ԁ�Ӏ�҂�Ԅ�Ԇ�ԅ�т���Հ�Ӆ�Ӄ�Ӄ�ׂ�ӂ�Ӂ�Ё�с�ӂ�҄�҄�Ղ�Ӏ���Ӏ�ց�҃�σ��~��|��z��|���Ԁ��y��{�Ҁ�τ����}��}���ф��~��y��v��}���π�Ά�э�Վ�֌�Ԍ�Ӈ�ϊ�ҋ�щ�̃������|��x��v��x��x��p��n��m��l��o��j��d��g��f��g��f��f��^��c��e��e��b��c��a��c��c��g��h��h��g��h��k��f��i��j��n��k��e��_��b��c��g��j��n��l��m��j��p��r��k��k��k��i��j��m��r��u��u��m��v��~�́�ʆ�Ӏ�Ҋ�Ӗ�ړ�՘�ۉ��}��}�҂�ց�Տ�נ�ڡ�ӥ�ӝ�؁�΀��{��s��m��k��i��i��d��b��b��g��h��e��k��m��m��k��o��s��r��u���ʍ�Ҍ�Ӄ��~��{�π�א�ً�Ռ�֋�֊�Տ�ג�Ւ�֌�Ջ�֒�כ�۲�������������������������������������㴺��������������ژ�ؗ�ޛ�ߟ����駵ؤ�ݛ�ۤ�������ڵ�������������ޱ�������߻�آ�֮�������䵿����������������������ٳ�ٯ����������������ᶻء�۩�ݹ���߬�٧�ۢ�ڨ�ᙰّ�ב�ە�ۗ�ו�؛�ٳ�㭻ޝ�د����������������ط�ػ����������������������޷�������������ܾ�ٷ�ߦ�ت�������⮹՝�ا�ݭ�ޟ�ם�ަ������ݪ�ܜ�۝�ᛴݥ�ܚ�ږ�֔�ڛ�ܫ�ݯ�ܨ�ء�ֵ���ܾ�᯶���㸽���ᲶӲ�۶�������޴�������������۽�߶�᱿���������ܻ����������ܿ�ߺ�޲�ݲ���ݰ�޲�㮾߰�����ാ��߮�߰�߲���߰�߲���߳���ᚬР�Ѥ�ӟ�Ϡ�Ҡ�Ҙ�͛�ϟ�Т�Ң�Ӣ�Ӥ�Ѥ�Ϡ�Ϟ�Й�ԙ�Ԙ�Ҙ�ӕ�Җ�ј�Ԗ�җ�ӗ�ԝ�Ӛ�ӝ�Ԝ�Ӟ�С�Ӥ�ҥ�ӣ�Ф�ҡ�ҟ�Ӣ�ӡ�ҡ�Ԟ�ә�ӝ�ԡ�Ҡ�ӡ�ӝ�Ԙ�ԗ�ؕ�ٗ�ؘ�֘�ך�ؚ�ד�ה�ؙ�ە�ٔ�ؘ�ܒ�ؖ�ڗ�ە�ٗ�ۙ�ۖ�ܓ�۔�ܗ�ۘ�ە�ٔ�٘�ٚ�ڗ�ט�ٗ�ٙ�ܙ�ڙ�ڙ�ۖ�ؙ�ܙ�ܙ�ܛ�ژ�ٖ�ݖ�ݙ�ܚ�ޗ�ޘ�ݖ�ږ�ږ�ܙ�ݘ�ܗ�ۚ�ݗ�ٖ�ݙ�ݜ�ۢ�֟�أ�ר�ճ�״�ص�ط�ջ�ֿ�׽�������ָ�԰�ծ�׬�׭�֪�ӣ�қ�Й�Ԙ�Ҕ�͓�΅��}��}����s��o��t��n��p��t��w��z����č�Ζ�՘�ٚ�ٝ�ڟ�ؓ��}��y��x��w�ҁ�ӆ�Ӈ�҇�҅�Ӂ�Ҁ�ԅ�ԅ�҅�Љ�ώ�ґ�Ԏ�Ћ�Б�ԙ�ה�֊�Ԃ�����ς�с�Ѐ���Ӏ�р�Ѓ�Ё��|��}��{��}��~��~�ԁ�҃�Ԁ���х�҉�ҁ���Ё�с��~��{��|��z��y��z��z��|��{��|��~���Ё�π��z�π��{��~��}��|���Ӏ��~�π�΀�ȍ�Д�ї�љ�Ҕ�Ύ�Ά�ʂ��v��n��n��o��q��p��n��n��n��j��i��b��c��c��b��c��e��f��d��d��f��e��e��f��g��d��c��e��c��`��b��c��c��g��j��h��e��h��j��i��h��h��l��j��h��k��k��i��m��m��l��j��l��n��n��i��i��i��k��m��p��m��l��l��o��q��r��w�����|�Ã�Ǚ�؎��~�˅�Ӏ�ˊ�Ҋ�ʅ�…�Ȃ�Ċ��q��m��k��h��c��e��d��h��f��f��d��d��g��h��j��k��h��j��n��n��n��m��o��v�������}��~�ͅ�ԉ�Ґ�Ӎ�׉�ׇ�ӏ�ה�Ԕ�Ӗ�ӓ�ԏ�׊�ԏ�ի�ۿ�������������������������������������������������ڜ�Փ�آ�ߤ�ڶ�ߢ�ؕ�ٗ�ۙ�ڷ�ാ٥�֪����������ڷ�ݽ����߼�٩�ֱ�������޺�ح�ۥ�۬�ݳ�ܳ�ھ�������ߨ�ج�ݳ����������������ݨ�ٮ�߽�������߸�ؤ�՝�ۖ�ؗ�ے�ܓ�ޒ�ڕ�ݘ�۩�ߝ�ؙ�ܭ����������������������������������������������������������ݱ�ݠ�ڟ�ث������ڧ�ը�ڵ�ޫ�ܚ�ڜ�٭�ۻ�ݮ�ۛ�ܖ�ޙ�ܜ�ژ�ݒ�ܔ�ڔ�ݘ�ګ�᧵ڞ�؛�ۡ�٩�ح�ڰ�������ܿ�ڰ�ڢ�ڭ������ޫ�ط�������������׵�ظ�������������������������Ἶ׵�ض�ݶ�߲�߳�������������������߱�������ᴿ߲�ߞ�ϣ�ӡ�џ�О�Ҟ�ҕ�Η�Κ�͢�Ф�ϥ�Ҡ�Ѣ�Ӡ�ў�њ�ќ�ѝ�ў�Ӛ�ӕ�ѕ�Ԛ�ӛ�љ�Ԝ�Ԟ�ҡ�ң�Ӡ�Т�У�ӣ�Ӥ�Ѥ�У�Ѣ�ў�ϡ�Ҥ�ӡ�Т�ӝ�Ң�ѣ�ա�Ҟ�җ�ї�֓�Փ�Ֆ�ו�ؔ�ؕ�ח�֘�ז�ږ�ڔ�֖�ؖ�֗�ٕ�ו�֖�ٗ�ە�ە�ے�ړ�ۗ�ۘ�ٗ�ט�ט�ؚ�מ�ٜ�՝�؜�ڜ�ٚ�ח�ڗ�ە�ܗ�ܛ�ښ�ؕ�ٖ�ږ�ْ�Ӓ�Ҍ�΍�ώ�Ќ�Ό�Ҏ�Ԕ�ؑ�Ӓ�ؔ�ו�՚�ӣ�֣�נ�ԣ�Т�Ϧ�ѧ�Ѩ�Ю�Բ�ѱ�Ю�̫�ʥ�˚�Ř�ŕ�ƌ�Â��s��n��o��m��m��i��g��d��g��i��g��g��l��i��k��k��m��m��p��r��u��z����ŏ�Ӑ�ӂ��y��z��}�Ԃ�҄�҅�π�π��{�р�Ђ�΀�́�υ�Ѕ�Њ�ԉ�ӊ�ԇ�҉�ӎ�Ռ�ԁ�σ�у�т�ς����~�΀�Ѐ��{��~�Ђ�҂�Ҁ��{��z��}��{�р�҄�҃�σ�т�Ё�ρ�ρ��{��v��y��y��y��x��v��y��|���ρ��~��}��~�ˀ��}��z����{��v��s��v��|��u��q��q��t��z����ą��y��o��l��p��k��i��e��c��g��i��c��e��i��e��d��c��i��i��e��e��d��d��e��b��e��f��h��h��l��h��e��d��c��b��c��b��b��c��h��j��g��d��h��k��g��e��f��k��l��l��k��j��j��j��k��j��j��l��l��m��j��k��l��n��m��l��k��l��n��g��l��m��k��m��l��k��r��q��i��k��l��n��k��o��m��i��k��g��d��j��e��b��a��`��_��a��a��e��e��i��l��h��h��k��j��j��h��j��o��q��q��q��p��v��}��{�Ѐ�Ҍ�Ռ�ԅ�ҁ�ь�׎�Ԗ�ו�Ԕ�ӓ�Չ�ц�ћ���������������ק�ծ�ܹ����������������������������䘬ќ�ܢ�ܟ�ؤ�ژ�ؒ�ە�ؙ����ף�՝�ѯ�������ޱ�˥�γ������ۤ�Ͻ�������ۺ�٦�ף�ן�֘�Ӫ�᧶ս����ߨ�Ԟ�Ϣ�֮�ٳ�������ᴼӠ�ϫ�ڧ����������ޯ�Ӟ�ԑ�ԋ�֑�ה�ڔ�ؔ�ږ�؜�ۖ�ؗ�٠�ֳ�ݿ����������������������������������������������������ޡ�ҝ�ݠ�٭�޶�߬�ٝ�֣�ާ�ݚ�ٚ�ޘ�ؤ�ڢ�զ�ץ�ٚ�ڔ�ܕ�ے�ڑ�ߕ����ܞ�٩�ڠ�ؙ�؛�؞�ؠ�ڡ�ש�٬�Ա�ֺ�⫵ٟ�٩������޳�ܱ����������������ٿ������������������������������������ܾ�ݷ�ݲ�߱���޷���߲���޴�����޲�޴�ݵ�޳�߲�៯П�Н�ѝ�Ϡ�ѡ�њ�ϕ�Ϙ�Μ�͞�ϡ�ϡ�Ѡ�ў�ў�ѝ�М�С�Ф�С�Ҝ�Ә�Ӝ�ԝ�ӛ�њ�қ�ϝ�ѝ�Р�Ӡ�ѡ�Ң�ӣ�ѥ�ӟ�ҟ�Ҟ�Ѡ�ӣ�Ф�ҡ�ӡ�Ң�ӣ�Ѥ�ԟ�ҙ�Ҙ�ӓ�Җ�ג�֕�ْ�֑�Օ�ؖ�ّ�ז�ڐ�ג�ؗ�ؕ�֕�ז�Ֆ�ו�ٔ�ږ�ؔ�ڕ�ٖ�ؘ�ڛ�ڛ�؛�ל�ա�դ�֤�բ�֞�Ԣ�֛�֕�ח�ۓ�ؒ�Ӎ�Ή��{��r��h��f��g��e��g��j��i��j��m��i��l��j��p��s����ˆ��}��t��t��w��v��|��������{��v��v��u��t��o��i��b��a��e��e��a��e��f��f��d��d��e��e��h��j��e��g��g��g��f��f��f��g��l��n��l��k��o��q��z���҃�т�Ѓ�Ҁ��|��{��v��w�̃�Ҁ��}��~��~��~�р�π�υ�ӆ�ҍ�ӕ�ۅ��~��~��{��|��|��z��y��{��x��{��z��|��z��y��{������}�ρ��~�Ё����|��|��|��}��z��{��{��w��|��~��y��|��y��x��u��v��s��l��j��m��o��l��l��n��n��r��q��o��n��o��s��u��r��m��k��j��f��d��`��a��`��d��d��a��b��d��b��b��g��f��d��g��a��_��`��b��_��a��a��e��f��g��h��f��d��a��`��c��f��c��j��g��h��j��h��g��f��f��g��i��g��h��h��i��j��n��m��l��j��h��k��l��k��n��n��l��m��i��h��j��k��i��i��g��k��k��i��h��j��m��j��g��h��f��i��i��j��h��d��d��e��d��b��a��b��e��d��b��a��b��d��e��f��g��m��k��l��h��h��h��i��j��q��o��m��q��p��q��t��x�Ʉ�ϐ�ҋ�ρ�΋�Ԍ�ѕ�ԑ�ё�Ӎ�Ά�̈�Γ�̝�̠�ɢ�˓�����}����������~����������ʖ�ɛ�Ȥ�ʋ��y����ʉ�̔�ѩ�ܠ�ٍ�э�ҋ��|��v��t��t��u��v��z��z����ȥ�Ђ��z��~�����������t��z��z��x��v��r��r��y��w��p��u��t��t��������z��z��q��s��s��s��t��u��u��r��s��u��y�ƒ�ʆ�͌�ь�Վ�ٖ�ٟ�֫�۫�٪�ٲ�ڻ�޵�������������������۾�������������������ݧ�ן�ܥ�۱�߰�״�㝱Ԫ�ᚰՔ�ږ�ܔ�؜�ۡ�ղ�۸�ި�ږ�ې�ڏ�؏�ؐ�ݐ�ٞ�ܨ�ܠ�֛�ږ�ۘ�؟�٤�ا�ڴ�ܼ�ߨ�ե�٢�ܣ�֭�ָ�ܦ�ա�֯�������������׼����������������౷׿�������޼�ٻ����ٿ�߼�ܶ�߳���߱�ޱ���߰�ݳ���ް�ݲ���ݰ�߳���⡱Ҡ�џ�џ�џ�О�Ϝ�ϛ�Н�Ρ�Р�ϟ�͠�Ρ�ѝ�њ�Ϝ�Ѡ�ҥ�ҥ�Ң�ҡ�џ�ϟ�Ϝ�Κ�К�љ�О�ҡ�ң�ѣ�ѡ�ҡ�Ң�ѣ�ң�Ң�Ѡ�ѣ�ӧ�ԫ�ը�Ҩ�ѣ�ѣ�Ӣ�Ӡ�Ӝ�И�ԗ�֙�ՙ�ӗ�Җ�ו�ז�י�ՙ�Ӛ�Җ�֔�ؕ�ؗ�֕�֙�֚�ԙ�֕�֖�י�֚�ח�ٖ�ښ�٠�դ�֥�֩�֪�լ�թ�֟�Н�Е�ɏ�Ƈ��|��o��k��i��n��h��f��h��g��b��b��c��g��h��g��e��e��d��b��e��i��j��m��n��k��i��h��p��j��p��r��m��q��o��m��o��m��h��f��a��b��d��d��j��h��f��d��i��e��g��c��b��h��l��j��`��a��e��f��g��i��k��n��o��m��o��{�Á�ǀ��|��z��v��{��|��y��~��{��}��~��|��}��z��z��~���с�Ё��}��~��{��|��~��~�̀����}��z��{��{��v��r��q��|��~��~��y��w��z��y��x��v��r��l��l��m��t��w��y��x��v��r��o��o��q��p��n��o��m��l��p��o��m��k��k��l��k��i��l��i��m��l��m��o��j��e��c��`��a��g��k��g��j��i��`��c��k��i��h��e��d��c��e��e��f��f��h��f��e��e��e��c��c��e��f��c��c��g��e��g��h��e��e��g��g��f��f��h��g��e��h��j��k��j��i��l��h��j��o��m��l��j��k��j��g��h��k��j��i��g��i��f��j��j��g��e��g��f��h��i��f��g��e��k��e��g��g��e��d��e��e��e��c��a��b��b��b��c��_��`��d��i��g��c��f��i��g��d��h��h��l��m��m��l��p��n��l��k��m��q��r��y�����w��s��s��u��{��~��w��}��}��y��w��w��v��v��u��v��t��o��n��s��t��s��q��s��r��r��r��q��t��u��s��x����Á��~��t��n��j��l��q��o��r��p��q��r��u��w��n��k��u��s��r��r��n��n��m��r��q��m��m��m��o��n��q��q��q��r��s��m��s��s��o��q��m��l��q��t��r��o��q��s��q��r��t��y�Ņ�Ύ�ќ�н�⳼٠�֠�ר�ٴ�������������������޽�������������������ۨ�ٞ�۩�۲�޶����穲Ѩ�ڞ�۔�ؗ�ؘ�֜�ٞ�Ԧ�ֲ�ݦ�ؖ�ُ�ڐ�ۓ�ו�׏�؏�ە�ڥ�۬�٬�ܝ�ט�ٙ�ڜ�ۨ�ܤ�է�ڨ�ٱ�ಽݱ�ܨ�ۢ�ڥ�ۦ�ث�ر�׳�פ�Ԛ�מ�׬�ܬ�ר�٧�ף�ت�׻�ݻ�ں�ܼ�ܺ�ھ����ع�ٸ�߳�᰿޲�����߳���߰�߭�ޮ�ާ�ۢ�أ�ښ�Μ�О�ϟ�Π�Р�Р�Ҟ�Ҝ�ˣ�Р�Ѡ�ѡ�Т�џ�ў�ԟ�Ҡ�͞�͠�ҡ�ϥ�О�Ϟ�ϟ�О�Қ�Ϝ�Н�П�Р�ѡ�ӡ�Ѣ�Ҡ�ϣ�Ҡ�ϣ�Ф�Ц�ѥ�ѥ�Ԩ�Ӧ�ӥ�ԣ�Ҥ�Ԡ�Ҝ�՘�ב�Ԕ�֔�՘�֘�ח�ؘ�Օ�֒�ٕ�ג�֖�٘�֙�י�ؖ�Ւ�ԓ�י�֟�כ�ԙ�ј�ؚ�ؠ�ԡ�ҡ�Ԥ�դ�ӥ�Ҟ�͒�Á��p��j��k��g��i��g��d��c��j��b��`~�i��g��i��d��b��f��g��k��i��g��g��g��`��a��e��e��f��l��n��m��n��g��g��f��l��q��l��d��f��b��d��a��^��b��e��g��e��b��g��h��e��c��g��f��h��g��e��c��e��h��i��h��e��g��i��h��i��j��k��j��g��n��p��t��p��o��q��v��t��x��y��y��w��y��x��|�ʀ��x�ɀ��}��v��v��t��v��v��t��m��k��e��k��e��g��k��j��k��o��m��l��l��p��j��j��h��k��n��l��l��l��o��n��o��q��o��q��p��r��p��q��m��l��k��k��q��s��t��q��o��o��o��s��q��q��u��r��s��p��p��n��g��c��`��_��_��a��f��d��f��c��e��i��m��l��e��e��e��c��`��e��e��d��f��i��i��e��b��c��i��f��f��d��f��g��e��f��d��d��`��f��d��d��g��e��e��j��g��a��e��g��j��j��l��j��m��k��l��l��j��j��l��m��j��j��k��f��i��h��k��g��g��i��f��e��g��h��k��m��j��f��e��c��`��f��a��a��^��b��a��]��b��g��`��a��f��h��i��g��b��i��f��h��f��f��g��m��n��m��k��k��l��i��m��n��h��r��p��s��r��o��n��l��o��o��o��t��p��p��q��q��m��n��o��n��n��o��n��p��l��m��l��n��o��n��p��p��n��s��r��q��o��k��j��k��l��h��i��m��i��j��i��m��l��m��l��g��n��r��l��o��n��m��o��p��k��n��o��h��n��r��o��p��m��m��m��k��k��l��l��o��j��o��o��o��m��o��k��j��m��k��r��s��q��q��q��{��}����ċ�̗�Ҧ�о����������������ۿ�ܿ�������������ݦ�ם�إ�ٳ�ܷ�ٷ�ٿ�㫶֩�ܝ�ؗ�ڙ�ڗ�ؘ�ڞ�؟�١�ؙ�ד�ג�ڒ�ݑ�ד�ؔ�ە�ܡ�ݩ�߰�ݶ�ߜ�Қ�ݙ�ۚ�ۛ�ٚ�ؙ�ԟ�Ԩ�۩�ڟ�ט�ژ�؜�١�ۡ�מ�ؘ�ד�ې�ٗ�آ�ڥ�آ�ئ�ڣ�զ�ը�ڧ�ף�Ԡ�֞�֪����������߶�ݬ�߭�ޮ�ݮ�ݬ�ݨ�ڣ�՝�Ԣ�ݜ�ޙ�ٙ�؝�Р�ѣ�С�Л�Ϛ�Ρ�Ѡ�Ф�Ϥ�͢�ϡ�Ң�ҡ�Ѡ�Н�Μ�Л�Ϟ�ϟ�Р�џ�М�О�Ѡ�П�З�Θ�љ�К�Ϝ�О�Ϡ�ѥ�ӡ�Р�Ѥ�ѧ�Щ�Ш�ϩ�Ԩ�թ�Ҩ�Ϥ�У�ѧ�Ԧ�ӝ�Λ�Ϝ�ӛ�ҙ�Ԙ�֒�Ӓ�Ӕ�ؓ�ה�Ք�Ә�җ�Ӛ�ԙ�Ԙ�ҝ�Ԛ�ҙ�Ԛ�О�ԙ�Ԛ�Ҝ�ӟ�ԡ�ӣ�О�К�̕�Ɇ��v��n��i��g��b��c��j��j��b��a��_��b��d��`��e��`��_��c��d��h��d��e��k��i��f��c��c��g��e��g��g��l��j��d��g��h��h��e��g��f��_��d��d��_��`��d��e��c��b��d��a��b��c��e��e��b��b��c��b��d��c��e��f��f��e��c��e��e��g��h��h��m��l��i��e��e��g��l��q��l��h��j��n��v��t��s��t��s��n��l��r��y��s��n��p��l��i��f��k��j��h��c��h��i��f��c��e��f��f��f��g��l��m��m��p��p��m��h��j��k��n��n��i��e��f��e��c��g��j��j��l��l��m��l��m��m��l��m��f��d��g��i��j��i��k��i��l��o��q��t��n��o��i��j��j��e��d��a��`��f��d��p�����m��e��f��e��g��e��a��^��^��d��g��e��f��j��m��i��d�e��e��e��e��g��d��h��i��a��a��e��i��h��f��f��f��h��h��i��g��i��g��g��l��m��h��i��k��i��i��k��l��i��k��p��p��g��d��a��f��h��i��j��f��c��e��b��h��h��h��g��h��b��d��b��[��]��]��^��\��a��c��c��e��e��j��f��h��f��i��l��m��j��h��d��f��e��h��h��j��k��k��l��l��l��k��j��p��o��q��q��q��o��o��r��n��q��k��m��p��i��l��t��p��l��l��m��m��h��j��k��l��j��l��n��m��o��n��q��o��k��g��i��g��g��d��g��g��l��m��j��h��k��j��c��j��j��g��j��h��h��d��g��j��k��h��i��n��l��l��o��n��i��l��p��m��i��j��l��k��p��o��l��n��j��i��j��k��n��o��s��m��m��l��i��j��m��n��o��l��o��q��w��~����������������ߺ�ײ�ּ�������⤯͛�ڡ�ج�׼�۹�ص�ֳ�ٴ�ܫ�۟�ؗ�ؔ�Ԗ�֕�؝�ښ�ו�ڎ�ڋ�َ�ّ�ِ�؍�ؓ�٢�ܩ�ڭ�ڥ�٠�ڙ�ؕ�ݖ�ך�ؕ�֓�ُ�ؑ�ՙ�ܔ�ۏ�ڎ�ؓ�٘�؜�֝�ח�ؔ�֑�ؐ�ڒ�ړ�ٚ�۝�֢�֣�֨�ڧ�٤�٩�ݥ�֢�٠�Բ�ھ����奱ˠ�Ԟ�ԧ�ؤ�ؚ�٘�ؗ�ٓ�ח�ٗ�ٓ�ٓ�ٟ�П�Р�Ѡ�ѡ�Ϣ�Т�Т�Σ�Ч�Ҧ�ͣ�Π�Ξ�̡�Ѡ�О�Ϟ�ϝ�Ν�Ξ�ϡ�Ϡ�П�Ѡ�Т�Ѡ�Т�џ�Ϡ�Ҡ�ѣ�ӣ�ҥ�Ҥ�ϥ�Ы�Ӫ�Э�б�ѱ�Ұ�ϲ�˱�̪�Ϥ�Ϥ�ң�ϟ�Ν�Н�Ԝ�И�Ϙ�җ�њ�є�˙�ј�Й�ӛ�җ�Ԗ�Ӗ�љ�қ�ԗ�ԛ�Ҝ�К�ԛ�ԟ�Ӥ�դ�Ө�ӡ�̍��y��o��k��m��j��e��b��]�`��b��c��d��d��a��f��a��^��d��b��^��a��d��f��c��c��d��i��j��l��i��m��m��k��i��g��l��h~�g�d��b��a��b��b��Y�`��[��c��b��g��g��d��e��g��h��g��d��b��e��g��h��k��j��e��h��h��i��g��d��g��k��n��f��f��a�a��j��m��i��j��h��h��j��j��l��l��n��m��p��o��k��j��k��o��q��q��h��f��g��d��h��g��a��`��d��e��f��a��d��b��h��i��f��c��k��i��n��m��i��m��n��n��e��e��f��f��^��c��b��d��f��i��k��h��g��d��f��g��g��e��d��k��h��`��e��g��g��f��d��d��c��f��k��q��k��k��g��g��j��q��s��q��n��m��i��{�����z��l��m��f��f��i��j��b��`��X��[��b��h��d��d��c��c��a��e��f��f��i��f��h��l��h��h��f��h��e��e��f��h��g��f��f��k��j��m��l��k��l��h��j��g��k��l��k��m��g��h��h��o��s��i��j��h��g��c��g��g��i��h��e��b��h��e��h��c��d��c��_��_��_��_��b��d��d��`��`��e��d��e��d��d��g��h��j��k��q��h��d��g��k��i��j��h��l��l��m��l��i��f��j��k��j��r��u��t��u��u��r��s��r��r��r��q��m��l��r��s��o��s��p��o��p��o��p��n��n��q��r��s��n��p��j��j��h��d��j��e��f��i��f��g��g��k��h��h��k��e��e��j��k��m��g��j��j��k��o��n��k��g��g��i��f��j��l��i��g��h��h��f��n��n��m��l��n��r��k��l��m��l��k��m��j��l��n��p��p��m��q��o��m��q��r��r��t��r��u��s��r��w��{����������ä�͠�Ȱ����ݦ�՗�կ�������ٿ�ں�۰�֯�إ�֚�ْ�ړ�֘�ט�֠�ؚ�ב�׎�ڍ�َ�֏�ٍ�ڍ�ؔ�֟�ک�ګ�؞�Ԛ�ؙ�֕�ؔ�ؓ�׏�׎�ؓ�ڔ�ۑ�א�Ԏ�Ҍ�֍�א�֗�ٔ�א�ӑ�Ԓ�֎�׎�Օ�֜�ڕ�ٖ�ח�ם�֥�ښ�̖�ǃ����…�������������ē�ɑ�̘�і�Ӕ�ؕ�ٕ�ٔ�ە�ڗ�ڕ�۔�؝�̞�͢�Ѣ�ϟ�͡�ң�Σ�Ρ�΢�ϣ�Ω�ѥ�Π�Ξ�Ϣ�Ӟ�ϛ�Ϛ�ϛ�͛�͛�И�Ϙ�ќ�М�͠�Н�Ϙ�Δ�͓�ʚ�ˠ�ϥ�Φ�ϩ�Ԫ�Ϋ�Ю�Ы�ϟ�͝�Ν�˟�̙�ʜ�Θ�̑�ɋ�Ƀ�ƃ�ɂ�Ȋ�̍�ϔ�Җ�ҝ�Ѣ�Ҟ�͢�Ӝ�ї�є�ϔ�А�Џ�ύ�Ώ�Б�̓�ȓ�̓�ʏ�ǖ�ʘ�Ņ��n��g��e��g��d��d��b��`��^��^��`��b��`��_�]~�c��a��^��]��\��\��`��b}�d��c��c��c��d��`��_��e��e��f��i��f��a��]��]��b��a��c��e��f��c��]~�a��c�`�f��e��e��f��c��c��f��c��c��c��h��h��e��f��i��j��e��f��f��d��d��c��d��f��k��i��g��g��l��k��h��h��i��f��g��i��h��h��i��g��m��k��g��g��h��h��h��h��j��g��g��f��a��f��c��e��e��d��f��a��a��f��k��g��h��l��k��g��b��e��g��j��c��e��]��`��a��b��_��b��g��f��f��j��o��n��j��l��a��\��`��c��b��^�_��^��a��j��h��h��l��m��k��i��n��k��j��j��f��g��j��i��m��l��l��i��l��m��t��y��v��m��q��p��n��n��l��g��`��_��e��g��f��e��f��c��i��g��c��b��j��h��g��j��f��h��j��h��g��k��h��e��e��i��i��i��j��o��l��i��m��l��l��j��h��m��l��o��m��h��i��i��o��i��d��g��j��i��e��g��h��c��e��e��g��h��c��b��`��_��]��a��\��a��c��c��`��e��h��g��`��b��h��j��h��h��j��j��k��h��c��h��f��g��j��f��g��i��m��m��h��g��h��n��o��p��n��p��m��n��q��v��x��x��r��s��u��s��u��m��r��q��o��o��n��n��m��l��i��m��n��j��j��k��e��f��d��b��e��d��d��b��f��h��g��e��g��g��g��i��h��f��f��e��h��i��k��i��k��k��k��f��l��m��j��i��d��i��i��m��k��n��p��l��l��g��i��m��k��j��n��n��q��n��o��n��m��k��n��n��p��q��n��o��k��m��s��r��p��q��u��v��o��p��q��s��u��t��y���������ȕ�̢�ͬ�ԯ�ե�ѥ�֧�ء�ӗ�ԗ�ח�՝�ڙ�ؚ�ٙ�ِ�׋�؏�ۍ�ڐ�ܕ�ږ�֓�֕�ە�֘�ؔ�ԓ�ӓ�ג�֐�֑�֍�׌�ב�ٍ�؎�ғ�Ӎ�ъ�ӄ�Ӌ�֐�є�ш�̈�Ҍ�ό�΋�ˏ�ϊ�΅�Ʉ��|��|��}������{��|��z��v��}�����������������Ç�ƍ�ʍ�Α�Ӓ�Ԕ�ה�ؔ�آ�ˠ�ʥ�У�΢�Ϣ�Ϣ�ϡ�Π�Σ�Ф�͠�Ο�͛�ʔ�Ė�ʕ�ʙ�Μ�͝�˜�Ȝ�ʘ�̚�ҕ�Α�ʔ�ˈ��~��x��z��|�ɂ�ɓ�ʞ�ʣ�̢�˞�ʒ�Ë��z��u��u��x��x��x��y��u��t��t��p��s��v��w��|�Ȃ�ʄ�͈�̖�̖�ʍ�˄��z��y��{��{��u��t��o��p��i��i��e��h��m��l��g��c��_��]}�`�f��b��`�d��a��`��`��^�a��_~�^�^�`��_��_��`�^��[�a��a��_��]��b��d��c��_��a��b��d��^�[�\}�Y}�V�Z��`��c��`~�c��b��b��a��b��b��\��a��d��d��b��d��c��d��d��c��c��d��e��g��f��f��f��d��e��d��c��d��c��d��d��f��g��j��h��d��e��g��j��f��h��i��k��j��k��j��k��h��g��f��h��h��j��j��h��h��d��e��g��h��i��b��b��g��h��c��b��d��g��`��c��g��h��h��h��g��d��Y~�[��\�^��a��h��j��l��m��k��o��l��c��c��i��k��e��f��p��s��g��f��e��g��f��l��{��v��p��v��w�����������s��p��k��l��r��p��t��s��p��k��k��l��l��n��n��w��w��w��n��k��o��m��a��b��d��e��d��f��e��f��e��d��d��d��c��`��e��j��j��l��l��e��c��e��f��b��c��e��g��f��h��e��e��d��g��h��n��l��k��n��j��l��l��k��k��l��k��i��e��f��g��g��c��f��h��i��i��i��g��e��_��`��c��d��_��_��]��^��c��f��g��e��d��e��g��e��k��k��j��m��k��k��g��d��c��e��f��i��j��g��h��i��i��h��k��m��k��j��j��m��o��p��k��o��o��s��s��t��r��x��v��s��r��n��p��o��n��p��l��l��g��e��g��f��e��c��h��e��]��_��`��`��d��c��a��_��b��d��g��j��j��k��i��i��h��e��i��i��l��k��h��g��i��m��n��k��k��g��i��i��l��g��g��h��f��g��h��j��h��d��f��h��l��l��g��j��i��g��k��l��m��m��m��l��q��q��m��j��i��p��n��j��o��o��p��n��m��j��n��s��o��o��n��n��o��p��p��q��p��x��w����É�Ŕ�˖�ϑ�͔�Ԗ�ד�ז�ܖ�؏�Ր�ؑ�ٓ�ٖ�֐�،�؎�ّ�َ�֋�Պ�҉�ы�Ԋ�Ջ�Պ�Ԋ�ԉ�ԉ�Ԇ�Ӌ�Տ�׋�Ս�Ս�ҍ�Њ�ɀ��|��{��|��x��x��u��u��x��t��q��s��y��{��y��x��~��z��z�������~�����}����}��|��|���������Ć�̋�Ϗ�е�з�Ϲ�ϲ�˯�Ϋ�˧�͢�͟�Ϟ�Ο�͜�˒�ȃ��u��y��{�…�Ɇ�Ɖ�ɇ�ȇ�Ƅ�Ȅ��}��t��q��s��t��t��s��t��w��y��~�ă����x��q��o��o��o��r��v��q��r��r��r��m��o��r��r��q��r��q��r��q��t��s��w��u��r��s��t��l��j��h��g��c��d��d��b��_~�c�_~�`�`�`�^��\��Z~�c��`��`�b~�^~�]�]�\~�]}�^|�]}�^~�]}�`��a��^��^��[��Y�[�[�`��a��a��e��b��a��b��^~�Z~�X}�X}�X}�Z~�Z~�^~�`��^��`��a��`��c~�b��f��c�c��c��a��c��b��_��`��g��e��`��b��e��h��f��h��i��g��h��c��g��j��m��h��e��e��h��i��f��b��e��b��d��j��g��c��b��e��l��j��f��g��g��i��h��i��l��j��j��l��k��i��f��f��c��b��d��g��f��g��f��e��e��`��_��e��i��k��k��e��f��c��g��`��a��m��j��k��m��o��k��j��f��b��c��b��b��l��g��n��{��u��j��h��p��{����{��v��u��u��y����������Ý��������t��u��{��y��p��q��r��o��k��i��h��g��l��o��p��p��s��p��p��i��f��k��k��g��i��e��d��c��d��f��d��a��h��g��e��g��j��e��c��f��e��f��b��c��b��d��f��f��f��j��k��i��f��g��g��i��j��i��f��i��j��d��i��h��g��c��h��i��i��d��g��k��k��j��j��i��k��f��d��b��b��_��^��_��_��a��e��e��i��j��h��g��i��j��f��l��j��h��k��h��c��i��h��j��i��g��g��l��j��i��k��i��m��m��h��j��j��n��n��n��l��l��o��q��t��s��s��r��o��q��o��r��p��l��l��f��i��f��c��b��c��c��e��e��d��a��_��b��c��d��b��e��e��d��g��l��j��g��i��g��h��g��h��i��i��i��j��h��h��k��m��f��i��l��m��l��n��p��s��o��n��n��l��l��k��k��i��g��i��h��i��h��h��f��k��m��n��i��k��q��o��j��i��h��g��h��m��l��l��p��q��o��m��l��n��o��p��n��m��l��o��p��o��p��o��r��o��r��u��s��t��w��r��{����Ɍ�΍�Ӎ�֎�֍�֐�ٕ�ے�ב�א�؍�Ռ�Ԋ�Շ�ы�ӊ�Ҏ�ҍ�Ӈ�҅�ӆ�Ԅ�ц�ч�Ӎ�Ս�ӆ�̂��|��|��z��x��x��x��y��v��v��r��u��s��q��u��t��v��x��s��s��x��x��v��{��y��}��}��z��{�����������~�����{������������������ͻ�ȯ�ȧ�ț�Ɨ�Ó�ċ�Â��~��v��q��m��n��o��r��s��x��u��r��s��r��m��n��n��o��r��y��u��t��y��t��v��y��s��p��p��n��n��n��q��l��n��p��t��p��o��p��l��o��o��j��h��m��l��h��i��i��i��g��h��e��a��^}�_~�a}�d~�b~�]�^��_��]�]}�^��`��a��Z~�[�_�`~�_�^��^��^��\~�a��Z�]�]|�_��[}�[}�`��b��\��\��\�]��\��\}�^~�a��\��[��a��^��a��]}�[|�X}�T{�V~�Z~�]��^��^��_��^�\��Y��^��`��b��_�]��`��d��d��]��^��`��c��f��f��d��d��e��a��e��f��e��d��_��`��b��h��f��d��e��h��e��e��c��c��`��f��e��d��d��f��g��k��j��f��k��i��h��f��i��f��g��g��c��d��a��d��c��b��a��d��h��j��g��h��i��k��b��b��e��d��e��f��e��i��o��m��l��k��l��k��k��g��n��o��i��o��z��f��i��l��b��d��o��������m��k��p��p��u��n��n��o��o��p��x��w��u��w��q��o��p��v��|��y��o��t��v��x��s��l��h��g��i��h��n��o��p��p��s��r��l��g��h��g��e��b��`��e��g��c��f��^��f��a��f��e��g��e��e��a��e��g��d��b��e��e��j��d��e��h��i��e��j��k��h��e��h��h��f��f��f��h��f��e��e��d��d��k��j��d��c��g��e��`��e��f��c��a��^��_��a��\��b��b��a��c��d��d��h��h��i��d��c��`��`��f��h��e��b��l��h��d��e��i��i��k��i��j��g��h��k��j��k��i��g��m��l��i��n��m��o��l��o��n��p��p��r��t��q��l��p��r��s��m��j��k��a��b��`��a��b��c��f��c��d��c��b��c��f��c��d��a��c��b��b��d��e��e��d��c��a��b��d��d��m��f��f��f��f��g��m��m��k��g��i��m��n��l��l��k��i��k��j��k��k��d��e��i��e��c��g��h��g��d��g��l��i��i��o��n��l��h��k��m��l��i��j��s��u��q��o��o��m��p��o��i��k��n��p��k��m��n��o��p��m��i��h��m��i��m��p��m��q��o��o��s��v��z����dž�ʊ�Ў�χ�͊�Ί�ҋ�֌�ֆ�ч�҈�Ӌ�Ջ�Ӈ�т�с�ф�Ӆ�҈�Ѕ����{��u��v��w��u��w��x��u��s��t��v��v��v��x��t��s��t��r��t��v��u��r��u��w��z��s��r��t��s��y��v��{��}��}��|��{��z��w��x��z����ΰ�Χ�Ɩ�����|��u��s��p��p��r��t��v��o��r��u��t��l��m��v��s��o��p��n��g��i��m��q��p��w��v��t��x��v��u��y��v��r��l��k��h��l��l��i��f��i��k��h��i��i��c��e��b��^��Z��a��`�]~�\�[}�_~�^}�[|�`�`~�^|�_~�_~�]|�^}�\}�_��`��^}�`|�^~�_�a��^��^�b~�c�`��]�]�^��_��d��]��\��Y�_�c��a�^��`��b~�b~�b��`��\}�]~�a��e��j��h��b��_�_�[z�^�Y�Z��[��Z~�_��[}�_��a��\~�U}�[��_��^�_��a�e�b��g��d��c��g��e��c��b��_��a��b��b��e��d��c��d��c��d��f��f��f��g��h��e��g��b��c��f��g��d��c��e��a��d��f��g��h��j��i��h��m��h��g��g��h��f��i��k��k��i��i��e��d��f��l��n��m��n��j��d��a��b��c��e��q��v��s��g��k��m��m��k��g��j��m��l��j��o��n��g��h��c��v��z��x�����������������s��g��z��������y��u��v��t��x��q��n��r��x��x��v��x��w��t��r��s��s��r��s��r��t��q��l��j��h��l��n��r��u��h��i��e��j��j��f��i��e��b��_��]~�`��^��`��b��b��e��d��b��e��d��c��g��k��h��d��e��e��g��e��i��i��c��b��c��b��g��h��f��e��e��e��f��e��i��e��i��n��e��f��f��h��j��k��h��e��g��g��d��h��f��m��h��a��`��_��\��b��e��d��f��h��k��c��e��e��d��d��a��b��f��i��f��j��i��k��h��e��f��g��f��g��g��c��f��k��m��k��h��h��n��l��m��l��k��l��o��r��t��q��o��n��m��o��q��q��j��i��e��i��f��d��b��_��b��e��d��f��c��g��e��b��d��b��i��j��j��e��g��g��f��d��b��c��b��f��i��h��h��j��g��f��h��i��j��j��g��j��l��j��l��k��l��j��m��i��h��l��g��g��k��g��m��k��e��d��i��g��g��l��o��j��j��l��j��o��n��o��n��m��m��n��q��k��g��j��n��h��l��o��s��m��m��n��n��p��n��l��k��q��h��h��j��n��p��n��n��t��q��p��n��s��m��t��w��v����̄�Ɉ�ω�ӊ�Ԅ�σ�τ�Ђ�΃�Ј�ш��w��v��u��v��z��v��v��u��r��q��r��t��q��r��r��w��x��u��s��t��s��t��u��x��x��v��w��t��r��t��q��u��r��s��t��t��u��|��|��~��{��|��}������ʁ��y��o��q��r��p��q��s��t��m��n��q��o��o��s��u��o��u��w��r��s��t��r��l��m��i��j��k��r��r��p��s��u��r��q��v��u��r��p��k��n��j��m��f��c��^��]�[��]�X|�Vz�Y{�W|�[|�\x�Zz�[|�\{�Z|�_~�]|�Uy�Vw�b~�c~�`|�Ww�Vz�X~�V|�Y}�]�^��]~�a}�Y}�b��d��`��]��^�_��]�a��g�f}�^~�^��b~�d��d��i��f��b��d��j��e{�f~�f��c~�f��e��c��d��f��f��_�^~�]|�X|�X}�^}�^~�\~�[��V|�X|�_��^��[�\~�a�\��[��^��_��a��d�d��`�e��a��_��b��`��^��]��`��d��c��d��^��]��`��c��e��d��a��f��g��f��`��_��b��c��d��f��g��h��c��f��f��e��h��m��i��f��b��f��n��n��j��n��h��j��l��m��p��o��j��d��a��b��g��f��b��c��g��i��c��`��e��d��h��k��m��i��f��b��c��i��g��c��g��m��k��k��i��p��n��t����������ō��z��s��m��s��x��w��r��n��l��r��o��n��l��k��m��n��l��p��m��m��o��j��l��n��s��s��u��r��l��i��f��i��n��k�����l��d��]��a��j��h��j��e��g��j��i��g��g��e��b��c��c��c��f��h��g��f��d��e��f��e��c��g��i��b��`��e��f��e��h��d��d��g��h��f��e��f��g��h��g��j��j��e��l��h��j��j��j��a��e��i��f��c��c��g��a��`�`��d��e��a��c��g��g��e��h��i��h��g��h��h��i��j��d��f��i��a��e��k��l��l��i��c��i��k��g��d��c��i��l��m��h��o��n��k��l��o��o��n��m��o��p��n��o��p��m��n��p��n��q��q��p��i��j��i��f��b��b��e��g��d��g��e��d��h��i��c��c��e��e��e��h��f��k��i��i��i��h��f��j��d��d��c��i��p��n��j��h��l��l��j��h��i��k��j��j��o��l��k��k��n��h��h��l��f��e��f��g��j��h��f��j��h��i��n��m��h��j��m��l��n��m��k��l��j��k��n��m��l��l��l��g��l��l��m��n��p��m��n��k��p��m��h��j��n��h��h��o��o��j��l��k��p��r��p��n��p��q��w��w��u��u��w��~�ā�ȅ�̄�ф�Љ�ω�̄��y��v��q��m��o��v��v��q��p��q��q��p��r��s��q��v��x��w��u��q��r��t��p��s��w��t��v��q��q��u��t��s��x��x��w��q��v��t��t��r��t��y��|��{��w��u��n��n��k��h��j��n��o��o��p��p��m��m��o��o��x��s��n��k��l��m��o��o��n��k��l��p��n��p��q��u��v��t��r��q��p��p��l��n��j��j��m��d��d�a~�^z�[{�]|�[|�V{�Xz�Zz�[z�\{�]|�^}�`|�_{�[z�Y{�Vz�Y�\~�]|�]}�Zz�\|�Y{�W{�\~�Y{�Zx�_{�b|�`|�^}�_{�`~�a��_��]}�]�_��b��a��c��g��i�h~�d��d�e��`�e��f��g��f��g��j��e��f��i��f��c��]��`��b��[��Z�]}�\}�Z~�X|�Y�X|�\~�]}�Y}�W}�X~�Z~�a��\}�W�Z��^��^��Z~�\��a��b}�`~�a�d��a��\~�a��d��c��`��a��`��c��b��a��[��a��_��[��]��]��a��c��]��_��b��b��a��c��f��c�e��e��i��j��h��h��g��e��e��e��j��m��k��k��f��i��h��n��r��o��i��h��f��h��n��y��o��h��f��g��e��d��_�^~�a��d��g��g��e��b��`��^�c��c��f��e��d��g��i��f��l��w��}��z��~�����u��k��g��j��k��f��m��k��j��l��k��l��m��l��h��i��j��l��j��g��n��j��i��k��m��o��p��s��q��l��o��m��j��k��g��m��k��g��_��`��`��c��d��j��k��f��e��c��d��d��d��b��d��d��c��c��c��e��f��h��b��`��c��c��b��_��`��[��b��i��n��k��h��j��g��f��i��g��i��k��g��d��f��g��i��l��c��a��g��h��e��c��`��_��c��b��d��`��a��]��_��c��e��d��^��c��e��c��f��e��e��d��c��a��b��g��g��k��l��i��h��g��i��j��h��j��i��f��h��j��h��h��n��i��g��d��g��k��j��g��i��i��k��k��k��m��p��l��j��l��l��p��q��k��i��g��b��a��e��c��e��e��a��b��e��^��]��d��`��a��c��b��c��h��h��j��g��i��l��i��f��g��k��l��k��j��j��i��i��k��j��m��m��n��j��k��h��g��k��i��f��e��g��g��g��e��b��c��d��h��j��l��g��f��h��a��c��d��e��f��g��m��l��k��h��h��j��i��f��h��l��e��h��l��l��m��l��m��l��l��o��m��i��m��m��g��i��j��m��m��i��m��q��o��p��o��p��m��n��r��p��s��t��u��p��t����Ń��~��w��{��s��j��r��t��o��n��v��q��o��n��o��n��p��t��r��n��q��q��r��s��t��r��o��s��w��v��s��r��s��t��t��u��v��t��p��r��p��s��t��s��v��q��o��r��t��o��q��n��l��m��m��o��q��q��m��n��n��o��n��s��w��v��n��n��s��p��n��n��n��r��r��o��h��p��s��r��n��n��r��j��h��i~�g~�a~�]��\�_��X}�Y{�Zy�Sy�V{�Wy�Xz�Uz�Tx�Sw�Uy�V|�Y�Z|�Zy�^}�[}�S{�Uz�W{�Y{�W|�W{�T|�U{�Z|�[|�_��]~�X}�]}�`|�a}�c�`|�a}�a}�c�`�^~�a��`�`��^~�a�d~�e��f��h�f��e��d��c�a��`��f��i��c��c��g��c��_�W|�]~�^|�Y}�X~�Xy�Uy�W}�Y~�[|�\|�\��[��\��]~�_�`��b��\|�X|�^�\��^��_��[��^��`��]��^~�e��`~�`��_�e��g~�^}�a��f��f��b��b��a��_��b��`��W��_��c��b��c��`��e��f��_�^��]��`��d��b��a��c��c��c��g��h��j��k��q��k��d��f��f��d��a�i��h��k��j��m��g��k��u�������f��h��f��f��j��c}�d~�d��h��f��g��f��f��e�g��a�_��_��a��c��g��g��e��`��c��e��k��o��k��l��i��m����Œ��k��h��j��i��h��j��i��l��i��h��d��g��f��j��l��m��n��o��n��m��l��k��p��s��n��o��o��q��o��g��m��k��k��f��g��i��d��_��b��e��`��]��a��`��c��b��d��g��d��f��e��g��e��g��c��e��c��f��e��a��`��b��h��i��h��f��e��g��j��h��j��j��i��g��j��f��c��c��g��g��h��h��e��f��h��g��d��`��_��`��_��^��^��`��c��a�f��g��f��e��d��d��d��d��j��g��f��c��d��e��i��f��f��g��k��k��k��g��i��h��i��g��k��i��h��e��f��i��l��l��k��h��j��l��j��j��h��l��j��n��r��t��p��o��p��p��q��s��j��l��f��b��c��i��b��f��j��d��e��f��a��c��e��c��c��f��e��g��i��g��g��g��f��g��f��g��i��j��f��h��f��i��h��e��i��k��m��j��l��i��k��h��h��k��k��g��c��f��i��l��i��i��e��c��f��d��c��g��e��f��d��k��i��d��g��i��g��g��h��l��n��n��q��j��k��i��i��h��g��h��k��l��m��h��h��l��n��k��g��g��f��h��m��l��r��i��l��r��s��q��p��p��o��r��q��q��p��o��q��s��v��v��t��q��r��u��t��s��x��u��t��o��u��s��q��q��u��{��y��w��v��l��o��t��y�����t��s��v��w��p��m��n��p��p��w��u��u��w��p��s��u��u��u��v��r��p��q��t��t��u��o��h��g��m��m��p��r��n��l��m��l��o��t��x��z��x��s��p��o��o��r��n��q��q��p��q��m��k��j��p��p��h��f��g�f~�b}�a|�g~�c{�\|�\|�Xy�Ww�\x�\{�Uz�Vz�Xx�Uy�Ox�Ty�Wy�W|�Z|�Zz�[}�Z{�[z�Uz�U{�Wx�\z�Vv�Yz�]�Sy�U{�\~�b�k��o��c��]{�[z�a~�d�^�b~�d��c��c��b}�g�i~�h}�h��j��h��g��h��h��d��d��d��`|�b|�h}�k��m��h��g�d��b��Z��Y}�\z�\}�\��V~�Y}�\~�X�[}�_�b��`�[}�_�`~�]~�^�\��Z{�[|�a}�]�[�\��[��a��_��[�b��^�^��]��a��`�c��_��[��\��b��d��d��a��a��c�d��`��\��b��`�c��f~�c��[��^��c�]�b��f��f��a��b��d��g��d��c��e��g��j��c��h��j��h��f��c��b��d��f��g��l��l��k��j��o��r��k��h��g��i��k��e��e�f��d��d��d��h��i��j��j��i��i��i��c��d��e��f��g��d��b��f��i��m��k��h��o��|����Ú�����o��k��n��o��p��o��p��s��l��f��k��o��p��q��g��n��n��l��o��s��l��l��p��p��n��p��s��q��n��l��n��o��l��f��c��a�f��j��e��e��b��c��d��e��e��h��i��j��e��f��f��f��e��h��g��e��a��`��_��^��^��a��d��h��c��`��f��g��j��i��d��c��h��h��b��d��g��f��j��m��h��f��c��b��d��c��_��_��^��c��a��Z}�c��f��h��l��c��e��i��h��g��h��h��j��k��i��k��m��i��h��k��i��d��f��e��g��f��g��j��j��l��m��m��l��i��j��i��i��k��k��f��i��h��j��h��k��k��j��j��k��k��p��m��l��l��o��r��i��e��e��`��d��b��g��h��f��d��f��h��d��_��f��d��c��e��e��h��e��f��f��c��e��g��i��i��h��f��f��c��e��h��h��h��q��m��j��h��e��g��f��g��j��k��l��m��d��b��j��f��j��h��f��e��f��g��e��c��h��n��n��p��j��f��i��i��j��i��o��n��l��l��j��k��i��o��l��h��k��n��p��k��j��j��j��j��l��o��j��h��j��j��k��m��w��q��p��r��|��w��s��n��n��m��l��n��m��n��r��n��n��s��v��w��p��o��t��v��z��x��z��v��u��u��u��w��y��z��w��u��r��q��r��u��������t��q��q��t��s��o��l��n��r��o��r��s��q��u��x��w��r��m��l��r��t��r��o��k��p��m��h��g��n��o��s��q��o��m��g��h��k��r��w��|��|��x��s��o��k��g��e��d��i��i��m��l��j�f|�g~�g�_~�_~�]z�]z�Yx�Zz�Y{�Wy�Qv�]|�[v�[u�Wx�[|�Z{�Zy�[w�Xw�Uw�Wy�Tx�Xz�]|�Zv�Z|�Zy�`{�Zy�_{�Z|�Wx�Vx�[|�c�Zz�Uy�Y}�f��m��j��j��d�c~�a}�a}�_{�b}�c~�c~�d�d�d�d�l��j��i��l��j��e��h�i�o��h��`�b��a��e��h��d��d��g��e��a��c�d�c�d~�d��`~�`��_�d~�k��h��d��d��]�W}�`��`��]|�_��Z��[��^��]�]��a��b�_}�\}�c��_��W}�X~�`��_��_��b��`�`��b��a��`��a��c��a��]}�`��`��a��\|�`��y����h��`��]~�[��\��_��`��`��d��j��v��r��h��h��f��e��^�_��f��j��m��d��c��a��`��`�i��l��m��j��k��n��i��i��j��k��g��h��f��g��c��`��c��c��c��b��b��c��c��f��d��e��h��h��h��c�f��a�g��j��j��l��x�����x��w��u��v��j��m��j��h��h��l��v����z��q��q��p��p��m��p��h��h��h��s��t��i��n��k��k��n��p��s��o��o��n��n��o��l��b��b��`��a��`��b��b��d��b��b��]��a��h��h��f��c��i��h��d��e��f��c��b��b��`��b��a��`��c��f��c��^��b��c��e��j��f��g��i��k��i��e��g��e��e��e��d��b��f��d�d�a�`��`��[�\��\��c��e��d��d��_��`��b��c��d��g��i��k��i��e��a��c��j��k��h��a��e��j��f��d��`��`��d��g��h��l��k��n��o��p��l��g��h��j��h��i��j��j��l��m��n��m��h��g��e��l��i��l��k��j��m��m��`��^��^��`��_��Z��^��e��c��d��c��d��e��a��d��d��f��e��h��g��f��e��e��c��b��e��l��i��d��e��j��h��i��g��n��r��m��j��k��l��f��k��m��g��k��k��l��k��g��l��i��h��h��h��g��h��f��k��h��g��g��n��l��g��i��k��k��k��k��m��n��l��l��k��q��n��k��j��g��d��d��e��l��m��m��k��k��k��l��o��r��v��q��f��h��i��i��l��l��k��o��r��s��o��p��h��n��l��o��n��n��l��p��p��q��s��v��p��s��t��w��w��v��q��t��s��y��q��m��q��t��x��v��p��o��l��q��o��m��o��o��p��x��q��r��m��m|�bv�Ul�]q�`q�ev�r��q��p��m��Sc|as�j{�Nc�F[vMayEWmDTkf��k��o��m��o��q��o��k��j��k��k��n��s��x��v��t��n��k��c��\{�b~�cy�f~�f}�j��f|�c{�bx�ay�bz�bz�`{�[z�Zx�Xz�Vx�Wx�Yx�Tx�Uw�Yx�]w�Xv�Zv�Yy�Wy�Wy�Wx�Xy�Y{�Tx�Xz�W|�V}�P{�Tz�\|�\{�`{�`{�Xz�U|�[}�`��e��b}�^z�c~�l��m��k��c~�]|�c~�h~�d|�h��f��g��e��b}�c�e��i�h��f��d��g��h��n��z��z��p��j��b��b��]}�`��_�]}�`��a��^}�^|�\|�^��e��c��e��e��f��g��h��g��b��`��^��c��e��e��e��f��h��c~�^~�^��`��_��b��`��^��b��`��]�^��\��\��`~�d��^��\��a��c��d��^��f��`��[�]��b��b��c�b��i��s��p��d��`�a��c��i��g��l��m��h��g��d��`��^��b��a��c��f��b��h��g��i��e��_�_�c�m��l��j��g�k��l��c~�g��g��e��f��e��f��b��_��c��e��c��c��c��a��_��`��c��e��j��e��h��f��h��e��c��d��g��m��k��s��t��l��m��n��o��k��j��m��i��k��s��v��}��������r��k��������{��r��n��i��k��o��p��k��n��p��o��o��q��r��l��k��k��l��m��l��i��c��`��_��^��_��a��a��a��\��`��h��f��f��`��g��j��c��g��j��j��i��g��g��d��c��b��b��c��f��e��c��g��f��c��b��d��g��e��g��h��h��k��g��h��j��e��^��\��]��Z}�Y��Y��Z��^��b��d��d��d��e��d��f��h��j��g��k��j��j��j��k��l��l��l��m��k��i��d��d��e��f��g��g��h��e��d��i��p��k��j��l��m��h��e��i��k��k��i��k��k��j��i��j��k��j��g��j��m��o��o��n��p��m��h��d��d��c��a��[��^��c��d��d��g��g��h��c��e��a��d��d��i��j��g��f��c��f��h��g��h��f��g��h��g��a��e��j��h��h��c��g��n��h��g��m��l��h��h��g��i��i��f��j��j��i��j��k��j��i��j��i��k��e��f��j��j��j��g��j��e��f��f��g��f��h��k��l��k��l��h��j��j��h��k��k��l��j��e��d��l��n��r��p��p��o��l��i��k��j��f��j��p��n��s��r��o��o��k��j��k��j��q��r��q��n��o��o��k��p��s��t��s��s��p��t��u��v��r��w��x��r��q��r��~�����x��t��w��r��s��s��q��r��m��m��o��u��dw�>No:Jd=La:I\:I\@M`CPaGWgJ]nBTh7I_=PaHZfDTd;Ic4B\CPaEQa7HZi��m��n��o��p��q��j��h��i��m��n��n��q��t��p��l��f��c~�c~�c~�bz�bx�`x�_z�bz�e|�aw�\w�]x�_|�\{�Yz�^}�Vw�Zz�Vw�Ty�Xy�Vx�Rw�Vx�Vw�Uw�\{�Ut�Zy�Wy�Sw�Uw�Sw�Pv�Tx�Uz�V|�Uy�Uy�Uw�Z{�]y�Uz�Wy�Z|�Yy�^~�^�Z{�Xz�[}�a��i��c~�a}�^}�d��h��g~�h��g��e��e��a��a}�b�c��^}�`|�e��e��\}�e��g��f��i��g��e��e��b��_�\~�[|�Y{�\~�]|�^z�^y�_}�e��c��c�g�g��e��k��h��c��a��a��b��`�b��d��g��e��`��_��d��f��b~�e��a��`��e��b��_��`��a��_��^��`��`��`��_~�`��_��c��f��a��`��^��_��_�c��`��_�d��i��g��k��i�a}�_��b��p��|��p��g��q��v��~��j��b��d��i��h��h��b��b��_}�Yz�\}�^|�i��g��j��e��g��h��j��f��b��a��c��c��e��e��i��i��i��c�e�g��_��[��a��d��c��c��b��c��l��q��m��m��l��l��k��k��q��h��g��i��h��j��h��k��x��������v��n��m��o��|��x��p����������ȟ�������u��m��p��r��o��m��j��m��r��o��p��s��q��p��o��m��k��h��f��b��e��f��c��a�d��b��a�b��g��e��e��b��f��i��k��i��g��j��g��i��e��e��d��e��b��i��h��m��i��k��i��i��k��b��^��a��f��h��h��i��e��c��^��Z~�]��\��[��Y~�[��Z��[��a��b��a��e��f��g��i��k��l��k��j��g��j��k��l��l��j��j��g��g��h��i��m��o��k��o��q��m��g��c��g��g��g��i��k��l��h��j��i��g��f��n��l��m�����n��h��j��k��h��j��j��k��l��o��p��n��h��i��e��e��i��h��h��h��h��b��b��b��_��_��a��a��f��g��i��g��j��i��e��k��j��c��b��c��e��f��e��c��i��k��j��`��d��e��j��l��h��e��d��g��j��i��l��g��h��i��i��i��l��j��h��g��h��j��g��_��h��i��h��u��r��h��d��c��j��h��j��l��l��g��g��m��j��j��l��p��i��e��g��g��j��d��d��e��h��l��p��n��i��h��m��i��f��i��j��i��o��q��o��n��n��i��k��j��j��f��e��i��i��k��j��i��i��n��p��s��z��t��t��p��n��q��p��o��p��t��t��u��t��r��w��y��y��s��l��p��p��i�DV~BSo-AZ+;U):T):T.\(7V):V)8U.?[.>X2@Z8G^6EX8J`8Jb7H\1CY-AZ2Fa>J`GQ]JQd4@Vf��i~�k|�k|�l��j|�i|�h�b}�a|�b}�c|�a�e}�bx�by�[z�\{�[x�\y�a|�`{�[z�Yz�Zz�Tt�Sr�Uy�Ww�Yx�Yx�Vw�Yx�Vx�Xx�Yx�Vz�Tx�W|�Ww�Rx�Sy�Xw�Uv�Vu�Yx�Xx�Wy�Z}�[z�]y�Yy�V{�Wy�Ww�Wy�V|�Wy�]|�\}�X}�U{�Sy�Uy�Pv�Tz�W{�^y�`z�a|�]|�]|�a|�f|�d��_~�a��_~�_~�b~�^z�^z�_�Xz�\|�\{�a~�a}�`�d�d��`�f��d�b��a��g��h��b}�`|�^}�]y�^}�b~�^}�^~�a��d�c��e��e}�i��i��d�e��e��e��m��e��_~�d�i��f��a��a}�c�a��d�d��`�e��g��g�f��c�b~�^~�\~�_��a�]��d��t��x��i��c~�d��d��c��a��`�c��_�\~�c��`��d��k��m��g��c��f��o��{��v��h��g�i��k��m��w��x��k��h��k��l��e��e��e��f��d��e��k��h��n��l��m�j��h��f��f��f��_��^��_}�e��f��e�i��f��b��\~�\��[~�c��k��o��j��l����������¤�ǚ����؈��p��~��������m��r��l��j��p��l�����z��������s��m��i��k��s����������À����������������΅�����v��r��o��k��k��l��n��o��s��o��q��n��k��e��f��m��i��e��d��h��d�b}�_��e��i��k��h��g��k��n��i��e��i��o��p��n��k��d��h��k��q��t��s��i��f��e��h��l��h��g��j��h��c��j��l��l��j��g��`��]~�[��Z�_��g��i��a��d��e��c��^��c��g��f��j��h��f��i��k��j��g��k��j��b��a��c��d��h��h��f��l��r��p��o��n��k��g��c��e��h��d��f��j��e��h��l��o��v��x��p��n��l��j��i��m��m��r��s��n��o��u��m��o��m��k��j��h��g��h��k��j��g��d��^��`��d��e��h��j��k��e��e��g��f��j��j��f��h��h��j��k��j��e��e��g��k��i��i��r��q��o��v��r��k��f��f��g��d��e��h��g��e��j��k��n��g��g��i��k��n��l��l��k��c��i��m��j��j��i��c��d��g��c��i��j��k��i��g��m��g��e��i��h��j��j��o��n��k��k��i��j��l��p��k��j��k��m��k��i��i��e��f��h��j��m��s��n��l��l��o��j��s��p��o��m��l��l��p��t��n��p��v��{��x��w��x��v��u��s��r��u��z��x��p��n��s��p��q��n��e{�EW{3Gb[8DZ7H\Q2DX;Ma7J[0BX-=W2CW5HY],A\+V-=V,;X0@Z2@[*8R+;T/?X3A[+=U.@X8GZ@GZ:BW3BW4FZ0?T+9Sg��f�e|�e{�m��ay�Zv�^z�`x�aw�cz�^y�\t�[x�]z�\y�Xx�Zv�Vu�Tt�Vv�Wv�Ty�Sx�Sy�V{�Sx�Uw�Xu�[v�[w�\w�Zv�St�Mu�Qw�Uw�Tv�Rv�Tv�Xz�Wx�Xy�Vy�Uz�Sz�Ty�V{�Yx�[z�Xy�X{�Uz�Ty�Ox�Nv�Pu�Xy�Zy�Yy�[|�`{�dz�bx�e}�e}�c~�^y�^z�_{�c~�a|�\|�[}�[}�b�c��d��d�g�j��k��e}�a|�\{�[y�a}�`�_~�\|�Xy�Wz�^~�c��^�]�\~�Y{�U{�U{�]�^~�a}�f��_~�_��^~�f~�e��`�`�e��f~�a��e��h��e��e��e��d��`�`�e��e��`��^~�X|�_}�f~�g��d��b��_~�`�a}�g��i��l��h��a}�]~�`��`�b�d��a��c��t�����{�����u��a��g��m��c~�_�`��`~�c�^��`��_~�a�]|�`~�`~�a��b~�a��c��e��e��`~�_��^��^��`��b��^�a��f��h��f��i��j��m��i��k��p��f��a��^��[�[�_��a��a��c��j��s��p�����|��b��c��m��h��p��������{��������t��m��t��������v����������������ϸ���y��m��p��x�����~��}����Ó�����������j��k��n��z��n��j��������������x�����������o��n��j��n��n��l��l��l��q��m��i��j��f��f��h��c��b��e��f��h��c��g��j��l��m��n��q��o��h��f��g��g��f��b��h��p��i��e��c��g��g��h��i��l��m��l��j��d��b��Z�X}�\��]~�a��b��a��f��e��_��`��c��c��f��c��i��m��p��k��k��k��k��h��k��h��f��g��j��n��h��g��j��p��k��f��f��k��k��h��e��b��b��f��d��b��f��m��i��g��e��i��k��l��l��m��q��n��k��l��l��k��l��p��n��n��p��r��o��n��l��e��a��g��f��f��c��b��b��c��b��c��`��a��c��_��a��d��e��g��i��k��j��h��f��g��c��f��k��n��n��p��p��o��q��t��q��s��p��s��o��j��k��m��i��l��l��l��k��l��k��g��h��g��j��j��f��g��g��j��e��`��g��i��h��i��l��i��h��m��n��k��i��k��l��h��j��j��i��e��j��m��k��k��k��l��o��j��k��m��j��f��j��l��m��m��j��j��j��o��m��p��n��o��q��n��o��r��q��p��r��r��o��i��Sj�4Hm2Gd3D`0A]6F_?OiJ\ts��o��q��p��n��u��p��gv�IVx?Mh4D[/AY%8V&9W&5R+6T'5R';V.>X/@T0?V1=S7DW/>S*9P,:T.=T0I]3BW0?TX1;T`|�a}�Yv�Wv�]z�cx�cy�d|�]{�Xw�Wv�Yx�Vu�Uw�Rv�Xt�Xw�Tv�Pu�Qv�Tv�Su�Xv�\v�Vr�Xy�Qw�Wy�Tv�Zy�_z�[v�[x�[x�Xy�Uw�Sx�Ot�Rx�Qs�Tu�Yx�Vv�Tv�Wv�Yx�Vx�Wy�]y�^z�`{�cy�az�a}�_|�Wx�Uy�Vv�]x�]|�W|�Yy�\}�_{�a{�^z�e}�cy�_z�`�[z�^�c�f~�e|�^}�_~�_~�]y�_{�e��a|�]}�[|�Xz�[z�]�`�^�]�Yw�[}�[��[��\~�\~�^��\}�Xx�[{�]}�a��^~�_{�]�Y~�\|�_z�b�[|�Y}�d��b~�d�c�^}�_~�c~�c�`~�^}�_~�]�`�b��d��_~�b��c��d��e��c��c�c~�c�`��f��k��h��f��\~�]��_��a��`��f��`~�a��a��c��h��j��g��`~�a��d|�_�Z~�\}�]�\��]��_��`|�[y�]~�b��a�^}�b��a��c��c��b~�d�`|�c��a��c��a��g��l��l��i�i��g��c��j��j��i~�i��a��^��_��a��d��h��e��`�g��t��o��o��r��c�e��m��r��w�������������Š��o��o�����������y�������������{�����z��o��n��l��l�����k��p��t��������v��f��c��f��b��e��a�b��r��o��}����~�����Æ�����p��m��w��t��m��g��h��l��u��r��v��f��d��h��d��d��b��e��h��h��g��h��l��l��l��i��f��d��g��g��j��g��g��m��p��p��j��h��l��k��j��i��l��j��e��a��[��X��Z��[��_�`��]~�d��c��e��e��e��f��`��i��e��d��h��j��l��k��i��i��h��h��k��k��f��f��g��g��d��e��h��k��k��h��n��m��h��b��e��a��a��b��d��c��a��g��h��f��g��m��l��m��m��l��s��o��p��f��j��n��i��m��n��o��l��m��q��p��l��f��g��e��i��f��e��d��]��c��a��b��c��e��h��b��g��k��g��a��f��g��f��e��^��`��e��e��f��d��f��d��j��o��r��v��x��y��u��l��l��g��g��l��l��k��n��k��h��o��q��s��k��h��h��d��k��j��m��q��k��h��i��e��f��m��p��j��g��j��g��h��e��j��n��n��m��h��k��h��g��g��h��g��i��m��p��h��o��i��k��h��h��g��i��i��j��n��n��q��n��s��v��t��m��o��p��s��u��u��o��t��o}�4Go1De2Ca;Ga>N^?TeM\o^p�l{�p��n��r��FYw=Sh@Wi6Je4D^.Q3BW'9Q,B[2W*;U(9S*7W(5U%4Q%4U)8W(6S%3P'4T)8U,;Z'6S$3P#4P%6T"5S$3P*5Q(6S%4Q(6S%4Q$5Q(6S+6R%5N&4O"3O#4P%5N,I]Ru�Wx�Yv�]x�\y�c{�i��e|�Zy�Wx�Uu�Ww�Wv�\y�[x�Yx�[w�g�i��b{�[x�^{�f��l��q��u��s��m��g{�b{�by�dy�`}�`}�[z�Zy�^z�[w�Yx�Uu�Tx�Xx�Yz�Ty�Uw�Xy�Sy�Sy�Vx�`x�e~�^{�`{�^z�Z{�\}�[z�[{�V{�Z{�]y�]y�\{�^}�[|�^~�\{�[|�Y{�Y{�Y~�]~�a~�d�_~�d|�e}�a~�]~�]~�[|�\}�]}�Y{�X}�[}�]~�Zz�]}�_~�f��q��i��k��f~�\}�V|�Zz�]|�c~�p��u��l��`|�Z|�]{�g�q��g�n��������m��m��������y��k��������i��g��o��n��j��i�c��k��|��x��n��j��j��k��e��j��n��w�����y��q��t�������ʍ�����v��q��w��o��b~�c��b��\��c��i��q��t��p��l��g��f��]}�_�`��a��v�����|��|��r��e��e��g��h��h��e��i��h��g��h��h��j��g��b��a��d��m��}��x��b��Z��]��]~�c�����������������u��r��w�����h��i��p��m��e��h��g��h��d�m��k��d��b��`�i��t��x��h��f��k��m��n��i��p��s��m��c��]��`��a��_�[��]��b��e��a�b��e��q��m��j��a|�\|�[�]��`��b��c�b��f��g�k��d��f��h��o��k��k��r��r��w��t��s��t��o��l��m��g��d��`��b��c��f��j��j��j��h��h��k��g��k��s��v��m��h��i��g��f��j��l��i��h��a��Z~�X}�Z�Y~�W|�Z��[��^��Y�]��b��d��f��`��a��a��b��h��c��e��e��`��d��b��e��i��e��e��`��f��e��i��j��k��m��m��h��d��b��f��e��f��g��g��f��h��l��g��f��h��g��c��_~�_�b��h��h��h��o��m��g��b��i��k��l��m��l��k��k��i��l��l��n��o��m��j��i��i��e��c��d��i��h��f��i��d��e��g��i��i��d��f��h��h��k��j��j��l��k��l��g��e��f��h��f��c��f��j��h��m��k��j��k��m��s��y��y��z��s��r��k��l��m��m��n��n��j��e��g��h��h��g��e��g��h��j��i��e��e��j��h��k��j��k��m��p��n��j��n��l��j��h��k��n��o��j��j��j��o��j��k��o��n��m��o��o��n��l��r��o��i��e��h��j��n��u��|��w��q��m��o��s��v��x��w��s��q��o��n��o��m|�S_�@Jm;Ga3A\,;Z(7V(9U$8S$8Q(9U(5U'4T&5R%6R#7R%6R'5R&4Q%9T(6Q(6Q&4Q$3R#4P$5Q'7Q'5P(3O%3P%3P&4N&4O$3P$5O$2L$2L&5L#3M$5S):V3BW=I_;E^8G\[$8S'7X'6W'8R%9R$5S&5T)7T)4R'7Q&7Q'8V&7U'6S'5R'6S%4S(5U*5U(5U#3M%7M%6R'7Q$2O&5R$3R'5R'5R%4Q'2P(3Q&1M(4L$5O$5Q"3M'9O1=U8DZ>J`?L_;FZ7BXg}�i|�]z�a~�az�ax�b{�_z�_{�`|�d{�^y�Yx�Wv�Wv�Yx�Zw�Yx�Wx�^{�c{�h{�h�d}�e~�g��ay�[w�Sx�Tv�Yx�Zv�Xw�\{�\x�^z�Xw�Yz�\}�Yz�\|�\|�Xy�Q|�Ov�Ty�Uw�Tv�Vy�[|�\{�Yz�Xz�]~�b�c~�a~�^}�a��^~�`��_��^~�Xx�\x�^{�Z|�_~�c~�]|�_�Yz�Vy�X{�[|�b~�^}�_~�[x�]y�[z�[z�\{�Yx�`|�^z�]y�`|�j��n��g��f~�p��r��[w�]x�e��e��\}�[}�b��k��k��c�d��e��d��g��n��l��h��g��d��e��j��r�����������������m��a��d��g��d�i��g��b��b��f��k��j��k��k��d��\~�[}�a��l��m��i��n��n��l��m��i��g��n��l��j��j��j��m��j��n��t��u��l��_{�X|�Uy�Uz�Y�Y~�_�d��g�`��]��c��f��`�`��d��b~�c��d��f��d��i��f}�t��x��k��i��i��i��l��j��a��`�\~�X~�[��`��i��h��b�`��g��e��`��g��e��e��j��t��{��{��e��g��m��r��p��i��h��f��h��m��d��c��a��f��i��h��j��m��i��i��h��g��f��i��i��o��q��h��e��`�]}�^~�]}�]}�e��b~�^~�[|�Y}�]~�V~�Z��[��`��`��^�a��e��a��b��d��d��d��d�r��m��i��e��d��p��u��t��u��m��p��t��n��j��k��o��j��f��j��h��k��l��i��k��i��h��g��h��Y~�X}�Z��Y~�\}�]~�W�]�]~�[�\}�]|�_��\��`��b��c��h��h��j��i��f��e��f��d��b��c��d��a��b��^��c��d��j��`��Z��[��`��c��f��e��d��f��e��e��e��j��g��l��n��n��m��m��m��m��x��u��q��m��i��i��n��p��p��m��p�����z��g��g��j��f��g��k��m��l��k��i��l��i��l��m��h��j��n��m��l��k��o��k��j��k��h��i��i��m��l��k��l��j��g��h��j��d��f��h��j��h��f��f��e��i��i��f��k��p��m��l��q��s��r��t��z��x��n��r��s��m��n��q��q��r��k��l��n��n��l��m��j��i��i��m��m��l��j��j��h��j��k��k��q��r��p��r��p��q��j��n��n��o��l��i��i��n��l��o��j��m��h��g}�l|�ny�p�w��s��l��o��p|�p~�t��s{�s{�p�l{�jz�bu�i|�q��o�jy�mx�jq�go�NUqIQhY)4P*6P)7T%4Q*9P+6R'5R'8T#6V#3T&6W'6U(4N)5O(6S&5T!5P!5P%6T&7U$8Q$5S&6O)8O0T>CW6AU2>T0:S{��z��f|�|��o��`w�cz�bw�g}�`w�_|�^z�\x�Yv�Zw�]z�Zu�Zv�Wv�_z�d�`{�b~�e��e~�e~�c{�^{�\{�[{�Xx�Zz�]}�\|�\{�[z�Z{�Yz�]z�Zy�Yz�Z{�Wy�Su�Su�Vw�Wv�Uv�Xw�\{�Y{�\�Z{�]|�`{�`{�_|�^{�b~�a~�a|�b}�b~�\{�]|�f��e��o��o��b��d��[z�`��_~�^y�`{�Y{�Wy�Yz�Xw�a~�[z�[}�[}�Yy�Y{�\}�b~�u�����q��^�^��_��Y~�\~�[}�^z�d�`}�]~�]~�]~�`|�o��u��f��g��������g��k��p��k��k��g��n��t��~��z��s��h��`��f��g�g~�d�a|�b~�e��f��i��a��a��a��b��d�f|�e��b��d��d��f��f��i��e��d��d��c��j��o��p��q��o��l��m��u��i��b��Z�^~�_}�\z�]}�`�^}�`��\��_��b��Z��a��`�d��c�c��b��b��d�i�n��o��|��y��k��g��h��g��h��d��`��`��^}�`��_��_��b��`��_��e��d��^~�a}�a{�e}�g�i��g��l��h��b��h��i��l��f��e��i��k��i��k��e��_��`��^~�_��[}�c��k��k��e��i��e��a}�e��c�e�m��f��f��m��e��^��T|�X~�[��W}�Z|�V{�T|�_��^��\~�[��\��^��`��b��f��`��a��`�`��[}�a��b��b��c��d��e��n��n��k��b��h��n��g��j��j��f��g��m��p��q��q��o��k��m��h��e��c��c��_��Z�[|�Y}�X}�X~�[�Z�Y�[�`��b��`��d��c��e��c��c��g��b��d��e��e��f��g��e��f��f��g��e��h��i��f��c��f��e��^��c��d��e��f��d��b��c��e��k��h��i��i��r��o��p��l��n��l��o��k��i��l��m��i��e��e��e��e��h��l��o��m��q��o��m��l��j��j��n��m��o��p��o��n��p��q��q��g��f��g��a��d��g��l��g��a��d��h��m��o��m��o��m��l��n��o��k��g��i��l��i��f��h��k��j��j��i��g��c��i��g��a��c��e��c��b��n��s��r��t��s��t��n��h��k��o��s��s��n��m��j��k��l��n��h��j��k��k��c��d��f��j��h��f��f��h��j��m��o��l��k��l��k��l��k��h��i��k��k��h��g�e{�ex�hw�q|�ry�t|�dn�lx�fr�fp�io�ou�nu�nt�lr�`k�R^tUaw\g{fm}op�kn�hk~_e}9@\@JcW.:T6=W0;Q�����r�����t��k}�o}�~�����n{�\x�\y�`x�az�]y�]x�]u�\y�`}�g��`{�bz�^y�c|�Zw�Wx�Yz�Yx�Vx�Xw�^{�d{�g~�cz�`x�]y�a|�]x�Vu�Wx�Z}�[x�Zz�Uz�Wz�Yy�Vy�Xx�Zy�]z�`|�`{�Z�V��`}�d{�o��q��s��q��z��d|�_��]|�b}�f��g��j��p��i��l��h��g��e��[|�Xz�Ty�[w�o��~��m��]z�Z|�\{�a|�e��c�d|�d|�f|�c}�^}�b��a��\�^~�[y�h����j��^�c�`�g~�������j��n��y��t��`��m�����}�����~��n��r��p��i��i��h��g��e��g��d��b��g�r�������g�d�e��_��d��b�`�g��w�����z��n��k��i��f��j��n��j��g��i��m��o��m��q��i��r��b}�]}�b~�g~�c�^��[��]~�^}�^��`��^}�a}�i�d��^}�f��i��k��h��b��h��p��t��v��k��l��m��p��r��p��f��j��l��i��e��`�a��c��e��b~�c��c{�c�e��^��]��_��d��d��g��f��g�d~�f~�n��y��k��j��k��k��l��d}�h��l��k�g��c��`��b~�l��e��e��i��h��i��m��c~�g�g��c��^��b~�c�j��d��b��_�[�^��a}�h��h}�j��g}�g��e��a��c��d��c��a��c��c��a��c��g��e��a��c��_��d��i��l��l��o��k��i��k��l��k��j��c��h��j��l��d��l��p��l��o��q��j��`��^�Y~�Z~�\�X��[��]~�]��_��a��d��\��e��l��f��h��d��d��b��a��c��f��f��d��e��j��m��j��h��i��h��e��d��i��l��l��j��i��i��h��g��l��m��e��l��l��i��k��n��m��o��r��r��r��p��o��j��m��l��k��g��o��p��n��m��j��g��i��k��k��n��r��r��j��d��g��m��s��j��t��s��m��q��r��k��e��h��c�h��f��b��i��i��l��k��i��m��t��q��q��u��t��s��o��k��g��e��l��h��f��i��i��l��n��o��i��o��h��g��j��l��o��m��i��j��i��k��n��q��q��p��p��o��s��q��j��o��m��k��m��m��g��k��k��g��e��e��d��h��k��n��k��j��k��v��q��q��l��o��p��q��j��d��h��l��g��f��d{�cv�gw�pz�rx�ns�jo�hj]ezW_vP[qN[ndjzadwEOh7E`>J`KXkJVl?L_NWfV]mX^nTYo?C^FJeEKc>D\?G^?G\CKXb`e������oep<>W-8T,:U*V/;S+9S,7S*9V&:S&8P'5O*5Q'5R$4N%5N&4N&4O+;U*DZ8CW5AW;FZo~�n��r��{��p��k�r�������m�e{�c|�cz�e{�k�}��g{�\x�_{�i��b�]z�\|�Xy�[w�]y�[}�`{�[{�`}�_w�i~�s��p��[v�Ww�]|�by�r��ax�\y�[x�Yy�Wx�St�Xt�Rw�Ot�Vw�Xy�[}�]~�Z{�[|�\|�f}�}�����~��v�����m�h��u��h�g|�i��b}�`}�f��i��t��m��f��b��e��_~�bz�j��v��d��`}�`}�^y�d|�d|�d�d�h}�u��g��a��a~�a~�^��[��Z|�b�j��[z�Y~�^}�_{�d��f��d��]~�f��i��f��`��e��q��m��m��t��q��r��k��i��k��m��l��e��a��c��d��i��n�������p��e��_�^�\|�]�b��k��r�����x��o��h��d��c��f��k��n��o��j��j��s��o��p��e��b~�[y�Yy�`�d��_~�Y~�]�d��f~�^�]�\~�a��_~�_~�a��_}�b|�a{�d��e��x��g~�_��_��g��h��e��f��k��l��j��h��d��f��g��e��b~�e��f��c��`�c��b��i��^�d�b��a��c��g��i��w��{��p��i��g}�i��e��f��h��i��n��n��j��e��i��e��^��_��f��d��e�f~�j��h~�g��f��h��h��h��c��^~�b��k��n��l��e��]|�_�^~�b�h��h~�j��g��f��b��a��Yy�^~�\~�W}�[��`��`��a��g��g��e��e�c��c��e��g��h��h��j��l��n��i��a��e��w��z��j��g��c��f��f��n��o��o��k��d��e��c~�]~�]��b��`��]~�\��^�`��^��a��c��d��f��f��d��c��b��d��f��d��a��a��d��f��d��d��b��e��i��g��l��l��h��j��h��g��g��g��g��i��k��g��c��h��i��f��h��k��l��m��j��l��m��o��n��l��m��k��l��j��g��j��k��k��h��j��l��m��o��p��o��o��o��q��m��j��k��m��k��q��q��j��d��_��a��d��f��e��f��e��c��f��i��j��o��p��q��s��o��q��p��p��m��j��e��f��f��h��h��h��j��f��g��g��i��g��i��h��i��l��l��m��o��l��n��r��u��y��r��q��n��l��q��n��o��r��n��n��m��f��f��g��g��h��f��e��f��i��l��h��k��o��r��q��r��r��q��s��o��j��f��f��i��e��`x�bv�bs�kr�mr�km�^cvbcuSZm?Nc@LbIViQ]mS^r6F]0A[7FY@Ob:I`2@[2B[2D\.BZ2AX8D^/?Y/?X/>S5BU=HZBKZKU_U\dOV`@N[.U0BZ7CY=HZV0J`OXiNViGMe9C^6D_=Gb9Db,:U+;T)9S)8U&5R$7U%8V(7V-8X3?W5BU?KY>LY3FT7GW0?T(6P*9V+>^%=W*>W'7Q)9R*:Q2AX1U.>U-W4@X8B[1AZ4CX7DW@K_AI^;CZFM_[w�[x�Zw�\w�_x�ax�ax�_v�\y�\y�`y�c|�j��j~�l~�n��h{�g}�d|�p��j~�bx�f}�_x�Ss�Vu�Zw�Vu�Ts�Rs�Su�Qs�Oo�Xt�Ss�Rt�Ot�Uw�Tu�Uw�Pu�Ot�Qs�Os�Qw�Mu�Uz�Rt�[|�Wv�a}�r��k~�v��������{��t��m��f}�w��|�����w��{��u��e��]y�[x�Wv�Xw�\w�e|�~�����y��_w�^}�a|�c{�b�^z�Yy�Y~�[~�b�b�^~�a��_�_{�`|�_~�\{�b�[z�Yz�a~�d|�^z�Zx�g|�s��r��b}�a��b~�b�b�d�c~�d��e��g��o��y��o��h��h��z��������p��r��w�����p�����v��k��h��b�e}�e{�`|�a}�d|�g�b�d��h��g��k��m��h��h��h�d�h��m��p��p��k��n��l��e��^~�^z�Zy�]}�\}�_~�_��d��������s��i��`�`}�`�h��d�\{�j��k��`{�������w��g��d|�f��p��s��l��l��j�c~�j��p��m��c��^�^�`�`�c��d��e��d�`}�]|�_��]~�Xz�`�d��e��u��h��c��`�a~�_��`��a��f��n��������w��l��z��l��f��g��h��m��c~�e��h��s����ͤ��j��h��i��u��k��e��e��g�i�e��a|�Yz�Xz�Zz�\z�a��`~�^�^��]}�d~�c��a}�e��n��i��b�e}�e��_�g��g��f��a��g��g��c��`|�d��m��s��w��������h�j��������q��j��k��h��k��k��k��m��i��h��l��n��j��b��]��Z�\��`��^�a��d��g��d��a��d��b��^��_��a��c��b��g��h��k��i��i��j��f��f��_��^��`��d��w�����l��e��i��g��a�b��f��h��d��`��d��i��e��i��d��e��f��i��l��m��l��n��s��u��t��r��j��h��l��n��g��g��h��l��m��k��k��m��k��m��t��s��n��m��l��l��l��i��_��^��c��d��f��g��d��g��k��m��k��j��o��p��r��r��r��p��o��k��o��p��l��f��g��f��i��m��f��g��b��e��i��i��f��j��j��i��l��n��k��m��n��s��t��p��o��s��r��t��w��t��q��n��k��i��k��j��j��l��i��e��f��j��i��e��h��l��l��l��l��o��q��r��o��l��p��q��m��i��h��av�Sk�Va�PWqJOeLRjNTjQSh=BX0X3?UCL[BKZ4AR5DY4DT-:M/>S4B\.>X'8R"6N%:O/BS;J]9FW1@S.=T,7S3K\HM`EL_GNaHNd:?\2;X7C[5DY.V8B[>F];FZX7DW6CV5FZ3DV9IY/=W);S2GZ6F](8O%7O,>T6EX9FY:I^4CX2AT,;N1@U6@[6>U>F[9J\?NaCPc;G]4@Z6@[+;T*R-=M1CW4?U;BU@F\P);S(:R-=T0AU,X4D^3BYBHbBJaIOeAL^:EY1;T/;U,8R/9R)7R'4T(6S%3P'6M+:Q2=S18R29V3X(9S/@Z)7R-6S&5T$4U&4Q)4R'5R'5P)5O,8R0T4AT2>T=H\GN`Rr�Ts�Tt�Tu�Xx�]w�_w�ax�\u�^x�]s�]v�[t�Xt�Uu�[x�^u�gz�~��{��cz�]v�ax�`w�Yy�Ww�^z�`w�j}�f|�`y�dz������t��a{�by�_w�^~�a�d��b~�c�\y�^z�_z�^y�^y�[x�Yy�Yz�Wx�Wx�X{�[{�Yz�V{�d�|�����������x��`~�Yy�]}�a~�h��dz�gz�gz�dy�m��o��n�i�ay�]x�Wx�Zy�Yz�Vx�Xw�^}�[|�Zz�Xz�\~�[|�m��������d~�Yx�Xw�c~�g�bz�l��t�����y��_�^�a~�p��x��w��o��s��s��p��e��`��b��m��x��w��p��p��w��y��p��i��l��g�o��}��c�m�����|��g��i��q��������{��e��e��h~�d�b��f��n��l��g}�c~�c��g��l��b�Vy�Tv�Xw�[z�^}�a|�r��l��[w�Ty�Ty�Ww�Wx�Uu�Xy�[z�b~�a|�\}�c��h��f�a~�^{�\|�\}�a�d}�i��p������Ƥ�������̣����{��p��������h~�f��m��r��|��r��p��f~�d��`��_��b�e��g��l��l��e}�^}�[}�X~�Y}�^}�d�d��h��Zy�Yz�]}�_��b��g��k��k��f��`{�b}�d�f��d��d��a��b��j��r�����������s��i�j��p��p��i��b�a}�c}�i��l��n��g��b�a��b��\{�[{�Z{�o��\y�\{�^~�^��c��a��f�g}�b�`��a}�_~�c��d��`}�c��a~�e��c��f��e}�f~�b��a��_��^��_��[��^��_��e��j��f��d��c��a��b��d��d��c��`��e��e��e��g��e��f��e��e��a�\~�\��[�`��`|�[{�[��`��e��d��b��j��s��p��c�_�\��]��f��n��q��e��n��v��y��m��l��g��e��e��e��d��a��d��f��g��g��l��i��t��w��t��m��j��n��m��m��j��l��k��g��g��k��m��l��k��m��k��h��n��u��t��n��c��g��g��j��h��b��c��j��i��b��d��h��h��h��i��h��i��j��k��j��o��q��q��o��s��s��o��n��j��h��g��e��f��i��n��p��h��p��q��p��l��m��h��d��e��i��h��g��l��l��m��p��n��k��o��n��n��������}��������������|��v��v��s��p��m��n��h��l��,DhRl�j��h��l��t��s��dr�CNl:EcAI`HOb?L]-;V(9U'8R&5T#6W$8Y#6W&7U7B`8B[;J_>Ne5E_*;U*;U'8V#6T"3O$4N$5Q!5P$8Q&6O$4K#5M'9Q$6N%5N%6P->X*W+;T+;U(7T'6S%4Q'5P(6P%5L(8O(6P&4N)7Q(6P(8O*9N.8S,5R)8O3;R7FYRs�Su�Rq�Vs�Pu�Su�Su�Zu�_x�[w�Zw�Ss�Xt�[t�Wu�_x�[t�_x�f�^z�Zv�`y�gz�i{�ax�\t�^v�f|�q��l��_�^y�i���|��cy�e|�ly���—��f~�a}�cz�by�]x�Vy�Tw�Vu�Ux�Vx�Vw�]y�`x�c�i��dz�Xx�Xy�`{�j{�n{���ǔ��t��c��_{�j~����~��s�u��l|�v��������}�����gz�l��w��o��]x�^{�f}�a~�_|�_|�\w�e|�i|�t��x��i��b|�f|�s��y�����������m��n��y��r��n�����������������������y��l��t��y����p��j��l��j��o��h��q��t��d}�t�����g{�j����������������������ȴ��gx�b��c�g�i��l��l��j�k��k��m��k��d��_z�ay�]x�[z�\|�^z�Zy�]x�]z�X{�Ot�Ty�Ww�Wy�Uy�Vv�Wv�\y�Wv�X}�Y|�Yy�Yy�Xz�[z�Xy�Wz�Wx�[z�a~�i��n��m��o��l��l��o��h��i��i��p��k��g��l��k~�{�����|��b��]}�`��d��h��j��k��f��e��h}�d|�^}�\{�^}�[z�c~�z��a��^�]|�\w�Z�W~�V{�_~�l��k��`�a��b~�f��b}�e|�d��e��d��m��r��l��w��|��t��q��g��f��i��e��b�a}�f��d�e��`|�b~�^}�Y{�Xz�Z{�X}�_|�g}�a|�Zy�_{�]y�_~�]|�a|�b}�a��b��_�^}�^}�b~�^}�b��`�d��a|�c}�f~�m��i��f��g�e~�h��b��b��`�`|�e��b�b��h��j��j��f��i��`�b~�e��c��e��o��l��b��b��d��^��b��b��^��]�`��Z~�Z~�\}�_��^��e��q��d��e��e��b��`��a��h��h��d��g��i��g��j��y��e��d��a��b��e��i��`��^��\��\��b��e��i��g����ǩ����n��i��m��i��l��k��p��n��o��n��r��x�����m��l��j��n��i��m��p��s��u��t��n��k��j��q��k��k��g��k��o��q��o��l��j��k��l��m��p��p��o��h��n��v��y��y��q��k��o��o��v��z��t��p��n��n��o��p��p��l��m��n��p��w��p��n��n��o��������u��j��j��q��{�����s��Zg�p�����������yz����mu�`j�gv�n��l��g��d{�EW-BaIc~k��o�������Ą�>Dh1B`0A[/?Y1@],@Y(9U*7W&4Q$:R&9Y'<[ 7V$8Q-=V0@YN0V0S$4K'3M(4L#3J&5L%3M"2K$4N&6P&5R*5Q.6M4Lgv��_j����mp�KRn4Cd,9[-5Y+9V,;X-;V*:S-;V+;U&:R,>T-=V(:R%9R';V(=R\ou���x��r}�-7Z*9X+6R&6P$5Q!5P&7Q(6Q$6N%7O'5O(8O7G^CN`HM`IUe:JZ4@V.>W-;U/>U+=S.@T+9T(8R%7O.>U/W�9U}8Ox8NuAVsfs|�����������̨��mn�Yb6Ij+@_+@_+Np{���SXk���_e}.9U+6R&7U#4R#3M#3M%4Q!2N#4P&4Q*9P2CW6F]:I^?J\BK\3BU/?V'6M'7N&8P'9Q*Ng7Hb/>[,;Z+:Y2A`8Ie:Kg2Ca+X9C\PQeKI_;@]BFcMNcSPeh\j�y��z�g^q@EY/@T2FQ������<\*:[):X,@[(=Z(=\!;V&;V*;W%4Q(6S+9V*;Y/D_4Id6Ig6Ge:Ki8Hi9IjNSf�z��tu}mwZRa:BU+Y(;[(;Y(;Y(=\(?^"9[&9Y'6S&5R%6R%9T#6V-@a.Cb1Fc1Dd1Ab4Ea/G_IYhwu�kjrDGZ1;V)=V)=H������>=]8I]������@EYDI_:@V@FVNJ[gWdgUecWetjs�z�MFX6^+;T+=S';B������ADe8Ham|���\PfWRiXUjMNbMNbSRd[Sb�{����������K>R49V.@V2DZ,AV"7L$4M&6O$5Q$5Q#4N!4R 1K&8P(:NJVf.4J+7O&8P#5M%5O(6P(6Q&5R#2O#2O%3M(6P$3H$3H"1F$3J%3M.9UAPoL_�G_�BX@V};Sw9Rq7Np/Gm1Mt.Dk%7["5S������ÿ����o��St�On�Qn�Il�Ek�Ak�Dl�Dm�Jl�Ln�Tq�Zq�]t�b{�d{�v��~�����������|��e~�Ss�Mr�Tu�Xx�^x�h��e}�[w�[y�_}�]y�c{�s�����`t�e~�i��b}�a}�^z�So�Ll�In�Cn�Cl�Gl�Gl�Dn�Am�Eo�Gl�Pr�Xt�\w�Zw�Rt�Kp�Eq�Cs�Ct�Lq�Oq�Wy�k��Vw�Ot�Wx�Rw�Lu�Mv�Mw�Qv�e}�o��s��u��w�������������������z��|��p��s����������z�������֋�����t����w��v��z��z��r��j��e��i��i��j��d�o��|�����w��m��z��������j��`}�Yv�f}�r�����q~�Yp�ez�u��~��}��l��f~�q��������������n|�j}�u��w��k��]z�c��o��Tt�Z|�by����q��^y�Yx�Wx�Yx�f��Tu�Vw�Yx�Su�Qr����q�������������ﻼ����h�\w�Tv�Lx�Is�Lq�Lq�Ou�Pv�Kt�Gp�Ds�Gs�Mr�Ku�Mu�Ms�Ku�Iu�Jr�Nq�Tu�\x�_z�\x�[x�e��b~�w��k��o��m��k��x��f}�c~�`}�d��So�Vv�Oh���������������謚���������|�����lq�em�����}��\w�Lm�9Nijz�ghj������ij~ao�fs�`n�_l�`m�]j�jz�l~�ey�g}�g��Yp�et�dz�fx�hw�_v�^t���������܉��y��{��}��|��r��o��l��n��k��n��o��k��t��j��k��n��o��p��w��}��w��w��~��r�����~��������q��f�������j�\��[�X}�]}�e��`��V|�R{�W{�U{�W|�W{�Vw�Xz�Xz�[}�Wx�Wx�^}�n��[z�Y�\~�[}�`��Uo���������甚����������t��l��i�f�`}�d}�r��������������������i��_��^��`��b��a|�a}�d��[��]�`��\~�W{�[|�`�b��Z~�W}�\~�_~�a��e��u��������m��c��c��d��^}�q��w��m��a��h��_��_}�b|�\|�W}�Uz�]{�\|�[{�\~�\|�\|�[|�[�^��]�_}�c��d��_{�X~�]~�^z�^�\��[��b��_��a��o��s��t��t��s��r��t�����y��z��|��y��{�����t��s��{��x��s��w��u��k��a�Uu�7T�5U~4Q{0Fo*>a)<]*>Y(HT/;Q(8O&5L'3M+7O)9R):T(9U&7S(8R(6Q%3M%5N$4K%5L):T4KkF\�Lb�Ol�Jf�Jb�AW~,Hp>\�Bb�Ff�?Z�+Co.Ks���������������x��j��^{�Yv�Zw�St�Qr�Ur�Wr�St�Qt�St�_{�x�����������������������r��Yz�Wx�]~�a}�d}�h�k�f~�a{�c��]z�c�o��z��Ux�Pz�Qv�Rw�Ot�Hp�Go�@n�Cq�Fr�Dp�Hr�Kq�Ot�Ns�Pr�So�\t�[v�Xw�Uv�Vw�Rs�Uu�Ux�Kp�Uw�Xx�^v�k��Vw�Tu�\}�[��^}�_|�b�c��h��n��p��x��z�����������p��w��h~�j��o��l��f��m��z��n��w��������|��t��v��w��t��x��y��|��|��w��v��s��m��k��i��l��n��r��v��n��m��g��a|�g|�`|�Zw�f�p��y��j��St�Vw�j��r��z��~��������������������t��i|���������է��|��c{�Uw�`|������℞�h��_x�]y�Xv�\z�f��_u�w��Ur�Ho�R|�R|�Vx�^z�x����͟������f��]~�Uw�Ss�Mq�Kp�Lq�Pt�Ns�Hs�It�Gp�Mv�Kv�Mu�Lu�Ht�Jr�Lt�Nx�Gu�Jv�Ox�Zz�k��j��j�c~�k��n��k��l��m��n��j��`~�a{�Li�Km�Nl�Hb{sz�����������{��pz���s��l��q��^t�bv�n}�p~�p�cw�>Sn-E_O_vYVa�ps���~s�`p�\v�Yu�Vm�Rj�Rm�Tq�Rq�Tq�Vt�Qq�Yu�[s�Ok�Op�Vs�Vq�Xo���è�����c��k��i��r��q��l��m��p��g|�m��k��o��p��p��k��j��h��f��e��k��f��h��e��i��d�q��u��l��j��q��v��eu�������k|�[~�e��g��s��r��p��g��d��f��b��_��]~�i��`��W�[�W}�W}�a��l��Y~�]��`��[}�Vz�\y�]v�r~��������������}��}��������{������������������v|����������fv�_j�_h�Yg�Td~Va�Ta�OdUc�Sa|Yc|sw�sz�hx�u��l��^��^��b��a��j����ʝ�ʉ�����o��w��b��l��y�����}��g��l��g��m��i��i��d��_��Z~�a��c��b��e��a��[��]��^��\��[�_�b��^�\y�Z{�Vv�c��`�c��i��c��b��l��k��m��j��h��g��m��i��n��k��o��q��o��o��i��g��j��p����ɽ�啦�~��i�Th�:W�2Ry5Qx-Ch*Bd&>`*i�Do�_��a��\��\|�Vx�]y�]y�Uv�Ns�Ho�Eo�Bk�Bn�=m�7j�Bo�Dp�Fp�Gm�[x����~��b��^��Y~�U{�R~�N}�R|�U{�Pz�Pz�T}�V�T}�Q��Pz�R}�L{�M}�O�O�M}�P|�U}�X~�V�Y}�Z~�V�Y��Z~�\��]��X~�V�X�R|�;c�@h�?e�Ca�Sk�iu�puy{|~trurkraaiDJZjl�t�i��_{�[u�[y�W}�]�Pq�/Kc*

e�3Tw1KlIb�2Mj0I_Sl�Lj�Ik�?Zw/Fe-Fd?Xv4Kj/C\������������Kc}���i|����Z]pIOeCNbJRgLSmGPmFQmJUqHQpGPqMVu]k�^l�fv�|�����`~�X��T��V��X�]��]��V}�Z�V}�W��R�R��T��U��S}�W��W��T�S~�W��Y�W~�Q~�P�O��T��W��S��S��V��_��Z��\�[}�`~�i��Md�D[{Mh�Yv�Yq����������`{�X}�Z{�Xy�[��Z��V}�R�W��\��_��^��\��[��Y~�`��^{�Uw�^�d��]~�h�u��lz�{��jz�Yj�Wg�8Jp3Ip-Dm,Dh*>a%9\&=\&:]+Eh&@a'?[->Z-]%>](;[&:U"7V*;Y,;Z3@b-=a(>c.Eg(=\,@e+Dl0Ir0Hn1Ie4Kk7Nn>SnBUs8OnCTnBQn1BTx��������DHm2DhASg������DEc4De,Cb/Fe0E`/B`MXnvp|unvdboNr9Mp?RpI]xfx����������[\xEVt>Uu>UuCZzD\~CW|?V4Q{6Nz:Pu_}�k��h��c��`��\}�U~�Pz�Rz�Sz�P{�Pz�Nx�Lx�Jw�Hs�Ku�Hr�Px�Sw�Pv�Pw�Pw�Px�Y}�Sv�Rx�Qw�Rx�Mu�Pw�Qx�Tz�V|�Sy�U{�Oy�Sz�Ux�Ux�Nu�Kw�Kv�Gv�Ds�Fu�Du�Bs�?r�Ct�Fs�Ds�Du�Ct�@m�Hu�Du�Eu�Gs�Iv�Jv�Kw�Hw�Gx�Hy�M{�Gt�Iu�Jw�Kx�Fu�Ly�Lx�Kx�Gx�Ex�Fw�Jw�Mx�Jw�Ly�Jw�Kx�Jw�Kv�Fq�Mw�Nx�Hu�Iv�Ly�Jy�Jz�Dx�Jy�Lw�Kv�Jw�Lz�Nz�Iv�Hw�Dx�G{�Iy�Jw�Gt�Kv�Gv�Du�Ix�Jw�Jv�Hx�Dz�Gy�Kx�Jw�Ly�Ly�Ix�Du�Bw�Jv�Dt�Iz�Dw�Av�?t�@v�Bw�Dw�Et�Jv�Iu�Gv�Hx�Et�Fw�Gv�Cx�Fw�Cw�Av�Du�Et�Jv�Iy�Iy�Iv�Bq�Et�Hu�Hy�Ev�Ht�Et�Bq�Ds�Cr�Ev�Bs�Et�Ar�Ar�Ev�Bq�Ds�Et�Gt�Oy�Qx�U|�Eu�Dx�Bu�Bv�Bv�Cw�Av�@z�?x�Cx�Cv�Bv�Fw�Iv�Ht�Bw�Av�Ey�Ey�Cw�Bv�Gx�Hy�Dx�Cv�Du�Ev�Bw�@w�Bu�Dt�Bu�Bw�Dw�Du�Et�=i�;^=[�;\:Ur6H`QYf]`gbch������RUZMSaWZisr�v��@RfX{BY�7PxA]u������������Wq�Eg�Jm�Mi�:X|Vx�Nq�Fm�Ks�Eh�Bc�Ws�Rt�Ii�Nj�Zv�\x�d|�u�����]x�Pr�Qu�Mw�Jw�Lw�Kt�Du�Cw�Et�Ix�J{�Du�Ev�Bu�Au�Dx�Cw�Bv�>o�Iz�Iy�Bx�Iz�Er�Lv�Uw�`~�[x�bz�i��l��j~�Wp�?e�Ci�Eg�>`�B_�Ic�Mh�Oj�_u�n}����]n�Wr�_w�_w�Xw�Tw�St�Xw�f��o��r��p��q��r��i}�^r�\p�ev�_q�_q�gs�iu�p}�ht�iu�z��t{�sx�_i�IZx7Np8Pv4T{;XzASw4Kt*Go&Al.Eo7Nw2Ns7Qt-Ko/Hp5Kr-Af2Dh-AbP���������^c�@OnBQno~����WXlDOo2Ec6Je?Pl?JhHOkbfNUo:CbK[uESn@JeKYs.Cb*=]*;Y*;Y)>])l�=k�9j�6i�6g�8j�:j�=h�9j�6k�4i�3j�7m�6j�7l�9i�7f�3j�6l�5i�7h�:i�;j�o�>m�;o�;s�@q�Cp�:o�7o�7o�9m�9p�=q�?p�;l�=q�9p�9s�;r�?s�Br�Aq�@q�Ap�Cp�Br�?p�;p�;r�5o�9s�;p�=q�>r�=q�=p�o�@o�Cp�Br�=p�:o�:o�=q�q�?r�q�;r�>s�=p�>q�@p�>n�>q�?s�?s�;q�7r�:t�s�@t�=r�>s�=n�?n�?s�>r�Du�r�@s�Ct�@t�Bq�Et�=r�Au�Ct�Cr�Nt����������Nm�Fs�Gv�Aq�u�>s�?r�Ar�@t�>u�r�Bs�Bs�Du�Er�Gr�Gt�Dt�Bs�;j�2_�0Z�5[7^�;h�r�=r�?s�@q�?p�>q�:o�=n�@o�Er�?p�Ar�>n�Er�Bm�Eo�Kr�Kq�Gm�Ko�No�Ci�:f�;e�Ek�?i�>e�Im�Bf�@h�Gk�y��Xm�Xq�Qr�Ln�Kk�>d�?i�Ck�Zx�]w�ev�Vi�Vk�Zm�bs�\q�Sp�Rp�Xr�Yw�Rn�Sp�Pj�b|�Wp�Rl�^s�[v�]r�eu�Xl�Um�Sq�Gl�Kn�Rp�Oo�Gi�Hh�Um�Sk�Hj�Cf�?b�Gi�A_�A]�C\�Ha�A]�?Y~D^�G_�Lc�BZ|D\�Md�Vk�I_�Oh�Yl�Wk�F`�Yn�Ue~DSjTeus~�qqybcubl�Pa}NaUj���ip�Uf�>VxBZ~D[{L_KZwYj�I^{BYyE^}C\{?VuC[}/Ou/Ox.Ks/Ms/Kr0Iq.En=Vu8NfWk�^m�vz�ekwRZqU`vZfvYesr{�IPj=Kh4Id4Jb=RgAVkE[r;MeNWhbel``jefkonltpm}~mmojpp|~{���}|�gknX\_OTP\]Xdc^4f�7d�8c�5b�3d�1b�1e�1a�9c�3`�7d�7b�2g�1c�8f�6a�6c�5e�7g�9f�9g�6f�6h�1c�2c�2c�5d�6c�3d�3g�4e�1e�6g�;f�8h�8j�6f�5g�1g�.c�4e�6f�7i�:h�6f�6g�5f�7f�7h�5j�7i�6g�1h�5i�5j�1e�6g�7g�;h�4f�7k�4h�3g�6g�2i�4i�4e�j�>k�>k�o�=n�=m�?l�>n�9o�>o�>k�=o�9q�8n�;p�;n�:n�:n�:p�;q�:p�6m�;p�=n�>n�;l�7n�;r�>s�8m�=n�Aq�=j�Ao�n�>n�j�An�Bo�Bo�>r�?s�9m�@o�Bq�Ej�������������RkCp�>m�An�=m�:o�:o�=m�@m�=l�=p�=n�n�Am�>o�h�9i�8h�5`�8\~6Z|<`�@b�Fe�������������`k}Rs�Cl�a�Mp�Jt�Lj����b{�Qr�Wv�a{�Oq�Kr�Ms�\y�d�Yw�Qw�Ru�y��i{����u��Ms�o�Br�Cn�Co�?n�?o�Dp�An�Dq�Gp�Cn�@p�=o�:n�:q�=q�>n�@q�n�?p�Cs�Cp�Dq�Er�Fq�Ep�Ap�@o�Er�Eq�Fr�?o�Ap�Cp�Dp�Bo�@q�=n�@p�Cp�Co�Fr�Er�Gs�Do�It�Cn�Fq�Nu�Is�Eo�Hn�Gr�Fm�Go�Hp�Dq�@q�Bo�Cq�Gs�Gr�Bq�Aq�Bo�Cm�Al�Gm�Lp�Ls�Gq�Dn�Gq�Fq�Ap�An�Bl�Gn�Gn�Al�Cp�Co�Fp�Fp�Hn�Io�Ho�Ak�Bm�Bm�El�Cj�Bl�El�Gq�Jo�Kg�KZw[cv�����Ի�ǘ�����������������]p�Jj�Km�Fm�Em�Ak�Cm�Cm�Fl�Hk�Hk�Hl�Fl�Dk�Cm�Lo�Dk�Bi�Hk�Fj�Gi�Gk�Ei�Gk�Km�k��dr�Ni�Gk�Df�He�Hd�Ib�Ec�>b�Ef�Db�F[zP]mR^j\doccm]alYYcfeaundxmgofahe^ttjii_he^jieKKKNRSfffgb^3_�5a�0`�2b�3c�6c�6b�7b�5c�0b�0_�5`�/c�,_�5e�._�/`�-c�+f�2d�3c�1a�0a�2c�2d�2d�4e�4d�0a�1b�1e�0f�3i�2f�0d�3d�4a�2d�1g�.e�/d�3c�0h�8j�7h�6g�5g�4h�4h�3i�1e�2f�2j�2i�0d�/c�0d�2g�0f�4e�4h�6h�6g�5g�2i�/i�+j�*i�/i�1i�0g�5j�3g�3g�3i�7g�2f�2f�0f�3i�0f�2h�1i�.f�0f�2h�1i�2f�4h�6k�7g�4f�7g�6h�1e�4j�4j�4h�1g�/e�3g�2c�2f�0f�6j�6j�6k�6g�8i�8h�2f�6i�6j�3k�4l�6j�7k�5m�5k�5f�k�6e�4h�5i�6f�;h�6e�8e�6b�5d�0d�4h�4e�:n�:k�6g�5i�n�=m�8l�=o�;i�;k�8h�Fi�Zo���ӻ�ψ��Hq�>o�?l�>m�;o�7k�9n�9n�7k�9n�9n�6l�:p�:k�@o�>o�>o�:i�;k�9l�7l�9m�n�;o�An�@j�@k�>o�>r�n�An�@n�Dp�Eq�Dn�Fp�An�?l�Ht�Am�r�>r�Bo�Bm�p�7k�>m�Cn�>n�;p�9m�>m�Bo�?n�Bn�Bl�>m�;n�>r�=n�@m�>n�;k�m�@q�>m�=l�@p�Bo�Bm�Dp�Lv�Pv�?n�?p�?s�Br�Gn�Gq�>n�?o�@p�?o�Dn�Bn�@p�=n�>m�Bm�Ak�>p�9q�7n�4k�9n�:n�=j�Ur�Hl�8j�Am�Hm�Bm�>m�=q�?n�@k�Bm�>n�Dm�Bl�Cj�Bl�Al�Dn�Cj�Bm�?k�@k�Cn�Co�Cl�j�Am�@j�Dn�Bl�Gm�Km�Dl�Ko�Jl�Dj�Dl�?k�=h�Hk�Kl�h��Yq�Kl�@l�=k�Fn�Bj�Bj�@j�Cn�Lk�Se}EL^STV]_^W]]JOK;?>4<>OWJnkZ~vkf^[WRN\WSbbZdd\jg`^^\DHKNRQ`aY5a�5a�1_�2_�1`�2a�5b�5a�1a�0`�8d�6c�7c�7e�/c�1c�0a�/`�3a�8d�5a�4_�3`�3`�7a�5`�8f�1c�.c�/b�2a�4e�7k�2f�3d�6f�8e�5b�7d�4c�6g�5f�6h�1g�3g�3d�6g�3g�6h�3h�3g�0d�0d�2f�6j�3g�4l�0h�1g�9k�1g�/g�1i�0h�5i�4h�8i�;h�6g�4h�6j�7k�5l�3k�3g�3i�2f�6g�6g�9j�:k�5i�6j�6j�3h�0c�:j�:j�k�9i�3g�8n�6l�8m�7k�4h�7k�3g�5j�6l�7m�4h�6j�;g�>k�7k�6g�7h�8j�;l�k�=m�6l�4l�2l�9m�?l�>k�6l�9i�=l�=l�>k�;l�k�:j�9k�=n�9m�:n�;l�k�5l�:n�>n�:j�:l�:l�m�=n�;o�:n�:k�=l�>m�;k�6j�o�r�9p�3i�9o�9o�5q�;q�@p�Bo�>m�@p�Co�d�Cg�Gn�:e�:e�=f�@i�n�;k�9j�9n�6k�n�>k�?l�?m�=j�;j�;j�@l�Fl�Bj�?k�;m�7k�;k�Fl�Em�?k�>j�;i�>l�>l�>l�?k�Bo�Mv�Im�@j�Ak�Co�Am�@k�@j�@j�:j�@r�m�k�?k�Eo�Dp�?n�?o�Bo�Cp�Bk�Cl�?o�@p�Bo�@m�Bl�Ak�Dn�Cn�k�:j�2l�1o�5o�5j�2g�5j�6l�6j�8h�:j�k�8m�3j�7m�:m�6k�5k�8l�4f�5i�7m�8m�>m�@k�=m�5l�7n�7k�:k�:j�:j�?l�@l�:l�4h�9i�n�Mo�Pr�Mn���ȵ�����Or�=o�;o�9n�9m�r�8p�;p�@p�p�Dt�Br�;m�:j�@k�Al�;j�=m�>o�Do�Do�=o�:r�k�?n�;l�;p�:q�:o�p�>o�8p�:p�>o�:n�:l�:l�>n�Cs�Aq�f~����Zp�r��q�����a{�Iq�Dr�Ar�>o�An�Ft�Cu�>s�Ct�9o�>o�Bt�@r�Cp�>m�?p�7l�r�n�=m�:n�n�=m�@q�Bp�Cq�An�>k�@m�o�?o�Al�Cn�?n�n�8m�:k�j�@l�@p�Aq�Cp�?l�=q�Bp�?j�Do�Dq�@o�Eq�Bm�>n�?q�@o�Dq�Cp�Gq�Gr�Dq�@s�@o�Er�Do�Eo�Fp�@k�Dq�?n�Dq�Er�Dq�Ho�Ip�Dn�Gq�Fm�Fm�Br�=o�Hv�Bn�Bm�>n�Aq�@r�Aq�Lq�Gn�Bm�An�Eq�Hp�Dr�Aq�Fv�Gr�Ho�Dp�Fq�Jq�Fs�Cs�Fp�Lo�Qq�Lo�Io�Mr�Ut�\q�ip�y�����~~����������������������������{�����������������������z��|��z|�su�mpiq~^eojlxts{wv|psztw~powpoucfmehqjmvadmPT_,`�/c�-a�,`�-a�-_�/a�1a�0`�2b�0`�-d�1c�0`�3`�6`�7b�7c�/_�0`�5b�5b�0]�1^�1]�2^�3`�1^�,b�,b�/`�2c�/c�0a�/c�0f�2d�5a�3b�2c�-a�,`�1a�+a�*d�,_�0d�.d�+f�)d�)_�.b�1g�/g�.f�2h�0i�*c�/d�/e�/c�/c�0`�1a�3d�2b�1a�-a�,a�,b�-d�1f�0b�2d�0f�0f�.c�0d�7f�/e�,f�.f�0d�2d�1f�4e�3g�3g�1f�0f�-g�.f�7i�7i�.i�)e�0e�4i�2h�0f�7i�5e�3e�4f�5f�4e�5g�5f�-a�.b�7g�9i�7i�1e�2h�6h�7g�8h�7k�2j�2i�3j�4l�8i�0j�1h�2f�7g�1e�0d�4e�1e�3g�4h�2g�3i�5i�5f�5g�4h�2d�6h�5g�4d�9f�2b�6j�0f�6j�o�;q�9m�l�?k�:i�k�=m�>o�At�9s�1k�9m�@r�6l�8l�;l�:n�>p�=m�:j�8l�9o�An�Dt�;q�>v�?q�Br�>o�@o�Gr�Lq�Pr�Kr�Fr�?o�Aq�=j�:j�@q�Ar�@q�7l�=q�@r�?q�>o�p�=m�@l�Br�Eu�Bs�>o�?p�Eq�?p�;o�=q�?p�>n�=m�9m�6l�3h�8l�8o�8m�9o�;q�=o�Av�=q�Am�@m�>m�;r�Bs�>n�7h�7i�@r�Ar�>o�:p�:n�?n�Dn�Dq�@q�>r�:n�=p�?p�Cp�Ap�;o�>m�9f�>k�=m�>l�@k�=h�:l�9o�;m�>n�Bp�>n�k�=n�9m�6j�7k�>r�An�Bl�@m�Cq�Jj�Im�Cp�Bo�Hr�?o�Bq�Br�Jq�Gm�Dn�@k�Bg�Ij�Ad�Iu�Bn�Fp�Mr�Df�`z�Bc�;c}R{�Fl�DaYx�Bl�Eo�>f�Hn�=_�Tr�Jm�4WwVx�Fg�Ih�Vu�Ko� BgJl�Mp�Hl�Il�Dci�@g�;m�6l�7m�5f�4e�6h�5i�9j�:k�6m�8m�@o�;h�2c�5f�9j�8g�;f�7h�9j�8h�8h�8e�9j�6j�3g�4h�4e�4e�2f�8m�2h�7d�:j�8l�2i�5k�8j�5f�3g�8i�7k�4i�8m�4e�0c�3i�j�5f�5d�8l�7k�:k�8m�k�7k�6l�6l�6l�7n�8l�;k�>k�8i�7k�8n�6j�5i�6k�7k�5i�6j�6j�5j�8l�8j�9j�6j�9j�2f�1g�7m�;o�7k�9m�5k�2h�6j�7k�6m�9j�8k�5j�6j�:k�9i�;k�@r�q�Au�Cs�9i�4h�0j�6l�=j�@m�;k�m�Et�:i�@q�=m�6i�=n�;o�?n�Al�?o�?l�An�Am�;l�:n�Ds�Ap�Al�?k�=n�:m�:i�=j�n�Cp�Br�q�:m�>o�Ar�Br�Br�>o�o�Ap�>o�m�>o�o�9i�9l�@q�Cp�Bm�?k�Am�Do�?o�@q�Ar�n�Bp�Bo�@m�>k�?k�@l�Fq�Ip�Eo�Fs�@o�Bm�Al�Br�>o�?q�Ak�;l�@m�Dn�@m�?o�Ep�Co�Cq�@p�Dp�Fq�In�Gj�Gm�Cm�@l�>o�>o�An�Hr�>k�An�>d�Ch�@g�Bc�Ce�Fh�Fd�Ws�Gj�=i�h�k�9j�5j�3h�5f�4f�6j�8l�9m�9k�:j�5i�8g�:k�8k�6g�8j�9i�7g�;l�;l�=l�9h�8i�9h�=l�=l�7h�;k�7h�1b�9f�7g�:g�?o�8h�6f�8e�j�?k�Bm�?o�8l�5k�;l�:i�>k�l�Ak�?i�@n�Am�:g�:k�p�;m�Bo�Eo�Gs�Co�Ak�@j�>i�?j�Bm�Co�k�?k�Ai�>f�>l�Ao�Bm�?k�@n�Bm�Cj�Bl�?k�@j�Bn�An�@j�@g�@j�=i�?k�Bi�?j�?j�?i�Di�Cf�Cf�Cg�Eh�Ak�An�@g�e�@h�>i�Bl�?l�=h�Bi�Dj�Al�=l�Bo�Fp�Hn�Gm�Bi�Dg�Be�<_�Gi�Fi�?i�>o�@m�k�>k�Cp�Al�Gq�Ho�Gm�Lo�Io�Dn�Hr�Bm�Ho�Mm�Hk�Ij�Hi�Hi�Ik�Oo�Kl�Kq�Kp�Io�>b�Jl�Mm�Rt�Pv�Np�Vo�Xp�[r�dx�s��q|����su�zy�||�|�y}���vy�wz�������������u{�kr����qt�oq~������fgybex|~�{y�xx�uw�{}�zw�VTlZ]lqu~������z|�{}�������ln{���^`uRVobhtw{�hjw���z~���}�wv�vx����wy�\]qNQb,]{._+]�(Z})Z{.\~,Yz+Xy)Vw)Vs+Y{(Z}'Yz)Y}*W~*Z~+[.\~/\{0]|,^)[�)Z�-]�1^�.[�+]�&Z)Z{,Z~*\�*\+\|)Zz(Z}+[�,^�(])^�)^~'`~)^�-]�,Y�/\�/\�.^�.\~,\�,\�*Z�*Z~+[-]�.\�0^�)_�,b�,^/[�/]�1]�2\�-Z�-\�2^�.`�,]�0]�0^�.`�+]�/_�.^�,b�.`�+`*^�,^�/_�4b�0b�-b�.c�/a�/_�4`�2`�.`�/`�2b�4d�/_�1b�,d�-e�+c�-c�.b�*^�/`�0a�0d�0b�1^�3`�1f�2d�1g�2b�1b�,b�-^�/`�0b�3c�1a�3c�0d�,d�0f�3g�*b�.a�5e�1a�1a�3c�4d�2b�-a�-a�5g�7e�-a�+a�-a�2b�2f�/e�0a�1a�/^�0a�+a�4`�5b�-a�._�0a�3d�,`�.d�*`�1b�/a�4d�._�,d�._�._�/`�.^�4b�1c�-d�+c�-c�1b�+`�-a�1a�4d�._�*`�*`�/a�.\}/`�.c�-a�._�/`�/c�.`�2b�-a�)^�-b�+`�.b�/c�/`�5b�2^�4`�1b�2c�0b�1c�1f�1c�5c�5e�+`�)^�1b�2_�3`�2b�3c�0a�+a�0b�-_�,`�.b�3`�6a�4_1b�+`�+a�/a�4a�6b�3_�3c�0a�1a�/`�1a�4`�5`�:d�5a�1\�2_�2b�4`�0\�-X�7b�6c�0b�-]�0\�0]�0a�In�Rm�hy���ܷ��������Mh}An�s�4h�7i�9i�9i�8f�5c�;i�;i�d�;c�8b�;e�6d�5a�f�@c�>a�9`�;b�:d�7a�;b�9`�;a�8^�=d�>f�=c�=d�6`�7c�:a�:`�6^�3^�:a�Ac�>`�:[�8^�8_�2\�7^�@d�>^�>a�9^�6[�9\�=_�>_�<_�;a�;a�>_�?_�>`�>f�=e�_�=]�@b�@c�Ad�?b�Bb�Db�@^�>^�=^�Bb�B`�D`�Ge�Kg�C^�%7[*7J3FUJ\t?Sn3E]AQ`NWf`fr[aqQS`\_fty}���VVbsrw���|~�_cnjlxux�|�������������hkzptsu�MP_TXd{{�jjtegt^]kQSb`frCVEMZgjstsybblegsceq@CRMSaJP\aeposMOdKPcQWeV\hnqzrv�np}ppzrr~MUbnw�Z_rLRl=BU,]~._�.\}+Xy+Y{)Z{(Yz'Uw*Vy.Zw0Yw*[|-Y~.Z-Y�/[~/\{,Yz-[}0^�._�+\},X{/\}/].\~,Y�,Z{)[|(Z{(Yz+Yz+\})Y}%Uy+Y{-Z{1]�-[}+\|*[y,Z{0\/[�)[~*\}/]-^+Y}+\}(Yz,Z~*Z�(Z(Yy/]~'\{,]},\�)^~(]})^~,\�*W~/[~2Z}0]~.\�/]�*\*\},Z|.Z}.Z.^�+\�-^~0^�-[|*[{/`�1_�/\�.^�,\�.`�*_�.^�+[�+\�,`�0b�-_�/_�0^�5a�7c�1c�+a�/`�2c�1e�3g�2d�1_�2`�4b�.b�-c�6d�7d�1`�2g�3e�8e�7d�9e�9c�2`�.^�0`�5e�._�4a�;f�7c�1b�._�6d�8d�7f�7h�6f�;f�3c�3d�/c�1f�1e�4f�2d�1b�3d�0d�/e�5e�3e�.b�0b�2c�5e�7e�4b�4d�4f�/a�,`�/c�.b�1a�8d�.[�,\�0`�3e�0`�4d�2b�3c�.c�-e�7e�4d�3g�1g�4e�.b�/`�7d�3c�4e�2b�.b�/c�5e�2b�,d�3h�0d�/c�2c�3c�3h�7c�9c�7c�8f�9d�8e�4d�.^�5b�6a�3a�2b�.`�2b�7b�7d�7d�3_�/`�1e�2b�3g�0d�5e�4a�3b�8e�4`�6b�8c�8c�6a�5a�4a�3c�5e�5e�7d�:f�8d�7d�:e�;f�8_�=g�2b�2b�8f�6d�7g�4f�4f�3d�4_;c�;f�Ag�@k�Ak�Cj�Jo�Np�Rv�Bi�Ek�k�Bl�;c�k�:g�7g�;e�Ak�Cj�9g�9i�;g�>j�:f�6g�7e�8c�:g�8e�e�:b�9c�7a�8c�=e�@c�Bd�@a�:d�`�@b�?c�>b�>a�<_�<_�:`�Be�<^�7Z�=c�;a�?b�>a�=`�;]�?a�<_�8]�8[�=^�<]�>`�?`�;[�>^�?_�<\�>\�A]�?[�@\�A\�7Y:Z�@\�@Z}Z�?\�=]�;]�C`�Me�E]Ga�Hb�C]�9Rz0Gi9Mn6Pk4If:Ni@OfM]mEM`jjtNP]IRcGRf:CTckxW`o|��GP_6ASPYh9@RWamhkzlmXYk[cpabtQZaior{pnyljxVYhciy=AZ%/H7?RIPZWX]quximvW]k@FR_dgghmORa06F6?FPW]MWclp{XZi47J=CS-^~(Yz*\+[*Z~)Y}+]�*X|,X},Yz*Z~,Y�-Xx1Zx.[|-Y|,Wz,Wz+Y}+Y{,X{*Vy$Vy%W|+[�.Z�3Z�2^�-_�+]~*\w([z*\+]�(\�&Xy&X{*\�+]~'Y|/]�,X{*[{)Y})V}'Y~&]|(^z#[v-[},Z~)[~'\~(Z&W)]�)^~-^~'Y|+]~0^�-]�+]�+[+\},Z|*\.\�+Wz+[-]�*X|)Z{+]�*Z�-[})Zz0\�4^�-]�-]�.[�/_�*^�*[�/^�-\�4d�,b�+_�1b�0`�.b�.b�/a�.b�/c�*`�+a�.b�+_�-`�2b�5e�.d�0f�1d�/a�,b�0b�.b�)`�)]�-a�._�1a�4a�3`�6a�4_�1a�2c�-b�.`�1a�4d�4f�-a�1b�3d�3d�8d�3c�2c�1b�1b�/c�0b�5b�/c�0d�3d�2c�0a�3c�4_�1a�0d�0d�.d�.b�2d�3e�4d�1`�3`�2b�2b�3e�+`�+a�,b�4f�,^3e�/a�.`�2`�5a�._�,]�0`�5b�8g�2f�1c�6b�:f�2a�2e�1e�/c�7h�5d�4g�2e�8i�2g�4f�2`�3c�3c�5d�1b�1c�4a�7a�:d�._�9i�8c�7f�/f�1b�7c�;c�;h�:i�5e�5g�5b�1b�.c�3d�2f�6l�4f�8c�4d�:e�;k�7h�.f�.h�*`�1f�7h�l�8h�3d�6e�8h�3d�7g�;g�8j�6h�7h�4h�2d�8f�7d�7d�9e�2b�9f�9e�:e�?i�9g�;f�?f�8e�6e�5d�8c�7b�5b�5e�3c�9c�4c�5f�5e�6a�3h�4f�7d�2b�8b�8c�;b�=g�8f�:d�4e�9f�=b�8d�8b�8a�?g�8d�5e�9c�:b�>f�:e�:a�3^�5b�8b�;a�;c�Ai�Eh�e�9^�<]�=^�h�Ai�;c�;c�>e�>e�9`�Be�Cc�;a�9d�9`�>d�Bc�;^�5Z�9_�4Y�9_�5`�6\�8Z�8Y�;\�4U~4U�:[�9\�9Z�=\�>]�7]�3Y�=`�?b�Cc�?_�Dh�=d�8e�6f�?k�>j�?k�>i�Ek�Fi�Fh�Bl�Ai�Fl�Fn�=k�=k�@h�Df�Fh�Bj�Hk�Hj�Ln�Hj�Om�Jd�Gh�Fm�?l�?j�Fl�Hn�Dg�Fg�Gg�Jj�Jj�Jj�Qo�Lh�Jf�Mg�Nh�Mm�Ik�Mm�Gi�Gi�On�Kl�Pm�Hc�Jf�Le�Hd�Kg�Jc�F`�Ne�Mf�Me�Ga�Oi�Ld�Hb�?]�@\�E]�G[�C\�D^�E\~HXyUc�Pb�M`�H_�?X�I_�F]}Yp�G_�7O@W�+]�(Z%V)Z�,^�0^�0\0\/Z}/Z}.Z}2Z~-Y|+Y}*W~*X|*Z~*Z~(Y�'\�&\�)[~)Zx'Xv'Xx*[|/^|+[*Z~,^(`{%\z)\{)[~&[{(Z0]�1]�,a�'Yz.\�,\�'Yz)Y�.[�0]�.^�,\�(\�)_�#[~$Z~(Y�*[�(Y�,_�.^�/[�.Y�0`�0_�5d�-]�-]�.^�.]�.^�+[�+_�+_�,b�+a�,a�*^�.^�3b�2_~2]4`�,\�-_�+W|.\�&[}*`�/`�-a�1b�/c�/c�.b�0_�.b�-^�.[�0a�,b�/c�/a�3c�4e�0a�0a�4d�4d�1c�2c�1e�+a�.`�-b�1f�/c�1b�2b�/_�0a�._�2b�2d�/a�1c�,]}0b�1b�2f�.d�,a�4e�1e�0a�3b�2c�4a�4c�1b�,b�*^�3b�3d�2f�0d�0b�.`�5e�0_�6f�/a�4d�6f�)[~*`�+a�4d�;f�6`�/`�3`�9c�.`�+a�,b�0a�0a�0b�-^.^�+[�1a�4d�3g�-a�2c�3d�2c�0d�.b�0d�/c�1b�)]�-a�-^�1a�2d�1b�0_�3e�-c�,c�.b�-a�+_�1e�+a�*a�+]�3_�2_�4d�0d�0`�9f�7c�2b�7g�4f�+_�/`�0b�2d�2d�8h�8c�0a�/c�0d�0b�2f�4f�7g�5e�/c�4h�.b�0d�2f�2f�1e�6g�7g�7d�0a�+_�1e�9f�._�/c�3e�4f�1a�2`�0`�+_�,`�4d�4d�._�+\�0`�4f�4a�1c�9g�.`�+a�4f�2b�4d�2c�0a�/^�-b�/d�3e�1e�9j�6e�0`�1a�3c�4a�8d�9g�/e�1g�3d�7d�7c�0\�4a�9f�;e�8h�2f�7d�7a�4d�3d�6f�7f�5f�3g�.b�6j�3g�4d�8d�1a�1e�2c�4c�1a�4b�0`�1b�6h�6h�8h�9f�:f�6b�4e�7g�:e�;g�5g�2b�1e�5g�1a�0b�.d�*`�.c�4e�7b�=e�8f�7h�9g�2f�2b�5c�4d�8j�1e�1e�2b�7g�:g�7d�3g�2d�;i�=e�>e�?j�3d�7h�;i�7d�5f�2f�5g�3e�4h�0d�6h�4i�1g�7l�8i�:k�2f�6j�9k�7g�6f�6f�g�9f�?e�>g�=i�7g�4a�:f�j�8e�7d�;g�>e�g�=h�Am�@j�@j�Ah�@h�Ai�Cn�Cn�?j�Bj�?m�>o�?l�?p�@n�;m�7k�;i�=h�Dl�?i�=i�>j�Bi�Go�Fn�e�Cf�Dd�Aa�Bc�Be�?e�>c�@f�@c�@f�@f�Bd�Cc�@c�Bb�De�Gi�?a�@b�@a�?`�>_�Cd�>c�=_�@a�@c�>a�;]�Cd�Cc�Eb�C`�Jg�Li�Bc�A`�C]�E`�B]�,\�,Z|'Xy*\}*[|4_�3_�-]�,Z{.Yy)Wy)Z{%Wz(Vz,Wz+Y})[�(Y�)Z�)[�,\�,\�&Wx,Wy+Y{+]�*Z~4\1Zz2],Z~+W~.Y{-X{*Ux)Sy*V}.\�(]+[1]�*Z~+_�+`�-]�.[�,Z~0\/]+[(Z})[~&[}&\�(^�(\�-]�(X~(Y�,\�+Z�.]�-]�+[,^�+\�.`�,`�+_�,a�/a�-_�)[~*\-^0`�.^�3`�2]�0]�-]�*W~.\�.^�.`�/a�.^�-]�0[�3]�1^�1^�0`�,^�/c�*^�0]�1^�._�.b�,`�)]�*_�'\�+]~._�1a�4a�1c�2_�/a�+\�4a�3`�,^�']�4d�8b�2^�0`�*_�+\}0]~5b�0b�0a�4d�2`�3`�,^�3e�1b�.`�5c�/c�/c�2c�2c�1e�.b�,b�)^�+[/[�,\�1b�-_�0b�+[�.`�-a�.`�+Y}/]�)]�+]~5b�1a�$Z|*[�3`�3c�3e�0b�3e�3c�2d�0b�/c�0d�/a�/`�,`�0`�5a�1a�/_�/c�.c�1b�1b�0e�1c�5e�.c�.b�2c�1c�/c�2f�2c�6g�4e�3d�/_�1c�-_�0`�4d�7e�/a�/`�0_�3_�3`�1a�0b�2b�1a�1a�0d�/e�/a�-]�-^�-^�2b�1^�6c�5a�3c�4d�4d�1e�0a�/^�4a�4a�4c�2c�2c�4d�4d�9g�=g�8h�6f�5g�0d�2d�3`�7_�0[~/]�/a�3c�/a�-a�3g�4i�4j�/e�0i�2e�-_�1b�2d�/a�0b�3d�3b�0a�+_�2d�6c�3b�5b�8c�:a�:a�8f�;i�;g�8f�6d�8b�9f�6f�7e�9g�7h�5e�9e�8e�6c�5e�0a�6f�2f�-d�1g�5e�5a�8b�9e�7c�6g�7i�3h�6f�1e�1b�4a�:f�8f�;k�5e�4b�6b�9d�:g�/`�8d�9c�5f�3d�1g�/c�.b�4d�2_�1a�.b�2f�7f�:e�:d�6a�8c�8c�:f�7g�4d�7e�4b�;i�9g�8e�;e�8c�2^�4`�3c�3c�4d�3c�2a�8d�6b�8d�;f�6b�l�:f�=i�?i�4f�7k�:j�9g�e�;f�7d�8b�6a�?j�k�8g�h�;g�:g�8e�@h�?g�?i�>j�;h�:g�;h�>n�=h�=i�=i�>j�>i�?g�h�El�=i�8j�:j�;g�:l�=i�e�;e�@j�;e�Ai�Cf�Fi�Cf�=g�_�?`�>]�Ba�@`�?b�;`�:\�>`�Dd�Gd�D_�;`�@c�@`�Aa�Ba�A`�Da�Da�A`�>a�@a�>a�;b�>e�:`�>e�?`�>_�?`�@c�?e�Bb�B^�C`�Ba�?a�%Wr'Xv%Zz._-Xz+Wz+[+\z+Yq(Tq)Vw+W|-Xz,Wz.]{*[{&[{(Z{+Y{*Xz)Y}$Vy%Wz*V{,V|,X}(Z{.\~-Z{,Z~$X}*\�/b�(Z{(Z*Z�,Z|*Xz+Y}.X~+\}/]�,\�*`�,^�+['Y~)[�-^�0\�/[�0]�,X1X-W}.[|)Zx'Zy%Z|&\�+]�-Z�,Y�/_�2c�,\�)^�*`�*_0b�-a�*_�)^�*_�(^�)^�,^�/]-_�/\�)V(Y�&Z(Yz-[},\�*\}+Y{-Xz+Wz)]�,Z|0`�/a�,a�(]}+]�._�'\�*`�)[~.Z}.\})[|*Z~-[},Z{*]z+Y{+[�(^�.b�)a�'\�+\�'Y|(X|+[.^�-]�*[�-_�,^y)Zz+[,\�3_�/Z}2]�+W|/[�6]�1_�-_�,^�-_�.\},]~)]�+\�'](]}+\}-[$[z,\�1\0]~/`�/]�.`�+]�+[-]�(_~-[}2]5`�1c�.^�4b�3_�/]�,]}-_�.^�1a�/_�/`�._�0^�0^�,b�+a�0^7b�4a�1]�+_�+b�+_�,\�.^�2^�.`�)a�.f�)a�)]�+_�1e�4h�-e�+_�*\�,^�1_�0\4^�2b�-_�,^�/_�5]�0^�,^�._�1c�2d�4h�1e�/_�-_�0c�0^�.`�*`�+b�+c�0b�0^�1a�6h�3c�,`�-c�,`�/^�-^�+]�-^~-`,a�-]�4`�1b�3a�;g�.`�/`�2_�-_�-a�1_�0`�-e�+a�0]�0]�1a�1`�4e�6c�.]�-b�+_�.`�-_�-a�-^�2b�2b�+_�.b�/c�+c�/e�4e�-Z�0`�,`�.b�-a�,`�(^�,`�/a�.^�/a�-a�,`�2a�6b�4d�/g�*e�+a�)a�/d�1_�0^�1a�3c�1`�4e�1b�,`�-a�3c�6d�2`�/_�1e�.d�2f�6f�2b�2c�3e�4d�2d�.f�4h�5b�7d�4e�4a�7d�7i�4h�0h�2c�2b�3c�7g�7i�.f�0h�+`�-]�.Y�5a�3h�3k�2f�3e�4f�7g�7e�5c�8m�3g�4f�6h�;k�7g�5d�6`�4d�0d�6j�.`�3e�4c�6e�4e�6g�6e�8g�3d�1d�6j�3i�8h�5e�:j�7i�5i�6j�1a�6d�3e�-b�.b�3e�7h�2`�5c�2b�/a�6h�1g�/i�4h�;h�;h�6h�j�3c�7d�9f�9f�:e�;d�;b�@f�>e�5b�0b�5j�3i�3i�9j�6e�6g�i�8h�8e�o�=m�Ap�=j�=g�@h�Bi�8g�9h�:j�;m�An�?i�=l�@m�@m�Am�Cm�=i�5f�2e�7h�>j�h�Ci�>j�j�8e�>j�Bo�Bn�Cn�Cn�Gn�Dl�Fl�Go�Em�?j�Dn�@k�Em�?k�(Ur.Ty1[�+]�*Z~*[|(Vw,Wy)Vu+Yz)W{,V|(Yy%Wx'Xv(Uv)Sy)V})Y�/Z�3_�'Xy%W|&X}(X~'W{)Y}/Y+Xy)Xv'\~%Z�%Y�$X}"V{)Z�)[~(Yz,Yz*Wx%Zy'Xy(X|(Yz'Xy'Xx%Wr(Yz'\~)[|(Yy(Z{(Z{(Yz*Xy+Xw/\{(Yz"X|$Y{'Yz*Z~)Y*\)^}%Zz&\~&[{$Yy+]~)[|(_~&]{&]|"]/_�,Z~#W|"^�*_�,Z~*\�)_�*Z~)Z{-]�.^�,^*_~-b�+a�0a�0a�,`�-c�)_�*_�.`�/].^�.[�0[�3_�/\�*\}(Z{,Z{0[~0]|0^�/_�+[�.[�)]�)b�-`,^�-a�'\~(Z}*[|*[|*[{-\x(Yw)Wx(Ut'Vt'Yt*Yw*Wx)Wx)Wx'Xx'Yt(Ws(Zu)Xt.Zu/[~*\}%Zz&[{&[{'Zy)[|'Xx'Vt*Yw)Wx)Z{._�.\~-Y|-[}'W{(Vz,X{,Z|)[|+^{)\{+]�*_�*[|-Y|)^�+a�+\}+Wz,\�)]�,`�)]�(^�.`�)[~*Z~+Y}.^�0b�.`�.`�0]�1a�.b�1b�1a�.^�.^�0a�1b�.`�0`�.^�/a�)_�*`�*_�)`�'\|([z-]�)[~0`�-_�)_�,^�-b�-a�']�*`�.`�(Y�*^�.b�,\�0^�,]�/`�)]�']�+_�3c�0`�/_�0a�3c�/_�.^�1c�1c�+]�.^�0c�/]-]�/]~+c~(^�.b�1e�0e�-_�/]�5c�0b�/_�4a�0]�4a�0d�/a�0a�/_�/d�1e�,]�*`�(^�+`�+_�%]�+_�0`�1`�6a�1`�.^�2d�2d�5e�3c�5e�0d�3g�7i�4d�5c�+\}.`�3d�/`�-\�+_�,`�.`�/_�)[|-_�/c�+`�+_�0b�5b�9f�8i�2c�3b�3b�3c�/`�2b�2d�-c�/a�3a�5b�7d�5c�4f�3d�2^�5_�7e�5b�8e�4d�-a�0d�5g�/a�4f�3g�0d�,^�4f�1b�6d�4`�8f�7g�3d�2c�6c�6c�3e�4f�7i�0b�/d�/d�3h�3e�:h�7e�5e�4f�4d�6c�8h�0b�.b�.d�2f�8h�7g�3c�h�>h�;g�8j�/e�8i�8h�5e�5f�6g�9j�5i�5i�6g�8g�6h�2g�3h�8j�7e�;i�=m�4h�5j�4e�5e�:f�9h�:g�8d�7d�9e�7f�7g�6f�4a�4d�j�7g�6g�7h�:l�:k�8g�>k�Dn�Eo�>i�=g�?d�e�8b�;g�Cm�Ah�Ah�Ag�9j�=j�Bl�Ag�Bj�>k�@e�Ce�Be�Ag�Af�Bg�@g�=i�>j�;e�Ck�?k�>j�e�;e�i�=h�?j�El�Dj�Hl�Gm�Bi�Ah�>h�Bm�Dn�Cm�Ho�Kq�Cm�#Vq(Ws(Zu)[t*Zq&Uq+Xy*Xz+Y}+Y{,Z|'X�'Yz)[~)Zx'Xv(Vx)W{*X|-Y|*Wv)Vs&Us)Wx(Vx+[%Uy(Vw$Vy)[|,]}'Zy&X{'Xy)Z{)Y,\�,^(Zu'Uo&Yv(X~(Y�+X*Z�&X{%Vv'Xx'Xy)Wy+Y{&Vz%Wz'Y|*Z~+W~-Y�+[�$Z|&\�'[�'[�(Z(Z}$Y{#Y}!W}$Y{(Yy)Wy&X{#Xw&Yx(Yy%Wx)Wy(Yy(Yy)Z{/]~._�+`�']�(Z})Y}.^�/]�/\�+`�+`�/a�-b�-_�.^�/_�1a�/c�-_�-]�)[~,^�/_�1b�-_�+`�*\-]�0]�1a�3`�7e�-_�(^�'_�)_�,^0^�1^�2c�0a�1e�.b�/c�5b�6b�.^�%[(\�+]~(]}*\}0^�/]~*Xy.\~+\}._�-]�,^�2d�+]~+\}.^�.`�*_�/_�4a�*\}+]~._�,^�+_�/a�/_�/`�1_�,\�-_�-^-`+^}(Zu*Ys)Zx*[|(X|+[1]�)[|'](]/_�-_�&[}']�+_�%[}+]~,]},]}&Xy+\}.^�0b�&\~-a�1c�1_�/a�+`�*_�,a�1c�7h�(]�*a�%]�)]�(\�+_�)Z{*Xz/a�.`�-a�0`�.\~-^.`�2_�0\�+Y}/]2^�5c�3a�-a�+a�(Z/_�*_�(]-]�1a�(]'Y|/a�2d�.^�3^�.^�-a�,^�/_�.`�+['[�&Xy,b�.`�2c�1c�)_�.b�0b�.^�,\�/_�1]�0^�-a�/_�0\2`�5g�2d�2`�1^�/_�,^�._�(Vz)]�-^�2c�0d�1c�5_�/]-[3`�*\�.`�.`�-`0a�3`2^{1b�'`{+b�2b�2b�1a�1a�+]�)_�,^�0`�4d�,^�.^�/_�/a�-a�2b�3d�2d�2a�2c�0b�3c�6e�/_�.`�/_�3c�,^�0b�4d�4f�2b�0`�2d�,`�*`�*\/a�/a�0`�1a�/`�/a�5g�Ky�Fq�3a�3_�2c�2d�4c�3b�-a�.b�.^�1_�4f�5g�2d�1a�4a�1^�1a�0`�4d�8h�5c�5a�3a�3a�/_�5e�6c�7c�7c�4a�.`�2d�0b�4f�4h�8j�6f�0b�1d�1d�6d�:f�8d�=h�9d�5b�4a�:f�6c�6e�5f�:j�4d�3c�5f�8l�l�9i�j�Bi�Cj�Ah�=h�j�i�Ak�Bi�Di�Gh�Ij�Dj�Cj�Dk�Cj�?i�Cj�Ag�@g�=d�>h�=i�=h�;k�9i�?k�Fl�Ad�Bj�>l�9i�>j�Ah�Ch�Cj�Di�Ak�@l�Am�>j�-Zy,Ww-Xx'Yr%Xs%Tr&Wu)Z{(Z}'Yz&Wu(Uv(Uv)Wx(Z{(Z}*Z~+Y},X{)Wx$Vq"Up!St$V{(Wu,Xq)Vs)Wx&Tv)Wy'Uw)Wy'W{(Vx,Yx+Xy(Yz*[|)Wx)Wy(Z(Z,Z~'Xx'Xx'Xv&Yv'Xx(Z}(Z)[~'Y~)[|'Zy([z'Y|*Z�*[�*`�)^�$Z|#Y{#Xw&Yx(]}(Z{'Xy'Xy)[~$X}&[})[~+[)Z{$Yy'Xx(Yy(Yy+\}+]~.`�)^�$Yx)Zx+\|*]|+\})Z{'\{)^~(Z'\~*\(X|+Y}*Z~,^�1b�/`�'Yz%Z|-_�-_�/]+]�)^�+]�-_�0a�+\|-^~'Zw)[~,^�+`�'\|&X{.`�/_�-]�,`�2b�/`�+`�*\})[|+]~*[|/a�.c�)_�']�0b�-]�-_�,a�-b�0b�2c�.b�+`�+\}.[|)Wy,]~,\�-^�*^�'\~$Y{)[|.`�+^},_~&\~*_�+_�-a�,^�)^�']'Xv(Zs*]|+\}-Y|)[~,^�-^�)a�,b�1c�)[~*\+`�+]�$X})]�.`�/a�,\�+[)_�%]~(c�)_�/c�*_�+`�*_�(]*_-b�0a�5b�0`�+]�'Yz)`~'^})\{+Yz*\#Y{&\~)^�-_�,a�*`�+]~*\}*`�+a�.`�-_�.^�(^�']*\-^-_�.^�-]�)]�(^�(\�/`�/`�*\}+]~+a�'b�,b�2b�/_�0b�0`�2b�)`*`�%^|%]~+]�)W{*\+[�0b�-^�,\�3c�3c�4f�0f�1e�5g�1e�/e�+a�+]�4b�.c�2h�.`�/_�.^�0`�1e�)_�*_�3g�.c�/d�.d�4d�.\~1a�1a�3a�2`�.`�1f�-b�3c�.`�-_�(]�*d�+c�-a�-_�,]}-_�,`�.c�/c�2c�-a�+a�*^�.`�,^�-_�2b�3`�/_�+_�.`�/_�-_�)]�1b�1b�,`�+_�5e�/_�1b�/`�1a�2b�2b�/c�.f�0f�0a�3e�2g�2g�1b�/b�1i�0b�5c�5c�5c�6f�6g�1c�:l�7h�3e�1e�1c�1c�0f�0a�5g�4f�.b�.b�2b�1c�0d�2d�3e�-c�+a�+]�(Z{,^3d�3c�2b�2c�-_�*_�+a�3h�5g�8h�:f�6b�=j�8h�8h�7i�:i�4c�4h�0f�7h�2f�1f�1b�5g�0f�1e�4d�3e�4f�7i�5g�0d�4h�3g�5c�7g�5f�4e�6f�2d�0b�3c�4f�3d�7g�5c�8f�9e�=k�9i�5e�4d�5k�/g�1g�1e�4f�1c�2d�/a�0b�.`�6f�8l�6j�8i�8h�6j�1e�5e�5e�5f�6f�:h�7e�5e�6h�0b�7c�2^�8f�8i�=i�=j�;k�8j�;g�9f�8i�8j�5e�5e�3d�7g�>j�9e�l�=g�=d�9e�>h�=j�;k�=m�Ao�?k�=h�@l�8d�=g�>e�?l�>k�9e�;h�>j�?i�@l�@l�i�:f�=g�j�?j�=i�;g�Bp�Aq�Aq�@m�Bn�>k�@m�Cp�?l�;h�=j�j�;k�Dp�)Z{(Yz'Xx(Yw'Yr$Vq+Wr,Xs,Xs-Vt,Us)Xv&Xq$Sm'Rr+Wt&Xq(Yz&X{(Yy,[y$Rs#Ux#Sw*Wv&Tn"Tm(Ws'Tu(Ut'Vp$Uv&V|%Vw)Wx,Wy+Y})Wy(Ut#Tt$Vy(Yz,Yx'Uv&Wu'Vr)Vu'W{#Zy%Zy$Zv&Yv%Vt'Xx%Vw)Zz(^v$\w&Xy%Y~#Zy#Ys%Wn&Xq#Yu(Yw-[u+Ys&\x%^|&[}+[)Y}*\}'Xx,Z|)Wy*Xz(X|)Y)Z{(Zu'[q"Vn&Ww+[,`�,b�+a�)^�,]~*\w-[|)Z{%Y~)Y*\*]|-[|,Z~,Z{.]{'\{']%Z|+Y{+\z%Wx*\})[~&Z%[$Z~*\+Y{)Wy&[{"Ww'\~(Z}']+]�*a�,]~-_�'Yz*\})\{-^*Z~*\/a�+^}*[{)[|,^�*`�,^�0\)^�+`/d�+a�,`�+a�)a�-c�,`�$\}$]{&Yx%Vt.a|-^~1]�/]�,\�+]�(^�+a�%[}'\|)^�'[�/_�.^�,`�*`�+c�'b�+`�.[�1]�1]�2d�)_�*`�+c�+a�-a�-c�'_�(]}*Z~+`�*_�2b�/`�-_�+_�'_�(^�-_�+]�-_�*\*b�*d�)g�(f�%_�,b�,`�*_�)_�-c�,^�0b�1e�/c�)_�'_�,d�-a�,^*_,a�(]-_�-_�1a�1b�(_�-b�1e�/c�2c�/`�+`�-d�,b�(^�*_-b�']0a�3c�.`�.d�0d�6f�3c�7c�4^�3e�0b�0b�.b�/c�0d�-a�/`�1a�3d�.`�2d�1a�-]�-^~'Yz-b�+`�1c�0c�+^}1c�6h�/f�0j�/i�6m�5f�?l�9j�2f�3e�2b�1b�(])^~8l�9k�7e�2f�2h�7g�;g�4`�1^�/_�/g�.f�5i�4h�8j�3d�7g�k�4h�.h�5i�4f�7e�8f�6h�.b�0d�2c�5f�3h�6h�8d�1_�0b�-a�3c�3c�8e�2b�1a�/]�3a�7e�5f�3d�2b�5e�4d�3c�j�5i�;k�An�Cn�Am�>l�6h�3e�1a�6b�3c�7g�>j�8e�;f�8b�7c�h�@g�j�j�:f�8d�4a�1a�/`�4d�2b�0b�+]~+]�)a�0d�4e�6g�5i�2h�,b�1g�;m�5f�0b�+]�$Z~-b�.`�*_�+`�5f�4a�/a�/a�8j�8l�7k�:j�;g�6b�/`�+]~,b�1c�3`�0]�+]�&[{)`+b�2d�2c�/e�6g�2^�6b�2c�0a�0a�5g�/h�0d�+_�0d�0`�3a�6a�7b�3e�1g�7k�3d�8i�8i�9i�8f�0h�3e�4b�2]�.]{6g�4f�2d�4e�9j�7i�5g�2g�1f�7g�5e�9e�,b�1c�3e�3h�.`�1b�8f�/_�1f�1g�9k�>p�5g�5e�6d�1b�,^,d�1g�,^�5b�4`�5a�3a�5c�3c�0a�4d�:h�l�k�;i�:j�:g�6`�7e�=j�h�8d�2_�.`�/a�2b�,\�7c�7c�6f�8j�9i�8h�4d�6h�4i�3e�8e�2^�6d�2b�1c�1a�9e�9c�3]�5b�2c�5e�0a�4e�6h�3e�7i�h�;a�<^�Ee�Di�@m�8i�9k�=i�:a�k�>j�7c�8d�:g�=j�;g�d�@f�Cj�=m�7h�7f�9i�:g�6c�3a�1b�3d�;h�?i�Cj�=d�9d�8d�;e�8c�9c�6b�8d�7c�7c�;g�6c�:j�8h�:f�k�=i�@h�Bh�?e�?f�?i�?i�>h�j�>h�f�@h�Ek�þ���ļ��u��4^l(Tq+Ro+Sm*Qn'Sn&Uo%Tn'Ts)Vw%Vt%Vv!St&Rw,Xu%Tn$Us(Uv(Ss%Rs$Tx%Vw'Uo'Vr!ToUo"Tm)Up+Vx-Xz-Zy)Vw'Xy%Wx"Ur"Up$Vo(Ur.Wu*Wv&Wu&Uq)Wq(Uv*Xz%W|']�,Z{&Uq#Up#Vq!Tq#Tt%Vw(Vz*Xy'W{%U{%Wx)^~'\~(]+\|-_z*_~'[�,^�+]�)[~*Z~-[.[�+`�&]|)[~*\,^�-_�+\},Z{/]~-]�*_�*a+a}+\})V})Y1_�-[|/`�+\|,_|*]|)^~'\~0b�*\})[|&]|*_�)]�(]+]�)[|)Y}*`�*a�)b�-b�1c�*^�,e�)^}.\}-^+]~+]~'\{(Yz*\}-b�.`�-^*Z~1a�2b�-_�1c�.^�._�-_�)`)`*_.`�/_�1a�,`�0b�/_�2b�-c�*b�)^~.`�._/b0c�-_�.c�.e�,f�'a�)_�-a�5e�8e�5f�7h�3g�6j�3e�3e�5g�2f�5i�0g�+_�/a�.b�/c�0e�.d�2f�4h�.d�0f�)_�(]}.`�-_�*_.`�-_�*\�4d�/c�-a�-a�0b�2c�3e�/e�4j�.b�/d�&[}0d�1e�-]�*Z~*Xy1a�-c�(b�+a�,^�-^1a�+\�,`�.b�,^�,a�,b�,b�+e�/e�)[~*`�0e�+c�']�,\�)[|)[|*[|3a�6d�8j�1g�)_�0f�-c�,b�+`/e�+e�)`�-a�*^�*_�/e�-a�-b�(_~(]}.c�.c�0b�/`�1f�.d�-h�/g�0e�1c�/a�/_�5e�*Z�-^�/_�.d�.f�/g�0g�5j�2c�4d�6g�5f�6f�1c�.d�-h�*b�(^�*^�+\}+\|'Yz4f�,`�)^�&\�+a�-a�*^�,b�*`�/c�/e�0f�/e�.d�1e�0`�0`�8f�4e�-g�/g�0e�.b�/e�/g�/g�-e�%[�.b�3h�3g�.f�1i�6l�1g�4i�6h�2b�3c�5c�5c�5i�1g�6j�9i�7i�6g�5f�5f�4e�2f�4h�:l�0f�,g�3h�j�=j�9j�6h�0d�4j�;o�>n�9h�5i�8h�8d�.b�2g�+`�4f�2j�1g�2c�.b�,c�-c�+_�7h�6f�8e�4d�1e�/d�8h�8h�;k�j�5c�=i�?f�9f�5f�1f�2d�5c�6b�5]�;c�=g�>h�>f�8f�9g�i�Ag�:f�5e�;h�;k�8g�9h�:e�Di�Bm�El�Kr�Ej�Df�Gj�Ci�Ci�Bh�?f�>f�Ž�Ǿ�������u��3]k3]s8\r9bv0]r$Vm$Vo%Tr)Tv%Xw(Vx'Vt&Wu$Vw&Ww*Wx,Tw0Tt0Wx)Wy'W}/Z}0Wx*Yw&Xs&Uo(Ut"Ut%Vv+\|'\|%Z|(X|&Xy*Yw+Ys&Us(Z{"Ww#Y{)[~(Vx)Wy*Z~'W{(X|*Xy*Yu"Sq'Xx&Ww(X|)Y*Xz(X~,Z~,Z|'Yt,[y.Yy-\z([z+Zx)[|&Z*`�.^�'Y|*\/]2_�,b�(^�,^0^/`�1a�.`�)\y,^y/]5a�._�,`�+_�.^�)]�'_�&^'\|'\|$]{$Zt&Yv&X{)[|)Z{)[|+]~/_�-]�,a�(_~,_|)\y%[w'Yt+Xw*Xz-_�/`~,]{)Z{&Xs(Yw#Zx$Zv.Z})Z{'Y|(Z},]}-\x+]x(Z{(^�$Z~/c�,`�%`�&^�+]�/[�'\~,\�(]}(]'X�,^�*`|+^y-^~*Z�,^�+]~)a�+b�.`�4a�,a�-e�+a�-c�0e�,`�/f�2h�.b�-c�*`�-a�0b�.b�5e�6d�0f�*b�+`�.`�+a�,d�,b�)^�(\�)_�'_�,d�0d�0b�*^�3c�4a�0^/_�._�3h�3h�.d�'b�%`�)^~,a�.d�2g�2g�3j�/g�6j�3g�6j�1f�+`�-b�,b�(\�/c�0e�1e�2i�/f�-d�0f�1g�+f�/g�-h�'b�-e�*^�-b�.c�-a�3g�2g�0e�-a�.^�%[%a�)d�.`�.\~-[)]�-a�(a(c�+c�,`�1a�2`�,^�(]|+]v1_y+ay._}-b�,c�2d�2c�3a�/`~(a(d�0h�4f�1_�4b�8h�3e�1i�5h�.`�/c�-a�/c�*`�1g�*`�+]�3e�/c�0f�1c�.e�-c�3d�1g�2d�+_�*b�-c�7h�7g�6g�3d�)]�.d�2h�0d�9k�2b�0`�)d�&[�+a�*c�)`~.f�/g�1e�5g�0e�3h�1c�3h�,^�0`�3e�6f�7m�8j�9f�4e�7d�5`�*^�-e�(`�,]�3`�3`�9g�7h�5g�3i�.f�1i�5k�2f�-a�/c�0d�:g�=i�o�9j�8i�:n�j�9f�4e�0e�8l�2i�4d�8d�=e�=h�@g�>h�d�:e�=k�>h�>e�9c�=d�;a�>e�;g�:f�:d�?k�Cq�?m�@j�Ci�8f�9k�8i�8i�2b�5g�9k�;g�=d�:e�8d����������������w��Xp|hs�w~�s��Ms~4^w0\y+Vv&Xs)Vu*Xz)Wy,X{-Z{'Uw&Sz*Vy,Yz%Vt#Vu+Y{,Z|+[�+[�.\�0\2]�1_�*`�*`�,^�/]�.\~,Z|(Z}(](^�*^�/`�-a�(\�)Y*Z�(Y�(X|)Wy*Xy%Vw*Yw%Vv&X{,^�+]�'\~'[�(\�%Y~&[}%Wx)[�*Z�.\~+]~&Z)[�/a�)]�(\�1`�/a�)_�*`�&[}+]~/]/]*\)]�']�)a�)_�-a�/`�4e�.c�(]�+_�0_�2^�5c�1d�)^}%\{)^},b~+`�+a�-c�.b�1e�/e�+b�,_|&\x$\w(Zu,[w+[+_�,^�*\*\�-^~)Zz)^�'\~(Yw(Yy1]�-_�%]~'\~-`,^)^~-b�+b�(`{*`|-^.[x2^{,Z{+\|&_|-b�.\}.]y)[t*Ys)]u']y)^~.`�.`�3a�.b�-c�-_�)c�'_�*a�*_*\4f�0d�/f�4k�+c�+a�-_�5e�0b�/d�(^�1c�8f�4`�)[~/e�+f�']+]~,a�+c�,d�.c�.c�)_�(_�'_�/c�8i�2c�0d�*^�2f�3g�.d�0d�0d�+a�0f�2g�0f�1i�(`�/c�.a~'Zy/c�6l�Aw�@r�6j�>o�Gt�Iw�?p�7k�3e�3e�-a�)a�0d�,\�+\}+]�%Z|+_�+a�0f�3g�4h�4i�-a�+a�0h�2f�/d�/e�(^z(]}*_�,^.a�1f�.b�0e�1c�0d�*b�/g�1h�-b�3c�2h�+e�+f�,d�)^�/a�3e�2f�0g�.f�1g�2f�-c�.d�/a�0b�-b�2h�1i�.f�3i�4h�/d�.d�0d�7i�3g�3i�,b�1g�/d�4f�0b�0b�1c�4f�3e�2d�1g�,d�0f�2f�+c�+b�.d�/e�-c�0h�1e�1e�2h�3i�4j�3i�-d�1f�/c�+`�.c�4f�8h�5g�2j�7h�4l�5m�4h�>o�3i�/c�0b�1e�0e�2g�3h�4e�3k�6l�5g�3a�4h�1f�6m�-e�.f�.d�/e�1i�8n�7h�0e�0h�4h�9j�3g�1e�+a�2g�1g�.b�3i�.f�7k�6h�6j�9i�:i�6e�;k�9k�k�6c�2_�4d�6f�3c�4d�7i�6k�6h�8h�i�8g�1e�1b�9f�>j�j�;e�=g�6`�0`�/a�3e�6f�9g�>e�6c�5a�8d�9d�8d�9d�6b�9f�7d�h�?k�Ht�In�Jm�?g�7g�7c�8c�:e�6b�9f�8d�;e�@h�Bj�@k�������������������mvsmqzmq|���������>dw,\�+X(X~(Yz+Y}0\�.Z}.\�-Z�+X(X~&Ww&Ww(X|+[3`�-Z{+Wz.Z}.\}*[|&Z&Z)]�*^�)]�(\�%[%[,b�'_�*_�._�2b�2b�,`�']�%]�'\~+]�,\�*^�*`�%\{'\{&Wx&V|*\(Z'X�(\�)_�*`�(\�'[�&Z�)]�&\�,`�/a�/a�2c�2e�2e�/f�*d�,c�'^�.c�+_�)^�)^~0b�0`�4f�*`�+`�/c�.b�-_�1a�0^�)Z{)Y}'Xx,Z|,]~(]}(^�-b�0b�,b�-e�-c�*d�/e�,b�%_�']�/a�.`�-a�,^�/_�3c�-_�&]|&\~)^}(Z{+]�*[�/`�-c�,b�+a�)^~)[|-_�,a�(_})_y,_z-^|+\|-_�-b�)_�*b�#^|'`}+b�+a�+`�0a�*^�*`�&^�,b�,g�,g�.e�0a�0b�+]�.b�,`�-b�.b�-b�+_�'[�,^�*\�/_�.`�,`�(`�+c�-b�*\}'\{)\{-^+['_�(b�.c�/`�.b�0d�4e�0a�,d�.d�*`�/e�/c�/c�0d�0e�2g�2f�0f�-c�+_�2f�>n�j�8j�6j�=o�:k�6h�1e�*^�.b�/_�2b�7k�Ao�:j�8i�6h�3g�3i�6g�5b�4d�1b�5i�3g�=l�?k�=i�8j�6j�7m�5k�;l�9j�i�Ak�=i�8g�:g�9j�l�:e�8f�2b�9e�k�=m�Gx�9q�3k�1f�3e�(])`.a�,]}*a�,b�2c�4c�4e�6g�3g�4l�/d�,`�'\~*\�/a�0b�0d�4i�5k�4i�-b�([x'Yr#Wo&^y*\+[�0a�-b�2d�2g�/e�1i�1i�3g�.a�1g�/e�0h�*b�0j�/g�-c�1g�4i�/c�-a�1e�5g�5g�5k�2f�8h�7g�8j�7i�8j�8h�7g�2c�3d�9i�n�@m�9i�7h�8l�5i�=l�8h�j�?l�m�:i�?k�Ho�Ak�@j�Bm�i�;j�?p�h�9f�6h�6k�2f�9k�6h�8j�6g�4j�8i�4d�:i�j�>k�;h�l�;k�9i�Bm�Eo�=j�=g�Bi�;e�;f�Bk�@j�>h�>i�7c�;i�:f�=h�@k�?i�=g�Al�:f�6f�7d�9g�������������Ĺ����������mi`������������?_l.Yy/\})[|%Wz(X�+X�,Z~+Y}*Z�'W{(Z)[�'Y|/\�.b�,f�(b�/d�1b�2b�5b�2_�3a�4`�/a�.b�(\�*[�*Z�'Xy*Xz*X|,Y�0`�0^�+[�*^�)^�0c�0c�*d�,h�/f�2e�4e�/b�/c�1e�-a�/_�0`�3d�/c�0d�4e�4c�6j�3g�2e�/c�-b�(^�'\|(\�-d�1f�9j�3f�4i�2h�0d�3g�6j�5i�9j�6g�3h�4e�,a�/e�8l�0f�0e�1e�1b�0d�6g�7g�4d�4e�5g�4h�1i�7h�5g�1c�7g�8e�6g�.b�2c�0a�/c�/a�-a�3g�7j�1h�3i�6f�0e�3i�4e�.b�-e�)e�+g�0f�5i�5k�2g�.c�*b�-e�2f�3i�4l�2j�2h�0d�1h�.f�*b�.d�.d�+c�(`�/c�8j�5g�3e�/c�)]�1e�-c�0e�7i�;i�8j�9n�Cu�:p�3n�9u�5l�5j�:n�4j�6m�:r�/e�-c�+c�/e�0f�.d�0f�1g�0d�0b�6h�3e�)]�(\�-c�0f�.`�+`�(]-a�3e�2d�1h�,f�0g�3h�6k�1i�,h�3j�0d�8l�2f�4j�3j�3l�)e�(d�.f�/e�/e�5g�/c�0e�/i�3k�3h�3g�1e�-a�6j�9i�9f�8i�6j�5i�5i�0d�1e�6h�:j�9k�3e�6j�.c�2g�3f�3g�5i�4j�1i�5l�6p�0f�1f�6g�1g�/i�.e�+g�3k�3g�.c�,a�3g�0b�0a�2c�.`�5j�+e�2f�9i�6f�8i�9m�:p�5k�6m�@v�?s�;q�-g�0g�8j�>n�:j�1e�7h�6e�,`�3h�6i�>o�:n�0e�4j�1c�6l�7o�;o�>s�?p�Ar�Bv�5h�0d�1f�3m�4n�9n�8k�6f�7g�9i�=m�5i�3i�3e�6f�/f�0j�;r�9p�;o�n�;l�9j�9m�5i�6l�:k�=n�=r�=t�8m�o�s�At�:m�9n�9n�>k�Ak�:j�;q�n�=o�5e�4a�0e�)a�/e�2g�5j�;l�=i�9f�9k�=q�9j�>j�8i�0f�4j�3g�3h�0f�3d�2b�9j�=m�.b�1g�;m�8e�8e�:g�m�;n�:n�=m�8d�=i�:j�j�=i�:g�:j�:j�8h�j�9j�3g�9k�9i�4d�4d�5c�3c�=i�?f�=h�h�=h�����������̺������������]_R}rl��v�~s{�zA\o1Y|.X~5[�6\�9_�;a�3b�0c�5f�1^�0a�5f�0`�/^�1e�)]�/_�,^�-^�0a�2a�/_�,`�.d�)_�0h�)^~#Tt&Yx'Xy*[|,\�&W._�.d�*^�3d�1e�3f�4e�9i�9m�o�o�Bo�It�Fs�Br�Ar�m�=q�;k�:j�,c�/e�Dq�O|�=q�:n�Fv�Hu�;m�7k�n�Bo�Bs�N~�Nz�Lw�M|�Bq�Kz�:k�p�Ew�Cu�Du�Cs�Br�Jz�Br�?o�Bo�:k�;r�?s�Bu�?s�;p�@w�Bw�>o�@r�9m�Aq�?o�:n�:n�Bt�Jv�Jt�Ap�?s�>o�=m�@p�Br�?o�?n�Bm�Bn�=o�p�@m�Aq�?q�;m�?o�:j�;l�Bt�@p�Cp�Ht�Kv�>k�Aq�?o�Bt�Dv�O|�Is�Fr�Cr�?p�Dt�=n�*^�4j�;h�3i�5k�7k�,`�0b�7g�5j�4j�;l�9h�9i�5g�8m�>r�Hx�Cs�m�Ap�Cr�;p�=q�Fu�Bm�@q�@q�>r�Cp�Bm�Dq�Eu�Aq�@q�>r�=q�9m�k�Cp�Er�Ap�Ly�Gq�n�Et�Ct�Cr�Dq�@p�?n�Bo�@j�Cn�5f�:l�Bo�Ak�j�j�l�Co�?j�n�@m�Aq�@n�Ah�>h�;g�i�=h�9e�3^�1`�2b�5d�/b�-b�.b�/c�+_�0a�.a�-a�*_�3_�1b�/c�+`�/c�.e�(b�*_�+^�2c�3d�5i�3h�5o�3n�7l�8l�4i�4h�5f�0c�1f�0g�-h�+f�&`�,c�,f�.i�1h�5i�4h�5l�:n�8m�4j�7j�9i�7h�2f�;l�7h�3g�7k�:n�5l�7j�?n�Ap�=p�:o�:o�4i�6k�4i�4j�6j�5j�5l�5k�5i�;n�9n�9r�7o�:o�r�;p�;s�8l�p�:o�2j�4l�>t�9m�9m�3k�3g�9o�7o�4n�3m�9o�>r�>o�;o�o�;l�8l�4i�3m�/f�2f�3i�9j�;l�-a�,`�5i�1g�4l�2j�7s�4n�3j�3j�0f�,a�5i�6l�4k�=r�>r�?s�=r�;p�>r�x�2n�)e�/g�0e�3i�0h�-e�5i�8i�1b�2e�3h�7j�3d�,`�*b�,d�.d�2f�3i�5k�3i�2g�2g�2d�7g�3i�2h�4f�>k�:k�?s�9m�7h�7e�2e�.f�0f�1g�/g�-a�2d�/g�.g�/d�*_�+c�,b�3g�1e�/e�3g�*`�0e�6i�7i�=m�=o�8m�@u�?s�Cs�Jv�:k�?s�@q�9p�9n�:q�@w�>t�?u�n�:l�8n�?u�Gx�Bs�Au�Ev�T��Kz�Hw�Dt�Fr�An�=n�Ar�Aq�Ar�Ez�Dy�>r�Au�?v�;r�?s�Fw�Cr�@o�@p�@q�5m�7m�6k�5j�7j�5i�6g�:i�>o�5f�;o�;o�Cr�Cv�Bw�6m�6k�:n�n�Ew�;k�8m�n�:j�=o�Dr�^�=^�7\�4[�7b�5`�:d�7d�6f�5`�2]�0]�8a�:e�8i�7f�7h�6f�6e�q�?r�:p�;p�:p�;q�@u�Gx�Bu�9r�:o�:k�5m�7n�:p�5i�5g�6h�1g�4i�4k�4i�;l�;l�:j�8j�m�Du�?o�8l�+g�/i�2i�:o�9j�Cp�>n�;o�>o�Aq�@t�?s�Dt�>r�>s�Ct�Dq�>m�6n�6g�An�?n�k�;k�3i�8l�9m�3h�7l�=n�6g�0b�3d�:j�7k�@t�Bs�=n�Du�q�@m�An�;l�;o�>r�@o�>j�@o�=n�@t�?p�Fv�Iv�V��Ou�Ho�Bs�=s�:q�>s�Ar�Bs�Bs�As�Dv�Fw�Ix�Jz�Hx�Jz�Mz�N�T��Er�Ar�9o�Br�Bq�@u�5p�8n�>r�Iv�Nt�Ep�?n�>m�Bl�Cn�Bu�Ev�Iv�Hu�>o�Cp�Gs�>k�5f�n�l�Ao�@p�;l�:l�@q�Ck�Dp�Ct�Fu�Du�Cr�=m�@j�Dk�Do�o�Bs�Er�Cp�Bv�@p�Eq�Nu�Hs�Gs�7c�=j�Lx�Is�Eo�Bm�Bo�Dn�Hr�Jw�Fu�Et�Fs�Gt�Co�Bn�Dt�;l�Bo�Cp�Is�Is�Eq�Fr�Is�Ah�Dn�>n�?l�Bd�Ii�Mk�Ig�Ei�Be�;a�?e�:a�0[�3^�1[�.Y|0W~2Y�1Y�9d�9d�3]�3]�2a�3_�7a�8e�2a�5d�4e�3g�4c�3_�4d�:i�4c�._�-\�.Y�/\�2c�-d�+`�2b�7h�0i�0d�8h�2h�(f�,b�1b�4d�7f�@o�:i�?o�=r�?s�:n�5j�/k�0j�6k�5j�4h�8i�5j�1f�2h�4j�?p�Bq�q�?t�;r�;r�?r�>l�9l�4i�;n�Cs�Cp�Ct�:o�9l�@o�Ap�:k�Bs�>n�;l�2l�;p�7k�9m�7m�;k�r�>t�7i�.b�6g�9l�;r�6j�6e�Ap�?o�Ar�Dt�Eu�o�=n�r�6j�=m�=n�?l�t�=r�:p�9n�/i�2l�7l�?s�s�Ar�=r�4p�@v�Hx�Gs�9g�1c�/d�:m�8j�Bs�t�M|�Kv�Jz�Fv�Fv�@p�6g�:n�,c�2g�:p�7m�8o�u�7q�>u�G{�Fx�=q�>r�>s�8u�6m�=u�;p�o�6h�9i�;g�=i�Hs�Et�5k�,b�7k�=q�3j�5k�=s�;o�k�An�Eq�Jv�@p�>n�s�Cs�Bo�An�Gt�Jt�Ct�7p�n�Aq�?p�Ap�?k�Am�Co�Hs�Hs�Gs�=n�?o�=j�Cm�=j�Fs�Fs�Fq�Hw�Lw�Dk�Ak�>k�Ep�Bl�Ak�Fp�Ht�Es�Ht�El�Fq�Br�Ip�Kq�Hs�Iy�Gt�?p�3^�:e�5b�4`�2^�2^�-]�,a�)^�%[�'X�,W�0V{2W�1^�8d�?l�=j�5d�5e�5h�;n�3f�6g�6f�4d�1f�6j�7i�0d�/f�8k�7f�8g�1e�/c�.c�-b�1c�0a�/e�/g�*`�,`�4e�0e�-h�-g�-g�2g�5f�1e�.b�3g�6j�;l�>o�;n�6o�:o�o�;n�;o�@u�;r�5m�9o�;r�8q�6m�;o�=n�u�5q�9p�;o�?n�7k�.f�-g�0h�9m�9m�7k�9n�8l�7k�>q�9l�6p�+e�1h�8l�9n�6n�3k�6m�5j�s�=p�Ev�J{�Fw�@u�@w�>t�=r�m�9n�.c�=p�>s�>u�:p�;o�;r�=q�4l�2l�:q�Ey�Et�r�Fw�Bw�?y�8o�;p�Bu�r�?t�?v�9s�o�Ar�;o�4p�.j�2j�6l�9n�;p�9i�@o�>q�5j�o�?r�r�:o�9m�;k�=m�>n�;l�Au�?s�@u�=s�9r�4n�Au�Cs�Ar�Gr�Cp�@q�Cw�Ev�Cr�Cs�Ey�@u�q�?w�Ar�?s�Gx�?p�@t�?s�Bs�o�Gx�Q|�Oz�Fu�Dx�Ix�Iz�Ev�Du�7k�0f�1g�5j�@r�?n�Et�Ju�Is�Gr�@m�?p�?q�=t�?r�=m�>o�?s�@q�Ap�Et�Ap�Jy�9l�5i�7j�=i�+_�5e�@m�j�>k�;j�7j�3h�4l�5i�5d�4`�0e�6k�4h�6j�:k�:i�6i�2g�1h�1f�.a�1e�.b�/b�-e�3k�/d�/f�0g�5i�2g�/i�/f�:k�9m�3h�2f�8i�8g�;g�7k�4k�3m�6j�5j�6i�4h�4i�6k�0c�4i�6k�6k�8k�7k�:i�5i�9l�q�s�Fw�Dx�:o�9m�Bq�=p�9o�5m�1h�.e�4k�2i�4j�5k�3g�5i�3j�(d�-g�8l�9n�6l�9m�r�6j�9j�8l�8l�8j�:l�7i�:l�:n�:n�8l�9l�@s�/e�8m�;n�Ar�At�?r�9l�7j�8l�:k�:i�6i�9j�t�9o�8k�m�Bo�8k�5l�8n�8l�:n�7k�:j�/c�=o�?k�4d�9g�5e�3e�3g�5i�:o�Ar�;p�>s�Ar�>q�7h�7i�1f�,b�-b�-a�-c�7m�2d�-_�)^�*_�0e�3g�4e�6g�7k�8o�6k�;o�=q�9p�m�9m�=q�Bv�4j�8j�@t�;p�:q�@u�?s�s�Gv�>k�An�8l�5l�;p�@u�?s�Ev�Fu�Fu�Hw�As�Cu�=q�>r�Gx�Iu�Hw�Fv�Hy�@q�Du�Iy�U��V��T��W��N}�My�P}�Q��Fu�Gv�Et�>n�>p�>r�Bv�>o�@q�Gt�Iv�Ap�@u�Fz�Dx�?r�:n�;o�;o�>q�>o�Gv�Cp�Er�Cs�@m�?k�Eu�@q�=p�Ar�Dt�Br�n�5k�6l�@q�Bo�7f�Al�Ap�Ar�Br�Gv�Lx�Fu�Hx�My�Nx�Rw�Pv�Dq�Bs�Gv�Iu�Ap�=r�5j�8i�;j�>k�Co�>j�Jx�Mz�Hv�6d�:j�;l�Fv�Hu�;k�=m�>n�;l�?n�Gt�P|�Y��T~�Ly�Kx�S�T{�Lv�X��Z��Ls�Lx�Ku�Ry�Nx�Nx�Eo�?k�Bn�Cn�Gq�Al�7d�3c�3_�5^~2[{5a�4`�6`�?g�Al�Cp�?p�k�Fq�Ov�R{�Py�S}�Nu�Lu�S|�Ty�Sx�Qx�T{�4a�3d�/f�3g�8h�7g�4d�0b�,c�/b�2b�6f�4g�/b�0a�.b�0c�1b�:i�6e�6e�7d�4c�3d�/f�1f�3d�3d�4i�5j�6g�7h�7h�6j�6i�8k�9n�9n�6j�/a�.`�%Y�(^�*_�/e�1f�9m�>r�8n�3i�8m�2i�3g�:j�:n�7m�4l�0d�4c�2i�0c�2f�2h�1g�5o�6m�2i�1k�5l�r�=n�Ar�8m�9p�;p�9n�2f�>o�Aq�?u�s�>s�=q�Au�Av�n�>p�/a�/_�2j�,k�9n�;p�s�:o�Ar�4h�-a�2d�6l�.f�2h�'_�*b�6k�1e�2g�*`�,b�0h�1h�5j�8l�7m�Bv�Ev�>o�7h�?o�Cr�?p�=n�>q�@s�Au�Ct�Jy�Ix�Cx�G{�Du�3g�6k�:o�>p�9k�7k�=q�?p�@s�=r�5i�6j�6g�0f�;k�9k�5b�9j�>r�p�Cp�:k�Cr�An�;o�7k�=t�o�Dx�>r�=q�Ct�Hw�Fu�Bq�;k�?n�Ar�8m�:o�Gw�My�R}�R}�Gv�=q�k�=q�@q�k�5c�1a�9i�Am�?k�=k�9e�9d�7d�>i�Ci�6c�j�?l�Fs�Eu�k�@l�?p�Ju�Mw�Kv�Fs�Iu�Fr�Fr�Gt�Dt�?n�:i�;l�Bs�Iv�Fp�It�Mw�Kw�My�Hs�Eq�Bq�Ap�Bs�Ar�Bs�Er�Gq�Ku�@k�Cm�Eo�;h�>l�Am�Kr�Pw�Or�=m�;l�8o�o�;p�=p�8k�6l�7r�0k�/f�.f�0f�4h�8l�9n�6k�3h�6j�6h�3i�.f�&`�+c�)]�(^�-d�'\|1_�.Z�*^�#Y+_�/d�.a�/a�/a�-a�-d�4k�8l�5i�1g�4h�7g�;l�7j�6i�:p�9o�8l�>r�Bs�Et�Er�An�9j�3g�5i�6j�6j�5i�0e�7g�;k�7g�=s�t�1i�-g�3j�8m�4i�3j�6k�n�8l�6l�5m�/g�5j�;i�:j�5f�:o�:q�6r�8s�6n�:p�0d�4h�3g�1h�6q�4o�6p�;p�5l�0e�5i�9m�5j�4j�7l�o�?q�8l�9n�=q�Cs�Gv�>o�5i�2h�8n�6l�3i�6j�2f�1i�1i�6j�>n�>r�9p�9p�>r�:n�7k�5i�;o�:o�r�;o�>o�Cp�o�=s�>s�Au�Bq�Cr�Bs�?n�Bm�Gq�Dp�Dr�Iy�Ar�Ap�>o�=n�=o�;m�Cs�9j�7m�7m�6h�2b�/e�7k�8h�2c�;k�Fv�Jw�=j�=m�Ar�8k�7l�3i�3h�0`�.^�;k�Bn�Du�Ap�Bq�>m�5m�;o�o�Cs�Er�Dt�@m�Cs�@p�;l�=p�:m�8l�>o�6j�Dt�Jw�Br�K{�Hs�Ku�T{�Ny�Kx�Kw�It�Kr�Jp�Lx�Hu�Hs�Ct�Dt�Lu�Mx�Mx�Er�Dq�Nx�Ou�Kx�Do�Br�Gs�Lz�Oz�Mw�Ov�Rx�Mt�Pw�Lr�My�@o�Dq�Dp�Lx�Kv�Ds�Dt�@m�Ak�Fr�Kw�Jt�Ku�Mw�Q|�Kv�Gs�Ly�Gr�Gq�It�Hr�Gn�Kn�Hn�Dj�El�Am�@p�Dp�Ar�Ev�Hy�Jy�Ds�Ct�Cr�Ds�Hs�Lu�Cq�?o�o�8k�8k�?n�>l�;k�?o�@p�;p�n�>m�;k�=m�=q�@q�Ct�@s�s�=r�;p�s�:n�:l�9m�At�9m�:n�6g�5e�Ep�Bp�8i�8n�3i�8l�6j�5f�8l�6m�:q�@q�?p�Ct�>o�?p�4h�6l�9n�8m�:o�>q�Bs�=n�9j�;p�>s�s�t�>q�>o�:o�9n�?t�>r�?q�;l�9m�=n�;k�@p�?q�=o�3h�3g�7h�:k�6k�8m�5l�7l�8i�;f�4d�3h�1g�5j�4n�2l�9n�9j�1b�+]�5i�4h�4j�6l�1e�+]�1c�0f�3h�3h�7m�;m�Dq�Bo�8m�8r�Av�:p�6n�7l�9p�3m�5l�?o�?s�9m�6k�6m�8r�Bs�;p�p�Bt�7g�4d�6k�5n�9n�6j�6n�6n�4j�9m�>r�o�=s�4h�6h�4h�7n�7k�;i�Cn�=m�:o�Dy�Gv�Fu�Cs�@o�Fu�@u�t�Bs�Du�An�=l�;p�:p�7n�9n�;o�Au�At�@n�7g�5m�8n�Bs�Ap�?p�;j�6d�3d�3e�3e�5i�7k�8i�;q�Ar�?s�Ct�Et�Er�Cr�@t�8m�,d�)]�0b�6g�>k�Cu�>t�=n�>k�1d�3b�/[�*Z~.b�1c�2d�/e�1g�>o�=j�Ap�=q�?o�@p�=j�7k�6j�3g�8i�k�An�:i�;l�=o�6h�2g�7o�9s�=u�@t�Cr�Au�Cx�Dx�Ly�Nz�Lx�Mt�Gq�Hs�Ep�=m�@p�Nz�Ju�Fv�My�Hu�@o�=n�Ak�Fm�Bi�=h�l�:l�Bs�Hs�Cn�An�Iy�Hu�Mx�Et�Hw�Kr�Jt�Ev�R}�Pz�Ry�Tv�Ps�Hm�Cj�Ip�Hp�h�Dp�Ep�An�Aq�Dn�Ak�5h�9l�n�;n�:q�9n�;o�s�>s�@s�Ds�Et�Bq�:m�:o�:n�:o�;t�:s�m�>o�=m�>k�9j�9n�7j�;j�9l�3g�9m�r�;k�8g�;l�o�q�Hw�Ds�=r�Ev�Ev�=n�Au�Bv�Au�Au�Av�I~�?t�:q�:q�Bs�Ap�Ev�;u�:p�4j�-b�(]�+`�8l�?t�:q�8o�7q�6p�Ay�?w�:t�2l�5j�9k�?m�Ht�Dq�o�8l�9o�:r�Dz�Aw�6j�3g�=t�o�Bv�=r�?v�0g�7n�>t�?p�9i�;h�>k�8g�9m�:r�>n�:g�7e�1b�-b�-e�9m�:p�9p�8n�Ar�Gt�Eq�?q�:o�8j�8j�:l�9m�9m�6k�8m�@p�Fu�Eu�Ix�Ou�Iv�Au�Dv�Ar�@s�Du�Cp�>j�6d�:h�4e�6g�@p�?l�=n�1b�2`�:e�9k�:p�k�@l�Dr�=q�8l�7h�;k�Br�Br�=j�Ak�Hn�Fv�Fv�?l�9j�;l�2f�3h�9n�@r�8i�7k�9j�:l�:n�=q�q�9l�@o�Ap�>o�8l�9n�9n�=r�?t�?s�=q�Gx�Ct�As�Gx�Du�Ap�=n�9j�2f�6j�:p�7l�2h�2f�/d�2d�/d�0e�3d�5h�2i�5p�'c�/i�s�t�=p�7j�;l�:n�=r�>s�Cv�3h�=r�@v�>t�Aq�?r�Ct�Kx�Hx�P�Fu�Dw�?s�8l�Gx�N}�Gv�Ap�Ep�Hq�Bn�Ds�Ly�T��M~�F{�P��U��Mx�Kz�@s�8n�/c�6h�6h�2d�7i�3f�;p�>o�Ar�Cw�O|�N{�Iu�Fv�Dv�?s�n�Et�Gv�Fs�Jw�Lw�Hw�Au�Et�Bq�5j�-i�.i�.d�1e�1e�0_�4d�0b�2g�9k�5j�4n�@w�>r�o�6j�:k�Bo�>k�:j�4e�k�?l�Cr�Ar�6g�,]�0`�/]�/_�6h�Ao�@j�Ah�>h�m�?n�Ct�Fv�Bq�Gs�Lw�It�Eu�Cq�Co�Jv�Q}�Fs�Dt�Fv�Gx�?p�=m�?n�Bq�9h�3d�3g�r�k�;h�?n�?p�7n�9n�=p�At�:q�3h�-b�/e�,d�,c�1k�2h�*\$Y{%[8f�?l�Fw�;o�9k�o�Ey�Du�Av�;p�Au�Hy�>r�3g�2i�.h�8l�6i�>s�Bs�:n�8n�?s�Dx�8o�3m�=q�9j�5i�6g�0b�3e�9n�;l�m�?p�8l�7l�7l�>q�?p�Bs�Bs�Bq�Et�9m�2h�/e�.i�=r�Ar�;l�:l�=k�Am�Dp�=n�/c�;p�6g�=n�8m�;o�7k�.d�1e�0f�8h�>k�:n�9p�Ar�Fs�Lw�Fs�?n�9j�1k�:p�1g�?q�>r�?o�@l�=n�9m�k�1`�*^�8m�=q�8s�0g�7m�8l�;n�:o�;l�Eu�Ar�;o�5i�Au�Cs�>n�7h�/a�8m�>o�Jw�Jv�:h�=o�?o�Ct�=n�t�t�=o�7e�3g�3i�0h�4k�7l�=s�Ex�Ct�Br�>n�Ju�Fq�Br�i�?o�Fr�Bl�>n�o�p�Hx�Bo�Gq�Fp�?o�>n�An�?l�>n�=m�@m�Bn�?k�?l�=l�9h�i�Bn�:e�p�>o�o�9n�3m�6j�?l�@m�7g�Aq�@t�Cw�Ev�Fv�Bq�s�u�>u�;o�8l�7q�s�Av�v�@t�=q�=q�>o�s�Bv�E{�m�l�Dt�Iv�Lw�Dq�>s�m�=j�Ht�Lx�Lz�Er�>j�@l�Ju�Ls�@m�Co�El�2f�,`�.d�-`�4e�3e�:f�9e�1g�6c�0a�+a�*^�+_�1a�2_�)Y/`�/^�5b�3d�1f�/e�0f�3g�3d�9i�2f�1g�1f�/c�/c�0d�/c�3d�5b�4b�/_�0d�,b�-b�/c�.e�4e�1e�.c�2g�6g�4h�4h�1d�6i�4h�5i�2f�/c�2f�7k�;o�8l�8n�5k�4e�5e�4h�1e�3i�1f�5i�6h�1e�2h�8l�6j�4i�9j�=n�?p�;q�9n�;o�1e�1g�0g�4j�2h�3m�4k�1e�5i�0g�.h�;q�;o�;o�m�>m�Cp�?s�4i�5j�8l�o�Bs�Ev�Ev�>r�@t�Ct�Bs�>s�9o�9s�@w�@w�m�;m�7i�3i�1i�9m�8m�4m�4m�>t�6k�6l�5k�2h�-c�,c�7m�4i�9n�4k�/f�2g�3k�4h�i�>m�=n�>o�;o�5j�/d�8m�=r�:m�4i�;o�Du�@t�t�6o�o�;p�Gx�?p�7m�4n�9p�:n�1g�4l�7q�:o�@m�9i�6k�2g�,a�*_�)_�%b0d�1i�1g�o�6j�=q�@q�Fw�=r�5l�6j�9m�Fw�Hy�Ey�=r�7l�6g�-Z�;g�2c�3j�7m�,b�*_~-^|+Ys)Z{*`�4j�-c�1e�4e�)Z�$Vy(Z}3g�8i�p�u�:r�6l�5i�:n�?s�7k�:k�>o�Bt�7i�8l�?p�=n�6i�5h�7h�7h�r�Ct�Gs�V��V�N~�Eu�N}�O|�Mx�Jw�Kz�Ix�Ds�Cr�Kz�Hw�;n�3h�6l�>n�Ls�Ls�Fu�Cr�?p�An�@m�Fv�6j�n�>k�?l�:k�Aq�Lw�Ny�Lw�Bo�>j�7h�2f�>j�5e�/_�1a�1a�8h�5f�:k�7h�8e�Aq�Ev�Iv�Ht�Iw�Kv�Rx�Jt�It�Hs�Eo�Hr�Ju�Fq�Oy�Ov�Eo�Fr�Jt�Is�Mw�Nx�T{�Tz�Nu�Iu�Br�>m�Gr�Bl�k�@l�;i�:j�@n�Bl�Is�Fp�Bi�Fr�Fp�Fm�5f�9i�7g�4e�3d�5d�8g�s�8n�;o�5m�8m�q�3m�7l�8i�o�6g�>r�Du�Jy�Ct�7k�1e�8j�:l�9k�>n�Hs�Er�Bs�:n�Hx�Q~�It�Cn�?s�r�>q�7f�0b�7g�7h�;l�;l�2f�8m�9m�Er�Ip�n�>o�9j�2d�-^+Zx1^}2`�,^�+a�.c�1a�2b�0a�+\�1a�2b�6d�2c�4f�1e�3d�9i�h�Am�Al�j�l�Eq�Is�Nx�?i�:d�Bm�Pv�Jp�9e�7g�1a�0b�/c�.a�.a�/c�2c�3c�6e�7g�4e�6e�5e�7h�1f�/e�3e�5c�6d�1a�6f�7g�1g�3i�7h�5f�5j�4j�2g�7k�>n�8i�8m�8m�6k�5l�0g�6m�2l�6p�9n�>o�;l�8i�2f�3h�3j�/i�/i�3i�6l�r�;p�=q�Bs�Bv�:t�9n�8l�:k�:k�9l�4k�3j�-d�.e�1k�0j�+e�9j�9j�6j�Au�2i�2l�4e�7h�?s�>s�=q�7k�7k�9m�=n�;l�=p�Av�>s�Cw�Bq�Co�Cp�@q�Ar�Eu�Eu�Bs�@q�@o�Am�Cs�Ix�Iw�Lz�Ct�@q�Cw�I~�9n�9o�?p�?p�;l�>o�@t�Dx�>s�;p�Gx�;l�:q�6n�=r�u�>s�s�=t�x�4i�Aq�Bn�Cw�?s�Ar�Au�q�4k�5j�:n�?s�5q�5o�r�7l�9p�.d�6k�7j�5h�;r�s�=q�5k�:o�Cv�9j�Bo�@o�5i�;m�o�:n�o�@t�=r�7l�7k�:q�p�8h�5e�:k�=n�n�7n�7m�6g�8f�7c�4c�5c�o�@m�Er�Jw�Hu�Dt�Hu�Gs�5g�5g�:h�Gr�Ju�Gv�Gv�Et�Kv�Co�;k�1b�;i�7e�:e�0^�-Yv+Un,Yz9g�An�Fs�Dq�Gs�Ht�Aq�>n�4b�:k�;g�;g�=l�:k�Aq�Aq�Gw�Bq�Ct�Gx�Br�Bo�l�Bp�m�?o�=m�=l�=q�=q�8i�/d�:q�>s�>q�?s�:n�:j�:h�/_�7i�8i�5f�7j�=n�9l�7j�:m�:n�=m�3d�-g�1h�0h�-c�3d�7j�9n�9o�;m�9g�6h�:n�Hw�Iv�:o�1k�2g�8l�:k�o�Ar�9n�9n�3k�8o�2m�0k�?t�;n�9n�4j�:l�;l�:o�Ar�@t�>t�@v�Av�I{�Bt�Fu�P{�Cr�?r�Cv�>q�7p�7r�2o�:p�:k�9i�7n�=q�:m�2g�6n�3g�:j�?n�Dt�@s�=t�s�:u�n�Cr�?s�Bv�Fs�Mx�O{�M|�Mz�I}�Cv�M��Ev�Jy�Ny�Ly�@t�?s�Bt�?t�@s�;n�.c�-a�9i�4e�r�;o�1h�2g�.h�)e�6m�?r�;n�Cw�:p�;r�u�Ey�r�Dt�@r�4h�;k�:n�>n�>j�5f�-e�3j�Cs�Aq�;o�8m�Kz�Ly�Ju�Kv�T��Aq�Bs�Hx�5f�1c�2_�:j�Bs�>q�o�?p�n�n�j�Ct�Gy�Eu�Gt�>p�Du�Z��N{�Ap�i�8c�7h�6g�7e�8d�7i�4i�2d�-a�0f�Co�Cm�Hq�Ds�?p�>m�9f�1g�5f�:i�8l�8l�8j�>l�Jv�Hu�:j�4e�3e�/d�/d�;k�?k�j�>j�3c�2b�1b�0a�1c�2b�4f�+_�/c�3g�7g�7h�0f�-g�6j�;h�5e�4f�2b�1f�6f�4b�.c�3i�>r�?l�An�M~�>r�Bo�n�=i�q�Ar�=n�;n�2h�5i�0d�7k�8i�5h�3h�0g�3h�8i�;l�:k�8l�6i�9j�9h�>j�;j�7l�8h�>s�Ar�;l�5f�9i�:i�=l�6g�9l�>q�Bq�=m�?o�9m�6k�8l�8i�8l�9n�4j�4j�2g�9n�7j�6g�1e�/f�)`�1e�5i�0h�.h�2h�+c�,`�5g�4h�2g�6j�;l�@o�Dw�4n�5l�?r�>s�@u�;n�Ds�Ly�>t�4j�8j�8l�:n�@q�=n�Bs�@s�:o�s�;o�:o�r�Er�:j�=l�Dp�Cr�=s�8l�=q�1f�3i�>t�;o�6h�:g�>l�9k�8m�=q�?n�Jw�Ew�;q�?o�>o�Hu�Ct�>r�=q�;p�2h�;r�Ez�Au�Cs�Nx�Dq�Cp�?s�8v�8t�=t�@t�Bs�Av�H{�L}�Iz�Iv�Cp�@t�8m�4k�3k�.d�1g�3g�5i�:n�8l�=n�r�5k�8i�7k�4k�:o�1d�s�I|�Gz�Fy�;w�:q�Du�J~�Cy�9m�Aq�Dt�?q�;p�7m�=r�8i�Du�Dw�@u�=q�Du�q�?r�Ar�Ev�@s�Cw�M}�Dp�>t�7n�:m�?r�Cv�Av�Dy�Fw�Bv�:m�>r�6j�o�9k�3c�9n�5j�7k�;o�Au�Q��Br�Gw�Ao�?o�k�@o�=s�q�?p�;r�;u�@u�>s�9o�;q�8m�6g�Dp�Lx�Iv�[��T{�Fm�:i�3g�8l�9k�5g�._�2g�6k�8k�.c�0g�3j�9m�=m�8l�>s�q�Aj�Cp�>o�:m�:m�Cr�Gt�Du�@q�Cq�>h�>n�Bt�Lz�P}�Gz�Iy�Gw�Ds�Ds�Iz�Fv�Lw�Kw�Ct�Bt�Hx�Az�Bv�@o�Ar�?q�Ds�Hu�Fq�Hs�Eq�?k�Hr�Bl�Hr�:j�;m�7k�:j�9d�@k�>n�Ap�Iv�Mz�Ly�Fs�Iy�Aq�7f�2c�5i�=q�Aq�@o�Bm�An�;p�Br�Dp�An�Ak�>e�6d�7c�8e�6d�8f�5c�9i�k�5f�2g�6m�;r�6m�0e�5i�4g�:j�6j�7m�6k�:j�o�9j�4g�0e�5h�3f�3f�2g�2g�2g�2g�2g�5j�:o�:m�Aq�Br�@s�l�4b�-]�An�9m�1h�1e�5f�0d�.f�1i�1g�3c�s�s�s�Dw�H{�Lz�Dw�6l�?t�@u�Ar�>r�2g�/g�5q�;p�s�@t�Cu�7i�:j�5j�0f�7l�Bu�Ar�8k�:s�@t�Aq�>n�8m�4j�7o�2j�1h�6m�9s�Bx�Cv�Bs�At�Gz�O�Ly�An�9j�0e�9n�5j�>r�9m�Bu�?t�;q�8m�:m�@t�Au�Av�7j�:i�?n�5l�-d�1g� Vz&\�/c�2h�1h�5o�6p�4i�m�@u�@w�m�>q�?r�?r�5j�>n�q�Fy�Iz�K|�M~�Au�=q�Aw�O��M��S��\��Y��X��W��]��Hw�Bq�Gr�Hs�Fs�Gv�Ct�Bo�;l�>o�=p�;p�Cv�Iy�J{�Et�Iv�P}�Fv�Gv�Cr�Aq�=n�k�Bq�Ds�j�Dl�Er�Ht�Gs�Co�Cp�Kx�Ju�Fn�k�6j�7h�7d�7d�=o�J{�Bo�Lv�It�Hp�;j�?p�Cp�Ht�Gn�Cn�An�?j�?l�Ak�7f�9j�@m�Ak�Cq�Nv�Pu�Mx�Jw�Nx�Jw�Hw�@o�Fq�Er�$Z�)Z�*W�(W�.b�-^�2f�2i�-g�-a�0`�,`�,`�1b�/`�._�0`�,\�-_�*^�1e�4h�1f�1f�.e�3h�3d�5f�5f�3g�/e�/c�4f�4d�3c�0b�)^~$X,^�0a�'[�&Z�-^�0h�2g�._�5h�4l�.h�2h�4f�2d�3g�5f�2e�1f�-g�/f�3f�0d�/c�6c�5e�;l�:j�0a�-c�#_�&^�._�3d�8i�5i�4i�-h�*e�*d�*b�-a�.d�/i�3j�0g�/d�2f�5g�/c�1e�3l�:p�:n�Bs�Cr�Bs�7j�3h�9m�>o�Aq�Ap�@q�?p�@q�Ev�Et�Cs�o�j�r�Bv�Gw�=r�Ar�8p�9s�6m�1k�/f�6j�3g�1g�=s�7k�-e�-g�5l�7l�6p�?t�=q�1g�.d�4h�@t�:q�6j�;l�=n�Bo�Fs�Fu�?s�0f�=m�Dt�M}�I{�:n�3k�2i�4k�5i�9i�>k�9k�=s�3m�3m�:t�3i�2i�;r�Dx�Fu�K{�Ix�Ex�H|�Dy�9n�8o�6k�m�4j�8l�p�?q�q�Ky�P{�Jw�An�n�=q�?s�Jz�O}�S~�Oy�Jw�Gw�Gv�Z��Y��Qz�It�Ix�Fw�Hx�Hs�Gm�Dj�;`�9`�8b�4f�2d�9f�9f�6g�5f�,]~*[y-\v-\x6a�5a�5e�7d�:j�7g�;m�=n�Kw�Jt�Nu�Ot�El�Ak�=g�:d�7e�6f�6b�4a�8a�9c�5c�:g�5j�8i�9g�1_�3e�8c�n�@p�Fv�n�Bt�Gs�?o�Ar�Jy�Jw�Hw�Hy�Ar�=n�@r�As�;l�?p�=p�?s�By�L�H{�Bu�?t�:o�?r�Ds�Du�@u�Cy�Cs�r�=q�q�9n�;l�>m�?n�6j�2i�>r�9m�8m�=q�6k�0d�0b�/a�3i�:n�q�;n�5h�9i�5a�?k�6j�.d�*b�.b�8h�Dt�Bu�;o�?p�>r�;o�=q�p�4f�6j�=q�=q�Du�;h�>k�Bo�Nz�U�P{�Ix�Fz�J{�Kz�Gv�Ar�J{�Ht�Fq�Ap�7k�=n�?o�Ev�Gx�Dt�=q�Jw�;p�Cx�M}�Y��V��O{�Br�9l�;l�0b�-h�-e�3g�9m�4i�5j�1e�2f�3h�;r�9o�/a�,a�/g�0f�+c�6l�Ev�Du�Fs�Cr�Bt�8l�9n�@v�Au�?p�7m�9p�5o�=s�Mx�>o�5j�j�6e�,`�,\�3d�9i�>n�>p�4l�5l�;o�?l�6k�3m�g�4b�4f�6h�:j�:g�p�Hv�Fp�Gr�Ku�Nv�Tw�V��N{�Oy�Mw�Br�@n�=h�;f�l�o�>o�4h�1e�2g�4j�;p�8k�:n�>s�Dw�Ev�Bs�;n�9n�6k�;l�:m�?s�;o�=p�o�Fu�Iz�Du�Aq�?p�6j�5i�Ar�Hw�H{�Av�?s�>s�>r�r�?s�:n�2j�3k�1e�*a�+f�*f�'c�4n�7l�7j�;q�;q�@s�>o�7o�4h�6g�4j�6l�.e�+`�1c�/`�3c�+a�+a�.b�3h�5k�:o�Gz�Bu�Ev�Hy�:o�=r�?t�8k�=p�;j�6f�/c�0f�5m�7m�>r�=w�8n�;o�=n�@q�H|�M�Bt�5e�3c�/_�t�1b�8l�:o�:n�Du�G{�Aw�?r�Av�K|�K{�Au�>t�?r�@s�:q�8t�=s�Bs�Iy�Hy�@s�4j�.d�+a�1c�=k�o�Cs�Br�>k�*^�,b�4g�=p�)]�0e�7i�3i�5k�>r�5j�,]~)[~+]�+^}-a�6n�5i�3i�'_�3j�=n�;k�>n�o�>r�k�?o�:p�>p�=m�?o�=q�Cy�Ey�Kz�Mx�Gn�?p�8o�n�=n�An�=m�;m�@p�?l�Gt�Bl�:f�k�2b�4a�:h�Br�@m�Iu�Mw�Ju�Gs�Ht�Fu�@o�Er�Hx�Cs�Aq�>j�?n�=n�:i�Cq�@m�7f�6c�h�Ak�>o�p�9k�7g�9h�=l�4d�2c�1e�0d�-a�0_�7f�7f�3c�0`�-]�0`�(]&Z(]�+`�.d�2f�-b�2g�7j�o�?p�4i�4k�3i�4e�7g�=l�?p�;o�5j�4n�1g�9o�;p�?t�>r�6m�9n�8l�3j�&[�2f�7k�5j�8m�=n�8m�Cv�Dz�H{�Ap�;o�9n�6m�6m�7k�9m�9o�0h�2l�)^�1b�>m�>o�=p�8k�=n�Eu�>o�Ct�Bu�@v�;q�:q�5l�4i�5i�;k�4i�5i�:k�5k�5l�2m�5k�:m�@q�9m�4h�/c�4f�9h�Bq�Bq�At�=s�7o�9n�:n�8p�8r�2i�;o�7h�5f�2g�+a�,f�7l�Cs�Dt�Bo�Cp�?o�>n�>k�;k�o�7l�4k�@u�8l�,b�4j�:o�?t�=r�Br�Fr�o�9n�>t�Dz�s�Aw�Cw�L|�Jx�:m�8m�4m�9n�F{�Jz�Ix�Ar�k�?p�2f�=r�=q�8m�7l�=n�P�I}�5k�=o�Dp�Aq�Ct�Ds�Gv�Ax�4i�>o�?t�?p�Fs�9j�>n�;l�3d�3h�5j�7o�3m�0a�4d�,d�,g�+a�.d�#Zy2g�.`�-a�,c�6k�+`�+c�-c�"Z}$]{'[�2g�3i�6h�-]�1g�4o�3i�;m�Bq�Ly�Cp�8i�1h�']�&X{-b�']/d�.c�6j�0d�2g�(]�5j�q�7j�)a�5i�>p�;p�2g�.c�6k�5i�>o�Bs�5m�=t�Bu�;o�;o�Bv�Dw�Ex�It�Ny�R~�Ju�;l�,b�6k�;k�:j�l�Ht�Es�Jw�K{�Hx�Eu�@p�6g�8f�.\})Z{#Vs/b/f�:o�Gw�Kx�Dv�Bt�4f�3e�0b�:o�Du�Cr�o�>o�>r�7m�:n�Ix�L{�M|�Kw�Fr�;j�;m�Aq�Co�Fr�Bt�:n�;o�?q�k�=n�4h�8j�=m�An�@k�=m�=m�;k�m�Cp�My�En�Cl�Co�Cp�An�?o�:k�Bq�Gt�Eq�Lv�Rx�Pw�V��Oz�Ny�Ju�Kv�Gs�Bn�Ep�Am�=j�3c�0b�1a�9f�7b�8`�?f�>i�?k�Am�Gq�>j�Fr�Is�Lv�Gx�Fw�An�@m�?o�Hx�Jv�Ow�Ho�2a�6c�5e�0d�2f�o�k�Bo�Aq�9m�8l�9m�4e�5e�4e�0g�6j�3c�3a�5g�4h�4e�8c�9h�?s�Dv�m�Dq�Ht�Hu�Gv�=n�=q�?r�:m�:j�?p�9n�5j�7g�Bn�?n�Cr�Du�Ex�Au�=p�Ap�;k�0f�4g�9j�:k�=n�>o�?p�Fv�P|�Fw�Kz�Jw�Dy�Au�Fw�Fw�?s�:n�7l�8k�=m�?o�Du�?s�5i�4h�8l�9m�.d�3c�Jw�Fv�Ey�?s�?s�Au�@s�:o�4i�4h�6k�3h�q�@q�Bs�;o�;o�9m�;n�=s�>o�Br�Bq�Aq�Dw�Ds�Bq�@o�s�Kz�Iv�:j�>o�,`�4i�3h�4j�5l�9n�o�8m�;p�@q�:l�6j�4e�3i�4k�.h�)e�0h�8l�6f�9i�6g�-a�1f�8m�2j�6j�+a�&X}=k�._}&Yv0d�8l�=o�;l�:p�:l�An�Bs�@u�?s�@t�Ex�@u�=t�8o�9n�;n�n�9o�?q�0f�3k�Bw�6g�3e�7o�2l�;q�p�Bt�Jw�=m�.d�6h�0]�4d�5c�0]�7h�4h�2h�=q�Fu�Hx�P|�Rz�Oz�Ny�Bs�9m�>n�9f�:k�5h�>n�:j�3d�8l�7g�;p�q�?s�Aw�H|�@v�Ay�9q�8l�7k�3g�:n�Ew�?p�:n�>o�p�As�Hx�Hu�Gt�Kx�Ju�Fq�Co�My�My�Kv�?n�:k�/d�/d�0b�,Z~0\y9e�/a|,c�1f�1c�5e�7g�7k�;h�l�Ao�Bp�Fs�Aj�>j�Gw�Jz�Jw�Mz�Qz�Lu�Hs�Is�Nu�2_�3c�1e�-b�*\�3c�4d�0b�.\~1_�-_�1^�1a�/c�/d�6h�n�;l�1f�.d�;k�2d�)^�,\�;b�7d�4e�7h�:i�=m�=m�An�?j�8e�Dj�>m�6p�5q�8p�7k�3h�>o�6j�:l�9i�6j�:l�=o�6m�7l�=i�:e�9i�9j�?o�?l�6h�4f�1b�5k�-e�/f�7g�Ct�?t�>u�?r�:t�8r�=t�Fz�Cs�r�7m�0d�5f�Bs�:o�=n�Et�Ct�=o�Hy�=m�Cr�Ct�5f�2c�1a�/g�,g�/g�*d�.^�.^�+_�/d�5h�+e�-b�.e�0d�4e�'[�&Ww(Vw4d�?m�Cp�n�7i�2m�8n�/e�6k�;l�?p�Ct�s�Bs�Bs�o�=r�;s�:o�;q�.d�#_�%c�8p�7k�5j�t�9p�9n�@s�Bs�;p�:p�-b�4h�?s�9m�?s�;q�1f�)^�8j�=j�;g�>n�>m�@q�Bv�9p�>u�Bs�@s�J{�Ds�o�Al�=j�:f�@k�Iu�Fq�:j�2g�/`�k�=h�r�o�;o�5l�=r�Du�Dw�9s�;o�?o�7f�?p�Bu�:n�9l�:o�?r�J{�=p�9p�=r�=u�?w�>r�;m�6n�2f�Aq�Av�>t�>q�>m�Et�>n�An�6j�/h�1e�;l�:l�1a�2b�8i�9m�9j�?o�Fs�Et�Mx�R{�Mx�Du�Dp�Cp�Fs�@q�:n�;p�:o�/k�-k�0g�*d�1i�9o�6k�4i�+c�(`�2f�:k�?o�=p�;l�9i�9k�Cw�?p�@p�Ar�2h�/f�3j�1i�.c�5i�1e�.h�-g�0h�+a�+]�1c�2j�-g�2j�-c�3g�5i�q�;n�5k�4h�3i�0g�,c�4i�7k�;q�9p�=l�5e�4f�7m�7m�8l�?p�Aq�h�+[�#Xx*[|-_�2h�;r�Aq�Kw�Fu�Gv�Fu�@q�Ap�Ct�0a�0c�;n�Hx�Fq�?s�s�N}�T�Jz�@m�Ep�Lw�Ht�Kz�Ap�6f�?q�?q�=o�o�Gx�Jy�Fu�?p�>o�;k�0`�3e�6j�7l�;n�=l�>o�Bq�>m�9m�=q�s�o�Dt�Aq�Bt�Ew�Gx�Bs�=p�7n�4j�3c�8h�k�Ct�?p�n�Br�Dv�=o�?q�;k�7l�2i�6h�9m�s�Hw�Mx�Fq�Kx�Dq�@o�Br�Bo�>k�=m�;k�1a�/\�0\/_�:h�9i�:l�=m�Br�Bt�Br�4b�7d�o�Dp�Do�5b�5b�/[�/Z}5b�j�9c�:d�9h�i�j�Co�8h�/c�0a�5f�7j�4e�8i�7h�1b�4e�:k�Ct�?p�8l�3g�7i�3h�&[{)[|-_�-_�+]�2c�3g�6g�8g�7h�s�7k�8m�=p�Bq�>n�Dt�Gx�Bv�=q�=q�9m�3i�1b�>k�>i�6f�4g�7l�7m�1i�2f�9o�/k�-e�1c�7h�8o�=t�7k�Br�=p�9n�r�?s�5i�5m�4n�;o�7k�4h�?r�Cp�Do�@p�Eq�t�>r�Fw�Cs�:j�As�5i�=q�Bs�=n�Bz�3k�.c�,`�9m�Du�J{�K|�?p�o�>s�?t�8m�?s�N}�R}�T~�O|�Iy�K{�Mz�Dp�Fv�=s�>s�@t�@t�At�?r�8i�5f�4f�>k�i�=k�Co�Ht�Eo�Bt�Bv�Fw�K�N}�U~�Hs�Hx�Bw�Ev�L|�Jw�Cs�8l�0l�?s�Aq�8g�;h�n�Bo�7d�4d�1c�:j�9i�;k�?m�R~�P}�Iy�Iz�Pz�Qx�Lz�Jt�Ku�Cn�Fs�Gt�Mv�Jv�My�It�Bo�Jy�T��S��Gv�Ix�R~�U~�T~�Py�Iv�I{�Fv�Ep�?l�Eu�Cr�Dp�Bl�Iq�Ju�Eq�Bo�>i�?j�@n�Ao�Dp�Cs�@l�Ah�8e�9g�7i�Cu�L~�Br�Jw�Ju�Mx�Kv�Oy�Oy�[��W}�My�T��Fo�?k�6j�>p�>n�n�j�Bm�=j�?o�3e�1e�4h�;k�9i�,]}([x&Yt%Xu,c�.f�2h�5l�4j�5i�-^�0b�1e�2g�.c�&^#\z,]~1a�9e�7h�(^�'\~#Xz!Uz,`�4i�3i�4f�1a�*_�)_{)\w*Wx+Sv%Wp$Us*\}0f�5j�6f�0g�2k�2h�7l�6j�8m�At�9j�;l�-a�,^�2f�-a�7h�2g�)d�'^}-d�*a�-b�4d�4c�Bs�Du�Cs�Aq�Gx�N�H}�D{�;o�?p�8l�6k�?s�6j�5l�6p�;w�:q�=m�6i�@u�>s�>s�=p�:o�Dw�K|�F|�K�Q��?s�Q~�I|�>w�J{�Kx�?o�Ev�Ev�o�o�Bt�Au�Cu�Dy�Bt�Ly�9j�5k�9m�2g�9p�?t�>r�@t�=s�7o�1m�2i�k�=j�;l�;r�@m�Io�Mv�Q��Nz�Jw�O|�r�1k�3i�1i�/g�2f�9q�4l�3j�8p�>r�Ix�Bv�0h�0j�9l�Es�Ep�Ft�5g�/g�1i�2h�2h�2h�:n�6k�4i�;o�:n�-a�-a�.b�5f�.d�*`�'\�3g�>q�@s�>o�=n�7k�/c�1e�v�1g�3d�0d�7k�:n�;j�@o�:m�@t�Au�@t�As�8j�5g�0b�*[|+^}(`�0f�6g�An�2f�9n�6m�,a�.b�2f�Fs�Mz�V��P|�Br�Q|�Ht�Cw�8r�o�>s�Dx�;o�>s�8o�=r�j�Hr�Ny�Dw�8l�p�>t�F|�M��b��Lv�Ht�Ds�Er�>r�@u�Gx�N}�S��Iz�Bv�Dq�:k�@n�j�>h�9i�5k�1g�5k�8i�Bo�?k�3c�/d�/g�6p�l�7g�3d�4e�5a�0^�/`�2c�6f�1_�5`�5a�5c�0^,Yv)Wo/^z/a�2b�1]�?l�7i�1e�4e�9f�3_�7c�5f�7i�:h�Fp�Gt�Kv�Er�:j�6e�5e�8f�5c�7e�>l�@l�@l�@n�Jx�Q}�Z��Sy�Sz�P}�Jy�Gs�An�9i�>p�@p�Er�Dp�Is�Co�=j�An�2c�2b�4a�0]�-^�1b�/^�0_�6e�4c�7c�/_�.c�2f�8j�9k�9i�4d�5e�6g�7g�9f�/_�2a�6f�6h�-c�/`�1e�2f�/c�*^�'Y|'X�)[~)Zz)Z{&YvTt._�0_�3d�3f�0e�1g�/e�1h�2l�2h�6e�=i�0e�1h�6k�6l�5i�7m�2i�.h�8l�9j�r�@p�=m�1e�0e�4k�(b�(]�:j�Br�;n�1e�0d�4h�5k�;o�3j�0e�0e�,a�8m�5i�:m�=m�?m�1_�8h�:n�u�?s�9n�Bv�Bv�?s�?t�@u�Ex�Bu�?s�7k�1f�1e�1g�0f�3g�+]~4e�3c�3c�8h�9h�:k�;o�9m�8n�7m�9j�>q�@q�=p�>s�Cw�2b�1a�6j�0f�9p�3j�4i�;p�5k�r�6l�2j�>s�Q|�Lu�Cp�6c�3^~6h�6f�)Y�1b�4e�1g�5f�3c�2b�Er�Bs�9l�8m�Dw�Cs�Kx�Hu�>m�1e�.f�1g�,^�9k�Dv�Dt�Bp�Bs�Ew�=q�Gv�Cq�7k�Ew�Ew�>r�Bs�Bs�Hw�K|�O��?q�6h�1a�1b�/b/d�3g�+_�5f�:j�9i�5g�8j�r�8n�1i�5n�7p�2j�P��T��S�Jz�Ju�Gs�>o�0f�=s�J|�Bs�:o�/d�1h�+c�!\~&a�(`�-c�/c�j�8i�:l�@p�Br�Bx�1g�3e�1a�+`�,_~.a�7i�q�Bv�Ev�Ht�Hs�Fq�Fs�@q�>n�?l�8h�9j�Dt�Hu�Cp�9i�Fv�Dt�Fs�Ep�Q~�Hu�Mw�Sz�Fp�>j�Dp�Gs�Hu�Iw�Iv�P|�P|�Nx�Ju�Gr�Is�Ek�:f�@l�Hs�Hp�Ku�V~�Y��_��Pz�[��T�Y��[�Y�S�Q|�Kx�M|�@k�:d�7g�;h�Ft�Pz�Nu�Fq�Fr�Iv�Nx�Sz�Ip�Ci�8b�6f�Fw�V��T{�Kr�Ow�S{�V��Y��V}�W~�Pw�Nu�Dm�0`�'Y|)Y/\�._�-a�/`�-^�,]�0a�:g�3g�/_�/]�*[{(Z{)[~-[}3_�0`�4a�:a�=e�:f�1a�8e�7c�7c�;h�5e�1f�(Z}%Uy&Vz.[�/\�5e�4d�5g�5e�Al�Bo�:m�9l�@u�;p�8i�2b�1^�2_�3`�0b�+_�0a�4e�0a�(\�-c�*_(^�)_�,a�*`�4h�5i�7l�6g�1c�3i�3d�4h�3i�-g�,d�/c�/_�1a�2d�*\-^�3b�5d�?n�>o�4j�1g�-b�3g�/c�6i�n�8j�@q�?s�8m�5j�6k�3h�5f�8i�o�n�2f�:k�?o�@m�:n�5k�-c�6j�9k�6h�7i�5g�5e�4j�3k�.h�+c�.d�;o�Ex�I|�N}�Iu�Dt�Bt�?s�6h�0b�5g�.^�;i�7m�2l�+c�4j�)c�;o�;o�=q�;q�:o�Hx�=l�@s�/f�-e�3g�s�@s�=q�7k�2j�4f�3h�1g�8l�:m�>q�@q�Fv�9k�6k�5j�5i�3h�3h�,`�2c�2d�/d�/e�o�/c�8l�9m�1e�,^�+_�-c�8i�4e�7g�n�9m�7h�.`�-c�0d�2f�,d�7l�=q�n�?l�An�Am�Hr�Bm�;h�=i�8h�0`�2b�9h�9h�n�?q�Aq�Nu�Jt�Q{�Oz�Jz�Ix�Hs�Gw�?p�?l�Fp�@l�7d�1_�0`�0a�-_�.\~+Wz*Yw*Vo.\v/]/]�1_�0^x.[|6f�=j�7i�>n�?p�Al�=d�9g�6g�:h�9g�>o�5i�;k�j�Ho�Ls�It�Iv�Jx�Cp�Do�Bl�=g�:e�@m�Kw�Nx�Hu�Jw�Ep�@m�=m�9i�?m�Ov�Mp�Bm�Lw�Gv�Gr�Gp�Bm�7i�j�m�:n�5o�;p�?u�=s�9j�m�Eu�Dv�r�4h�,b�2j�7k�6i�&]|/e�.`�%Vw!Ws+\|0a�*_-b�5k�5k�*^�'[�"X~$]z$Zt.a�2d�2g�0c�(Zu'Xx'\{#Yu#YsWp#\p"Xr&Wx&W+]�2d�4j�'b�%a} Xs"Up'Uw1a�'Y~(]})^}/a�._�0_}2b�;m�>s�0b�8j�6f�7g�8h�3f�(`�)c�.h�+c�;o�;k�;p�4k�9n�4h�2f�8l�7o�1g�+a�,d�4n�>t�m�Aq�Bs�k�?l�9e�4`�2^�3a�9i�>k�?k�4`�/a�3`�3`�4f�8j�:n�Ar�?l�Is�Pz�P|�Eu�Jw�Fs�Oy�Fs�@m�Eq�=j�:j�Ai�Bm�i�:j�7c�2^�,Y�*X|(X�+\�'X�)[�(Y�/`�6g�6g�8g�=n�>s�?u�r�o�>p�0f�2h�5j�.d�2f�6g�7j�3j�.j�/k�-h�0h�-c�4j�5k�:k�:i�8i�:k�9f�>j�9j�=m�7i�.`�5b�4h�0d�;k�?p�Fw�@q�?q�=m�=q�7m�4l�-g�)d�1i�9m�k�s�Cx�1f�3g�q�Bu�>t�5m�,d�'_�.b�6j�o�;o�5i�/g�/g�0d�#[|0d�:o�8l�7i�-a�4h�.f�2d�0a�(c�(d�)e�,c�;o�Gx�@q�7g�,b�%`�*^�1g�/g�&b�*d�(^�1e�2j�.f�1f�2e�2f�;k�5m�-i�*b�1g�5i�6e�8h�m�9i�>l�Bp�Aq�t�;q�4j�r�Bs�=j�0\3a�r�Ev�L{�Jz�Dv�>r�:q�=t�9o�Fu�?p�3h�*d�%]�+b�2j�*`�-b�&_|,b�*_#Xw$Xn#Wl*Zq"Zu%Wn%Xm,\s'[s%Xs(Yz$Y{'^}+^}4`�-_�#Zy*_~+\z'^r0_})[|3e�2d�&\�7k�q�p�;l�>n�;l�>q�Au�Iy�K|�@s�Av�Jy�Q|�Ov�N{�L|�S�S}�Q|�U��S~�P}�Jy�M|�N{�L|�Dw�Bu�Dx�Kz�Hw�Et�Cp�Cq�Il�Ci�8c�Aj�Cj�Kv�Is�U�U��Z��U��L{�R~�Lx�Y��Wz�b��Oy�S�\��b��Ux�j�Kw�Nv�Nt�Mz�Br�Hr�?j�Co�Iu�Oy�Lv�Oz�Fq�Fp�U}�Qx�Mw�Bm�3a�:j�@l�=l�Sv�Ku�Fp�Kr�Gr�An�:g�?l�Co�Gr�/_�-Y�2\�k�5e�,`�0b�1_�+Y}/_�6f�4a�9f�?o�?l�;g�;h�:i�?l�?l�7i�5e�@m�k�Du�Du�Fw�Gx�Fw�Bv�;m�1e�+_�6j�8l�5f�2f�1f�7i�8j�0f�*`�2d�4e�9l�8k�6j�;l�An�Iu�Gq�Do�Gs�Jw�L|�K{�Aq�Cs�:p�5j�-_�0b�8f�6i�/h�.d�:n�.c�/d�2f�6k�8l�6j�5i�4h�0d�8l�Bs�Bs�Au�9q�;s�5l�/j�9n�?o�6j�/c�,`�0d�=p�t�s�7n�6p�=r�?n�0d�)]�7m�5m�4k�@q�?s�Dx�:n�2g�+\z2`�5e�8h�6h�:k�;n�?s�Ar�7k�,c�,a�,a�*\8i�>o�Ez�6l�?m�Bo�n�K{�Kx�>m�=l�Fv�Q}�P{�Hu�Hx�Jy�Jw�Is�Is�Jw�Jy�Fv�Dt�>o�8i�4d�5b�=k�Ao�@t�e�>e�:e�?k�Pu�Lq�Kw�L|�Kz�Ny�Ju�It�Lw�Ny�Mz�Ct�Hw�Nx�U{�Qz�Q|�Nx�Eo�Kv�Qz�[��Sz�Mt�L{�M|�Bn�Co�Iv�Cr�;p�(`�&^�(\�.^�.^�0b�3g�3d�/`�.`�0c�3e�>k�?l�7a�0X|.[|$Zt%Vt)Wx(Yz+Y{5`�5`�-[}+\z+\|-b�3e�5b�8]z2^y-Yt1Xw-Ux(X|0e�9j�?k�>n�=l�>k�j�v�:q�=t�Dw�=w�Ax�:o�0e�.h�(c�/e�3f�1h�5m�?t�8m�5k�,a�'_�/d�0e�(^�'[�1a�*Z�0d�-e�*_/`�6d�,`�)a�&`�0d�5c�2c�.c�0d�+]~/g�/i�.h�)c�(b�&\~&[}*\'Yz%^{(_~"]%[(]}'Y|)Y}$Vy%Vw-^6f�7i�4d�8d�@l�Iw�4i�7l�4f�.g�.j�0k�0h�0g�5l�>o�:j�:j�8p�9n�6k�9j�3c�-c�+h�3h�'d�/j�4j�5g�1e�.d�/d�8h�6j�5m�2h�/c�-b�-b�']�+]�%ZyTpTl"Xp*[{/a�*b�*_�*]x%Yq&\v#Ys$Zt&\t$[p#Yq"Tm%Vt%Yq%Xm"Tk%Ui&Tl&Wu(Zq,[u%Tn*Ys*Yu(Yw(Yy'Zw-^~'Yz'\|&[{'^}'^}(`�+c�(b�*b�(Z}+\|%Yq"Vl%Yo!Xm#Yq&[{*\3a�9d�@k�Cs�:n�5i�>r�>r�7l�6p�p�:q�Fw�R~�Mz�7m�3n�;q�Cs�Bn�Bl�Fr�An�Kz�Ev�Iw�?o�;s�p�9j�8f�4e�9j�8j�-^�,^�(])^},_~)[|#Xx$Uu2a4a�3e�8s�Kx�Pz�Lw�>o�@q�@r�Jx�Gt�O}�P}�T��Fu�9h�7i�)[|%Wp$Tj#Rd$Tb'Xf$Ud'Vh%Xm![s'`}*_*]|"St3e�3e�7c�=e�7^�6a�0[}0Yu.\t(Vn%Tp%Vv*Sq-Wo*Xr(Xo5b5f�:j�Iu�Iv�Eu�Kx�Fp�?i�@l�Es�Mz�Jw�Gr�Bm�?k�;g�;c�8c�5g�?p�?q�@p�Er�Fv�Ew�Ct�:k�Bs�Jz�Jx�@t�j�g�It�P|�Mw�Py�Lw�Gr�@l�Jv�Co�9i�;l�Er�Nx�Kv�Jy�Hz�?l�@m�2b�6k�Bt�Fs�>j�>k�Cm�?l�;g�Al�Bp�>m�5d�4b�p�:h�+Y{3_�0`�+`$Xp%[w)_�.d�2c�3e�0d�-a�/e�-g�+a�1b�r�n�>p�7k�7k�t�=t�/k�&^)]�7h�6m�7o�0f�0d�8j�-_�#Zx&]{,c�7l�.h�+`�-c�3h�9k�o�:o�@p�Dt�>u�:t�=r�Ct�;o�8l�9m�n�:n�6j�3h�0c�3g�:n�2f�)[~0a�5g�9o�l�9m�0f�(^�&\�,a�6h�4e�(\�+[5b�2f�7h�3m�1h�$X}+b�0b�7i�7o�2j�-c�1c�:h�:g�4d�3f�0d�.b�0b�/d�5g�;f�9b�h�;h�:j�5e�4b�5g�8l�Bq�>r�=i�8h�@m�Bn�7e�2^�+\}*_.d�7k�;l�r�Kx�Hu�@t�Jz�Q��Q~�O{�Hr�Fp�Kw�Es�@n�l�>n�=j�=h�:e�'W{&Wx([z"Tu'Uy&Tv,Z{-Xx*[{*\*W~2^�7a�.Z})Wx,X{0]�4f�5e�7c�2]�/Z�3c�2b�*\�*[�,]},\�0^�-["Rv'Y|*_(Yw)Xt,Z~+_�)]�*^�'Y|)Wx-Y|-]�*_�'\|'[�)^�-^�/`�4h�,a�%Xu%Zy(^�)`'^|'Zy(Yy$Yy/_�7d�0`�._�1d�0e�0d�4f�3c�/]~-[|(Vx'Xy'\~.c�5g�2g�+`�+[*Wt!QgTfRm$Vo&Tl*Xp$Wl#Wo)Vw(Vx*\}*`�+_�,]�+Z�4c�=l�?l�2d�0f�/`�4c�5f�6j�6h�.b�.d�*\}'\~%Zy#Zy$Y{,Yz%Vt$Vw$X}-a�4i�/f�)a�/a�.\~$Uu)_{,b�-_�/]�+]�+]�(])^},]})WxSo"Z{&\�&ZQn#Vs+c�;m�4j�/e�8j�?q�As�6j�2h�._1^}:d�6h�&]|$Y{*_/e�.d�%\{$[z0f�5i�r�=q�6g�:i�>o�:j�>l�0a�9j�3e�5c�7g�=q�2i�0f�7k�=n�7h�:n�=u�o�5g�-b�)[|6d�/_�8l�4f�5j�1f�4f�:j�2h�4n�0j�4h�;l�@n�Bp�?o�;o�4t�6p�>o�5j�/d�.c�4j�4j�@v�/j�6l�8m�0d�3g�Bs�6k�>o�8i�7h�;m�=k�2d�1f�4j�0d�8l�Fz�Ev�Cs�Du�Cr�Aq�>p�Ft�Ht�:j�>j�3_�(Yz Vx Vx#Xz(Z}Qq Ut$Wv*_�2h�3h�9m�/c�/e�+f�*`�#Uv'\~$Z~1g�9o�8n�2f�.b�)]�/`�1c~7h�8h�=m�o�Er�@q�9o�Dx�@q�Cw�:q�=r�Bs�@q�?s�As�3f�&\x3d�Cq�n�As�Ew�>r�8m�5j�r�Ct�>o�=o�2f�-e�1g�7i�3i�6l�7l�0d�1c�?m�Iu�Ip�Bk�7g�0d�%[6l�@u�Ey�Br�.c�(^�-_�3_�0^�0`�6d�7d�9f�6g�9m�J{�@q�9m�5i�1a�3a�/_�1b�0e�2f�:l�=m�@p�k�Du�Cw�K}�Fw�7g�=i�9c�Iu�Ky�Iu�Dp�Ep�Mx�Eo�Gs�Lx�Z��Pz�Is�Ci�Ai�9`}4]{3\z8e�8f�3a�2^�6^�;a�@l�7g�?m�Iu�Mu�Cj�9h�=c�7b�9e�7e�/]3d�3a�3^�5]�0\5c�l�Cs�@q�1g�5i�9m�9m�@p�;k�7i�5i�9m�;o�9m�6j�1e�6l�=q�Hu�Ep�Kw�Fu�@t�=t�=r�6l�6l�;o�Ct�Du�>r�>u�4k�6j�4j�.b�)_�/g�5g�:k�5j�@t�Dt�Hu�Fv�7h�4f�(]})_�,a�(_~%`�.d�.d�(].`�1b�*_�2f�/a�1f�.h�8m�7m�9o�4j�/e�1a�-]�9m�=q�>r�?r�Bs�=o�3i�0f�+a�.h�9q�?u�?s�8o�>r�?o�:n�6g�-c�7k�>m�@p�?s�Au�@u�=p�Bs�2g�,`�/`�)[~.`�2d�;i�7g�6h�Bt�?p�o�Gv�>o�7k�3h�3e�q�Ap�Ht�Gv�@s�Bu�Gv�@o�Er�Oz�Ly�Fz�Dx�O~�Gt�Ht�Iu�S}�Mt�W��Qx�Nx�Iv�Hx�Dt�6f�6f�;m�Bv�Fv�Co�>k�9h�Ap�Hw�?p�9h�=j�3^�=h�Hu�R}�X��Oz�Aq�/c�+`�0b�6f�Cp�Bp�It�Gn�?l�4d�8d�i�;h�7h�>o�Jw�Gt�>n�Bo�Iu�Gs�Dn�8d�6b�@l�Em�Aq�Hs�Lw�W}�Qt�In�Ci�@g�Dm�)Uz0^�)W{,X}/[~'Uv"Qo'Uv%Xw%Xu$Uv#Uv%Vv*Xy-Z{)Ux+W|.[�+[-[}*Xz(X|*\�.^�0\6b�(Z{&Wx.\}+Zx$Uv)Y5a�6c�)Y}&Wx'\~1b�1a�1a�4f�3e�/\�+\�*_�-Z�,Z|&Xy%Z|.`�-]�,^�$U}-\�5f�/`�0a�.b�0d�0d�/g�2h�4h�9j�6h�6d�1b�.`�2d�/e�/e�1e�2f�3h�,b�&^�&Z�)Y.`�._�._�/`�,c�(d�(c�,`�0a�.[|*Xy*\/c�6k�9j�;l�4l�6j�9k�:n�7o�7o�;p�>o�:p�8q�;p�@o�@p�7m�3k�,b�+b�.b�,\�4f�9m�9m�:k�?q�8j�8i�9n�9q�2h�0f�5g�8h�.d�2j�8o�5j�4j�8n�6n�6n�6l�9n�2h�*b�)b�/d�/`�/c�-_�/c�/c�2c�,]�*[�,`�1b�7g�+\|0\0]�,]�0b�0g�4i�2h�-_�/a�0b�5i�:k�3h�-d�2f�-a�0f�/e�1i�1k�0f�2d�+`*`�-a�1b�0a�3g�.d�(^�-d�-`'^|*a-d�&\~)[v#Rl!Um#Ys&Yt-`)`*a�,^-[(Z}0e�8j�?s�5o�@u�Bs�8l�7g�0d�.f�0g�/e�(]}-_�4g�1c�:l�K{�Bp�9g�/d�0g�0e�1h�;q�=q�9m�7i�9k�>t�=r�o�Ar�8i�8l�1e�.b�+c�$\-g�0j�3h�4g�>o�Cr�Et�Cw�Au�Bw�9n�6i�@o�Ct�Bv�:n�=q�5i�3g�p�Iv�Iy�N~�M|�;o�:n�5g�2g�*b�0f�9m�>r�:l�Ao�3h�6j�7k�n�5i�4h�0f�,d�2j�1l�3i�>p�Cp�Br�Ar�8l�@r�Cu�Ev�o�;n�2f�,`�+[2d�;p�Fx�Kx�Q{�Kt�Hu�M|�Kw�Jv�Cr�Ds�Er�@j�@p�Dp�>i�;j�@p�Bs�=l�Cn�Ju�Hu�P}�Jw�Bn�Kv�Q|�Aq�5j�:j�k�6h�?m�Is�Lw�Gr�?l�Ak�Eo�Ku�?l�Bp�Cn�Gm�Hs�Iu�Nu�Is�Gw�Dt�Iu�Ju�Al�Dn�:a�6^�7_�2`�-^1b�6d�;g�t�5m�3i�9j�8l�:n�=q�?r�>n�=p�Av�Dx�>r�7l�7k�1i�.f�,h�7m�9k�;k�?n�o�6g�7h�4h�4h�5g�0b�'\{'\{1e�1f�2g�/g�7h�9j�4e�,^�&Z2c�=l�=n�1e�9k�:l�7m�q�>r�1f�1g�5k�8l�3h�4e�=m�=m�r�?p�9k�2f�9j�Au�Ey�Dx�N~�Q|�Oz�Hw�Et�Eu�9m�Bv�Aw�6k�8b�4b�3a�)Zx"Sq+\|4j�n�9j�;n�=p�6i�8i�?s�>s�>r�l�Gs�7e�.`�.`�5e�9h�7h�:k�;l�n�=j�9h�8l�n�6k�4i�2d�*\3d�>k�>i�5b�6g�:q�:o�0d�.k�2g�/a�)^�+b�'\~'\~+b�.c�+]�.^�4i�.g�,`�,a�7i�0d�+a�+`�,_~)`(b�.h�;s�6l�/c�5i�5j�8j�4h�-d�6j�1f�+`�.c�:m�9n�0j�,d�,d�.d�3c�*`�.d�3k�4i�:j�?n�;f�r�;r�=m�Fs�Aq�E{�G{�Gx�:l�9o�0e�1h�5k�8n�6k�8i�@p�l�:k�*Xy+Zx)Zz)^~,^�(Z})Z{-Z{1^:h�6f�-a�-]�0^�)Z�-^�/`�(^�1g�;n�>q�Ev�Kx�Jv�Co�9e�*^�)[�,^�5g�6f�=i�9c�;g�8e�=m�Ao�?o�@p�Aq�6g�7j�/^�/c�/c�1e�1f�6j�7g�3g�6n�n�2c�7k�,a�)]�)\{*]|'[q(Xo0_{.`�1c�2h�3n�=n�Dq�@o�=l�:j�@l�Eo�Am�>j�5b�6f�@n�An�Bs�Au�Ly�Tz�Q{�W|�Ov�Iv�Dr�Iu�Iu�>p�:l�;k�=j�>k�Er�?k�;k�;l�6j�5f�/c�.^�4e�8j�Bo�Bs�Jw�Lw�Nw�Ot�Qx�Ny�Mx�Kw�M}�T~�U��R}�Py�It�Es�Kx�Fo�Cn�?p�Fs�Ny�Mw�Ip�Ku�3c�+[._�0b�o�;l�1f�,]{*\w'Yp4g�8m�/e�(^�.c�9g�Eq�>l�Bp�5j�0b�+\|&Z)^�/c�1f�9j�1e�1e�1c�.b�,b�-c�6k�2g�1c�8h�An�Jw�Hu�Jw�Aq�?o�6l�6j�Cs�9k�@v�;s�=q�Ar�>r�>r�s�>s�?r�9m�5g�1c�5f�7k�;m�2d�+\�$X#Y}+a�4j�6l�6m�=r�;q�7k�4j�=q�;k�Ao�?o�7h�/`�4d�9k�?s�At�Du�Cw�Cy�K~�Kw�Ix�n�;l�;l�?o�Bv�I{�U��Bo�=q�.f�&\~&\�*d�8r�E{�Fw�3c�6d�'Zw-^~*_�2d�;i�5c�/d�-d�.b�+_�,^*[{'\|*`�-b�;l�6d�1d�.c�0d�5g�q�=q�Hu�Hx�?o�Lw�Kw�Bq�Ar�>o�Du�My�Er�Ar�Kz�Iv�>n�4e�2b�4b�7e�Cs�H|�>s�3f�%_�3k�;o�Gr�Kx�Iv�@j�Ak�Ao�7e�;e�;e�)W{$Wt!Ti#Rd.[r6b}9f�n�?o�Cs�K{�Ky�Iu�Oy�Hs�Px�_��Sv�9d�:f�:f�=e�@n�Gs�Dk�>e�El�Kv�>n�:j�?l�Al�Fo�In�Cg�?e�i�@m�@m�>m�Gw�Jx�Gq�Bn�9i�Hv�g�7c�Eq�Br�5f�:f�@f�?e�9g�:l�@n�K_!QhMi#QrQn"Xr$Vo(Vm%Xk#Xj!Qg!OfLc Pg#Qh$Qf NeNePiOfJ]HY!K[KZM\ K^"Of Md M`L`MdL_MWKSKXMa%Sk'Sl%Qj!Ne#Rf#Qh"PhQh!Sl!Sj!Sj Tj!Sn&Uq%Sm"Qk!QgOe!Pb$O` P\M[I\M\N_L^MbKb#N^"NWKUJW!MV!O\MYMZOVMWLZMa Pg#Si&Ug%Ve!Rc#Sg Ri$Vm"To!PlPi#Wo Sn%Wr&Wu%Vt%Tn"TmSkQi Rm"To!To Sn'Yt$Vq!Sj#Tc"Q[!O\KYN_ObP^O] Pf#Qk(Wq'_z%]~*`�%Z|+]~,]}'Vr$So&Uq"Tm%Tp)Xt$Vq$Vq'Yz&\~%\{)\{+Zt'Wn#Vi%Ul&Uq!Rr!To(Xn#Vi#Te'Ti(Vm&Xq(Zu(Zu(Zu(Zu&Xq#Vk+Yp,Xs+Xy.\�4^�4f�/g�/e�8l�9k�7k�7m�9o�6l�4j�1f�9i�0b�,_|-_z3ay-`}.d�/c�Dv�s�Hy�Ar�Cy�?s�Hx�Cp�4f�)_�-_�Kv�Ly�Dv�P}�Dt�8l�;p�;o�9o�Ct�Pz�X�[��Y�Lw�Q�Q~�Fs�P|�Dr�4h�0b�4d�Dt�T��S��Z��R�Gv�Kz�@q�Jw�@m�Fv�Q~�T��Kz�Bo�n�m�L|�Ix�@s�K��P}�Iv�L|�Dt�>n�Er�Gt�It�Ny�Is�2h�0b�+Xw1]z2^y:i�9j�p�@q�@q�Br�?o�;j�@o�Ev�Ku�i�:h�9k�L~�S~�Mt�X�Tz�Pv�Lx�Kv�Dk�Ou�Pv�?f�6d�2`�1c�6g�q�Aq�>k�:f�Bl�Hp�Ny�W��X��S~�V��Du�k�=m�6j�7h�2f�3h�4j�2d�n�6f�0b�9k�Ar�9m�.b�+]�2d�-^�+_�*`�4f�u�Gz�Kw�Ny�U�Z��T|�Jt�Gs�6l�8n�6j�0]�/[�._�*b�)[|-[u)Xr%[w+b�4i�;i�7i�6n�1e�(`�']�$X}(`�5h�:k�>o�?p�@k�Hu�Cw�Au�Q{�S}�Kz�Ct�?q�Fx�Eu�O{�Lv�=k�0d�0d�1a�2i�6j�/a�9m�p�6h�6h�n�Bq�4e�3g�8n�n�7m�=r�Bn�Is�Aq�?q�Bn�Lt�Oz�M{�L~�N~�Hy�Ct�4d�=m�Dv�@u�An�Dn�@k�An�6g�1e�5h�Fq�Oy�Y��Gt�It�R�O|�X��Do�9f�=n�l�5`�4]}7_�9e�;m�?o�?l�>n�5i�;i�@j�@j�@m�Aq�:o�r�=n�Dx�9j�5c�;l�?p�Ct�?q�:l�?q�9k�"Z{#Zx+]~1c�3c�2d�6k�9k�2d�-b�.c�2d�2d�+_�(^�*`�$Z|-b�.b�,b�+c�+\�1b�0a�%Y~$X}-b�0b�.`�5i�:j�7d�6e�:k�=r�9m�;k�Fr�Gx�>p�:n�8l�8i�6k�;m�Dq�Es�Ct�Jx�Cj�4f�Kw�Bo�4a�/]�1b�-^~._;i�@p�Br�S�Hx�@t�Bq�@o�:j�9c�)YVt#Ys)^~.c�+]~-_�4i�+a�2d�8j�n�Bl�Dj�=g�6f�4h�6h�4b�3c�1b�5c�8i�5i�>p�Gu�Ky�@p�Mz�Iy�Ar�Gw�Kx�Iv�Cr�?n�3`�9e�@l�Fr�Fr�Gw�;m�.^�.\}3`}2c�,_|1^{3`l�6f�7e�9g�An�Br�>l�@n�;k�?m�=i�;g�8c�4_1`z0b}1^7a�9k�=m�?k�>j�Fs�>k�@m�Am�Fr�Ku�Sy�Ux�Nt�Ju�Hr�Em�Fs�Qx�Jr�Nr�Ss�Rt�Ck�3_�3a�"Ph"Qm(Ws+Wr(Tm"QkOl#Qs&Yv&Uo$Qf(Pi'Sn(Ur$Rs&X}$Y{%Su'Ru'Sv#Tt&Ww)Wx)Vu"Vn"Tm%Qj%Qn'Rr'UvTs#Qr,Xu1]z*Xy*Z~)Wy,Yx,^y$Vw#[v"Xr!Rp#Tt Qo"UpRm$Uv'[�,`�"Ut#Vs$Uv#Sw"Ur#Vq(Zs$Xp%ZlQbK_"ObKZL^"OfOcL[IY#N_"P`!Pd!QgNcMdRm"Up Sr%Vw)Vs(Tm%Ul!Qh#Sj%Ul$Rj'Uo+Zx.[|.Yy,Yz+]~*_~*_~&Yx(Wu$Rj(Uj&Sj!Qg%Wn-_z1]�2_|(\t&^y.`�2_�5c�-_�)^�/_�4`�3`�2`�-_�&[{'\{%[w%Zy+^}*]|._0_}2`�5g�3e�,a�3e�)_�-_�*[{*[{*\}+\}+[*[|._}'Yt)Wo'Vp"Zq#Yq!Sl!SlRgRg'Wn'Yt)Xr1]v.]y(Yz/a�/a�,b�#Y{/a�,^'^|)^})\{+a},_|/a�0f�0b�-b�/d�0b�*]|)^})^~+^})\y)[v-^0`�+b�'^|'\{%[u*^v)\w%Zy%Zz*_/e�-_�*^�.b�3e�4f�5j�;q�/a�,^1a�,\�,]{+^{/`�.d�0h�6j�;l�;o�7m�4j�5j�2g�1f�-d�*a�/e�+a�(b�)b�(]-^~#[|#\z#Zx!Vx+a�.h�4j�&a�,b�6h�3e�)_�0f�4i�*a�'\|.c�2g�5j�6k�7k�8j�6h�7i�2d�._�5c�=m�5k�3k�.d�1f�*`�*b�6g�>k�9i�3i�4j�0d�+`�8j�6d~0c�'`}.d~6m�8l�As�p�=k�4a�5a�;g�6h�j�=m�Gu�O|�Fv�Gw�Q~�Mw�Nu�Mw�S~�Hs�>n�0d�0a�;h�7e�-^._�4e�/_�,Z~/]6d�5f�5g�:j�Dp�>l�Ny�Lw�Dp�Gq�Eq�k�8m�1b�._�,a�+`�+`�'b�*_�6h�4f�1d�.`�-a�&a(_}&[z&Xy-^/a�-a�2f�0e�,g�0f�-_�0`�0e�.e�-b�-^*[|+]~,a�+\}-[}4e�3d�2d�/c�*^�1c�2b�3e�(`�1g�3h�*c�)d�-e�3c�/`�-b�0f�.c�*]|,_~)Zz)\{&_}&]�)^�*`�-c�)a�'b�,d�5j�2b�+`�2f�9j�9n�3i�8l�=n�7l�8l�n�:j�7g�;i�6k�2h�0e�.c�/_�,\�,^�,a�5k�4h�2f�9m�;m�9i�/`�2b�7i�:j�5g�r�>n�Fp�?m�3e�1e�.`�1b�3f�$]x,_~(]-c�4j�n�=n�:j�8f�5e�9i�=m�Eu�Hw�Iu�An�9o�2m�3j�/a�1f�6k�7l�=o�/h�4h�-_�1d�8m�3h�+`�)\{)\w#Wo)\y)`-d�9n�.`�,b�/a�+`�4i�7k�0f�1f�/a�8j�5k�:o�n�=o�9n�-b�2e�8i�>l�Ao�Cs�Co�Iq�?k�6j�7m�s�Bw�:l�8h�,\�8f�2`�7c~:d�>j�>j�8d�*W�0e�.b�.b�'[�%Wz%Vw/a�/a�6d�?k�@k�5e�n�:l�1_�0\�(Y�,]�$Tx&Wu&Xq&Vm)Si)Vk)Xv$Uv#W|$Z~(Vw*Wx"St Uu'\{([z(Yy0^7b�1^3d�7h�:g�@m�>o�Dr�Jt�Fp�Ft�Dq�Gr�Pz�T|�U}�An�Ak�Fl�5`�,Yz1_�8j�=n�6d�=j�=i�=k�?m�Al�n�n�9k�;k�>o�Cq�@n�Bx�Iy�Ew�>r�Cu�Jt�Ai�Jt�Jw�Iz�?p�Bp�As�:h�=h�;g�n�?o�9j�@r�8m�9i�>l�Cp�@j�Is�?k�8d�?j�Dp�Co�Dp�4]�3e�5e�@m�9j�7l�:n�:l�Bn�An�:k�9g�5`�4]{5^~2_~2d�?l�?l�>m�Ds�Co�9d�Bj�@c�Dj�Dn�Bn�Ks�Gm�Dk�Er�?p�>m�:d�9_�>d�Ep�Ht�Is�Pu�Rx�$[y"Yw'[�4c�5a�:a�3`�/_�*_�*[�-Z�.[|,[w$Sm!Sn Sr%Z|/a�-[+Y}-Y�0\�,X5a�.[z*Zq%Uk"SbL\$ObMaLc!Ne"Le$Sm#UpRnTp#Sj%Sk RkPiLc"Le$Rl'Tu(Ty'W{$Zr'Zo&Ui%Qj!TqWx)^�*_�&\~(]}(Yw%Wr$Wr%Zy(]0`�+\�1b�0`�&Xy+Y{+X(\�#Xx#Wo!Qh#PcQl&\x&Yv$Us'Zy0`�3c�-a�2g�2d�;h�4d�0b�(]|,a�+_�,Z~-_�._�/[~2_�0^-`-`1b�0b�2c�-f�.f�*e�+c�.d�.b�+`+^{/^|4a�7c�/]�/a�/_�5b�8c�3`3\x*Yu"Up&Yn$Vq Ut&\x!Uk Tj%Wr+Xy*\-c�+^}*]z1`~0]|-Zy2Z}1_�(Z})\y,^-`+a}$[z*_�'[�(],a�+]�,]~)Xv!Sl&Yt*]z+^y*]z(Yz*Z~/a�.e�/a�8f�6b�+]~(]}-[|*Wx'Y|)^�+^{&Tl'Vp+]x"YnTc!Vf#Zo'Yr'Um#Sj&Tl!Um WlPi%Tn(Wq+Xo(UlMd"Sd"Qc!Qe Rk'Zy6f�4f�)^�(]}#Yu&Zo!Tg!Vh!Xm"Wi!UjRg!Uk&Uq2]�8f�4i�9n�6l�3k�,d�,c�.`�*]x/^z/]~,]~([x'\{$]{'^}']w'[s$Vm%Wn&Yt*\w*\w(Zu2d*]x)Xr2a/a�,]~1c�2g�3f�2e�1d�2d�+]~,^�+]�$Yy Yt!^q%_w'^}-c�,b�)_�.i�1i�0f�/g�2g�/b,a�*a�-b�3f�:j�s�>r�:r�2j�1g�.b�2`�.Z}/a�8j�Aq�>l�Bo�?l�Gt�Bs�Iy�N{�It�Hw�Ky�Jy�;o�1e�6l�3j�$Zt&Yx+]~5f�7k�4i�4f�3g�5j�3e�/d�0d�1e�.c�-_�+]�7i�n�?o�Dv�Au�7k�9l�>o�Cq�6h�2h�k�;m�8l�;n�Bs�Dr�:h�4e�'Vr%Tp'Xv2d�s�>p�Ar�Bp�k�Cs�=g�Dk�Bm�Co�?m�=k�8h�:g�Dk�9d�:l�?o�Cs�Gs�Es�=i�Em�Ms�Pu�Cm�Cp�Ep�@j�;a�;_�1]v5a|0_}3^~0]z-\vBn�Js�Jq�Lw�@p�?q�?o�?l�p�:p�6p�8l�>r�m�5e�4d�,]~._�1b�2a6c�:f�5e�7c�6f�5f�5e�2d�1c�1a�3c�2b�2b�6f�:l�=q�i�p�;l�Dt�=o�@r�>p�:j�;i�5c�.[�1^�5e�2b�9j�;m�;p�-d�&^y)_y-c})`~)^~,]}1b�.`{$Tk*Vq0]|/]~4`�9e�Am�Go�=a�8\t/[t3`}7d�7f�>l�Br�8j�7g�k�@l�9i�2a8d}?f�;d�g�:e�6`�4^�1\8e�9h�;i�7e�'Ts&TnReTf!Pb%K^FUEVF\"Le$Pk'Pl)Xv0^�-Y�)Y)Z{.X~1[�3`�4f�3d�+_�+Y}3]�6]�+[�%Y�+[�0`�/a�,a�.`�8d�4b�2d�-_�.Z/[~,Z|(Z+\�/a�/_�*\�1c�0`�,]~']y$Wt'\{*^�*_�'`{%]x'Uv#Tt"Wv(Yw)Yp(Tq+Xy(Yy#Uv&Yt!Pj#Oh%Ri Sn%\z,]~/_�0^�4a�5^|/],^�)]�+^{+]v*Xo/Z|3d�0a�1_�2^�.\�)Vu$Vo&Wu)Z{,`�-`*\w*Wt.Yy1_�)Wy%Uy$Vw)Zz.\�+`�'^|*_~)^~3c�6f�8j�:g�.\~,Z{*\w)Xt-Yv*Wt.[z2^�0a�0b�3c�2_�*[|,^'\~.b�4i�.d~)\w"To Rk'Yp*\u)[t%[w&Wx+Zv(\t(`{&\x*[{,]}+`'_z Vp#Xw'Yr-\x,a�/_�-^~,a�%Zy([xVk#Wl+Zt0^�1a�6d�1a�+\}([x*]|.d~)ax+^y*`x+a}(]|)_{%]v)\{*]|(^x(Zu'Zu%Xs Tl$Vq$Uu&X{+`�'\~&\~%Zz%Wr!Sl Wl#Zo!Um/e�*c~&\v%Wn&Tl(Xn&Yn"Ym Wl#Yu*\}.]y+Ys"Xr'`{&\~/c�.c�3e�:h�8h�0b�7i�6j�4g�9o�=u�8l�7i�;m�0d�-c�.c�0a�0a�5g�5g�5h�6g�5g�3e�d�0`�2`�3d�1a�,c�4i�7t�=q�Dv�Au�Cy�=r�Bs�As�:r�5i�5g�0b�.`�(Yz+Zx*Yu)Wq&Yt,d2g�5e�/a�,]}*Xy&Sr'Ts(Vw%Su&Uq$Qh(Qc+Vg'Vf$Rj(Zs*`|(_~/c�,a�-b�-b�-b�._�/`�([z*\}/]~>g�An�Er�>h�-[$Zv%Xs%Vt'Xx'Xx3d�:g�2]}/[x8d�h�?i�?k�4e�1b�5j�9g�5`�/Z|*Wt*\}-a�4e�7g�0`�,]}0^4a�@m�8h�4d�8c�5b�5f�:h�9g�8e�:h�:h�?m�Bp�3c�;i�Ep�Io�Jr�Ju�Er�2^�.\~7f�:h�i�?m�Ao�=k�;l�?k�Kv�T��Lw�@m�=i�Px�Lr�6`�8e�>j�1\|.[z,Yx.\},]}8e�6_/]~-[}/`~9j�Co�p�2h�/g�1f�2d�2d�4d�1b�*e�/g�*f�&a"\t Xq [ySv"[x#]u+d�/g�'f�&c�!XvRoVq#Xx+]�/a�,`�.b�,^+`�*e�-h�4l�.d�'\{)]u$Zr([v%]t'^|*_7h�n�p�r�:n�o�Dx�I{�U��Ry�Lw�Er�Ao�Bp�>o�7h�)Y}&Vz#Uv Vp.d~0c�5j�>p�:k�>q�Jx�Pz�Oy�Iy�Hx�Hx�P}�Q~�Ft�Nz�Hr�Fl�5`�+]~8f�Gq�Fq�Cs�9i�5f�;i�Gr�Ks�Bn�Bp�8j�4f�0^�,V~/]�-]�,]~0^)\{+^{1b�1b�.a~)_{*[{'Xx$Rl'Sl)Un,Yp2`z0\y6b4`�/f�4d�8f�/_�6f�@n�?k�>k�Ft�Bp�Co�@m�>i�7_�>l�@n�Bo�Ep�?j�@k�Am�-[*\)[~)V}2_�.^�-[*Xz*Vy-Y�2]�8e�2^�-X{-Xz(Ss(Zu#Up$Qn,Uu/Z}/[�1^�0`�,`�(\�.^�/_�+X�/\�4`�1^0]�2d�1c�,^([z'Zy&[{'\~)Zz'Uv%Xw*V{-Ux2Yz$So$Sq&Wu#VsMf%Sj(Sf+Th$QhRj"Tk$Wr#Xx'W{*Vy,Wy(Yy(]|*]|)Zz._�,^.`�0`�-^-`{'Vt-[}-^|,^%Zz$]z#\y'Zy'\|%Z|$Yy([z(Yw&Tu,[u(Tm*Yw/]�+`�.`�&\~$Vw$Wt%[w(`{'Zy'Yt&Zp!Ti$Rj%Ro&Wu"Wv#Vs+Zv)Zx*Wx%Rs&Sp%Tn!Um'Vr'Um$Rj&Uo'Xx&]|'`~)`-_�-_�0`�3e�1d�4b�-^~+]v.]{-^1a�0a�3d�)Zx(Yy$Z|#Zy%Yq*]z*\})[|'Yz*\})Y}*\},^,^�&XyTnTl#Vq)[t%Wr+\}-e�-c�)`&\x!Wq([x(Yw(Wq%Sk*Ys1_�-_�,^�2d�1c�-a�.c�+]�$WvNeNd#Si!TiRgTiWn$Vo Sn#Vq Xq%[u&Xq&\t$\w%\z([x#Vq([v([z'Zw$Wr&Xs%Wn&Xo$Vm&VlOe!Uj"Vd Tb%Xi"Rh$Ri(Uh&Td#Rd%Sm(Ws(Ur(Ws%Yq(\t(Zu&Yv!Xw)\w,[w)Zx'Yz(Z{+^{)ax(_}(]0`�-[|+\z+^y+^y'^r&^o(\r"Xr!Zw&\~*a�.d�7k�9i�@q�7i�0a�2`�0`�1c�1g�3g�6k�7l�1h�3j�;p�6k�;k�Bp�Ar�:l�-a�0f�6h�,\�9j�7c�5g�Cq�It�Ht�:m�:l�>p�=o�:k�:k�8i�3e�1g�5i�7l�4j�,g�1e�4d�&^�'c�!\|'^}6h�3g�.f�2h�*_)`,c�0b�8g�3d�1c�5g�7c�;i�9l�0i�1l�1h�4f�1e�3k�5k�2g�5i�5h�1a�0`�2g�3h�1i�*b�%\z'\{3d�1_�6e�3d�5k�0i�,e�+a�0f�+a�.c�4i�7i�+]�2`�4a�5g�/^z0^(Z}*^�&[}%\z$Zt&Yt*\w)Wx._�)^�.d�0d�3e�l�?m�j�=i�=k�;k�0h�+c�$Z~.`�*Z~(Z}2b�:j�=q�Fw�@t�9m�6j�Ar�Eu�Gs�Nx�Iw�@p�An�Kw�Lx�Ht�Bn�@k�8g�:h�8i�:o�=n�7d�7c�1b�7l�;o�>n�=m�6f�8d�@j�3]�0_�f�j�Co�Px�[�Go�?j�Gp�Lr�Qw�Jq�Cn�?j�n�Ju�U~�T~�c��\��Y~�Y��V��]��Q{�Jw�=m�:k�Bq�6h�-b�)^~%\{%[u%Yq&]r%Zy(a.e�3h�/d�)_�.d�,d�*b�/d�4f�k�Hv�6h�6f�:k�;l�.`�%Yq#Wl'Zu(Yz5a�9g�5g�2d�:l�:p�5m�5k�8h�n�6h�:k�@o�Ap�?o�@p�Bp�9f�3e�'\~0b�-_�*_~2c�5i�7k�2g�.`�*Xz/`�+`�']�,^,_~-^|@m�Iu�@p�?t�8f�7i�8h�>j�r�Bq�Ny�M{�Gu�Dp�Aq�?q�@r�:l�7m�=r�7h�8f�6d�5f�1c�2b�=n�Ev�P~�O{�Kv�=j�;k�5c�p�;p�7h�5c�=n�Ku�Nu�Hn�n�?l�:e�9f�=n�;l�.\~6c�4b|(Yy+]�2_~1]v;g�>k�?k�4b�/]�+`�/b9f�>g�Gu�Ks�Ky�Fs�Gq�Hp�?j�>i�Jr�Hn�Dn�3`�,\�%[w$Wt'Vp'Uo+Wp#Tr'Yz,^�-]�+]�+`�$Vw,[y&Uq'Ts)Vu"To!To%Wr#Rn%Ri%Ql(Tw)Y(Y�)Z�+`�+^}&Vm#Oj&St,\�/b�3d�9f�-Z�)[�*^�0b�+[%WxUq$Vw&Xy'Uv'Xv$Wr#Uv'Y|'Yz%Zy"Wv&Yx+\z(Yw%Wr"UpSi#Un%Wp"To&Yv'Yz+\|(Zq%Yo"Vn*Ys)Xl$Uf"Qc#Pc!Pd P^#OZ JZ$Qd'Tg'Vf%Sc%Pa!Na$Se%Re$Tk&Vm$Xp!Wq!UkUf$Wl'Vp%Tn#Un!Sj$Vm Vn Vp)\y)Zz'Zu&Yt#Zy)_�&\vUm#[v)^}(Zu&Yv%Zz+[�7c�?i�8j�1g�1f�)^�%^|'`}*_~,_~+\}+]~+^{-`},_|,^y,^y+^{.c�/d�%\z*[{/]~/`�.`�-c�-b�+`�(]|,a�0a�.`�+`�*\}0^1b�.a~-`0b�3e�4d�5f�5d�*^v%]x4g�=k�@l�9g�2e�1b�2_�2`�0]~-^0`�*c�']�-_�)\y$Xp&Yv$Vq&Uq-b�+c�#^�*b�,b�.c�+`�0b�1c�/e�6h�6h�-d�-c�-_�(Yz$\w#Vq%Wp&Yt+\|(]}"[xTp)[t/`~'Zy'Zy,_~,^0b�>n�@p�;k�8h�4d�,`�1g�3h�3h�2f�-h�/e�4k�1e�6g�6g�5h�1h�/f�2f�6g�.b�-e�0i�1f�:k�k�An�Iu�Jx�Dt�Hx�Es�p�Hu�Fr�?m�4a~-\x+\|/]5]�3Xu1Xu3`}7c~r�5i�)^�$Us%Vt#Uv#Xx$\w(]}*^�*a�._�1]�3a�3a�2`�/\}5^z-`}+`�.d�-b�,b�-d�)_{$ZvVt"Xt'Zw%Wn$Vq Vp"[o(\r+Yz$Yx*[|'Xx"Up&Uo$So$Sq%Tr+Zx2_�/a�+_�)_�-d�4i�2j�.j�,b�+_�*_�,_z+]x+\z([z.a�4e�'Xx$Vq&Uo"Tm%Wr-]�4b�;i�@n�Dt�Gw�Cw�?u�9m�5k�%]�&]|$Us(Yw2c�4d�1_�*Z~/_�+]~+^}0b�7l�1c�0`�,^*_%Zy$Wt)Zx%Tp(Ws'Yp"Up#Xw,_~/b�9g�'^|&]{/b�3k�8o�3h�0e�5g�+]�!W{!Rp Tj!Uk%Wr)Zz%Wx%[}*\+^}$[z0e�o�Fw�H}�@r�?p�Jx�>j�f�:j�=j�>l�>o�4i�5f�6b�/Z�5a�5`�0\w*Xr,Zt)Xr/]u0]z;l�Gx�Cs�@p�Do�Js�Iu�Fp�Cn�?k�=i�:h�/a�/_�+a�6g�l�@v�>v�9m�n�;p�.i�'^|2e�:l�7i�7m�5i�5i�3n�?u�@t�>j�5c�7i�7k�0f�4c�@k�8j�2f�'\~)^�5k�=q�;k�Dt�Hv�=k�7i�+`�6l�r�@r�Ft�K{�G|�Dz�Gx�F{�:n�8h�=m�8i�8i�6f�(Z{ Xo$Wr,Z{*Wx/\}-['Sx,Z|)[|1]�*Yw+Zx)Xv/\}+\|+]~)`4f�=j�>k�?m�>j�?j�h�?f�l�9f�6b�3a�2c�6d�:f�/]-^3_�/`�8f�?j�,V|/[�,Z{2`�+Zv#Qk%Ri&Qd"Qe"Rh"Rh%Qn#Vu$Sm M`%Qj&Ro&Wx+\|2`�)Zz'Vt%St%Ro&Pf'Tk)Vu-X{*Xz-]�-^)Xv%Wr"To&Us%Rq,Wy-Ux+Wz/]~&Us,Yx*Wx)Wy4b�.\~,Yv)Vs'Vp%Ro$Vq"To'Tu*Z~.\�/`�.`y%Xm!PbK`!Rc'Qi(Ol&Rm$Qn'Vr"Vn"Tm$So$Sq'Tu'Ts%Wp$Wt'VtRlQj#Sj%Ul)Wq'Vr'Tq*Wt'Vr Ri#Sj'Wn'Ul#Pc#RdTh"Xp"Tk"Rh PdQbOc!Pd"Od&Sj(Vp+Xu#Ul"Rf$Sg%Sj#Sj$So)Yp)Wn)Vk(Wk&VjObOd$Vm"Up!Ws%Zz,a�0b�/a�2d�2g�4e�3d�1f�0b�+`+`�,_|-\x1_�3`�3c�/d�-^.Z}(Yw&Xs)\{&Ww,Yx,Yx,Z{0^�4b�.^�([z'Zu%Yq&\x0`�5e�0d�/`�1b�1c�.b�-_�$Us-[|0`�1e�3k�/e�2d�3e�.^�-^+\z#\w%[w&Xy*^�0e�6f�6f�3f�/a�-_�)[~([z!Tq&Yx+^},_|'\|3g�1e�.c�+^}-_�0b�1_�0`�3h�:h�3a�8d�:h�8h�4i�7g�=k�;i�7k�1e�1c�>l�Bn�/`�%Zy([z*a*a([v._0b�6e�0b�:j�1a�6h�9n�5j�4j�2f�8j�p�Cs�p�;m�>n�9j�8n�7i�Bn�@n�6j�1g�1i�2h�)_�,d�&[}*\2`�.\�'W{.`�*_~*`�0f�%[}"[v%]x+^y0c�0e�6j�6k�0f�.b�3g�8m�3h�5g�0a�9j�2f�/g�:l�@n�f�5b�,b�(a~%Zz-_�4f�5f�7m�6l�4i�1c�3a�4b�.[|(To*Vo0^x1b�.f�0f�2j�5g�)Xv,[w8a�9e�>k�1a�4j�;m�@r�Iw�U�?i�9j�>n�@p�8j�,g�0f�:i�Bu�I{�Gv�;l�8h�:l�h�:b�;c�:c�;f�6g�1b�8e�8f�3a�0]|2]-Vt3Zy,Sp*Wj!Qe'Ul#Qi&Xs%Vv'Yz._�5b=l�Jv�Hs�Hv�Bt�Ky�Ft�:j�>n�?k�=g�?k�7d�2c�-^~(Yw%Wx&Tu*UuRm'Xv+`�-_�0a�4b�=i�>j�=j�:i�7e}Dm�Bk�Al�?m�;g�;b�2`�:e�;g�5g�7l�*_~-^|9f�;i�;g�:d�>i�Cq�Hr�Dj�Am�Iu�Ls�Io�Nt�Ow�Iu�Do�Am�8e�7d�6c�8f�@h�Co�Fp�Cn�8i�3e�8h�7c�6b�8e�Do�Bp�o�;p�>n�1g�,d�3i�+a�)]�,`�+a�*_�,]~1b�([z&Yx1a�2b�8f�j�;h�+\}.\}.c�1f�3c�;i�Jx�O}�Cs�Hx�n�k�;g�:f�>h�:e�>i�?i�=j�@h�Dk�Be�Ck�:e�Gm�Hs�T�Ov�Ku�5`�3Xu/Wq0Xq8\|2^�.b�/_�1^/\{6c�@k�Em�El�Fi�6d�3a�-]�.^�0\/[~,Z{)[v(Xo(Vn,Uq+Xw&Xy*\�*Xz+Y{&Us'Sp)Vu,X}3_�2`�/_�.^�1b�0c�4h�r�4e�-Z{.[|3a�0`�5f�6j�7h�p�9i�7g�0d�2f�6h�6p�2j�0g�9l�Em�?j�+]~%Zy#Vu-`+b�/a�,_~([z&\x,b~3c�3g�3i�4j�8m�7k�-e�$_'\~/a�-a�3k�2j�8m�:j�7i�2d�-f�1i�8l�l�2`�/a�+`�.a|9f�7g�9k�3i�6l�,c�1f�/d�0b�.b�2g�7k�3g�/e�(]([v&Yv#Zx*`�/a�,^1c�,`�6j�;m�=o�t�:p�7m�7l�:j�8h�3a�,]}/b�4f�1e�)_�'Zu/ax4g�7i�;m�4f�8j�9k�;m�:l�>q�8k�>n�6h�2e�/c�/d�9j�8f�Fq�>i�7c�/]~.]{([z*_�(]+`�-_�(Yz0b�/a�5g�5j�2j�4i�:l�Ew�7k�0d�7i�5e�0b�0b�4b�.Z}3a�-_�+]�*\.\~,Z{+]~-_�3e�9k�2c�2c�1h�8l�:k�5i�9k�Bs�Bo�@m�0`�4h�=r�Gt�It�r�Hu�Gq�Cj�i�;l�,g�'_�*\+Y{*Qx+W|%V~(W�3e�;h�;j�:o�9h�Ag�Cm�@p�=j�8d�:f�4b�8h�5a�2\�/_�.`�/d�0b�.\~'W{+Y},\�0d�0a�/e�,d�%^|,\�/a�-`{+Yz,]},Z{)V}0a�3e�1a�(]|$Wr$Uv,\�-Y|*V{,Z|#Vu&Ww%Wr'Xv)Xt+Yq&Vj$Vo)\{.^�6j�6l�5i�6e�n�n�?o�9f�;j�?q�?p�Cr�Hu�Ny�V}�Pv�Ru�Ou�Ls�Lw�Hr�Ht�Q}�Jt�>l�@q�Hy�>n�Bo�=i�3a�,a�6h�/]�+Wz-Yv'Uo)Vm$Qh'Sl/Xv.Zu1]v4`}9f�>l�>j�?g�;d�4_3`�0a�=f�;a�6bl�Bh�=c�3a�-^5^~1\~*[y*\0\4`{2]}6d�0`�5c�/]/^|5c�p�=q�9j�6j�/e�+`�/`�(\t(Zq)[v-`},_z0c�,d+c|(\q([p-_z/b,a�%Zy!YtRg!Uj"Ri%Ro"RiRg"Uh"Vl"Xt)\{1_�/]~3d�/d�(Z}%Xu'Yr7m�6k�,^*]|'\|/d�3i�2k�0h�4j�4f�:j�9m�o�h�8h�9n�3h�.`�8e�1Xy2[y4`}3_|4a~,[y+]x6h�3d�5f�>s�Eu�Ov�Oy�Lz�It�Q|�Dp�>k�5e�-]�+]~%Zz!Tq)Xr,Yn4^t@i�@l�Co�Cn�6a�7b�;c�=h�:h�>n�Dp�Ag�7_�.[|&Ww)Z{(Uv4a�6f�9h�p�9n�9k�>k�7g�7g�6c�2^�1^}@m�9l�;k�p�j�6h�0b�9j�Hv�R�Gq�2c�3e�?l�Dq�Aq�Cp�=j�4c�1a�*[{1c�9n�=n�X��X��^��]��Mw�P|�Nx�Js�Fl�>d�5\y?k�Al�9d�6c�6b{2`z5f�Bm�Jp�?i�8j�Jx�7g�6f�;g�>m�Ft�Gs�=g�.Y|+\|1b�Bo�>k�4g�*`�(]&Tv0]~:f�N{�Hu�Mx�R|�Gp�>i�9e�7c�5^~/]t2a{8e�5a�/`�0c�0a�;i�9i�:l�@q�@p�Bn�Bn�Co�Cq�Co�>p�1f�0f�o�5j�3i�1f�,d�*e�*c~&]{Rq#Yu$[y&]|'`~.d�0b�/a�%Zy%Zz+a�2g�*\}4f�.d�1b�*_~)[t"Rh&Xs3l�Aq�Hr�Jv�Eu�Fz�Ez�4l�.c�8m�1m�?s�>n�:j�-c�4d�.`�4f�5i�=q�>p�Cs�@p�9m�=q�?o�1e�8o�;o�>r�n�5f�3b�*Ys#Xj Sd"Rf*Xr0]~=k�Bp�Dp�S�Gt�Dr�Jw�Es�Ft�p�Hu�Ep�2_�(Vw'Zw,a�7i�6f�7c�0`�*\2d�1h�-c�-d�+`�0b�n�Du�Cs�Aq�Eu�=m�;m�/d�.c�,a�6k�?p�Dv�?o�6f�:l�9o�,d�/e�=m�;p�9n�2b�0`�@n�>j�:f�,\�-d�0^,Yv'Vr#Un&Tl*Zq0_}/]/a�5f�=n�9k�Ar�N|�Lw�?o�1c�3i�6l�?q�g�T}�V~�Dp�@h�@k�?m�>l�?l�;h�An�@k�Fo�Hq�=h�7b�0`�.^�0]~.[z.Z}"Pq%Wp2a}3b�4bzd�3^�:c;j�Am�?g�m�/d�,b�-`}3^~,Z{,]~-_�0b�5k�4d�._�-_�,_|*`�&[�0f�2d�2b�6d�=k�7i�3g�4f�.`�+a�%a�"Z}%Y~/`�4h�3j�1h�4h�=m�4j�3g�2f�4e�6f�7i�9j�-d�(c�3e�7g�4e�3b�/`�*[y(X|1]�6d�8j�>p�@q�@q�6l�4o�9o�.i�.f�-e�0e�/_�&]|&[z(Vw"St%St0`�1b�9h�=i�;m�5g�6h�Av�=r�5k�@v�;o�8i�:n�;o�7m�0h�)a�(`�"Yx$Wr Vp XoVk"Vl#Xx7g�=s�/g�-a�)_�._�)Z{&Yt%Zy5g�6f�-a�*^�8i�8l�8i�8f�2_|1_y-\x'Yt"Tm%Wp&Vl+Zn$Uf*\w>j�?k�:e�Bj�Fm�Eq�6h�3d�#Ul"Tk%Wp+^y4m�0f�Jz�N{�?u�Fx�M{�Jw�K{�Ly�Gy�K}�>n�;k�8j�-_�1c�-_�3h�;m�5j�/e�,b�(],]~1b�+]�(X~$Wv&Yt#Wo-`{._}*]|)^}3f�6g�5g�']y)\w-c*]|)Wx*Wt#Si&Wh&Yn*\w+Zt&Uo$Wt&Wu#Ul!Uk"Xr$\w#Xw%Tr'Sn$Qh*Wl Oc"Sd Oc#Qh&Vl'Zu&[{+[+Y}8j�Ew�>s�Bv�Aq�l�Mw�Iw�Lz�>o�0`�7c�2`�=k�@r�J{�M}�M{�Ju�Kq�Al�Fs�Eq�@l�Am�Fr�Am�;g�3a�,Yv-]t2d{.]w1]x5d�:p�7h�5e�+`�&X{'Zy4c�.[z,Z{6a�2^{*Yw0a�*\1c�;i�2_�1`~3e�,_~1a�)Vs'Pl'Qj+Un%Sj+Xm*Se+Th(Ul'Sl-Wo0Zr3_|3_�+[._/]u+Yp"Tm"VnQj*Tl*Tj!Qg%Ul(Vp*\w+\z'Xy+\}*]|3`:a�6]~,Z|)Wx"To#Vk,[u+\|0b}8e�8g�Dr�?j�3d�8h�>j�4f�6g�9l�Gt�Fp�o�;l�3d�3d�,\�&Wu*Sq)Vw*`�4i�;k�9k�1f�:k�k�p�;l�:p�;o�7f�3c�7h�;k�5b�0\�&Ww+[r([p*\s%Ul"Qe#U`#OZ'Q_!Q_ Q_#Rb%Rg&Tk)Wn&Sh)Xh0[l)Ym#Ul0`v/]u3b~5d�?m�3d�,]{&Xs#Yq-dy1c|2a}0_y9h�6a�4b|5h�8g�1]x*Zq+[q=g}:f�;j�2e�-b�0b�0`�2`�(Zu&Zo(Zq*\w/^z+Wr*Xr2c�4e�,Z{,[w2a{0]|+Tt,Uq&PhNb$Th%Uk+Yq)Yo(Ul*Xo-ay/b+Yz+Ys*Uh-Wo)Wq*Yw)[v(Z{-[+\}.[x0Yu,Zt)Wo)Vk%Rg%Uk'Wn3_x5a|1`~3d�5c�8g�i�:g�9d�:f�8e�3b�.[x7f�Ev�Cq�Ao�Bn�p�?m�=o�>o�=q�=q�:q�1k�4j�3j�.c�/d�1f�,_~-`}1i�9m�>l�8m�,a�$[y'`}+a�'Zy'[q#Zn!Xl#Zn$Zr&\x)\{-d�1g�4f�,c�.c�5e�5c�1c�2i�1h�4i�9k�@p�Gu�U��Gw�@n�Es�l�@q�Ct�Ao�Co�Bj�9e�6k�>n�h�@j�,^']y%Vv)Vw,Xu&Sr&Tv)W{+U{'Uy Uu!Rr+Y{4`�:e�3c�.`�'Yz,Z{.\�7h�j�4d�-]�,Z|2`�-_�/d�5j�-b�,^�2b�1a�6f�5g�1f�1c�/b�2_�4_�9g�7i�3h�:o�4l�3k�4h�7i�;k�;k�8p�5o�7l�(b�*b�*`�#ZxQhSk#Rp,Wz7_�6`�)Y}#\z'\|/a�/a�)`*[{._-^~+Zv)Xt,Z{-]�7m�0f�.e�6k�=m�?o�=n�@p�Ar�4i�,_z#Up'Ts/^|*\w&Tl!PbJ^#Ul%Vt+`�0c�/a�,b�'_�(^�(^�,^�/_�)Y},\�,]~&Yt']w*_9i�@l�3g�4j�6j�8h�3e�+a�#Zy&\x/a|5b�4_�1b�+`%]v(Zs*Wt.Z}6h�9n�1e�)]�2`�*[|$Zv+\z/^|,_~']1g�?q�>k�1g�-[|+\|/`�4i�)^}%[w&[z)`~ Vr#Vq&Xq(Zu$VoUj Wl'Yp,_t.]w+Zx.a�-`1c~7i�7m�.f�1l�n�=n�9f�2[y7d�:f�:c0]|8d�8e�;i�Es�._�%]v)Xt%Yo*\s:i�;k�?o�Bs�Bo�Dn�Hs�Qx�An�5f�2d�0a�Dr�8i�2`�,Yz/\}2^�3c�0_})Xr&Xs+Yq*Tl(Tm-Wp%Tf%VeN\ SdShNfTh$Th$Vm$VoSi!Sj&Vm*Zq'Yp"Vl&Zp([x(^�+d�.c�+`�.c�0c�1b�/_�0b�5f�1b�.`�-c}1h}-c}+`�-e�+Zv.\}0a�1c�1f�2d0a/b�'\{%Xs)[t$Xn$Wj'Vf+Xm*Vo)Te)Xl,Zq+Yp0\u1^u0\y3^~5^~/[x.[x/`�+_�,^�*[{/\y-[s'Wn%Ul$Ri PdRe)Yo1_y0_}-^|*\w(Vn&Ui$Wj%Yq*[y1_�/]w2a2_�/^|%Xm$Vm!Uk%Yn%Ul(Ur%Wr#Vs'Yp'[p)Xr)Wo#Si'We#Rb$Tj$Sm#Si&Tk.[z*_.e�1f�.c�2d�3c�5f�:g�:h�6g�5g�3d�/`�+W|2\�7e�7h�;i�Dp�Ep�Ag�Ek�8c�2`�4b�5e�k�Bi�;e�0]~4_8d�;i�5g�4e�1a�-]�,Z{,[y,]~,\�._�0c�,_|1d�5f�;i�:h�9g�9d�3`.[|.\})^�1a�2`�/`�5a�1]�'\{&[z*[{2`�:e�>f�:b�-Y|-Xx.Wu-Vt1Vq3Xu=a�9f�?k�Jt�Bh�@i�9g�7e�)Wy-[}*Xy&Us$Vo#Wo%Tp+Vv'Tq&Sp)Tt$Wr$So&Us&Tu(Yy'Zy-Z{5`�3_�-]�6f�0a�*Ys(Rh#Hc"Mm2Vz7]�1[�3`�2\�2Z~+U{2\�5\�1Y|1\~0^6d�?j�;f�/a�%St+Y{8f�;k�/`~+Ys&Sp'Rr)Rp/Ss4Vy6Z~5\�:i�n�8k�1c|&Ww-]�7i�:j�@j�t�p�:k�6i�&Yv+\z-[}0a�/`�/\{(\q#Yq+\z/[�,`�.f�6k�l�9i�-_�)Y}'Uy(Vz7c�Bn�Oz�Nt�Ip�It�Ho�Dn�Ah�3_�5c�7c�5b�;h�5`�5_�-_�&\x&Yt+Xw'Xv,Yv-\z,Wy3^~7^}-Ts(Ol)Un)Wq-Yt)_�._�6d�0^�0[{.Ww,Us,Tn(Qo'Ru*Ru2Z}3[~1Y|-Xz-Xz+Y{,`�.d�(X|)Tt'Pp%St#Rn#Qi#Me"Of(Pi#Mc$Nf)Up)Tt*Uw-Xz*Uw,Wy(Tw*X|)Wy/[~0Yw%OgL_!KW#KS LW%O[HQOZOZMWM]#Rf$NfLc&Uq*Wx/Z|.]y.Ws'Vt(Vx0]~-[},]})[v+^y4g�._,Yx1Zv.Xq*Wl'Ti$SeE_*Uu/W{/`�-_�+]~%Vv'Tq#Qk#Rn*Yw,Yz+Zx'Yt#Ul Ug Tb"Qe#Pg$Rj&Wu)Zz.[|,Xs*Wn"Ph"On)Vw4b�4`�:f�7g�,d%Yo*Wn1[t,Xq/]t,Xq.Wu-Vv(Ws(Vp.[x;i�:g�3`.\}1b�3e�7d�:d�:g�4j�2h�3h�2g�1h�7j�9k�:j�7e�+]~.^�;f�7j�4i�/a�(Z{ Sp*[{([z*]z*[|1^�:g�5b�(]VuUq&Tu/Z|5]�-[}%Wx4e�+Zv'Ul'Vr.a�&[{!Sj#Qi%Wr"Ur-]�8i�8n�7l�:m�6g�2d�1e�1a�/`�#VkSi&Xs.^�8i�=n�1e�:k�:o�=q�Hx�Ht�Gp�=j�-^.\�Co�Jv�?q�9m�;m�>n�6k�,g�/g�:k�>k�Eu�>o�;n�5i�6j�8l�6h�8i�6g�7i�:l�:n�:l�5f�;j�1`|#Rn"Rf'Vp&[{/e�9k�7i�/f�2a:h�8j�.f�*a&Ww,a�0b�-^�-^�/_�&]{&[z#VsSm#Wo'Vp7f�5c�8c�1a�-c�0h�/e�2f�+\}2d�1h�/d�/`�0b�(]|'\{-b�8n�>v�7o�6q�6n�+b�4e�*[{'^|(e�#\y)^}(]|,a�-b�-d�"Yx*a�0f�7i�8j�5g�0b�/b�']yPn1]v1_v$Wv&XyRq%Xs%Zy&^$[y%[u0f�0f~1d/e�*`|)^}(]|!Zw!]y(_}2e�*^v/b},a�4k�9p�/e�2g�1b�4f�-`}"Zs&^u(\t%Wr%Tn(Xo0]z0_}$\w'[s%[w&\v%Yn$Wj'Zo(Zu,]{(Z{)[~(Z{2d�n�Dq�Jv�Lv�Cp�8l�9m�8j�5g�2d�9e�8f�:j�6f�/_�+Xy,Ww,Ww1\~3`4]}3W{+Xw*Vy+U{,Uu+Wr&Xq([v$Yx0a�>j�;f�-Y~.\�+Xy(Ss%Tn,Yv3b~9e�/\{1`~9f�9f�7c�4]}7_�,]})Wx+Y{'Xx$Sq$Pm)Un!Qe!Ne5Yy.Ur*Ux/\�3c�*]|)[~2]�4^�;i�7i�)Z{(Su(Tq(Tw'Rr+Tp(On'Rt#Rn#Rn&Uq'Tq#Qh NeK`N`Rg"Ur$Tx+[-^*[{&Wu'Um#Oh%Ro+Wt(Yy%\{'\|&[})^�1f�-`}2c�3d�-^~,]}-^/_�(`�(b�'\|)Vw,[y*Yu$Vm+[r)Yp-]t(Xo$Vm$[p%Yo#Sj#Tr.\}-^|+^y,^2h�*b�+`�3c�6b�5`�9e�7e�7g�6f�2`�,^�+[�3`�2b�2d�0`�._�-[|+Yz%Vt)Zx;g�Ji}i~�fy�t��m��Z{�Ru�Vy�Ru�@i};e{;fy9gw5bu7_x8_|7b�2e�*]z*Yu,Yx)Wo+Xm-Wm-Yr0_{(Wq"Pg)Wq/]:j�=o�0b�:g�;k�:f�;k�Cs�Iv�?k�6f�._�+[+Zv*Yu4_7`�2_|-Zy/]~2`�0_}&Yv*]z*[y*[|/a�)b�%]x([x/b�)_�3i�-a�3d�,[y,Z|-[|1_�)[|-b�0b�,]}!ToQlPh TlTl"Vn(Yw)Y})]�0f�.b�*^�3e�7h�6i�,b~'[s SfQ\Q\Pa$Xn-b�4e�1_�*Uu'Vp&Xs*Xy2`�4f�6g�1c�2d�6h�2d�>p�5g�)^�!VvUp"Zs!Wo"Rf&Vm*Zn,\r'Wn$Tj*Zq9e�5b�1a�4f�4f�._�)[|$Uv$Qn*Tl.Zs&Uo2a/c�,h�,b�)`~.a~'Wn$Ri'Tq-[}(^�$Z|)^�4d�1e�4j�=s�@r�Fv�K{�Jz�Gs�Eq�Bn�Hu�?i�Ho�Mw�Ds�Bu�Hx�Hx�5m�2j�7m�>t�>s�=q�?p�;j�s�>r�:n�3i�0e�-_�._�2]�-Y|$Uu'Zy#Xw Sn!Sl!Sl"Xt%Wp Sp'^}*_-_�-_�/d�,_~-\v5b&ZrWn&\x3d�9j�p�;o�3k�-e�*a(Yz+Zv,[u+Zt1ax-e�.b�8h�5e�2c�3g3i�0g�3h�=n�9j�@q�;o�6k�As�=m�5a�3^�7c�An�>o�8m�-_�&\x,e�4k�6h�6k�.d�*_�!Rp$Qn)Yo0e�4l�2h�@r�Bo�8i�5b�-Y~2`�=k�p�>l�;k�:j�8h�:k�Bp�>l�3_�*Ux,Xu-\v.bz0c�.d�3n�;s�;m�>k�9k�3h�5j�2d�/a�/a�*`�/d�4f�:o�8l�,a�0b�2`�4`�0]|5d�>o�=m�Ao�Cs�Ev�Fs�Dr�:l�5i�>o�p�Gs�Nv�Fs�Aq�;k�4b�=j�9j�9j�Ao�Co�>j�=j�4h�:n�=m�l�;i�5c�8f�>j�8j�9l�Cr�n�@k�2_�0d�)^�-^/\}.[z7c�9e�:h�/`�)[v.`{*_/d�,^&X{;k�Cu�?l�=j�Cx�Gx�;l�0b�+a}/b1c~._1a�0]�&[z&Zr%Yo+^y4e�-_�"Wy'Xy&Wx"St*]|,a�)Z{0]|3_z>k�p�Kw�Nx�Lx�Nz�S{�Lt�Em�l�Ai�Fs�Oz�Mw�Am�7g�8h�5f�Gr�Dk�;d�>c~>b�Cn�Co�;h�=k�j�;d�5a�3g�3h�8i�Gr�Em�4`�0c�0b}-^~._�+Yz,Yx3]v1\|.Xp%Re#Qh'Sl(Vn-Zw4c�1`~5f�3c�8f�)Tv2[y0]z-^|9g�4f�.^�4a�9f�5h�:g�Bm�9h�7d�?j�j�Xq����������cgfUZ]RW[RQVois������������Ƚ�ʽ����������a��Cr�Du�?l�:f�6c�4e�5f�6f�7e�8j�:l�7i�5e�+ZvQh$Ri!Og#Pe$RbOY QbQfPi&Wu4c�.\}+[&W._�2c�8j�1e�6c�+\z/b}2c�2f�,c�9j�?k�Cs�4l�1g�6h�2b�/a�-_�,b�+a�4f�:h�5f�/c�1a�/`�1_�1_�/\}-Z{)Vu)Xv+Zx(Vw)[�4e�/c�2f�2f�8i�=s�,d�0f�2f�/`�'Yt'Yt"To"Uh Sh#Wo&[{/a�+Yz*[{)Z{/c�/e�-f�-c�)_�&\�&\~/e�2d�/a�)_�%[2d�2f�._�)Z�.^�5g�3g�2f�4g�-_�-a�1f�1f�4j�+_w%Yq'[q%Yo!Uj Vn!Wo"Tm)Wo$TkSmQi!Rc%P`M\!Te%Ui%UlRmRm!Sl"Xt&Zr!Sj"Pg#Pe"Qc"Rf#Wm'[s'Zu%Xs#Yq%Tn&Wh Sd#Wl#Wm PfNd Qb!RcO^ Q_!R`"R`#Pc"Qe!Sj%Ul&Vm&Xs#Zx&\�*_�+a�7n�:n�As�Bt�o�9p�;m�>q�Cu�Kx�Iv�9g�5g�=i�Bn�;l�k�9g�8j�6h�m�2`�)Wy*[y5g�=s�Dt�Cq�3e�/e�+`�,^�/a�5c�4b�*\}+Yz.Zw)Up&Rk'Vp'Yt$So'Sn(Tm*\w1b�8f�+Xy-[u)[r%_u)`/]�1^}2^w,Uq(Yz#Xx#Zx)Zx*Xp&Ui%Yn#Ul&Uo"Vl%Ui*Tj-\v-_v*Ys-\z/^|-^|7e�;i�@p�=j�-`3`}n�1c�/d�3i�1e�6h�0b�.`�4b�;f�8h�5j�8e�:e�4g�6h�=k�7h�3e�;h�?j�@m�7i�5j�:l�8h�7g�;m�>n�:h�7b�p�Fv�O|�Q�O��K|�Hz�Ew�Ev�J{�Dv�9n�8m�3i�8n�7k�>r�m�6e�-\x/^|3`�6c�Ao�Iw�Hu�=i�(Ul+Zt,]{-^~(Z{%Zz)Zz-Xx+Vx-Vv*Tm$Rl!Wq']y,]{'Vr/]w.[z-Y|*X|+Zv,Zr.]w3a{/_v'Yr0_}5a~2_|/^z9l�9l�;i�Bn�l�5f�5`�4_�9d�>f�=e�4`�,]}1_�._1b�7e�l�?j�@h�8c�1`~-Zy+Tp6]z9`}0Xr3Wm4Wm/Yq/]u*Wn'Vj/Yr(Tm5^|7a�;i�Co�@l�>k�Bo�Eq�;g�Dl�Fj�9d�.[z2[y.Wu)Rn#Rf&Td$R_'S`&P^'Qa(Uh$Wt"Sq#Qk"Ng$Pk&Qs*X|)[�/Z�4[�5`�7d�8h�6b�7`�,Xs$Qh&Rk&Om&Nq2^�3`�5b�5f�3g�.c�,\�/_�3_�/[~*Z~,a�1f�4h�1a�,X}*X|._�3d�=i�j�D:SRN������ypq������������ű�����Ǽ��������������۞��Opy=g�9k�7l�6i�4b�6`�-[|0^�0b�0f�4j�2f�3g�/e�1c�1b�.a~*a)_{0b�1a�.`�3e�,c�4f�0e�/g�5g�8i�j�Er�Gy�@u�6f�=j�9i�2c�6h�4f�9f�Ht�Fv�?s�;m�=k�0e�5j�3e�-^)Y}.^�-_�,^�2b�9i�s�Cv�7m�6h�7d�8j�.d�*_([v([x"Ss*\1a�7d�2f�,b�,]~+Y{6k�@w�8n�/c�#Vu+\|4e�5j�*f�(`�0e�r�5i�7h�s�Fw�Ly�Hx�As�>o�@q�Ar�6h�5j�=q�Gw�?o�>n�4g�3h�6h�/e�&Z#Tu)Wx)Xv$VmShSe(^v-f�6h�5b�0^�)a|"Xp%Xk%Wn&Xs(\t#Ul%Wp*Ys)XrRm#Vq%Tp$Qf$Sg&Tk*Xp)Wn#Sg(Yj%Th/]w2a}4c/c{0c~,a�,^�-_z-_z,`v(^v!Wq"Vn%Tn&Tl+Yq+Ys)Yp$Th"RfOeOd"Sa"P]%Td%Th(Yw%\{+\}.[x2^{1b�>o�?o�Bp�>j�h~Sx�Qu�Ms�Gk�Cg�1Y|+Vx.Yy*Uu'Vr(Vp.Zs.Xq3_|:b�9e�3_�.[z0Zs)Vi%Rg'Tg(Wg&Yn4`�3`�0Zs.Xq&Rm*Vs)Ur)Tt1_�/]�/[�2\�4[�.Y|)Zx*[y*Xr+Xu+Yz/]�.[�2^�/Y:d�7b�/[~$Us#Up&Tn+Wt/\}-[)Y#Tu,Zt,Vo%Rq-]�7i�>l�=h�>f�0^0^u4]{4`�1e�1g�4b�1\,]{"UpRg&Sf+Xk4a~6h�>m�Xx�j��p��a|�l��{��byQr�Kx�Ov�Lr�Do�?l�Aj�Ck�Ak�9i�6h�8h�>l�Ju�Ip�Ae�2Z}1_�5b�:g�9i�8h�5f�7h�6h�5g�7d�7e�5e�2f�o�Rn������Ǹ�����he`�������vwgefpkr������������������������������������������f��=h{2a{9b�6b/]w0b}._6b�9c�9f�8h�=k�8h�3e�7i�=m�7h�6f�9k�3i�1g�4f�4b�6h�*\}(Wu&Rm'Uo#Rl&Tl(Vn Rk(Yw0]~2_�,]�,a�,]}*Z~']�0f�-`&Ww*\'Y|$UsQl Vn"Up$Sq*X|+[�1c�.d�*_�&[}2d�'Y|/`�1c�-^/[�4d�4f�Aq�Cp�Cp�:k�3e�3c�7e�=k�>l�3c�4f�5g�0b�,^�-a�3g�Br�9k�7i�*^�(\�"Z-e�5i�>o�Br�7g�3c�9f�)Z�.^�*`�*`�+]�,^�,`�.b�2h�0f�2g�6g�5g�0e�1c�1_�.\~&X{*`�.e�(Z$Uv"TmNe Rk.\~6d�?m�@t�0d�"Yx!Wq#[t$Yx)Z{,]�-a�4i�=q�Ct�?o�;k�:l�7g�7g�2d�6k�3e�-b�3h�n�0b�5g�@m�p�?s�9k�Du�Br�Br�=n�=o�0d�1g�-b�9k�Fz�O��O|�Cm�Ak�=j�@m�Du�Du�7i�6k�?t�Cq�=n�h�8d�0[~/Xv.Yy0]~)Wo%Rg'Pb&Oc&Ph%Og*Qn.Tx;\�<_�8e�3`�5a�2^�.Z0\�9c�Dk�?h�Bk�Er�Aq�;m�9k�0b�2`�6c�6c�+Y{.^�1_�.Z}/Xv+Wt+Wt,Wy+U{+X�6g�k�>n�5j�p�>p�:l�8j�1e�0f�7k�7h�6k�0g�.a~/^|9k�:k�:q�@r�7k�7m�2h�2h�>n�9g�/a�/d�3c�:d�,Z{._},]}#Tr%Wn"Xr)[r1^{?l�2`�+^y2e�,_~1a�6f�1b�&Tu*Wv,Z|8h�9j�%\{'Yz-^3b�*Ys$Sm$Vo'Vp3a{>k�j�Ap�8i�&Xq!Um'Zy)Z{,Z|,]}*]|([x,_~+`�1h�+c|&\v'Tq#UnUj#Wm"Tk&Ui2]p Q_!Pb)Un3_|0^x(^z'Zw-Z{0^�/])[|1f�.`�0`�9e�Hv�Dr�Er�8i�3h�2i�8j�Jx�=k�6f�1a�*_�1c�8n�9m�._�*[y0c�+]�0d�:o�?q�>s�Dt�Hv�Cy�I}�Br�3c�$Wt*`|*]x*\}%Z|$Zv!Ti#Rf$Sg#Rl&Vm&Tk'Vj%TnSo$Sm.Zs,Yx/d�+b�*_�+Wz)Wn#S_ OW!PZ!P`(Vm(Vm(Xo(Xn$Tk!QeO]LY!R`NX"NW QX!RY!O_&Qb/Yo,Xs-\x/Wq)Xt)Xr+Xo%Sj"Qc Qb!Qe1Zp2[w$Oo"UjSh(Vm/Yr/] Uu!Um#Vi Q`P^%Ua"R^#Tb.^t(Zs Ri Ne'Tk-[u2`�3a�,Yz*Yu"Tm!Of&Qd)Tg$Tk$\u"Yw&Yv'Zu)\y0b�+_�.c�3h�/e�0c�1b�3b~._}0a�._�+]�5g�8j�8m�5j�8j�7l�9k�@n�Bm�9e~/^z.a�3^�0Yu-Vr%TnPg+[q;g�Cp�?k�6f�-_�*[|-Xx.Yy4`}5a~9g�5j�=k�=c�:e�:h�7a�2`�*X|*Wx,Yz*]|)Wy%Wr%Wp(Zu+Zt*]x.a|0c~9h�Am�?i�;h�8e�@o�Er�Js�Cn�>k�@l�5e�,]~,Z|,Z~%Vw-\z2^y2]}4c�>k�>j�;i�6k�:j�;g�:c�?h�@k�Gm�=e�5a|3\x2^{8c�@i�;j�k�Cn�Cp�Dp�Jt�Fq�9f�,Ww$Rl Sh)Yo-[u(Tm(Uv&Ww+Zt+Xu+Wz)Tv0[~1^�4a�:e�?l�:o�5c�*Xz%Su$Qp'Rr(Su*V{7a�Cj�=h�5e�3h�-b�,a�3_�3_�5a�.\�*W~%U{)Y0]�3a�0\�7b�=j�k�@p�Cp�>l�Dp�\|�w����������������������������������������������������������м��������c}�Kw�Jw�Hs�Hs�Bm�Cr�An�Es�;q�:n�@r�7j�3h�2f�4g�4g�6f�?q�Bn�\l|���������Z^aPU[INRBKJ>GFCHBOPJOTPUUUa\`�{}���������������Ѿ������������������������؍��Sptk�?j�6_8a�@h�Bi�Fn�Iw�Bx�h�;g�;e�;g�h�9e�?h�6g�;k�Br�9i�:j�9i�5i�5f�Co�An�Il�[irV\\aacywzMNPEKICGF=DJ?DJHFGRLLTOSOOOTRS�{~jfc������jf]���ų�����ͽ���������������������������_}�Ir�Fs�Gr�Bm�i�Ak�Gv�Iz�Ct�>r�:k�(Wu'Wn"Ri#Wo$Yx.`�7g�7k�4l�1e�1c�-^~(Yy0a2a,a�%\{1d�0c�&[z&[z-^+]�+d�,d�)_�+`�+`�)`)^~,a�&^&[}$Yx%[w)\w%Xs+_w0a+`5h�/a�2d�6h�5g�1f�.f�*e�&\x%Wr+b�,a�(YzTl Xq$Wv)Zz6d�5c�3e�*_�+`�0e�/d�)^�&^(^�)_�)_�+a�.c�-b�.c�+a}*av1c~+Zv+]v0b}-d�3k�2h�.`�2e�/d�3j�9n�;q�1g�0f�2g�/d�0e�4i�0e�/d�2d�2b�.^�)[v&Xo(Xn%Tp&Uq%Tn%Sk$Sm)Xt(Ws'Yt%Wp%Xu#Tt*Xy/]/a�5j�7i�.^�+]�3g�8h�5e�3c�0^� XqRh"Tm)_{%^y'`{*_~1c�:l�5m�.b�1c�0b�&]|"]{(a*_~']y&Yt([v+^y*]x/az3d�2d�3g�3e�,a�*a�&]{$\u$Zt*]x*]z,_~0b�+^{*]|+\z1^}2^y.\},[y-[|*Xz%St"Qm"Qm#Sj"Tk!Ti$WlRc#Rb$SePeQj*\w+\z0a5c�9i�4h�5i�0f�/f�4g�1b�-\x*\s&Uo(Wu&Tu&Nh$Qd#RdO`Sa"R^!P`$Th$Sg"Pg'Vr)Zx-`-[|.\}'^}*V{%Xs$Xn$Vq)Wq)Up*Xr(Yy/_�3d�5g�7h�i�4a�-Xx*Wv#Rp$WrSm$Sm,Xs,[w7h�Cp�>j�e�Ai�j�;i�>l�8f�3`})Vm*Tl'Oi'Mb)Rh)Qj1Vs/Vw.[|2_�7c�6f�/a�.[�6`�0`�+\}2]�1\5`�6b�/_�3_|Mcxnr}����������������������������������ɺ���������������������������¶��ƺ�ƹ����Ȼ�Ǽ�������������Ʒ���l��Ns�Am�8j�4l�7k�Er�Dq�@p�:k�Al�Nk�HZhKT]JNYJNOLRPHMP=FE@IF<@?=CA=FCFMFOQNPOMTPMe][ggenjk�������������Ϳ�ưͼ����θ���������������������ٜ��Gan5`�p�:k�2`�+Y}/`�,d�2j�6k�3d�l�6d�s�;m�>o�@n�;i�1b�*`|2e�j�7i�7j�:i�=j�;j�=e�0b}#Yu$Yy-a�-e�6k�n�3e�-b�/d�5g�:o�.c�,]~.^�1a�8e�2`�'Xy%[w3e�1c�.b�6j�=r�:p�2n�3l�6o�7n�0f�4f�6f�2h�3k�2h�.d�9l�r�5e�1^}1_�0e�5g�6f�.`�/`�2c�/g�1h�Bt�/az*]z-^&XsPg"Uh&Xq,_|3e�n�Er�r�Eu�Iw�Es�>o�Ex�=r�?o�8i�8j�;h�?f�Cl�6d�*Wx&Rk&Zr'^|-`9j�;i�8g�6j�1d2e�6g�5g�0b}2c�6k�6f�1i�-b�1f�4j�5j�;l�5g�6e7f�:i�5e�-b�,_z0f�/e7i�6k�1a�+[2g�?r�=r�Dt�Br�Am�2]}3a{/]u5d�;l�6e�n�Bm�:_�-Y|+Zx1]x8a�Bk�Jq�Fq�9k�-b�8d�Bo�Gw�@t�Ev�>o�Gt�Ls�Is�>r�>p�:k�An�Kw�Gt�Am�Dl�>e�1Zx(To0Zs1^{3^~?j�@k�i�?m�;g�6g�=k�=m�?o�Br�>n�?q�As�?q�m�4c�Al�Mq�?h�Eq�Bk�=d�5^|>a�Af�k�7f�7d�7f�3a{3\x6X{>`�9a�2\�5_�@????>>>?A>HFGHJIKKIQKKSSUYX]i^f�������zϾ��ɻô�Ŷ���v���������������������������Pmqj�8h�1c�5g�7h�5c�3b�1c�-_�'[�&Z1c�5b�0a�-a�(]�/c�2d�.`�7i�-b�'^|)Zx*Yw)[~0`�-Xz)Vu*]|,b�/e�"[y+]�(Z}+]�1f�9n�8m�0a�(Ur)Un#Qh%Uk&Vl$Wr*[|+]~(^�)_�*]z(Wq'Xv&Yv#Wo!Wo&Zp(Zs*Yw0^�-[|(Wq)Yp(Ws%[s*\s#Yq*b}.c�,]{,`x.`{1b�,^�-^�3`�-[|$Rt,Y�5d�2b�.b�4d�,Z|+Yz+\|,[w0^2d�4f�.d�0f�2g�4l�r�/g�)[|+Xu*Wt(Ur+Xu0c�+b�!Yz"Yx$Wv)Y}(^x(^z1c�2`�*Yu!Um#Vk$Ri!Qh)Xr)\y$Wr(Yy-]�/a�0`�:k�Fw�Cp�7i�.b�5e�9g�7i�3k�3i�6l�/a�,^�-b�3e�4g�3j�,b�-_�*\)_�.b�4f�/a�5g�;k�Fs�Kx�Jz�Cx�Av�>n�>p�:j�@n�Er�:o�.c�&[z(]|)\{(Yy&Yx%Xw&Ww)Y4f�;m�7k�5g�0a�.a�-_�.`�0c�/d�)^�.a�,_~9k�8i�6l�0e�3d�,a�&Yx&Us#Rp)Xv+Zv,_z,a�/a�/]~2a1]z8c�o�Nv�Hr�=g�;c�Ju�Hv�;i�=k�Iw�Fr�Am�[i7S_>D@;A=:=6@?;A@o�Ao�r�?t�@q�9n�:p�=o�7i�.`�+]�*^�,]�(Z}'Y|/_�0]�1a�/`�:k�;i�8i�3e�,b�5k�=o�1c�+a�-c�/d�4i�2g�6l�>o�o�6l�:n�Br�5g�/d�*`�*_�7l�Iz�Dq�?m�:l�.c�/d�6j�3n�6l�8m�5j�2d�9i�9n�Cu�Bs�-_�,^�4d�-[|'Xv1d;n�o�@l�,a�"Yw&Zr%Xm)Yo/_u,[u+Xu-Zw+Wz%Rq*Uu(Ut+Xw)Un0]|3b~+Ys+Wp&Tl#Un)Up)Wn!Tg"Sb#We$Uf"M`#Q`O[#OX"R\"R\$Sc-]t7f�9d�6a�6b�6b�0^�7h�Bs�>l�Bn�6d�3c�>l�7i�3j�$Z~-^�7e�3`�9d�Cn�N{�Ix�?k�Am�?o�8j�5g�?m�>n�Ao�Eo�Dn�>h�>h�@l�Do�Lw�Nw�Ow�Lt�;g�:f�7c�/\�2`�9g�5c�-[|,`x6i�Dv�6k�=n�;i�9i�6h�9f�Fn�Ju�Ep�@l�>g�8b{Bg�Eh�@e�=i�Eq�@k�4]}2Wr9^y8_|;d�=f�:b�7_�6]~=b}3\x1c~?=B>>@=B>=LKINOQi^b������Ƹ��μ���������������ͷ����������������������\qrHt�=k�9j�>o�4f�,`�-e�-b�-^6d�9c�7g�3d�3d�3`�Dn�Cq�@p�i�:g�8h�@p�;l�2d�/]�)Vu(Zu'\{%\{)d�,\�.Z}2^�.`�3e�5h�1f�)_�#Zy*a1c�-c�+]�1_�8e�5e�8h�6l�2g�4i�7i�6h�2f�0b�5e�0b�)[|&Xs%Ui#Zo0e�:h�9g�3e�1g�*`�,^)Zz0a�3e�2f�7m�?v�9m�6l�,b�+\z(]|']!Zu!XmNbM[O]M[O[ PZPYSa!Qe-Wp,[w+b�1g�5j�,^�4a�8d�8j�7l�+`�&Yx0`�6d�.^�6j�2f�1c�7i�As�?r�Cq�@k�8f�'\|TsSo"Ur0b�Bt�Ky�Ft�Fw�Ar�Bo�Bp�7e�;l�2c�.a�/a�,b~'[q%Xm"Xr,_~*[y#Ul#Ul$Vo'Xv*]|+^}"Xz"X|!St*_�;l�>j�;k�Gw�Fs�n�Ft�Ks�Cq�@n�Ar�/a�Cq�Er�>o�8i�3b~7d�3b~,]{4c}:d}@i�9_�1Zv6`y/Wp*Rk*Oi(Na'Rc'Rc'Qa&Qb!Pd"Qe"Od#Qh$Qf*Sg%Sj'Vj/Yo.Xp-Wm-Yr+Yq3`}2c�9j�CF@DE>BE:C@=B>CB@HGENPOVRSj_c����yu̺�������������������Ӽ�������������������ùHko4d{.\t/^x-`}+^}*[{2]6a�4a�0]~3[.Z}2`�9f�6a�2`�1e�4h�6j�5i�1i�0b�4e�=i�=i�7d�6g�:k�.`�*\1c�/c�1g�=j�Ao�Aq�9k�3f�@l�6h�2d�7i�9k�1g�.b�3i�+c�4i�;l�6g�r�4e�+\}'Xy.b�6j�:n�Dq�My�Lz�Bs�=q�i�Ai�e�?k�4a�?j�5a�4^�=e�9i�j�8d�9i�5k�@m�;f�8d�Bj�=e�1_�*Z~&Ww#Up#Si#Pg#Na$Sg'Um(Xo$Zr+]v+Yp*Wt+Xw*Vo-[s+Zt0_{.]w+Ys/[v/[x-\x*`z0c�.]{-\v*Yu(Zs'Zo'Yt$Vq&Uo%Tp(Wq*Xp5c{=i�Hr�Hs�Hp�Fn�Nw�Fq�N{�Oz�Ks�Fm�Hp�Oz�Mv�Jv�Oy�Uy�r|�������zo�sm������IJ����������������½����Ǿ�ŷ�п���������������������������������������������ѷĽ���Il?dEh�Ji�as����������������������Ŵ�����������ɿȺ��¹�Ľ������������������������������������������������������������������������������������ļ����oocTVUORWLMQFGLBEJGHLDIMCHLEJNFJKJLKMMMIMN@HK>GN?EQ;BH9ADAEFAACn�7g�*Wx0]z4e�1c�/`�-\z4a�-^~']y/a�6c�.^�)^~+\}*Wv(Ss%Wr*Xy2^�3_�*Yw$Us*[{6h�:l�Ey�Dy�;m�#XxSkVgWh Wl'Yp'Yp'Yp)[v(Yz+_�,`�6h�2c�._}3b�>l�Do�7c�-[&[z9i�0a�QjMc$Tk*Wn$Qh!Sj"Uj"Qk/[x4`y,`u*^v0]|2_~2_~'Yr&Yv'Yz%Vw&Yv%[u#Zo&Xo%Wp#Un(Wq$Tk%Wp"TmReSa!Q[OVP["R^"P]&R_ LY&Qa"P_I\$Ri*Xr*Yu2a>i�2b�n�6d�9g�?k�Es�Aq�Aq�Ky�Dp�:l�;r�>o�:g�8i�5n�5j�/`�6c�8j�;p�]zJl�/Tn�����}��������drjUxkb���������������´�����ǻ�Ʒ�ĵʸ����ͽ������������������������������������������������Ѭ��k~�Sdnadm����������v����������������������ƹ��������������崭����������������������Ⱦ����Կ�˷��������ŵп�����������������������������Ǹ���SSIFJIMXTISTDLN?IKAIKCIICGFHJIKMLFJIIJOJJRFINGHMEJN;FJ?FL=EHAF>BEA@AEECFKKMJJJMMMNNN[YZ\^]SUTe\a������������~vk�|v���˴��������������������}=\a6[vn�Cp�Bo�6c�)Xt'Vp+\z-d�+`�0`�1a�5g�2g�2b�-_�'Xx%TpRg!Tg#Rb#Q`SaP^Sd!Ra!P`%UaN\!O_"P]OYRYQ_ Ri&Ww)Zz&Xy#Y}.d�1e�']%\z%Zy,b~3f�/d�,b~,_|-^|'Vp)Yo&Zo([p+Ys,Yx'Vp%Rg(Uj!QeTe"Wi$UfPa"Sb P\OV PZNX OW PZPaRg!Qe#Qa&Sh*\w,_~.`�4d�?k�6b�4_�;h�6c�4a�-^|8i�@n�Fr�/^x*Zp&Tl/\}7c�0^x/^x)Yp!TiQf$Vm$Vo(Wq+Zt*Yw(Yw,Z{1^}3b~7e�2c�,]~,[u*Yu1b�)Xt1`~>l�BE?EEAEF;DA=C?AC@DFCHNLFONDMJHLKPPRRRTXSWe_aoge������nhZ�{r���ʹ��ô������������������{�Rs|@m�3e�8i�4g�8f�=i�9k�;k�5g�1c�,`�0e�2j�6n�9m�6k�4j�-b�+]~.\�0`�.`�&Yv%Ro*Ys%Xw)[~-_�+]~*Wx)Vk#Ul%Zy._�:f�j�>k�2f�/c�+_�;l�@p�4d�2j�.i�7m�8m�6k�6k�6h�/a�0b�,a�2g�0c�,]{)Zx+a{(^z)Zx6d�)^~1g�6k�4f�;m�/a�(Yy'Yt'[q3_|;c�;i�:h�6d�=k�3b�4c2e�.e�/e�+`�+]�0`�0b�#Xw"Wv$Wr'Yt#UlQgPh Sn$Yx$Yx(Yy,\�-a�)]�)`%]x$Xn'Wn$Sm'Yr(Zq&Yn!Yj'Zo,Zt0_}-`-`{(Ws(Xo-[r+]t*^t/^z/`�/a�0a�1b�6d�=k�;i�4e�(]}(^�.i�6q�i�@l�Iv�Cr�=l�0c�&^y&[z4f�?o�Es�:l�3e� Qr"UhQf%Wn(Vn*Vo*Wt(X|)a�/j�4j�8j�4i�3e�6g�7h�+^{&Xq%Ui Q`O]#Q`&Ug$Xn$Wr(Wu+\|*_-b�,^*_�,a�2d�CI?DHBGKBCHCDHDHIAAAFJIIOMJLIHJGHHHPPPRTSTVUXVW���cb`hc`l^]���Ǻ����ʸ��������������ξ����̿���i��Ot�Cp�u�9n�-]� Np%Tp#Wo(Xo&Ui$Tj%Wp)[v3f�2g�/c�4i�4j�4b�2_�/Z|*Wv"ToPm)Zz2d�-^~7e�o�Bm�Dl�������ÿ��÷�Ļ����˸Ŀ���m�����������q���Ű���}������¹����������µ���������������������Ѿ�������������~������zuqmljhbd���´��v��������������������μ��ȵ��������������������������������������о����¼����������������������ξ��������������ƙ��\]WTY]OR[OSVLTVFNPFNQILSAEHp�7i�7g�@p�Er�@l�?p�Bt�@q�Er�It�Gp�@i�Am�Am�=h�*`z+a}3b�7`|/Yo+Xo+\z2g�-d�-f�*`�.a~-b�,a�.c�)\y&Xs)Vs)Xt+]~(\�+\�/a�7b�,Xq$Wt)[|3f�4d�/_�3e�?o�6f�4d�j�Br�9n�8m�1b�0]~1c�3i�2h�7h�2b�-Z�0`�5g�-d�2d�/`�:h�Bo�9k�3i�9k�?m�Am�:j�Cs�Jv�Hv�7i�>j�=g�5`�Fx�;m�;k�b�1X.Z},Z|2`�:h�;i�3`�*Xy-[|8c�:g�3a�2c�3c�/a�0^�5`�6_{&Tn'Uo0]z/[x-Yv'Sn Rk$So+Vx)Wx1a�9e�2],Ww,Zt.[r7c~0\y*Uu+Yz)\{%Tr,Xs,Xu'Uv$Ps'Sp Ok$Wv'Xx"Ph)Sk#Oh'Qj0Wv*Qr.Uv,Pp*Qn&Ro-Zy5b�6c�5c�6a�4]}1Zx/Wp.Xn)Xj#Vg#Te/\s@e�Cj�2^�*Uw�������������������������ͽ�Ķ»�������������������ô�������������ʺ����Ÿ�ø���������œ��fgbrqw���z{v������zvmzwpwsj`RQ�}y�����{��{��|�~{������͹�������������������˽���������������������������ҥ���ɼ����������������������������Ž��̠��_YMWVRVVTSUTQRVMRUIOOIMLGHLFJM>DB=FEADICEDDFEDEGDFEEIHCIGDHIKKMDGLBKTBLU7FM:GM>HJ=FCAFBCGHDCHCAFBCE@BA@BA?EE=CCDEIHFKLLNWUV{yz___HNLLNMUUSlff�uw������̿�ȼ����������������������������Qjn;dv.\s*Xr*Xr+Xu3`�4a�7b�;c�0\y'Vp+Wr)Xv,]}-`8g�7d�3d�2c�2c�._�0^8c�.Yy)Vw:f�Gs�Am�>k�6j�5g�;g�4b�(Wq+Zt,^y0b�/_�4b�+^{,b~.g�+`�6h�4j�/g�0d�2b�0`�3c�1a�'Yz,]~*[|+`�-_�+Yz'Zw%Vt+Xw.]{6d�7h�2d�)[~,\�2b�3e�7i�4d�7g�7g�9i�;k�1c�/e-^|/d�-c�+`�(Yy Om Sr']y#Vs+Zx%Ro"Rf!RcSa"SbM]#Pc PdOe#Qi%Tp#Xw'\|,\�*\�,b�5e�Co�@m�=o�/e�)a�3h�4e�8h�3`�4b�3i�0f�.`�,\�/]�-[},]~-[}2]2`�*\}(Yy'Xv(Yy2d�3c�3`�*^�,d�4l�1g�3i�8l�@r�4h�,d�2j�6k�3e�4f�-e�#[|$Yy/`�;j�?p�Au�8m�.a�2d�-_�1c�.`�2b�p�>o�?l�:m�:j�9i�7k�7i�7i�7e�>l�Es�?m�7l�1g�2g�5g�?o�:k�.d�&Z"Tw+]�0a�+Yz4`}9b�7h�g�*Wn&Tk'Wm(Wq&Vm$Tj$Tk'Ul(Wq+Zv([v&\v Tl'Yp*^v&Zr*^v(\t$Wt+^{+]~%Wx&Xs)\y+^}&Xq%Uk%UlNeOe Pf%Sj&Sf&Sj-[u0^1b�;k�p�7l�5k�+_�"Xt Tj'[q/c{6i�1d�1_�'[�3j�1h�,b�.c�/d�/g�0d|)_y"Xp"Tm"Tm"Rf'Tg&Qd'Tg"UhOfQh!SjPg!Sl+[5e�9i�;m�4f�7g�8h�?m�>l�+`�+]�.\}+Xy&Wx-[}.Z.X~-Y|)Y}"Wy+]~(]|+Zx+Xu.\v6_{5`�+Xu.]w*\u.`y3cz7d�/`�._�.\}.\}._�(Yy&Us*Yw,Yx+Zv&XoPg!Pj%Qj%Uk"Qe#Qa(Wk%Sk,Xq1_y3b�1_�7d�;h�;g�6d�2`�4b�3d�5g�?g�6_},Xq)Wo$Vq']w*Wt&Ok&Pi&Tl$Wl*Xp1Zv*Wt(Zu+]x3`}/\}3a�7d�6a�2]6d�7c�5`�3_z0`w/^x4`{5^|:f�1`~.]{,^w0b{7h�6d�.`�3c�?j�<`�,Ww(Ws2^y?k�i�8i�4i�6h�;i�:g�5c�3d�1f�2g�5f�,Z{1]x/[x.[x+Ys.Zw8a}4a~5d�@l�\}�h�����m��Xt�Tw�e��u��f��@m�9k�:n�:j�7g�5i�6j�9j�@u�=r�8h�9g�-b�/d�5j�8n�/e�+[([z(Z}*X|+WrNg!Oi"Qk#Rl$So!Sn!Rp#Tt'Uw+Y{(Z)]�*^�-_�'Zy!Tq!Wq"To&St(Yz+`�4i�,i�*e�'\|!TqRgRc%Xm%Wn%Uk&Uo&Vl'Vj!Sj"Up$Yx*_�-b�,a�*_�&[}*\-[-]�0d�1g�1f�6j�8h�8e�=j�4g�,a�'^},a�.`�-b�+c�+c�+b�-[|,Zr.\t/^|1c�3a�;g�8h�9k�1f�.d�3n�2j�3g�9i�=q�6n�:p�>s�?o�?p�;p�?t�8j�4i�/g�3h�5g�:l�p�;k�3c�,_~%[s(^x-d�.a�-`})\y&Yt&Yt+Zv(Zu9h�=j�GF@FDBFG@DE@DCFKGGKJIMNAKJ:FF:CH;?H@FF@EHAFICIICGFEGFHIK>DD>DBDFEDDDBFG@FFBFIFHGDFEFHGCKNJNQMQTMONYYYd^^d`_phfɳ���ï������������ż�����������Î��Ijq3^g4\h7^o2Wq1]x/\}8d�Fs�Es�Bp�Cp�Bp�;o�4d�h�=m�>j�l�Gu�@p�=k�9j�4h~(Zu+\z/`�,[w,Zr'Wn)Zx+]~6k�Bs�Gr�h�0`�,^�1g�2h�6j�8l�6l�6k�>n�Ht�Nx�Ao�-_�)[|/`�3d�3k�3h�(^z.a~&Yx*[{+\}2c�/`�6h�8j�2d�8f�4d�:k�9k�9j�@m�@n�k�6h�5h�7i�6e�9g�7e�7h�9j�4e�6g�7d�6a�1_w0]z7`~6c�-b�3h�:m�;h�l�Gq�=i�7c�4a�1c�5c�8c�6c�8g�;j�Bo�?l�Er�@k�Gn�Is�=j�:j�:g�:k�4c�5d�=l�;l�=p�@r�4d�-[}*Yw+Zx+Vv/\{2_|)Up*Tj'Tk)Tg&Sf$Sg"Qc%Re)Vk/Yr.Ws9]������������������������������������������������������������������¾�������hlkT`nOWdgjokki���z}vUWV\QWqfj�z}���zokwlj}pjjcYg]^�wz���{vr�����������|�ͽ��q��|��z��~�������������������������������ƪ���������snh]abWV\VSZWSTVUZMQTPSXRXTNWVORWEILLLLPNOFGIHLOGMMGMKKINJELKLNGMMDNOENMFJIDFC?D@AFBCHDAFBBDCFHGEKKJOSCLQAHNCIIDHIHINFGIFLJEIHKKKEGFDML?GJ@EKCFKFGKCDFDDFDEIGHLDHIJNOFNPDNOAIKJNOOPRLNMWYX�z~���̾����������˺��µ�ɾ��������������Ո��KfmAeu@gv?cqBex[z����������\|�Py�8h~4bzAh�Kj�Wv�k�����������������������������pw���������������°��������������Yv�;e~,Zq(Wk(Tm%Wr&Yx#Vs#Ul*Wn'Oh+Tr6d�@p�;k�5e�0a�/c�']�&\�#\pUj"Tm!Pj(Zs$Vm'Ul)Wq/\{6a�=e�Eq�4h�0f�!Yz"Yx"Tu&Wu*Wv/]-]�0`�j�:l�>p�Ao�Hu�9k�/c�j�=k�Bp�Hu�Bp�An�Ep�Dl�9a�6d�7g�:k�o�b�2^�*Xz-Yt2Zt3\z4_4a�=h�7e�0a�9f�Cl�Nv�Jr�Cj�>d�/Vw/[x>k�Lw�T�Dn�?f�@f�m�6d�Cp�l�>k�An�;i�3a�&V|,]}:i�-Y|3_�2b�5g�(Yw&Sh%P`%Sc#Vi+`r)bv+a}6c�;d�6b.]y#Un'Uo$So%Vv/_�8h�i�=h�7b�0^�0`�._�2a4bz2`z,]{3d�8f�7d�5`�3]�5\}Bf�@i�=h�=i�9f�4b�._}/^|3`�9d�f�Ck�;h�9f�=i�>e�Cg�2Z~+Y{$Wr,a�8j�Lx�Ak�5a�/\}.Vy-Tu,Uu.Y{,Z{._�-Xz7^}1Y|3[1Y|.Ws-Yr+Zt,[u&Tl!Og'Qiͼ�����ʼ����¿��������������������������������������������������������ɺ��]aRxxTYS[[YnjiqocUVF@@6LDAaSS��}������SM?YRHYULd_\�xs���vj�nk�����n��������������h{yb��{�������ɽ������ñ�ï�������nicbb`VZ[RWZJUWNY]NRSPPNOOMQQQOMNLPSMQTKPSCMNFPOJORHKPJKMFJIIMLGHJKMLNPMHLKGMKGKJGQPKQOLLLJLGHMFDKDBHF?HGBKHCIIGKNEJMCHNEHMIJOHINEILIIKIIIFGIHIMFKNFJKIKJDFEDJH>GD>GDBHDEKIEKIJPLGLHHNLHNNKORSTXRRRUUU__a]]_sop����������������³��������������������������͛�������ߦ�����������������������nw�v{�z}����������������������������������������������x~~afl{{����������������Agr+[q$Vm Pf%Tf'Tg)Yo'[p'[q([v%Xs(Vm-Wp.\t-[s'Tk%Ri$Qh*Wv%Xu(]|(Z{3_�9e�2d�(^�)Zx&Tk'Uo(Wq+[0b�*[{*Yw0c�*]z"Wv"Vn!UmSk!ToMm!Oq'Uv%Vv"To!Tq#YsPgN` Le(Xo#Mf/To-Yr*]z-_�6f�8i�.a~*_~p�6j�6l�4j�7j�7j�@o�7f�5b�8c�2a4g�4e�q�Bq�Ir�It�9c�=i�?m�Br�Bs�=o�?s�7k�8i�7e�6d�2b�7h�4g�3i�,b~0b}'Yz(Z}(Yy$Rs&Xq%Yq*[y1_�*Yw$Vq*^v1_�0b�0e�*_1c�4e�2a})Zx+\|+Xy-Vv8_�k�l�Ep�Ny�Iq�Pt�Lw�Iv�Pw�T|�Pu�Dj�Fo�Ox�An�=f�9^x2Xo/Xn.Xp*Tl1Zp4_r�³�Ƕ�ǹɿ���������������������������������������������������������������Լ�������}FME�sp��sUXGcb]xnm�~z��xsi_wi`zpdTMCxmk|rp�wq��v�zki\��}�����������������r����������r���ƽ��ȵ������vnkabfZ``VZYPVVLTVNSVNRSNWVLPOOUUNVYNU]MPYJNWHMSGOQHQPGKNJMRCKMJSRLPSONTNOQMMOLPOIOMPRQNOQJNQLPQMRNFJIJKMGKLDNOCKMHLMIJLFNPFPREJMJJLGJOGKNFNPHIMFJKGMMHNJHLKJKMLNMHLKGKLHJIIKHJLIMONMQPPPNUWVRSUhjgorksvmorkfgbyzugg_�������������������÷�ý�¾�ľ������̿��ƿ�����������Ċ����������ԩ��otwlsyjq{ks~kt{x����������������������Կ�ͻ��ǻ���Ĺ�ȿ���������bbjyy�������������������Bh2`z([v*Ys+Ys)Vk#Rb"Tk)[v'Vp$Sm(Wq'Vp$Sm+Ys+[r%Uk&Uo$Tk"Ri#Rl&Sp%Tr%Vt*Wx)Zz"Zu Sp#Tu)ZzSk YmTnUm(Yw-]�3e�/a�)\y'\~$\� V|0c�1b�'\{&]{$[y$Wr&Vj'[s&Yv%Zz&_}+d�+a�(]}(Z}._�7m�3j�*_�(Y�(Vx'Vt!To Ri&Xs'Zy$Yy.\~,]{([z']y!Um"Tm#Wo*\u)\{/c�1a�.`�6e�(Wk&Ui'Um.[x3`w-Xx/[~/^|0a,]}1c�1c�&^y%\z([x)\{&Xs)Wq,Xu1^-Vr*Tj(Uh$Tj"Vn&Xs%Tp'Um%Tf#Pc&P`!RaQ\S`"Sd&Ui#Sj#Vk#Wd"Sa RY SWOX$O`"Rf!Vh'Xg$Xn$Wl$Vm0_{,[y1d�7f�.Yy*Wt(Zs-\x*Wx)Wy2^�:e�6c�9g�8a�3Zy2a8e�6d�1_�5a�9d�9f�n�:f�p�Ft�Hs�Ho�?j�-a�;m�Lu�Or�Go�Iq�Ep�Fs�Fq�Im�Bh�>i�/_�4_�3_�4b�4a�/]2c�>m�l�;g�.[p-Wo-Uo0Up+Tf'S`$Sg*Wt/\{+Zx&Tu"Qo"Of#MeMaNbN^"P`(Sf(Vn*Yw&Xy)^�1]�/Z|2]}.\})Zz"UpQnOf"Rh%Ul#Tr&Xy+_�'\�+_�+]�%U{&Wx,]~5g�2g�*`�0b�5m�4h�9i�@p�0f�,b�5i�8i�.\~+Wz)Zz"Vl"Sb"Qc!Of&Uo.]w+[r$Vo"Tm Rk#Un!Of#Qh%Ul"Qk'Tk*Vo'Zw*Yw)Wy"Ut!Uj Uc"Vc!O^"P_ N]#Q^"R`"Wi#Yq*[y-]�/g�1i�2f�2b�)Zz'Xv-`}']y$Wr"Tm(Vm'Um(Ws'Xx,]}.[z)Wy([z'[s%\q*\u,[w-Z{0]~,^y&Wu*Xy*Uu&Tk(Yj)\o(\q%[s%[w(]|)Z{*\w/b}'\{&\~)\y,Zt-Zo*Ym#Si Pf%Sk,Ww,Z|-^~/\{1b�:g�0]|+\z3d�4e�1^l�Eo�Dl�Dp�Bl�R}�Jr�Rz�Fr�As�>n�6f�0b�+\}-[|(Ws!Pj Pf"Qe!O^%P`!Rc&Vl+Zt(Ws*Xp*Tl3[u=h�Bp�@l�>h�Ep�Iq�Js�Fi�9d�Bn�7e�6c�1^}+Xw)Vs6c�?l�?j�6^�0Yw,Vo$Qh OcN^#O\'Q]"Q[*T`,Sb+Wd$Ra1`r.^t(Vp'Uo(Wk-Xk0]t.[x(Ut%Ql'Pd&M^)Sc)Sc&Sf+Xo1Xu/Vu*Vq.Ws.Ut3\z.]{,^y5c}:f�5`�6a�1^}6d�3^�0W~3\|7^{@g����������ǿ������̿����������������������������������������������������������������������̺������p��}�����y�r_ZT�|vjaXo`]���}texof���xib�v��t������qc�������m��}������lhgbfgostoxwhnlz|y�������������¿�������ȼ�����������������������������������������}rve~�v��������}z{s�������þ��������������ʽ�����������uzsTZVpvt}�|��������������������������������������������������������������������������Ⱥ�������������������������������������������������������ʆ�t���|z�������}x|������_^comp�������|��������������ͱ�������ɥ��������������{��t{�rw}���������������������|��z��|��u��Xt�Bdp/Wa OU$PY$Qf,Yx4_0]z,]}+[%Xu*Wt)Xr+]v+]v2a}*Ys&Wu3d�2d�(Z{%Rs&Tu(Yz%Vw._�-b�+\}&Yx&Yx*\0f�4l�.f�4h�9m�4h�6k�8f�6d�4e�=o�7k�7h�/d�/d�1b�4d�6c�3a�,^�#Ux$Sq)Xv%Wr$Vm(Wq-\z*[|)Y}%Xu)[v)Xv&Wx(]|)Zx+Zv+\z'\{'Zw%Tn$Vq$Zt$Vm#Ys XqShO]"Sa!P`"SdQd!Sj#Un&Yt$Wr,a�3k�4k�3h�=o�Bo�;m�7l�9m�8l�:l�7k�3d�2^{4c2e�-`}4f}2e�/d�1c~/`~+]~/a�/a�-_�/`�+]~*_)Zx,[w,]{)Zx'Zy(^�*`�+`�0b�-^1_�2^�1]�+Wt&Rk'Tg%Tf!Te!Te#Sg Qb"Ob#Pc#Rb!Pd!Qg&Vm"To%Wr([x*[{+]~'\|+^}*[y1`~/`~)Z{'Uv+]x*_~1b�1b�)_{.`y1`z(Wq%Wp)Xv%Vt%Xu&Xq"Rh(Wi%Tf&Sh)Yo)]u'Zu'Vr%Tn*Zq,[w2e�4f�0^�5a~3]v7e@m�>l�7l�4e�-_�1c�2c�3d�2d�0b�/a�-^-^%Vw#Vu$Yy.`�2b�.c�-b�)[t3e~8i�5f�8j�7n�/e�'Y|!TqUl#Ys Sr&Vz+]~/b�4_.Yy*Wv1b�2c�2c�8f�5f�*_~*_~)Zx*\u)[r,Zt/[t+Yp&Tl"Wg"Sd'Qg'Ul'[q%Sm!Og Pf#Si'Um,]{&X{#Qr#Pm#Rn'Vt-^8h�;i�;i�9g�7c�2Z~4Z~5\{3\z.[z+Zx-Z{-Xx*Zq%Uk!TgQb OaNbNbL\ N[&Sf)Yp(Ur(Tm'Re%Oe-Vl+Ue+Tj.Zs1^{.Zw+Wr+Wr+Wt(Ur&Uo*Ys-[s1_y.Zu(To$Rj%Pc$Ra%P`%Sb)Td)Sc)Vk(Ul.Ws7^}3_z1_y0^x,[w'Vr)Vs/Xx4Xx-Vt)Sl(Qe'Pd#N_$Ob'Wm!ToQj%Oh$Mc&Oe$Rb'Ud,Wj,Vo/Vu+Rq-Vt*Vs2^{5\{5`�*X|(Wu������������Ƚ�����������������������������������������������������������������������������������˾�����~��o�phfYldY�xn�wp�|v��{�|ozpfxid~oj�|q����zi��|ĭ�ij����qrmZcbZdc^_cyv��������թ�����������������̿����Ǿ�����þ��������������������������dz������ɿȿ��������Žƿ�������������ĸ�ĸ�ŷ�ƶ������������������̺�����������������º�������ʿ�Ǽ����������������������������������������������������������������ɶ����������������������������������������������fh]klpur}|����������������������������������������������������������������|�������������������������������������������������5\c(Wi4bz*Vo+Xw.^�0a�5e�2_|+Xu,]{#Up"Pj%Ro+Ys-[u-Yv2_|0_}5b�/Wz)Tv*X|4a�3c�-b�5e�5c�7i�1f�1f�2h�.d�1g�1e�)^�$Us)Up#Qi$Tk,Xs'Vr"NkJgMgJbMcNh$Sm*Xp'Wn!Sn&Uq%Tp&Uq$Rs$Tx'Xy$Us%Tn$Sm#Rl&Yt#Ys(Yy*[|(Z}.`�.a�%[w)_y*]x&\x*_'_�*`�-`*]|*]z,_|3d�2b�/_�=n�:k�>l�7e�4b�:g�0Z�2]4`�4d�1a�,X{*Uu#Tr#Uv._�8e�5b2a7d�5a�6d�.\~3a�:h�9g�2b�.^�.`�(^z%[u*[y1b�1b�2d�4f�0h�3k�0d�8h�:j�+[+Zx*Wn'Wk)Wg(Vf%Xk,Zq2^w/[v3_z4`y-_x1c|5c{8i�6h�5f�/g�2i�:o�3h�/d�.`�,b�0f�2g�1d�8f�-a�(^z,a�*_�(Yz'Zw'Zy%Xu(Ws&Wu%Wx([x(Zu,Zq-[r+]v*]|0e�-_�.]y/\}5b�7b�2_�+Xw'Um%Sm&Tl%Wn)Xt0_}+\z.`�1b�-^7g�5e�Ao�>o�7i�9k�Bp�Es�=m�:j�?p�?p�1g�4g�3e~,]{/`�2`�6g�;i�6c�2b�5e�9g�l�>k�4a�.]y!TiSgTdRc Sd*Ym3`w+Xo*Tj2[w/]~1_�1]x0^x=f�Bg�i�;h�._0a�;m�1e�*_�-_�3a�)Zz*_&[{$[y#Si P^ QbSk$Us!ToNj#Rn*[y7i�5g�2g�?q�6o�)c{&Yt!Um#Vq'Yt(Zu*\w.Xq*Tj)Xl-[}3c�=k�4f�0_}/[t/Wq+Wr(VpO` O_"Od)Un/\y*Vs0Xr*Rl(Rj'Ti"Of%Uk&Yl/bw'Vp,Zt(Tm#Me$Ob'Wm&Xq-_x(^v&^y.`�4d�6k�8i�Bo�g�k�Bt�8i�2_�8d�@m�?q�=x�4l�1c�.Z�+[/].b�0f�;n�5f�*Wx+Xw2c�-`}&Yv'Zy$Us$Rl*\u/h�1h�:l�Eu�Ev�?k�j�:h�;k�?l�Iq�Co�:h�?m�:h�0]~$Us!Sl%Ul$Tk'Vp/\y+Zx%Wr%Wn+[q(Vn"Pj$Sm!Sl'Um-Xk,Zr)Vi)Vk*Xp%Sj"Qa"Sb#Vi/^r.[p*Ym&Yn'[s,[y.[z'YpQfRg$Sg.[r+]x"Xr%Xs'Wn$Ri'Tk+Xo'Qg$Ob"Qe%Ui$Tj(Uj$Sg'Um'Tq*Wt"Ri#Si$Tj'Wn)[v*[{)Xt&Xq%Wp*Xp(Zs'Um&Vl&UiOe#Ul'Yt.\}k�Cq�9i�-]�5e�2c�;f�9g�9g�2\�%Su-\x0^v9e�9h�9k�4f�7h�6f�7d�3^~/\{.Zw*[y(Yw,[u)Xr$Vq&Ui#O\(Rb'Pd*Rk/Yr+Wp0Xr+Sm'Qj&La(Sd%Pc'Tk8bz8f�Cp�Hq�Ip�Bh�Ʃ�Ѻ�̼�ͽ�����ʿ�·��¾��������ż�����������������������������������������������������������������������������������������˻�ƴ�Խ���MMCpfg�����������uqpsnr������������ypq���ȴ�ֽ�ɰ����������������������OL=���ӹ���������������������������������������ͯ�����Ƽ��ȹ�����������������ș|������������������ܳ��������������������ȴ�˴������������������ϳ��þ������������������£��ȳ����н��ľ����������Ȼ�žо�������Ȼ�������������ǹ��������������˲�ǯ�ï�ȶ����������į59+h�Al�3a�0e�2m�3h�9d�Cm�k�Kz�L}�Hv�Ot�Ln�HbyMT^�~��x������q`Y�}t���ĭ�Ӿ����MhsGq�Dp�:g�3d�6e.[r(Yj"Ym*]x0b�+`�-b�+c~/a�2_�5c�4b�=k�1b�'Xy2c�/]~0]~2`�3_z7c~5d�2c�2f�0d�-_�)Zz%Vw%Wz4f�5e�l�9e�.Vy/Z}3^�i�>g�Aj�Do�Cj�1\/\}8c�8g�Cr�Bp�>k�=k�4f�3d�,[u-\x5d�7f�1`~.\}.Y{+Vv&Xs)Yp-Yr,Yp+Uk-Zo/]w0_{7e�>i�9e��ŪͿ�̸�Կ�̽�Ⱥ�Ǻ�̿��²�ð��������������������������������������������������������������������������������������������������������θ��SQE��zebYLMHCGFRQWkcn������}|znim�����������ú���������������������ʽvna���è����˹���������������������������������ǹ����������͋���|�ճ���������œ�������������������������������������ï����������ų�����Ȱ��������������ǾϿ�������ʿ����������ʷ�ս��þ�������������������Ľ˾�Ǿ������������Ͽ���������������ħԻ�ֻ��ȭҾ���������Ԭ��58/VUS����os|�����ù��������alh`ihrsx���������hmpsx|vy~������ww������������������������������������������������������������y��������Vx�7e|4f�5b4a~*]|/d�*]|'Yp)Wn(Sf,Wh-Wg=fx.Yj%Sb OW%TZ4^j@fs)T]4_f VVMW N[LSMU+S]"OU P^&Ug-Yt7b�6g�6b�*Wt%Oe.Sm6[v5\{>f�6b�8h�9k�3i�0f�+_�+[&Wx._3`7b�-]�(Z}&\x([x-_z,b~2h�:k�0b}=f�@i�4b�7f�9g�3b�-_�&]{+\|*]|$Zv$Xp-[u*Tj'Rb!O_NdN\!PX'Ub&Td!QeN_ OY&R_!O\!PZ'R[*P[+Uc+Xk0^x8g�-]s'Rb*R^%T\*Va(Ta'Ud6bo(Ve)Xj+Zj-[h0[k*Uh(Sd.Xp3\z7b�5b7^};^z;b6h�3e�5^z5\{4]y0Tl@W_nun���k^Ue\M��p��x�wjt]U��{l[��~˳�˳�ȷ����������?V^5`s3Yp.[p*Zq1]v3ay1ax:fDm�Hl�Mq�6a�.[x3f�4f�;m�Fr�Co�;i�6d�5c�4a�7d�5c�-_�*_�6b�=i�Ds�j�;f�=f�:a�.Z})V}&St+Um4^t?h~7az3b~3b�Am�����˺������������ɼ�Ͽ��°ʿ��ȹ�Ʒ�����������������������������������������������������������������������������������������������ζ��swh��wWXRHHFDEIROVsit������tpm`]ftnz��ҷ�����������ؾ������������̽���ʽ�yl���������ʲ�ʹ�ʶ�ζ�տ����������������������Ⱥ�Ͻ�������{ovciͫ����׿����̳������������������������������������ô��������ø�������������ȱ������������������⹪����������ƹ�ͻ�ؿ�����������������������Ľ�ɾ������������ƹ�������������վ�ϳ���yָ�����ο��������͋�teki~������������~����������~�����������������~��e�9c�6h�2`�4c�-`{,^w+[r*Xo*Vo*Wv(Vw/Zz9a{6_{8g�>o�Bn�=j�6a�:e�9f�6h�4f�3d�,[w+Zx3e�4f�:f�6b�5e�1]�3\z*Tl+Ys.]y0\y-Yr)Un+Wr,Sr0Yy2`�7e�:g�;i�:i�;h�Aj�Ep�4f�/]~.`y2e�6g�4b�+\z*]z*\}4d�3c�.`�)_{1b�6c�8j�;l�8i�?p�Hv�Gr�Kv�Fm�El�En�Fo�Co�,Z{&Ww.\�:g�Am�Aj�Fo�Hu�Mz�Fu�Ju�;l�Cu�Ly�Fq�>k�?n�;r�2j�4j�4b�,Ww&Ro,]}q�Lw�Mu�Am�f�Ah�=d�ɱ��Ⱥ�ųӿ�����ĸ����IJ�Ʊο��̹�ǻ����������������������������ü�����������������������������������������������������������˯�����������oniHHFNNPVTYvmr�{�������Y]`a]l�����IJ�������������ϵ���������ج����ʵ��������Ͻ�ѽ�;�Ƕ����î�м�������������������Ƕ���������ߡ���������y|ʫ�Զ���������������������������������������ƿ�����������������������������ʮ��������ƾ���ŷ�����������ƻʽ�˷�β�Թ�����������������ƾǼ���������������ʧ��͸�������ȷ���p��m��~���ּ������������ң��ttr���tru���������������nru������������������q}{DILMMU�����gkl��������������������������������������gjq�����������ޮ�����������������������Faj3`}0^1^},Zt%Tp/az*\s(Vn)Un$Tk$Vo'Zu,[w,Zr+Zx*]|(Yw&Vl!PbM\M\MWKSKXI^"Od"OdN`K`!MZ LUNX N['Qg*Wt.a�.a�(Wq)Wo(UhN`!NcL\ P^#Pc#Vk#Wm&Zo$Xm(Xo'Um%Th%Th&Vl'Wm!Tg Qb!P`!Rc#Sa+Vg*\s,b~,_~,_~+\z'Zy&Xs&Vl!RcRc#Vg&Yl$Tj*Wn6d~:h�6i�2d1_y2a}2c�5f�5f�-`2d}+Wp,Vl+Zn5cs7eu1au4cs9cyk�Am�:e�:f�2`�/b�6h�2g�/g�,c�/a�:m�4j�5g�6f�2h�;m�Ft�Mx�Cq�>p�8j�:k�6e�:h�6g�3d�4g�*]x(`w1g�;l�An�Bm�=j�6h�9k�9g�-[}.\}3`}2a4e�6d�/_�+a{([v/^|2c�.\v1_w([p*Zn*]p.`w3b~2a}0^v)Yo&Xo.`y6h�-^|1_�.Y{4`�6b�;l�Eq�Ck�Io�@k�?m�9g�i�Ah�Dm�4a�9f�=h�?j�Gp�Fm�=f�0]|3a�0a�9f�8c�5g�7h�>o�7l�7h�Dp�Mv�Pw�Kr�Ks�Ou�U|�T{�Py�Gp�Ip�Ot�Hq�@n�Ft�>k�?h�9d�8c�7i�9g�En�Ht�Ju�Cp�An�?n�=n�>k�?g�2]9g�8e�/[x+Wr'Ti#Pg&Uo�el̰��ɽ�Ƿ�ůö��Ǽ�ʿ�Ͽ����̽�ʼ�����������������������������������������ż�������������������������������������������Ι��`ba_djadk`afWV[POTOOWWW_���������µ�oqna\b�w����������ݿ�ռ���������������Ż��Ƴ�������ɴ����������������ȸ���������������������ѳ��Ͽ������������и��sl\tY`ȣ�Է���ʪ������������������������������;������Ĺ����������������|sj������ʪ����������ƹ��������������ɻ������Ȯ��������������ƽ�ȿ���������������������Ϻ������ս����_��n��w��vȭ����������������ſ������}�������vj������aaa���wv{������qvz������x��NVYVYb���sv{DHQ�}�������������lqt������������������mpu���������������������|��zz���������᫲�Dgk*Zn(Zu([z1b�5f�,]{*\u&Xo-\v,^(`�+a�.c�0e�0c�)[v#Rn$Rl,Xq,Xs%Wn"Vk#Vk%Wn'[s%WnQdO`#TeRe#Sj&Sp&Uo!Sl!Qh+Un'Uo#Wo#Wo Vr#Ul-[r'Yr*]z+Y{.\~,_z.a|-`'Zw!Ti!Tg$Rj)Up&Xq"Vn#Ul#Si"Qk%Ri'Uo(Ur+Xw*[{,a�-b�/c�,a�,^y0_{)[r$Xn*Zq2`x/\y.Ut4_4`}3a�.`�(]})Zz-Zy3b~2au5cp=bje}�������j��MnsZx�Wy�Dhv9am.\k/]t+\m-Zm4_r,Wh+Vf8^g^y������������z���vd`bSP�oc�����y��x�~fƷ�����������ù�Ǿ��������Ҟ����z����������żɻ�ɸ����������DZe:]y4]}.Yy.Yy)\y,b~)`~-b�0a�-^~1b�9a�7b�i�4`}+Vv'Or/Tq7`|2c�)Zx.\~7e�Ap�=n�/]3`5a~2`�0a�8g�@m�@m�1d�/b0_{0a�1a�-]�f�Es�7g�3c�,]}+Wr+Sm,Vn&Vj$Vm$Vo&Xo,[w4c�4e�;l�8f�Ds�Al�Cm�Al�>i�Cn�Ep�Ck�9d�Bp�Bs�Dq�Ho�Dm�@h�Jm�Hj�Dg�@f�8g�;b�;^|9`0]|.Y|+Xy1`~b�?f�Er�Fq�=i�;m�3d�-Zw(To%Oe'Qg)Of.Rh*Sg)Si/Xn2Xo3Xs4Xx6Wv7Vs>f�;d�3Z{)Rn'Re,Wg-Zm`GK���ҹ��Ϳ�Ͼ�ʹ�ô�����������������������������������������������������������������������Β�����������ǽ������������԰��`b]\_fbbjU[[DLNELRLQWWX]�~����������mf^~yu]TYfT`��Ǧ��̶����������������ӿ���ɷ�����������ɵ�ҽ�ι�Ʋ�̶���������������������������μ��Ų�ҿ����������������YPA���������������Ű�����������������������Ƚ���������Ǽ��������ǾŽ��zq������������������Ļ��������������˿����Ľ���ϼ�ȶ��������Ƹ����������}y��������������������պ��{hH��i��s��oɦ��Ѻ����������������̴���®�������������u~}pts|||������syy������{{{{{}HIK\Z]PTU058UT\������������}��{~����������������z�w|����������������������ltw}}��w}�����Ԧ��^{�9bvg�5Xn>Xejx{���ROJ_WU��������rfZC:3I;.�|d��u��}��z����Ž��������������˿���ſ���������ʭ�Ĩ�˷��¸�Ľн���������޵��`r|@j�e�@d�Fh�Ln�Jl�Fi�Km�?h�>m�3f�2a}6c�2_~*Wt#Oj$Vo,[u-Yt1\|:h�Cq�Bn�7b�.Zs&Rm)Wq'Sl-Vl2Zt/^x0_y1`~*[y*Zp%Re+Ue&Qa N[!PZ%U_'Vh*[l0^v3\x2Yv,ZqTFFkT\�~�����ú����Ȼ�������������������ʹ�ɴ�ö��������������������������������������������̘��PhrBZrb�?h�5a|&Us/`�?l�Pv�Qx�Ru�b|���������ˮ������½��£�������������������������������°��Ļ���������������٣��mlZ������|l\bV@��j�����{qfT��}������������������������������ѹ������x�shxe^�xo������ö���������������������������ߠ��Ii~>l�8g�2d8g�Cp�=p�8m�:p�:p�5k�0g�3a�4^�/_�3c�:g�;h�3a�+Xw*Wt,Z{6h�7g�7h�/`~-_z3f�8k�/`~2_|1^{5e|3e|0`w4d{1cz4b|>m�?q�9l�(a~&^w&Yn+Yh'We+Z`,Y_3[]9Z_GjpBekHgl7\d)Xb.^r/_v)[t3d�.c�2j�2h�5g�7e�9j�:f�5]�1\~,[u4f�8i�2`�*[y%Wp#Rf!L_)Vk-[s.\v2c�4e�1b�1c�._�+Xy(Ws$Th%P`&R]!Q[#Q`'Qg$Rl%Tn(Vn*Xo%Yo&]r%^r(_t-av1c|3b~4a~4a�/]$\u#Ys1`|5az9e�1b�.[z7d�=j�Do�Ci�>f�3_|0\w+Ys)Yp)Yo,^w0a=k�;i�4g�+\|.[z(Ss,[y*\}.`�.`�1^�0\�/\}-^|+\}1^1W{+Oq(Ss.]w6d|5_x6b8i�9g�9d�i�Am�;d�8^�@f�:e�A=><;9E=:F88N>>H96H57V?EtZcv[d����������rb�ui�o_�u`��q�����������{���teF_P=kNJ�ii�{o�|n`IChOUmMX�eo�q{������ͪ���Ѹ������u�nm�������xrdSL����������w|޺��������������������������������������üȾ��ƽ���̼����������̽�ɶ����ο�λ�ʳ���������ȹ��������������������Ǭ�ɯ�ʯ�ӷ�ͳ�Ĭ����Ť����˭�Ұ�ß����ɯ�Į����ó�İ�ʻ���_�t]��t��t����¯�̿��������������������Ѩ��������mqthgl���������������������������������������������oxw^fhinq::BHFS���mns���mlq���������������������������x}yuwv���̽�������������������r��Jk|7d{9f�6d�3a�-Y|/Z|,Yz._�0d�.`�)Zz%Vt!Sj&Tk#Si!Sj,[y6f�;l�;o�3h�4i�.`�(X|(Wq&Xs%Vv-[}&\x(Zs4a~1^,_~0c�2d�0b�/d�6n�9n�6d�,Z|&Yx&Xq(Vm(Ul'Sl*Xp'Sl'Ul)Wn,Zr)Vm&P` O_N\O]!Na&Pf$Rj%Sk!Nc$Ob(Qc%Oe'Tg.VbXqv����������������ƽ��±����Ƒ������ý����������������������ý��������������������������覣���v�xg|l_��l��}{jX���Ǻ�İ����������������~ji��������}����qcVC=MC:TKBaVR��ɽ��ɺ��������þ��������������������⌏�`z�S|�Ft�Ky�l�Al�?n�=n�0b�+Zx)Wn(Vm-Vr0a�i�?1<73N@?VD@XHI�lt�������w|hi�������������������n�����f���seK�lX�eX��reYCOJ6H@3NA9MB@LGCPB?aRKueX��w����wb�re��q�wj�jf��������}cRB}b[�tw���������ͺ��ü���ǹ�ķ�¸�������������������������ȹ�ͽ�°����Ǵ�����¿���������ŷ�����Ͼ�˺�������í���������Ȧ�Ю�ֻ�å�˩�ǣ���}������ұ�á�η�л�ε���ͽ�����´������w�d��p���Ͷ��²�����������������������ԗ��������`dg���������������������������������������y}������y��\b`proXa`R[`MTZ���kpsQY[LQULIRkeq���������������������������������������������������]y�e�>j�9f�5a�:h�9i�>m�=m�4h�7h�7k�7m�o�=m�:n�8l�:j�;m�b�6]|:a�7_�/_�-a�9f�@g�o�Bp�7i�6h�=j�5b(\t/a|4a~\SLkbc�������ys����������������������ƽ����ƻ�����������������������������������������������Ϩ��ggeQRV\\fZZdU\dR[bKUVFJIBFI=DJ;EGDHKLLN]V]������xid���IC7nc]�wkh`SVFFy`d���~nn�su��������tı��ű�����������������p��p�l_|]Z������������EB1OK@wk_�rb�~m��������~�{o�����xnQK�x}���Þ�Ϲ���v���ğ����������ɻ�Ⱥ�������ξ��ư���pcS̳��³ƴ�ѹ��ǹ�Dz³������������u�r��w���������ƶ�����¸�������ñи�ʹ�������ʮ����ŭ�ǫ�ϰ�һ�����������������ûͷ��ǭ���°��������������~ɰ�ij����ͷ�����������������Ͻ�ʷ������}~����������������������������������������������������������x}����u{{INQ\[c�����Ua_OYZOTZ~~����������������������ȼ���׼�����������������������u��Ej}>j�8i�5a�/]4b�3a�0^�/_�4d�1e�0d�)_�4j�3h�4d�"V{(Z.\}.Yy*[{-[}3h�0g�-_�(](Z}.^�2`�-Z�+Y{)Zx%Sk$Qh%Rg*Xp/\y5a~9`8a7c�._�Rm$Ri*Vo-\x/]~,]{*`|-b�0a�8_�9h�7e;e~Ik�Ts�Hm�;dxDjCa{L[pgbf��������ɕ����������������������������������������������������������������ÿ�����������������������������A:*A?2b]J��u��p��t��}��r��o��w�wf��~̺�л����tfctnnpko_[\~xx������xtu�������������������������ü��������绵�BXe=e>k�Gt�@n�5c�-[u+Wp)Wo&Uq#Pm'Sp+Xw-Yv9e�Am�=m�=i�?g�9c�/]�(Su#Pm%Tp-Zy4b�4`�Bl�@m�Ft�An�;i�5e�0^�'Yt,[u3`w0_s/\q8`yMi~kty���Ǿ����ĸ����ȸ�Ƹ������Ɏ~~���jfc������:Va+Qh'Qi0Xr4\0Z�3c�9g�?j�?m�9e�3_�-_�1d�6d�/Z}+\}._3_�/[�(Z})^~*\�1^�*Uu%Ql%Tn$SmLi'Rr,Z{,^&Wx-[|3`�6d�0`�.b�>p�b�8^�;d�>h�X}�Lq�El�Dj�=e�Al�Ck�Np�Kn�S{�Z��U|�Bm�>i�:b|0[n-Xi7ayEn�Iu�Bq�9g�4e�7d�Fr�Kt�Qx�Js�Dq�Hs�Ix�R~�[��Vy�Be�2Vv(ToKFLaUc�����������w���������ù������������������������������������������������������������ɯ��KLDJINNNZPVbRVaSX\QUXIKJIJLLQUJOSKLPJLKLJMUJR����y|������L@B�ow����||��������qSA=�s{������������Ⱥ������|�|uˮ����Ҵ����g]DZIA|ba�rn�pk�s�yj�yi��r�}m��q��u�i\��yxaY�kk����qY@D�oz���Ũ������zʥ����������Ʋ���������н��Ĭ�ɯ���Ʋ���ʲ��«�Dz�Ȳ�ǵ�������ĭ����ʻ����ȸ��©п��ɮ���������ȴ����������������������ӿ�ֽ����������������������Ⱦ�ı��û���ø���}��v������ŵ����������ò��Ǵ�ƶ������������������������������������������������������������������������y�����������������hpr[aalmq���fknbgkz}�������pqv�������������~ǽ���͵��������������������������������>_r%QjLc$Rj*Wt+Xw-[u'Vt(Vx/[�2`�0^�=h�k�;i�@q�@q�9i�6h�4f�1c�7i�9n�Eu�Ht�>l�9i�;i�9e�0\1^}7b�6d�7e�.\�/]�+Vx-Vt*Yu)Zx*_4d�5b�-Zw$Rl"Ng!L_$O` M`$Qd!O\"Q["N[%Pa$Se'Ul$Qh%Sm(Zu(Wq,Xu/Zz)Vs*Yu'Tq*Wt4a~@m�=i�:k�Ds�Lt�Ae�:`�;h�-Z{)Vu+Vv.Ws.Ws/Zz7b�8a�;d�5`�:e�Cl�=c�9a�:b�-Rm+Tj+Th&Qd(Rh)Qk.Ut;a�ZJJ�bdȩ�ƫ�������������������������÷�ȸ�ȸ�����ð̼���ѭ��̷��ĩ¯�ì����Ŭ�˷����˶�κ��˵Ĵ�;��ʼ���������������������������������ϻ�и�Ի�����������ý�������ǽν���������‡�j{p\��z���������������ó����ʺ������������������Ÿ����������������������������������Ŵ��������������������`ae������������������bmiYcbIQTRY_qv|������������mns������ljo������������������������������������������Vt-Wm&Vm,Z{2b�1h�4i�7h�7e�3c�3d�%Sm%Sj!Sl(Yz(Vz"Ut Uu1f�0a�2c�*]z$Us$Qp$Pm)Wx/a�.c�1d�,[w0]|/d�+`5c�8f�9g�=k�9n�7l�0b�-^~._}+^{#\p Xi"Uh(Vm(Uh:ar\t�y���������zw�wu|xu����ÿ�����������~�������������������Ļ�������������½Ⱦ������������������������������������������������������������������ؓ������}������Ѿ�ν��ĵ�ij������ʹ���ykbeccehfgkkimifzrp���������������Ʋ��ɾ�ɷ�Ѿ���ī�Ǧ�������������Zak?bv4\v7\w,Tn1]xi�@h�2_�:h�5a�8d�8f�Ct�8j�1c�,^�/`�6g�k�Dn�Em�;g�,Z~/]:j�/c�(Z}'Uv!Rr#Un.Ws/Vu)Tv&Sr#Qr"Ut$Zv'_z.`{;m�?p�7h�7h�+]~%Wx"Qm&Rm(Wq$Wr*Ys(Vp(Zu.[x+\z8e�;l�>k�@n�9f�8d�?k�;j�>l�=j�Cl�Fq�It�Ep�Am�3a�.[�'Tu*So/]w2c�:h�7c�8f�2b�&Ww%Tr$Qn%Rq+Wt0Yw0\y4\2]}/Zz0Yy-Xx4_1]z/Yq1Yr,Tm)Nh#L^%Nb&Sf9f{Mu�En�@k�4^�;d�>g�9d�0]|,Zr/[t1[s����������������������¿�ú�ȼ����Ľ�˻�ɹ��������������������������������������������̟��FKDOPTHLUCLU@JSGPWGOQ@FFEIJGKJJLIFHE?A>;:8@<;>8:WFP�}�xndWPHZNPtaguab�xz��~��z�}w�xlo]S`e�rvϲ�ɺ��������zo���Թ����������������������¼�������������μ����������ĺ����˽�ƺ��������|v{gh���ϵ��¾�������������������������ż���������ɵ����ĸ����Ӷ�ѷ�ѷ�ɯ�Ǭ�«��������ɷ����Ʒ����ż����������������������������������½���ҽ��ž�������ľ���Ҽ����μ����������vxc���xnb�������������������������ɺտ������������բ�����������������������������������������������������������nwt������������������������AKLGNT}�������������JORijlUVX������������{�������������������������������Qm{0Xq0\w3_�6f�3c�-]�3a�@k�Do�5f�6i�9k�:k�;p�Es�Aq�9k�7l�4i�-b�$Yy'Zw/a|,d+c�/d�0a�-[}2`�9f�;f�Ah�@k�Eq�Ht�Aq�n�>l�2^�3_�;h�4b|3a�8h�@l�Do�Kw�El�=h�8`�6a�7g�b\P�ys����Ǿ��δ���´����������������ľ���������������������������ǽ����������˼����������������Ƕ�ȴ��Ϳֿ�˵��ļ���mc������wsp�~w{tnqpliiinjkpjj���Ź��yx�����ø��ټ�Ψ��������������������������ü[n|=g�/]t%Xm'Yp,_t,^u-_x-_v/c{8k�Ao�?n�6k�9n�@o�;i�4e�Ar�Cp�Bn�2b�7i�8i�3_�6c�;c}:_y.I^6FU:FV>KTpsx_YY������ɼ�����¾���������������ɽ���������������������̶�������آ��C_u6`y/Xt#Un Oi*Vo-\p$Wh!Te%Ui(Wi([p,]{2]5\{8a}?k�6c�3`�4dz8hh�,Tn,Tn)Sl'Tk(Wk)Xr+\z/]~-^~+\}*W~0\�1]�6c�>l�Cq�Br�Do�@j�Cn�Fr�Iq�?m�8f�6a�6a�9f�4b�4f�=s�Bs�Eq�8d�-\x0_y/]u6f|>l�Eo�Fl�9d�=h�Gr�Ju�Eo�Dq�Bn��������þ�������������������������������ξ�������������������Ķ�����Ŀ��������������v|pEJDOOONLQIJLGGGMMKHHFAAAFFFGKLCGH=A@?A>CABDBC`[X���re_�|s`NJzib��tL>3p_Xm_\`WPbUOpXV�}����pc�qn����ʲC>!RJ=\JJnR^�}�ʬ���~�|}������Ĩ��Ľ������������è�̯�Ŭ�Ѿ�ɻ�������˷�ɹ�Ⱥ����ȶ����hWP������Ͻ�����Ž���������������������ɽ�����������Ļ���ij�������������������������������������ѻ��ƻ�İ����źӻ�Ҷ����Ƞ�Щ����α����������ɩ���wӹ�ͻ�ĩ�ͨ����Ӽ�����̿hiWlj[XRF������������������������Ķ����Խ��}��|�����ԣ��������������������������pvt������{|~������������������������������������������������������y}~���������s|y8@By~����swz���dglPTU\]a������������������������������s��%Q\!Pb&Qd*Tm/\y'Yt([x+\}5e�:f�MR`eibda������Ⱦ�����������ľ��������Ҵ��ɾ������Ļ�����������wmn��������ʹ��]z�Lv�9h�4h�1g7j�>i�9f�4c�n�Ev�@p�Ap�;i�Bm�Nt�Lp�Ks�Ks�Ou�Hn�Bj�>j�Kr�Sv�Iq�Hl�Jn�Fm�Gn�Ei�Cg�=a�9`8g�Fw�;l�9j�k�9i�5c�7a�9d�Gf�Wer_`bzwҿ��z{�{z��������������������������������á�����Ŷ�±�����������´˹�п�������~pe��zȶ���������֩��ȵ���������������������¸�����ν��������ú�����͸�����������������ɶ�ͺ��ƻ�����������ѵ���zwsnriefjabj^^fXXVKI`UQsg[��s��i�i���������������в����п������������؍��Fk~;l�8i�8g�8g�4g�9i�=j�>l�Aq�Aq�;i�8i�7d�.[x&Xo*\u-\v,[u+[r4ax4`y3a{-Wo8Nf=Oe5DW;IRsyw}�~VV^MMYTOV������ƻ������ǭ����������Ɨ���Ľ�����ڴ����ȡ��������¾����ǿ������ֱ��JexBi�=f�Eq�Kw�Fp�=i�5a�3d�;n�?n�1^}+Tp(Rk&Rk-Wp-Vr(To.\t5c}5^z;d�>j�i�7e�3`-Wp.Zs+Xu�����������������������������������̼������żʾ�̹�İ�Ʋ��ŭŭ����xj_fVa���������KLG===34859:;?@<>=9j�;l�Hu�Do�K[;GUX`c|~{���HKTBAOHINTTV�����������չ��ȷ��ÿ������������ó������˻�����������������������ľ����m�Ou�Am�8e�.Xq5Zt7[}9a�l�?k�1_y7`|3`}/b�9j�=o�?q�7j�3h�5k�g�Cj�@i�9h�2d�3i�7i�=k�Dr�4a�*`|6k�@n�4d�1_�,Yz*Wv2[{1Zx8e�4f�,`�3g�?o�Lw�Ks�Gr�Fq�Bm�:d�ƿ�������������������þ�Ż��������������������̻���������˾��wU�wd]XRUR]������KLF?>D:>?154-1036;45:96?A@ZGIkRUq]\YGGjVX�gl�����{ocNE@`RRq__tnSIG]MPq`h���ê��źɭ�ֻ�ɫ�Ŭ���u�������������������������������·��������æ�̯�è�Ů����������Ȩ�ѭ�ˮ����igRf^S�wq����ob�xo�xp����}gzn`��{���������������ʻ�Ŵ�ѹ�ͷ�������տ�ʰ��������ֽ���۾�ڿ�Ү�Ӳ�����½������ͺ����������������������������������������˼����������������BC3SUHieYtla���������ij�~ufmcY��������������������������������ѩ����������������������������������������������������°�����������������������������}~����KSV������������������������������������������������������������������Ei0`�/`�3a{.\v+Zv*YwOe N^!MZ"M^ M`"Rf!QgOcQj1]z2^y7c�6c�,Zt-Yr5^|8e�3d�2d�8d�;c�8\�.[x*Xy2`�Cj�Fq�An�9i�;i�;[pVgq���ĺ�̾������Α��������Ļ�������������½��Ļ����������������������������÷������Ǽ��ʺ���m\T����ķ����������Ƿ��������ĭ��������������������˹�Ϻ�η�������ġ�����ǹʼ�ž����������xrr�������ooxif���������������ɽ��������un������������������Ʊ�ī���������������������������������𑘠Z|�My�N{�Mt�Ep�;i�8d�)W{*Vy2]3`�-^~6i�9g�9d�/]u&Rk(Pi,Sp/Wq=`|C^{:EYDFU>EO>EMGKL��egs@DP=ERCJTVZ]zzx������������Ľ����Ǵ�Ѽ�̽����������̾���’����ʥ��û�������ż���������њ��>]q-Vh)Sa'Q]%Q^!O_#Qa!O^O] OU$QT%RX%P`&Sf*Si!O_ O_&Qa(R`&Oc$Mc)Rh0Xq7\y9]}:`�7_�%Pp"Le#M]&NX%KV%L[ K[$O_L[ N["NY"NYKT$OX%Sb,Zr(Ur)Sl)Mg*Rk$Se+Tf.Rh4\u9b~Gl�Mn�Rs�`��_��Vy�Px�j�Ho�Hn�Bj�;d�?f�Cg�Ac�En�Ž����ƻ���ľ��������������������������������������¼�������VT;TPESRNVTYkghQRM<<<9:<0:;5;;576679066335:65=:5C?4D=3C<2G>5H;2L;3N:1M51G53K<9J=7H94R>?bCHsSX�ux�to[RMNDCfSW���TJHSJK`S\��ȩ����������պ�ӷ���w������İ����ʿ�ʻ�ȵ�Ǵ�����������¹¶����и�������������̷�Ի��ɾ�̻����ǯ����w��������y�������ɶ��{bYH���������������ؽ����̼�ϻ�����¦�¦�ũ���˶��é�˰������Ư�α����������������˽������������������������������������μ����������������㴶�PQCVQKpg`uk��{���������][N\WQk]Z�mpį�����̾����������������ɸ��ŧ������������������������������������������������������������������������������������MRV���������X`cW\`|}����������������wxz������������������������������No�;n�5j�;m�Cr�:k�4i�0h�%]t(\t,^y.a|*`z+a}+Ys&Uq$Us!PjMd!P` Sf"Vn%St*Wv)Xr0[{7c�2d�*\-[|/\y.Zu.Zw2];c�Ac�Lat^fi`b_������������Ϳ�������ɿ�������������½�����úɾ���������������«�����������������Ȼ�ƺ������zjaR����ɾ�º����Ǻ����˿��Ĵ��}qe��y��{���������ĭ�ֻ�ն�б�彣��vӺ��Ϳ�ú�Ǿ�ż���b^_ecfhdeb^]��z����|w�|wzg`������ǹ������ߨ��qge������ɾ�ξ���ƞ���������ľ������������������������������WhzQu�Qx�Js�Fs�Cq�?l�6g�:k�Bs�4a~4`}1^}'Sv&Sp&Tk)Vm+Uk(Uj&Oa+L]2L]:HSDGP?GRGVCLU����������Ľ��������س����������x������ƹ����������������������������������ƽ����~��6S[-S`$Ra!O^$P[%Q\"NWNR"OTJP"NW!MX$O_%N`$Rb O_M[!PZ#O\#O\#M["K]"NYMZ!O_"Of$ObNZLS!MV KR"MS!LS LU LU!LU$NZ!MX#KUHNKQ N[$Rb'Qg'Tk#Pg'Re*Td&R_&Ta%Sb'Ue&Qb)Ob(Qg&Ph&Nh'Ke%Og'Pl/\s;g�8c�9e�?l�>j�9e�9g�1`|4a�Do�Bk�7c|6czFo�Gp�>l�6d�;h�?j�Ek�Bj�j�Ai�Bf�;f�5f�3c�i�7g�5g�.^�5e�;k�9j�4j�7l�9k�9n�:j�6k�1f�4e�,^w$Xn%Wn(Zu,]}-]�.Z1^.[x"Of$Pk(Ss&St(Wu#Pg#Qa$N^(M]?Vd`go���������������˽�����������ɻ��ò�����������������·��������������½����ú������ƽ����Ź���������������{������p^Z���������������Ⱦ�����������}v�vt���ç����ϥ�Ԭ�߶�ݸ�Ϭ���������������������������}������������o^NjYO��}������������mec����������������������ƾ�»������������������������������Bey1Zv5a~i�4]}+Un(Rj*Tm,Xq/Vs1Vs(Rk+Ro+Wt*Wt*So0Yu0Wt1Xy'Rt*Wt/Yq8]x7`�9d�6`�9d�;c�8d�5`�=h�;a�;b�5az7b�7b�6b�TUPUVQJNM8<=19;+56.37016++3),303889;CB@KJHQPNJIG^VTXNMgYX��~�����{z^?D.C?6QB=dRFgQCP@1A2/D97=60<41A83D;2J92U=;tWS�rn�up�fd�us�on�de�����af���˸�������������·��¿�¾������־����Ȫ������›�����������������ɽν��������������mf�������ɿ97(���������Ĭ�������̲����±����ɱ�����ƾ�Ǿɿ�����������ž�¾�����������������������������Ǹ��շ����ֿ�������������������������������������gg[GH@FGAOLGWOLg^YlgageYPRERSMOKJUTP]TOoVZ�������������������������������ij���������������������������������������������������������������������������}}{�������������������������������������������������������������������������Il�3b�4l�=t�>p�0a�0^�2]�>h�Gs�Bo�Bq�Ft�?o�;m�?o�?p�?m�8d�0Yw(Vp+Zt,Yx2`�EW;AM6=C?BIGHJ[]\hfiTW\BKRBMSOZ\LQT������Ż������������������������׶��������ʼ��������¾����ž���������Ļ���ӣ�����������Sal?c}4`}1[s+Yp*Zp)[t+Yp0Zr)[t(^x-`}+Zx+Wr1Zv/\y*Wv(Ur$Sm"Od*Si,Vl+Wp)\y+]~2`�2]/\y)Xr&Vm%Tn'Ul"Pg#Qh!Pd O_ N]#O\#N_#Na%P`#Q^!Pb&Ok/Vu3ay,Zr-\x,Yv,Vo'Qi(Vm#Rl*Xr0Up1Xw3\|7[{6b�2]1Zz2Yz1Y|5\}:^~4[|-Y|'Yt"Uj!Ti$Tj#Pc(Qe"Qc"Pg#Rd#Qa%Pa(Rj*Tm-Uo@AEGFBVLKZLKXIFSHFPDD�pv���͹����ɾ���tUTBcVMq^WnWOXD;RA9OD>@;788086*85,;1/G85Y?@wZT�|q�m_��p�lTrXKeCA����ee~\lд�������Ų�ȱ����ͯ�����ùθ�ҿ��xm���ͯ�ī��{t�vw϶��Ľ���������μ����î�������������������81)�|����������Dz����������ǰ����;����������¶�����������ɽ������Ӻ����������������Ƚ�����þϷ�ӻ��·�Ƚ�ƿ���������������������������������DF8EHAFGAILCXYK\ZNURKOGEJKFRUNVWOVWRSNJiVZ�u|ۼ�������������������������������������stx������������������������������������������hel|w}��������������҆��RU\�������������������������Ž���uty������OTZ���������y{z������������������/Sa/]u1f�7l�>n�;l�9k�5f�;f�Em�@p�h�Nr����]fo\]b^]bcdiklp���������������Ϳ�õ�ͽ����°�ů��ù���������ɿ������������ɽ����������ҿ�����ž��������������ź����������ı���TMGPRQ`WX������������Ÿ���������������}������Ţ�ǥ�Ģ�£�Ϋ�Ͱ�ּ���|���������������~wm��������y��������ǹ���������ư������������ӷ�����������������������������������ʾ�������������r|�Kn�Er�>n�:m�:h�+`�-\x$Pi#Pm"Qo,[u*Xp'Vp"To#Sj*Tj/Rh;HY?DG:DF=DL=DNULGID@_OY������ð�����ɺº��jlh\meZQG;QC:N?<_OPTFF>=945/55-<<4QJBkeYUF?���չ���w���saUxc^�qg�p`t]U�ww�~��yw���������ű�ʳ�ʹ�������������������������������ӹ���Ӻ�����ƪ�˲������������������~kfR�{v�vt���������ӻ����¦�ˮ�Ħ�տ�������������������Ƿ��Ž�Ƽ���������������������ȹ�����¿��������������������������������������������޺��GO:@CJF;SJATMEHH>FF>NKDWSJee[ZZNXTIOLG_SSsZ]�����������������������������ռ��������||~���������������������������������������������vz{���������ɿ����>C=������������������������������������������|{����������������������������Ce~=k�9j�:e�1]�9e�5e�?o�Bn�l�Cn�Jr�Es�=o�8m�6k�4d�6`�;g�@m�?m�Iq�Gq�Sr������Ȱ�����[YZaaajlkghl���������Ļ�����Ƽн����«�����Ƚ�������������������ſ�Ǽ����ž·��������¾�¹��º������������������������������¼MEBbd_gfd|pp�ľ�����˵�����¾������������tĩ�Ѭ�ի�ݱ�Ƞ���i��r¤�ƪ����ɷ��������������������ǻnjaspi��~Ⱦ�������������û�����������������������������������������������ü���������������duNs�Go�Co�=k�>n�Es�Es�?p�Ar�@q�CI@HJCIIAFJ>CI>AF@@LCETAGUINTNRSENMTZV�������|y���Ȼ���ү��¸����������������������ž�ú�������ʿ���������ʾ���������¿��������҆��Ru�Jv�Dr�=n�8f�3^�;d�-Uo3]v6b}@l�>f�9d�?g�@k�>k�?l�Dp�Do�@f�2Yz*Vq-Zw,Uu$Mk%Ri*Xr-Zy(Uv%Tr)Zx+Yz6a�b�Gn�@l�4e�e�;^~;b�TB>M??KC@JE?IFA=>6BB:[VPwlj��}cON���ʮ���������vdRN�rr����zu���Ƴ�����~{���ŭ��ĺλ����Ư�IJ�̶�ɴ���|���������zg`�uo̰��Ĺ�����������zm^WiTS�op�ln���̷����zib�������{w���������ɭ�׻�ǰ�ȳ�Ƿ�ž��ÿ�����þ��ȷ������ů�����������������������������������κ�����������������������������ÿ������ki]BD6@A;DF;GI;KM@GH@DAo�;i�6SeAHNEGDGMM@CHFINDEJ=DL?FPDFRHKTGHMMKNIHNRP[����������������ý�����������������������������������������«�����·�����Ļ������������������u{�9Wo0Vk1_w0]|)Sl*Oa)Q]*T`&Ue*Zp.Zs+Sm&Nh$Le2Zt4Z~/W{.Ww.Zs-[r)Yp'Wn%Th!Qh$Rb$Ma*Rk)Sk)Yo.Vo1[t1`|*\w(Vp-Uo=d�:c�/W{(Tq(Ul#Pe%Re P^O]M["M]$N\%O_$N\#MYMUNV&M\,Oc%Nd'Pd'Qi&Ph*Wn*Tm0Yw3Xu7[{Cj�Ls�Pt�Dk�:b�>g�=f�i�;6D?CGDDLBBJ3GGEZUY_Te��������ʿ����ʾ�����ü�������ñ�Ƽ������þ�����������ʻ�ĺ��������������������ļ������cfQTUOXTSYTP_VQpY_���Դ�ڿ���������ͧ����v�~s��v��~uh_xg`�smtf]^SMhY\�{������Ų����������}ypPBBcIT�_n������mVN������ҽ¾�����������������������������������������������¬�ǯ����־�������keY���XGM������tlam`Z�w{������������ȹ�������������ζ�����ſ������̹����л�̹���������������߭����ֶ������jgq\Wt\Zz]_ŧ�������md�ž����������̽������ZXIFGAAB.UQEURARSA\VHtj`�����|�����������������������¸�����������wx|���������������������������������������������������������������������������ouuaehkjp~�������������������lrrw{zmrv������������s��2Uh+Sl'Lf%Sk,Yp.]w+Wz,V|2U{2St5Ys@`wEez^�g��l��Vh|}�������“��HC?����vfxiftpq������e][mhlljosutrrr���������ξ��DzѼ�ô�˿�ɺ��н����o��������}��˵��������������º�����ÿź�����þ��ǩ����������Ǘ�������~�����Œ�|���h^\����������ɼ�ų¯��ǽ�ž���ǽ�˿�����Ʋ���ι������������q�ri���Ơ��������������ĺ����~t��������¹�����ʽ�ƹ������������������������޲��Ÿ�������Ĺ�ɽ�����ƻ�������������������û���������_o|Y|�Rv�Pw�Uy�W{�Ow�Bn�;h�?j�9d�9[wDTcLOTBIO?FNDHK@AEBEJHGMDIL?GJCMLGNTBGMHLOfkg\agBFOMSQ���������������������ž�������������������������������Ʒ����������������ɳ�������������������guv8Yj.Wm4\u7c�4c�5c{2^w2^y8g�8e�2^y+Xw(Vp.Zs'Vp Ri Ne#M[#KS"JR MPOPNTKT!NS!MX"NY!MVNUMU$OX*P]#JY%L["M]#Pc(Qe+Qd*Uh*Wl+Wp-Tq,Us&Rk$Rb"P] P\"R^$Ra%Tf#Pg(Tm%TnUo-_v6`y.]w'Zu.]{3`�8d�@n�Bp�??AEEGKILWO\�������������������û�¬�Ʀ��������������ҵ����������Ĭ�����Ź������ȸ���������¿�Ž���������kmX]`M[YLwee���ʮ��·��������Ω����|�}y�vw�qs�~~������mi^[SPeU_���������������������\^SGBFC:KDWOBhZQ���75)NKBXTIkhW{xe��p�����o�����������������������������ê��������}�����������������|}�xrv|vx�����������������ĸ�����Ȼ�ȼ��ķ�¶�ø���������������������������vwy{x���������~��cbg���������}~�_q.Rh%Rg-Vl+[r*Xp,Xu&Ro)Sl0Rk;ZoIXkqy������²�����^fh���������LE=vmd�sm�ookabxul������zpovppkee{uw|st���������һ����̻�̽��Ϻ�Ĵŵ������Ǟ���ŵrfZ�º�ý���������Ż����Ⱦ������¼�����ʽ�Ķ�����v����������������Ǿ�zsd^^[PV����{������ϻ����о�Ǻ����������������ξ�ͺ����Ÿ��td}bQ��z��u�{p���ͼ�ĵ�����������ȿ�������������ʼ����ļ����¾��������������������������������Ͳ���Ļ�Ļ�����������ُ�y���ҿ���������ߖ��HYm=a{>]|3Ux/Vu/Vs7^};b@g�Hk�B\w@LZHGOHINBCGJIOJIOFGLCBH=A@AEFLMQKOXAHRJJTddlLN]HJWomp���������������������������������ŷ�����������������������û��������Ғ���zx���������������������jtv3We.[n8d�>i�Hq�6a�&Ro#Pg&Sj.\v2_~6b};NLOXP]�������������������������ǰ�ʭ���������Ż�������ù������‚z�������������������������������ż�ö�ѿ������������׾���������ɟ��yqZOM?:@FDOdajd_c������UPLzjm�������������������~rURKNMKYOMnYV�wvƮ�����������������������~�ys�pkn\XbTQr`\�ol�wv����yt�������s�seMIak���­�j`VdYU\LM������m`XaNP�vx���Ũ�������������������IJ����о�����»о���� ���������~�����ߜ�����ȸ�������ü���������|���ν��ƽɺ�dz���������������Ҙ��USFGIJL?WSHtsajmZJH;SJC��������������v���������Ƶ�����������������ž������������������������jinV[a]`i`_ggbi���|xw����������������������������ż����ú������mqp���������������XZY���������||~ons������������9T[,Vb#Qa#Pc&Sj4]{7c~*Si&GV0CQFO^LP[CCKUPW|rz������������������������_[Rrmi�������������rrvw���zvu�||}oo������������ȷ�����Ŷ�´���������������������������������ȼ�����¹�ž����������������������xo��ŧ�����;�������npkQOR|xwb`a����ÿ��ϒ�����ʼ�����źʰ�ּ��ͼ��ĺ����u¦��nX�ze��vtVLlZX�������������������������������Ƽ����̼������������������������������������������Ƹ�����wy�w���ǽ�������ɼ�������Ŵ�Һ����KYY.T]-Ua(N[&M^'Pf&Oe&L_(Qc1PbDR_INTEFKCDHFGI@BA?CD=AB>BE=@E?CD?@DEHQLOVNNVKIVJJVHHPIFMDAH}{��|�dTa���������������Ǽ�Ľ���������������������Ӏrr��ÿ������Ŀ��ʠ��ohb������������ǹ�������]nx:cy2Vv0Yw,Ww2_�8e�,Yp$Qf"Qe'Ti+Xo*Wn$Pi+Tp-Zq-Zq,[o(Wk'Wk'Wn*Yk1_o*Yk(Yj&Wh+Zn,Vn.Xp/\q-Wm)Wga��z��j�����6Rg{��;Vk-M\$JU"N[$Rb'S`-Vj0Yu4^w*Rk+Vi5_kEdvJj�=f�3^�-X{(Ut$Oo)Up1[t4[z)Rp&Ph&La'L\*Q`-[k0\u5^|1\~7^}2Yx*Tm(Rk4]yKt�Lw�Gs�Eq�=d�9j�@n�Fn�@k�Dl�Pt�T{�Kr�Hs�Gs�Ox�Ls�Ns�Sw�Pr�Jn�@l�T}�Im�Ce�=c�6\�4Xx:`�8c�=f�Bi�Im�Kr�>@fbarnm���rrrzyuhbd�pz���������ñ������zb_Ptig�ww�vu���������н��o^�����~��y����������|p�v�������zkoaV�j_�wn��z���������}p_>:1F;AG6>C84>7/941KBEQ@HPBBN@?YCFbf������������Ƨ�ɮ�ǵ����������ͳ�г�î�����qd��u��yα���������ٵ��ȸ�;�������Ƶ�������������ȹ����Ʒ�ȴ�ӿ���̾��������Z]LIG;B?8CD>@A?AEFJhin|rz���о�������q]\�km�vxaYW�����z�������~prdaka`gae___`ZZbVVwgj�����}�������ȿ�º�����}Ʋ���������ʾ��������������ļ�·�����ȿȾ����Ŀ��������}w���̻��������������������ķ���LHIklqsrz���ó���Ͱ���������Ƹ��������¯���ȳ�ů�������������sldc_^igj^][�������������ʽ����������µ�Ƕ�ʻ������������������������������������������·����vwgYWJ�����u���������������������ó����Mdj9dw.^r.[p1aw1ax9h�5Xn@Q[GJQHHPADK@CHDEIACB@EAAGC@HJ>EMFMSDIOBENFGLADI=HN=GP;BJAFL>AFSRXOLWTNZulq���������������������������Ĺ�����������������ú�����������ƻ��sf^����������������¿���:R^1Wl/Yi1]v2dFt�>i�:c�6e�7d�2_|2_|6e�*Yw%Rq2Vv/To*Rl)Up.Ur)SkLcOeOb(Xl-Zo+Xo%SkJZ(P\%MUOqzKev>Zo>[iJfrJjw0Q`$MS"NO*U[!LR&OS0X`+Ue+Ua.T]Hfh������C`p+Nd*Nh2Wr>f�=9DC??>9?>9@@>HEN]Of�������������������ħ������Ƚ������������������������������������������������������в�����¯�����ĺ�̾�|l�}z˜�ǥ��td35(19;1:9@A>?9>A:BD9FB7C?6940940C<6A>5MMCJJBVSJbYR���_\IZYGSTFROFpb_�������ŷ��Ĕ�u����������������õ�Ĵ������������������xx�GNXHTbJR]?FP;DI>EKY__������~}y><=KFL�������������������Ǿ�ʾ�����̿��������������������������������^bcbkh175T]\D[i1Vp(Rk/Yr*Wn3Xk>UgFR^8;@;?B7<@BFI@EK=@ENSWPQU\VX�����������r}m`p\[hZZj[X�yl���Ÿ�Ƨ�k_S_^\]]_[[][Y^VVX_[\mac�wt������������ò������z���ֽ���������ļ�����������ô�Ǹ�Ҿ�ɾ�������ɹ�������������Ϻ�ij�ɺ�������������������jokfhgrnoqkklnϺ����b_Z������°�μ���������ϻ��������~k\����y���wrnggg������������Ǽ��������������°������������������ʼ����������������������ʻ��������������������ȿ��о�����ô���������������ܓ��Gc{4^w>c�Ck�Mr�Oi�7FYCHLCGFAEFFGIDHKCHL?FLEMPEKICGHBDPFJV:BMBISDGN>CGKNSGGOIJODHK;CF?HOBKPRY_PS\ibi���ȶ�����Ŀ��������������������͸��������������Ƹ�̺�����������vs����ü�����������ˑ��Ci|3e~-]t+Wr0Zs-Un-Un/Vu1Uu1Ys6_{h�9a{9b~3Z{.Xq(Ul#Qa MS"KQ%LS%MO%MM#OP#NU'OQ.VV5Z`,T\/WY(LX&RU MROS"OR'PT%JR#LP#OR.UZZy{YpxRnz6Zh:[j,R]&LW#NU&R_%Qj*So)Rn%Og!K[%JZ"JV!LU#NU#M[1[q1[t4]q0Up+Um%Ri+[r:f�@k�:f�=d�:`�;e�8b�6\�Cf�Hi�Pr�Xz�Tt�Ho�Mv�Cn�e�553>?9@A<9>8>C=CDFI@U³�����������������ɰ���Ĵ��Ƽ�����������u��������������������������������ͻ�����ĺ���ƶ��Ⱥ�ӽ����ɾ����ķ���q���B<0444269-78MNRPRQceb_`[=9DA8SUGstd�����������ӽ��ǹ�Ų�������ɯ�Һ�į�˷�θ��������������������ĺ�ɿ�žõ�������Ž�������GK=CF=DC>DA?:=?::<7891C=-9:,GG?RMIlgajf[tkd���XRF�vl�����ufdM�n���̾���������w���ɽ��Ľ����ǽ������������optjjrcfkMX^JP^:FR>EM9>B]ad}~y������TVU265���iml���������������ƾ�������̾��������ĸ������������������������������PTS|��5P[)Na+Qd+Rc7\e=V[DMT>CG]bIeq3Te)S_-U]+PX"MT&R]*Xh'Wm$Ri K^'Q_#MY#NW"MS"MS"NO#PSNT"OU%PV$OV%RW#R\%Re/[tCh�Bf�Ah�Fi�Dh�Bi�Bm�Gs�Hq�=f�Ai�Gr�Ag�8[�.Ut(Tm#Mc(Nc'M`*Sg+Tj.Wm-Un.Vp+Sm)Sl(Vm*So2Wr;]xLq�Lq�Ns�Ps�Ps�Tw�Vw�465555;<>7;:8=9?>DK?S�������������������˳������������������z]������������zdL������������˻�����¸������������������˼����Ų�����ȼ��z@B4130-.2-28::B>AF9>B47<(-1*.163>EGF05/***h]cn``����������rbdLH��������ª�������ʽ��zq������������q]V�vv���Ҽ����ʹ�ǻ�ɿ�j^R�����������~���������������������������������]^>CE0IL;??57838;4?B9GG;pm\������ƹ�˽�÷�ɸ���߹��ؽ��ºȺ����ð����ķ�;�Ϸ�����ÿ�������������¾��������������Ϸ�����kkcIJBAF@@C>2DC>@>2EC6NG=qb]�|s���^\OJH=CC9B?VXS���feakfb���][Nnl]��xvpX_S;���ujdhc`aZTc\V_RJ��t�rc������]WI]\XVVVUUU`Z\cZ[�}xklfkfch][����|�����zos���������������ƾ�ɼ����������~tj������������̻�ȱ�μ�õ������xd]W������������ɺ����ɼ�zwvtu���������KFC��xopqkk���������������������������������������mhd��������˴���������������������·�ƹ����ȹ�̿���������Ƽ�Ļ�Ĺ������Ҷ��ĺ�������˿�ƾ�������������������������¹�������������������HO_<`x8]x8Ws;MeDJX>DP@GQ@DMDHI?CBJNMLLLNMRNOTJJT?BIEFHACB=FEFMS@CL>AJ=@I49?ev0Ym6`x3\x-Wp+Uk(Sf#O\!NQ"OT"MS!LR!MP LO!OO!MP!NQ!NQ"OT!MV OY"P]%O_-Sh,Ql/Vw5Zw:_|8a:e�Dr�Kr�Ot�@g�7c~8_|2\u.Xq(Qc"LX(NW.P\-Sh-[r-[s-Wo)Rf$Qd*Se+Um)[t/az3_|4[|6]|7^;^~(1..213548:5886>>@MFV�p�����Ľļ�����������è���������ñ��ʨ�x[���Կ�Ѽ��Ť��^������������ϼ�����Ƽ�Ͽ������ͽ�Թ�������ʽ�������Ļ�dcN/.)+0,'0-+56-65'/1#*0#*0$)-,39)4:.9=+35(-)83:MBR����������~kkWNtZY�nm���������ɱ��ıxkZ�pr���ɭ��qdu][���ɭ�������̸����̿��zo·�µ�Ƹ����������������������������¨�Ѽ����qmR��s��n��r��~������������̺�ɹ�Ⱥ����ʹ�Ѻ����ӿ�Ķ�Ŵ�Ƶ�Ѿ��·̱�׺�������������������������Ⱦ������Ծ�����?@2EGBGA?A>BDABC>GC@;:6<>9:=6893893??7>>6;;3A=4,%E9;]MP^SMfcR[UGRNCVHE�ieͺ���n�xd������˽�����ñ�ʷ�ư������ĸ�ea`edjfeme_iSO^QS`MO\FNQchkIJNnjk������ſ��{smo�����������~���degcbhYS]UR]JMVQPXwst������Ϳ����û��µ����ĸĽ����������pz�Dbz2Tm>N[BLUBJLDHI=AB=BE6?>JNMqlf����{ujhY���~xbSJ9������VE;pf]nfce`][VS]YP]M@s]P�|r��}ռ�bYH^VTXXXQVRZVWcX\�xv���~~vuqnlfhmdimdii`ejei�|����������ƻ���í��������ͷ����������Ʊ�Ʊ����ǽ����µ�������KFB���kc`���������ȿ���z���������������_LN�~|bRR�}wt�����������Ҵ����Dz��˯�IJ������������|zw�������������������������ļ�Ƽ�ȼ�̽�̽Ҿ�˴������������ٲ�������Ӹ����������������������������������ڞ��ɾ����������������������RPQ5W`/Vg;Q\HLWCDIBFIAFIDGLBFI;?>@ACGGIMLQJKP@EK=BH?@EDEI?DJHQ4=B@GO>EMEJMGHLKKMLKPOOWNNZ`_d�������������������������þ����yy���������ʿ������������������΢���}|�����ÿ����������ֽ��t{�Zu�Ip�Af�-Wp*Wn3]s;e~=d�8`zBg�>j�>>H�}���������laN@sZV�|z�mg�so�|x����±��p�ic������kZP�tr̮����p]Y��������ȼ��������ν����������û�������������������©���������|��w}xb>B1UWI���������ķ�÷�������ʹ�˽�Ǻ����ò��������������Ƽ̹�����ý����»̴�����������ľƷ�˻�����Ŀ��������Ǐ��MOBEF@AB<>A8@F:EK?FH=@A;@A<;=89;6671782;>7<=7<<4880((&!!JB?RKAnj_���lj[JK;XOH�pj������������Ŭ��������ɻ�Ͽ��Ƶ��XNL]\aSTYTT`SR`JK]DJVPQVSSStvuDHI~xx�ƿ���������{|v���������������EIH@HJFKODLOAFJJJL���rrrka_Ų����½�����ʺ�Ͽ�ı�ô������[qHl�HYiOTXJRTHQP=CA;A?CLKFOLUUUWROZOM^PPcUR�|t�}q����}q�zp]XRab]jig^^\Z[V]XTbSLkXJ�gY�}m׼�ohX`a\W\VWYV`bajjjtso������xtiokhb`a^^^`_]c_`tpopjn�s|���ó������������ؼ�ȵ����������������Ƴ����³�����½���wyt���|z{���������������{qo�wx�}�{z]YVc^Zqha�����|��{ɾ���������ʟ�������������}���������}yp������~vs���������������ʾ�ȸ�÷�ó�����ɿ������������ƺ����Ⱦ���������������ƹ����������������������ڼ�������������������������殠�CT^=RgBIYDGNDIM@GM?HO;DK97>Fk�=i�;h�8g�8g�|�w=D<6?:5>929225.?>=<<:=?:;<7;:8986984:959:5E=;KDC7:?NOQuoqa]\�{�������������ȵ�ϸ�ʴ����ɹ���EXVP_bSYYNOQJNO=BEBFIMNPPRQPPNPPPPMHNICIIADDN]/;K3:B56:7;:=A@AFJ=>CEFJ?@BAEDAFIJINLKQNSYADMCCMBGMAHPAGSBFRVV^opunvy^glY__uus������������������ó�������������������Ϳ���������������̫�����������ɽ���»����������ǔ��CYp2Tp-Pl/Sk3Xk-Qi*Ob&M\(O^)Rd+Xm,Vl1Wn1Yr+Ys&Tn.Zu.Zu/^|3b�7c�Dk�_�=d�9d�?h�Ae�=a�;_�1Xy6_{8_~���{�sAL=AA?CB=G?=hT_���´���������������������v˿�������ֿ��ɴŶ�������̼�˶�и�γ�ַ����������Ʋ����®�������������ξ����),+1-*0.*00)//&*)9999??*24:?B7AB7AC:?B5=?)34:BDSWV���BE>�}{���������������������������ټ��­�nW��{�vi���������z`aʬ�ӹ�������Ͻ�ë�Ը�ĩ����̷���ɲ��������UQFpi_��x�zm�wf���������������ú�������ʾ�������;�´����ʼ���������ƿ��ٽ������������ŵ��Ӿ�������Ʒ�ı����ɴ���ڿ�������~������´������{���egRLI@tkd��������z���>?1AA?DDD@@8GD?KGD<<4:<7687997::8;;9<=7DD8ieZ}yn��wlm]GH:KB;xg`��z����xhsjazql�xt³�yqn[WV`W\[V\UZ^FKQNSYNNVUT\bcgimlbb`rpq�������ȿ����ƹ�����������������|���SUP=>BDHICFK;?@DJFQVRfbaus��|����������ȵ̺��Ŵ�ɸ�ó��������xLODQQOJPPIQSNPOQQINNFKLGNOJMJCNKFJKFcb]���qpnhfid^be__e[Y_PI^JC`ICdQJj\YeWVvfYeT��q�ogaXQc\R�xqib\a\Xc^Zzsm������ka`^`_\\\^^^]a`bc^cd_kkkzzx��{���������������hZW���Ǵ����ɺ�Ʒ���ĸ���Ļ������Ⱥ����´�������������Ǽ�ĵ���������������RWZ���yur�����ϻ��ymm���°���������NLMief����¼������c\T�~y�������������¹�ľ������������������ɳ�������������¸�������sbj���������Ѿ��������ü;�м����­����������������������������������KEORVY�������wKHY=I_;H[3;F2:=6;?:?E@DGBCEABF9=@:9>><=@@@BCHCCK@CJILQFIP9@H9BKCJR?FPBIOFMSBIQjlk����||UTYJIN�|{uik��������������ɴ������������������ſ�����������������������������������ص��Ź������։��?^s7_x1Zn*Uh1Zv0Yu,Yp0Xq0Yo-Wo3`w:b{=b|1]x1^}1\|1Zx(Tq+Tt,St(Qm"M`$N^"N["N[ K\#L^"LZ&M^#M[%L['L^)N`)Sc#L^$O`#Pc$Ri"Of%Re%P`$Ob+Qd%Re'Re,Ql,Qk'Rc(Qe'Pd+Qh0Uo/Yq0^v/\y7f�4a~.Xq,Tn,Qk)Of+Uk.Xn0Xq.Xp*Tm+Un'Pd(O`,Qa'M`*Wn+Zv,Yv0Zs,Uk'Qa&L_(Qc%T^(T_&P^#J[#M["LZ$LX'OY"LX&P`+Uc*Td*Pe+Sm)Rh4[x3Wy1Tr1So,Pj)Pa(O^)Pa�uy���|�pMVAW`OU]POSD^]IriZ������������������ƹ�ƾ�o_�ij������Ϻ��Ȯü��������͸͸����ֺ�ɩ�Ե�������˽��¶į�׻�����ľ�¾��‰�u.1().**,)*.-,22%+)///:>?'0/?CF8;@EIH/10.404:8|}tzz���@FBvpt��������{������������ì����̳����ɶ���x���������j[V�xx��������ҹ��«����˱�������Ħ�ũ��������������������q�q��y�����|����������}r���Ǹ����������������ʽ�Ÿ������ݪ����������������֠��æ�ӷ���ɪ���ö���������ĵ���{ġ�ʴ��������ʾ��}�����wXS@pfZ����|p��r��|_bOSZJSWF��~d_KhgSIB:=<7:::<;9;;9<;9GB>KB;VMFSIGo`]���fjQ?B-d[R�vp|nc�����mg[vmpXRRSQRTUW^\aZZbJP\AITINTQSR^ZY~vtqpnWXSefa��������������ӯ�����y|ua]\�����������y������NZLDJFlniddb���nl`~{t�����|����ƹ˿��˿�ù�Ÿ���ɾ��İ���cdTVWQMMMEB=KH9PM>GG;SK@uriijdb^[mcd���sfmaZaZXY]\XdXXWGGO@=XJAaJDjSMeRNq`V����zkpf]gg]z|ngeYf_Yc^Zc^[kd\���c^Xgef[_^^`_aaa[\^`^a�{{�~~������������������������feauiiϻ����������ɴ�ͳ�ͺ��������������������������������������¹�wq������gkjnnn����������|~����ý���������cb^igh���ƻ������ȭ����������������������Ļ�����п��ź����ļѻ���w�zk������ͺ�ͼ�lc^{wt����������qq������˾���������������������������������Ҽ��������\K[UV[������^[dKRe=H\B7:?@?D=>C;>CBEJBCGFGK@DGCDFEEG>=B??GGGOFIRCEQILQGMMHNLXXP�¹���hhhgfk}}���}yx���������ƽ���ȿ�������������������������������������������������������٭��³�������jx�6Vk1Yr/[t/Yq0^v/^z(Ul,Tm(Qg,Vn&Pi'Qi#Me(Pj)Nh*Rk.Zs*Vq*Wn,Wj$O_"M]"N["LZ!KW%O[$LX%MW#NU#NW(M])P_&P\$NZ$OX%MY)Pa.Sm3Yp1Zv,Yv,Vn%Uk%Uk%Tn%Ul)Vk&Sh$Qh#Me'Pd$M_(Qg)Qk1]z:f�4a�0^�/\y+Zv-Zq5]v2\u,Ww-Vt1Vq1Sn/Ql1Yr7_x7^{:a�8_~>e�>>175/34489'-+)21./3HCGytxjek���TTRztx���������������������ʬ�ռ�������ȼ�H8)rYUva^aWNUBD�fm����������Ǿ���������sv�gk�wy���������ŷ������}�tk�zm��yqd���dSK���˺���v�zp���õ�������������������²�˻���Ŕ����������������Ŝ�w���ͱ�������ɷ���������۳����|������������~|o}noh^��}vucvrf��pj^Pr_Y��������q����ǰocKztZNL7@C0BD6FH;:;3>?7EB;C;8B:861.C02saa���}zia[Ownen]U�vi�{ohc]QOTROXVU[Y[ZQSRKPTFOX6?HGGOMKL\XW�������������{u����}�������Ĺ��Ŵ�̻vvl}|z��������}�����x���ilc���mljplic[Yxnm}ur������Ͼ�ӿ�Ʋ�̼�˻�ȼ�����ɴ��������}TRCli`FF>NNFWWOb]Wc^[mif��umk_d^``^c[YZ]W[ZVUWLJR@HCFOBEN;@C>>>=>B>CF?CD=>CEHQHINFGIOOM���}rn������MQPdc_vw��������չ����������������������������������������������������������ߺ�������ƻ�������ɾ��Tbm:Wi:d|Fo�Bo�>l�?h�Gq�Ao�`{1Xu/Tq.Rl5Yq7\w2Zt,Vl)Si1Yr0Xr2Vv+Rq*Tj/UjBd5^z.Zs,Yp1[s5_x:_z@c8`z1]v-]t����������������������������ҿ�ʸ������������ž�������������ù��ů���ù��ʻν�ʶ�ּ�������ή�ײ����ѽ�������ñ�������ɼ����d_Y574..0(..&*+((*$%'%++&*+:::777132-10,0/+/.0135689??KLNPPP623uhq�����������w��|���������ɯ���������q`TF����|lLG392*P7;gLQ�lq�������thkTLePKT?E5CI?AJCDI:=D36=36=8;D.0<+068@B2:=5AEJMHLOHINONScd_���icehahief��Ʃ�����tpq���������������~rt������;�������������������������������������������Ǹ�������������������@R\5Zm>h�Fo�Dm�Eq�Mq�Jm�>c�8a}9e�Ho�Pt�Ep�>m�;m�9f�?k�=i�:i�:g�9e�9f�9f�;d�>c�9^y3[u3]v)Vs3_|9f�6g�4c�7^7\y8`z6`x9`}7[}8Z}6Z|6a�f�;f�2_�9f�6b�8d�6a�5]�2^{5`�=f�;d�5^~3Ww0Wt2[w6]z9b�/Z|-Xx-Vr)Qk&Oa#M]%KT$MQ%NR!LU$KZ"IZ%Pa(Qe&Sh'Re,Uk0Uo,Ri+Qd(Sf)Tg0Vk/Tn,Ui)Sc*Oa-Qg3Up5Vu9^y>c~?h�?h�@i�@g�?i��������������������������������������������ξ���ü�»�����������ȿĽ��������Ʊ���������~q������İ����������˱�����ƿ���gaS782132%1/*32(,-(,-%.-%.-'+,.0/576'0/&0/+417@=/32.0//3223523565:NFS������������������}ldsb[��ͯ����xmWs^Y�����yŻ�8;&>71L8D:0F<0iYL����bTO2<:%9:,@=8;81:3+?42G85PE?j`Vqf}ib����{k�{fu_RmQN�rt[AB�Zạ�Ҭ�������ҷ����ʷ����Ƹ�̽�̻�Ƴ�Կ�˷�ķ���������ذ����|�lldW~ulrl`��vxth�omk\\XO�{q��|����������x�~k��y�|i��p��yZXIVYHRUB=A2,/&.(*?74H:7�xoOL;tn^yrjed_UWVQQQSSULMQHKPDGLABF>?C:>A:>ANRS���������������³�³�����������ü�|���������������������������������vvl�������~����|p���������ĸ�Ʒ��γ�ĩ�ë�îʹ��DZIJ�����ʵ���hh`rtq������deW������������|m���ffZ��|�ҿ���93#PC=VDDZLI`UOm\TiULfXMfWReZX�wt�����z������������sje����}z\Z_[Zb[X_a_ba]^^_aYY[pjj�����������̾����\[Y^RTn\\���������keg������Ĺ��ÿ���������������������Ⱥ�¸������������������������ģ��nfc���mhdø�����x�zt��z������Ǻ�������������_RJ�����������������������ĥ��ƽ�����������ƺ�~p�������Ⱦ�����������������v��p{qh���м�ʸ�ɻ�Ǹ���������������⶧�i]krt�fmwSYgU[g���������|}?GR8DR4EBFOBISCGPDHQ6AE/6<3J3;H/7B*2=:CJ=DLBIQIMVHIMCDHGFLHIMmol���MMWCEQHIMrmqkdlf`dicc{wv�����������Ҕ��������������������˿���������������������������������ڶ��������;������Ϳ��Lbo7`v1]x8a}Cl�2Z})Tt'Qj(Qc&Qd1[s=f�6a�7b�3^~0[{3Z{.Vy&Sp$Vo-[s0Zr/Xn5\y9d�5c�5`�3Z{8\|>@.0//40-/,(-)11/44467;YQ\�������������rg����ƶ���������vj\wb_���lZLͱ���{VY>B<0H89\FIn\X[LG\NCK>6D22]HEu^N}hU��s8<#jjP{w^�{h��}��������qxtW;9*GC@23+96/D>2YM=VO?dZN`QJoWU����bZ�|r�{p^QID:9K8:lGO�lmĘ�ɣ�ض�������չ�������н�ʲ�ɴ��û³������������ي�v��{��wwtcnq`XTHtja�vn��|uoafcT��v����������l����rb��s��{zpf�����lgiSdgVPTF12,512-)(<21aVPVOImhec^[MKL\\\SSSLJMLJKKML?EC>?A>>@BCGGGOUR[���Ƚ��Ⱥ�����؇�w��������������������u���������������������okb�������������������vo���ǽ�»�ſ�������ϻ�����̵λ�Ȼ����������į����������������������¸��v�zsuii�ttwlh�zu����ɹdaN:6+H88SCCWHEgUKeODgPHh^Ub^[kbezlk�wt���rn����˾mdUwni���^^`XW\][\fba[[]^ZYgb_ldb���������������umkWSRVMFaSJgXSrch������c^[�����������������������������Ľ����������������ӷ��������Ƽ������|���ugf�����xe_Se\U��������;��ȿ��ȸ����xoppdsug������ʿ�������Ǿ���ǽ���û�ƶȷ�������Ŵ�����ó�ŷ�¶���ĵ�����������{u�����������������������������׿��l`j]alwz���TW`hik����ý������EKY47H#&/$)-5=@BGKDFCHIMDCKBCHAFIFONbejAEN6=C5>HIISCDISQVypqVJJ���˼�������rke��ē�����������������ɾ����������ź�����������������ż���ô���������ٚ��TjJw�Qy�Qx�Ly�Ds�@o�An�;j�9e~7azIr�Fr�Iu�R~�@l�=h�@k�@l�@l�7b�2^y5az7c~8c�9d�9f�7e:g�=l�Bm�?j�9g�7d�1Zx*Vq,Vn#Pe(To.Uv6_}5Zu0Xr1_y>k�;f�8c�4`}5a|>j�?j�:h�6h�5e�7I�t���������u�tsϲ�������������fXU�nv�����~���ʸ����ZXAOL;^QHp_U��v��qf_Opj\zpd����wj�����������s���������ʵ�������HN4\`Oko^AD1EG2Z_HZbJmqZww_phU�uf�}p�������~kXWBjiWle[����rvڽ����������μ����ν�˷�ʱ�д�Ƴ���������������܂�p��~��z��}wu`niUvo]tj^��u��rUP=zlc��~Ӿ�ϻ�������yc�|k��~���������socacX34,-)&*&#)*%0/*=:5OPKVVVQSROQPUUUKMLKMLFJIJNM>BACEDFFDNNLRMJlff���¹���������э�~~~tubd����ü�õ������������������������of_�x���fa]��z���la]ZUO�ys������ʺ��ɹ�ɺ���������ʾ�����ö�������ɻ�������ɶ��p�������������yinj^����}qokbgb^yom���ʾ����64';81K=:YF?]LA<@AGHLEDJDAHB@EBGCFFHCDI>=EFEKLMR6;?;>C?ADEIGHLTX[MSS:?C<@I<@I?HM?GJFJI^`_FGIPPR����������������������������z���̌x����ƶ����������Ĺ�������ʾ������������ʓ����������Ϛ��a}�Pr�Qw�Ks�Bi�Dk�2[y+Wt:i�9e�>e�Fr�Iw�>j�Bj�Iq�?j�:f�>i�Al�?l�?n�@o�8e�8b{1Ys+Rq4[z8am�:f�=e�?e�Bk�?h�Ah�=j�?l�>k�UG>[I=dRFbULaZPXSPa[[vki�qjlZP���п�xoh���e_aa[_^]c]\b^Z[ZYWb\^rhi�zt{sp��}��������~\\ZTVUIF?QG=[QHaVPeZTh^]d_\phf�����������������������������������������ù�����������������¸������o���mi]ja\xji�|y��������̸�����ʼ�����������Ǻ��������ě����������ջ�����ȵ�����������������ƹ�������ƿ������������ij�������wr������������n]m^ZkW[gU\dX\ejmvchnrqv���������˼�pfnBFR5;G;DM4>H-6;49<>BE>BC:::<<>9=AEFCEDCED???AAAFFH__]xy{>AH=EHjppBFI?BGDHIFLLDIMNSY\_hoiszo}������������������}u�[Sb[S^���ǿ�¸�ƻ����������ͺ�������������������������������u}�@\r3Wo.Se/Pa0Qd+Pc+Qd/Yi.Wi-Wm.Wu:c�=d�Gk�?c�<_>a�Cj�Bi�Ae�Bg�Jn�Jo�>k�=k�Jw�Ae�2Yx5^~4Yt1Vq/Vs1Xu0Yu4Yt6WvAb�@f�@k�?l�;h�=i�f�?g�8b�Al�Bn�>i�>RD;L;1ZG8dRHbWSb[Ub_Xa]Td[RfSL����}y���f`b`[_c^bbbdacb``b`^_e][yomtr}on��������kc`WWUVRSFA=VMD_RIcPJcQM]TMcZSqge������������������������������������������������������Ķ���¼��������̾�ƿ����dg^_ZT����þ��Ū���������������ƽ���˼���������������������Δ���{���¶�����������������|v��������������������ŀxu������������`Rc]^peltotw���������`dc���������������CANFN[>OY?MZ8?O5CCCCDF;<@BCE=CC?DG;AA@DE@AE@AEDDDSOPhfkHGO=ADNRSCDH>AFg�Dm�Hq�@l�;i�;f�>e�Cg�@g�:c�7c�8a}:a~:a~>h�Ci~>ev?ak@Va[hnlpo���}xt���qotQSR������`YkSO]b[cYN\^T_~sw��������������������������������������u��{�������������������������������������������������¿������������������������¾����vmp�z�͸����+-",.--33132,1---+..,220331///-/.)2/*24&.0'+,%)("(&'&%#  '''"""%%%3206:=99A:9?@>CIBI`W\lbm���`_Z���������j_[��������|�������uo�af̣�ͥ�ɦ�������Ǵ��������������������Ƹ��~ѷ�о�ŵ�λ�����������÷������������Ͻ��������ɽ���������˴����~oh���Ӷ����ӿ�������п����Ġ�Υ�Ȩ�í�ʶ����Ƹ�û�����Ӿ�~k�����rxykee[X\N44(`\Q���{{c35'h`U������gaK|vhuqe��{�����}B;1&#"!!#$% %'$?A>IMLIMNTW\PSXPQVRPSLNKHMGDHGGJOLMQEEGIHMIIIHC=RGEm]^����������������������}u������wvbbZO���������ĺ����Ǽ�����Ĵ��ʘ��~{t�����������~�zr�tt���������������������������������ö������˽��������KJ890)^EH�zxַ����f^Sk^U�������������ǿ[J@70&44(;<.A:2K:3R?1R>5SA7aLGeXRb\Pe_Sc\Th_Vl[Q���pbaice][\TTRb^]e\_g^ad`]gach`^~yiebqgf�{y���m^cdY]VVTPQLAA9TPDXPC^PGbUMTH<`VLh]Wshf�~~����������������������������������������}|���������������ź�ƻ����ķ�������������·���Ȕ�}Ƶ�~qh������������ö��ȿ����������Żѿ����Ƕ�������������õ�ò�ʹ���������͚�����wko��������Ȗ�����jhm]YZdglR^jbis����Ŀ�������������½������wqsWV\@CL?FN;EQAJY6@JGRVQVZORW8;@BJMAH8=C7DT7@IADS@DO;>GCCKJJLSOPRRPMKLIGLLKSb_f{t|jaf������������������������������������������gkw=Td,T^-U])V[&NV+S].Ta.Rb,Qa(R^"P]&Oa&Pf/Ul.Rh-Sf(Sc&Td-Wm1[s.Zu,Wj.Yl,Wj.Xp.Ur/Ss7Zz;\{>aDk�f�En�An�=h�?h�?f�3Y}2Vz0Tt,Tn7^{Mt�Ip�Hl�Jn�Gm�Ci�Bf�>`�=a�?c�Bi�Ef�I`Yfwx�tv�\bp]_l~{�aYd`ZfYVa]`gYWbNJYIHVGJQNLOiednfcXMIm^[�rt�|��|��y|�����y����������������~��}��~�{t��v�zo��x�������������������������´������������������������������º�������GFAWOZ^UX-.&(*%1/2132576+++-/.-/.553:95051043/10124+1/(.,352+-( "  ! $$&6794465;;0:;267GBH^Vc��icc������������oe\������Ѿ��pb���_GE���ʥ����������̸������������~�}x�yz����������ȸ���ű�ؿ�����������ùл�������ʮ�۾��������ĸ������������n\R���Ϻ�Ӻ����ѯ�����´�����r�������������ĴǺ����������`^O�vp�xr�}vyuj`aY74/XLL�sq�wkD:0taZ��{���kcPofWlh�xpaZ90+!""##$)*">?9FHEMNPPPP[[YRTSKLPLMQJHKOOOLNKFJK?DG==C?=BKA?`NNxbe�jm�wr�{w���|rp����zw�|v���������lo\\XM�v����³�±����¬Ʊ��unvmfb_��������������������swƷ�������������������������ɼ�Ǹ���³��̿��ξ\TGPMF830E31aEB�qj��q���Ҽ�ɲ�����Ķ��x6,"81)<5/A81@91D5.P>0Q?1RE5dQCfZNfZLhZQk`\h_Xj_Yi^Xid^feaa_`ZYT^[VcZ[fZ^h^\g]\mcawtoqniphfndejdd`\]XVWQQQOKJEB9KG;SK@_SG`WFdWN`VJg^Uh_Zh][������������������������������������������^RR�tv����qt����������|}���ƹ�������Ȼ����������������ǿ������̾���ļ����������ú���ɸ����Ͽ��ɾ�������������Ǽ��Ƶ���������w|ihpgfv�~���������Ϣ��UOY������SWb^bm���������������������������TRWAEP5;G@DOCFOEEM58?EILD>B=;@AAA99;>=B=>B9:?;CF:BEBGM7>F9DJ>HR9ANBHTBIQAHP;?HADM=AMACP86C44@FMUBGM@AE:?C>CG;@D:BE:?E68D9;H:BO;GS7=I8>J;DM69B>>FA@EIIIOOMIII???CCEEEGKJP[X_��������������������������������������������ݮ��e�Bf�Eg�=c�4\,Vo)Qj(Pi*Oi*Rl.Wu5XvJgyh{�y��BZfKco���wzZ]d������~{�\Yj]\lSQfROdUQ`SRZWWaRR^PNYQV\PTWXY]sol����|�{��jVWZAD^FFrZV�����������s��}�������������������������������ļ���������������ƽ����������������������������º���¼SWI6=6158220*,)-/.00.55302-)-,+/0(,+.0+03,./)11//02-14%-/(-0/36./1(*)"#!...0029:>59<45767987=]\a{xsc[X�����������������ȱ��jXD���\J@�fl̨�����|r�����������z��}�wrygc�yx��̹��ϼ��˾���������ʸ�̽�ɷ����β�ܿ�ճ����ҳ�ҭ���������������ʫ���~w����~{�mmw]^�gn����źʿ��ȶ�ȶ������ʶ����������������|joi[mi]c_Spg`c`YRSKRSNRMIok`nhZe[O��{��u}waQOC;2+1,(.)%)&!%$#".-(EFAJJHLJMVQW[WXUSTNLMJHIFGILLJSQROIK@@@<>=AAC?CD=B>GC@NGA�~{\QMhYR�yp�zp������gg]^YV�����~�������ǯB?0�|u���ʺ��é��������x�xkli`YXVgc`��z���������������xoj������������������������������������Ķ�ʽ�����g^bQCGEFJCDFHLOFJS:>J=?KDIM?GJ7@G9AD=@G<:;@<>@?BCE@?DLKQVS\ogr���������������������������ɺ���������������β��������\gk?_l6]l+Vf-Te.Qd5Uj-Vh%Sc.Yj.Uf*Td*Td/Td'Qa(O`/Sc-Tc+Qd-Sh*Ob'M`/Tf.Qd+Uc(T_%PV(UX*RZ+Q^*Oa'L^+Na-Rd,Uk/Wp-Sf-Sh.Wm0Wt/Z|.Z+Vv,Sr-Nm*Mi-Uo7Yu5Xv8]z6[v4Yv7`~3_|5]w>e�:b{8d}?dvs~�������\ZeU\fghl|z���pgj������������US^QP^JLXNQV_ea���OPUINRKNSRQVZTVn_bxfd��������}����������|z�������z{{o��y��}������������������������������������ʻ����������������������trc|wq���������������16/.23-/.'+*(*)#%$)))((&)(&-/*,+)*()/-.,*+++)+-,/4.LRHai^%/')/-&/,#)%""!$'"&'#$ #" %!(*'+,'34.553113568459ZX]���hge�������������������tf�����qqcV�qu�������}|������scwi^o]Sp`SiVP�x|Ȭ������������}gXUdIP�s����gf�}��������wu�wuǡ��}}�dm���ݼ�˳����xrdi^X}kk��{��uh_�elʯ������������������������������������̿��{|j��yryi`dUccWXVJ��uFH:WYLlh]b[Sqha��{oh^57*)&!'&!&%!('#./*?@:UVQJLIOSRPTUPQUKNS>FI=EGXQA]QA[K;`SC`VL[NEh\Pj]Tk`^lb`ldb}ww������������������ytn�}{WTO�|x�|yVXUUWTWVRa]\_ZW`XUWRO_[Zc_^ZVS�~x�ľ���Ƽ����������������ź��ľɾ����������������ź�����������þ����������������Ż��Ʒ��QFJ[VZ`Z\`[b]^ctos���ĵ�tiojhm��������֞���������¾���������������XTeINaAM]8AR/6@9@H-6=;DIB38;6:;779758@>?:9>:>?=A@AFBCIGAFL?CN4;E29?=EH6?F5D<@C@AFDIOELRGJQQNWwpw�����������������������������������������Ӷ�����ѿ���Ԝ��m��:W_<\gDdoVw�by[pu8T`7`r4at/_m*Zf2]p1Vp+Pc.O^/Sa1Wj0]r3]u4Ys7]t6ds3Za6XY$HH3V\1Ua.S[,OS.QW(NW*R^.Rb3Rd4Tk,Oe0Uh)Ob+Oe-Oh+Nb.O^(LZ$JU,M\,P^-Sh/Re0OaNm�Ig/Re5Rd:TkNe�P\t^bnknw\YjLN]SV]���][\���idjsnrxtu������~�ZZdVV`KKS{zu���ZW`NNXEEQ?ANOPR������������zjk�|}��������y��x��u�~o��x�����������������{{|l���������ɸ�¹�������������ø��ƺ������������ZZB{{o������������160,.-2.-+,&&+$#("$&#$"#*()**(,.+(*)')(..,,-(02--10::<������#/-78$/3$,/%*0(/")/#,+(..%)*'+,#$(*),+).-)/1.-2.-10439AAAFFFZU[�����������������������}���@9&[KKjMOnLMlMR~^_�tljWIoSH�[R}]PoSHuYU�pj��y�of��z`SJA60A12F24I75I81\C?qPK�uj�|k�vk�xr�}z���|_Y�tp�����������tvqmŷ����pa\�sx���ӹ�����ms����������������������Ǿ�����Ӌ�y{o�{p��vLN@KC@WPJLIBLI@c]OXYKTPGjaZ:3+)+ "' ()#-*%941WNORILVOWIHNNQVQTYOSTFJIBHFEGD\]X`]TWSPaX[VMND?aPFeVObVFgYLd\Ole]b]Wgd_ccacebefacca``^`_]fa^jebaa_fa^n`_c^[SVO__W[WLQMDONIHHFLIDVOEWQARK9bVH_SE[J@fUMg\Vh`]je_ngaphfyy~ts���������ÿ����ttlc[X���d_[OOMTTRZVUZYWXTQYTQQOPZXYb^_c_^h`]��������������������������õ�¶��������ſ���̿�������̾����ǵ�����ƿ��������������Ɣ��ECDOLSRSUYbaWZ_]YZ��ő��ZT`edj��۞���������������������¿��Ľ��sKSf;FZ;BR?GT>EK07=;BH?GI9=<5768<=9=><@A687@>?<=?=;DB;?><=?156574<:;CDH9@H9>B49=9>D4=B;?B@@H<8(A4,`MF{n^eUE]QAVB9fJFlOIt\Pu^P�����~���eTJ����tiUWBDH7LM;[VB|kY�zf��q�wl���ȵ�^Q@v^R��{���������ı��ļ�����}�����{YK@�jkǯ����\QK`QV�v����������������������������WXJ]TOd[Vhe\=>6540761FGAC@9aWN�{p0.")*"))!)*%))!1,(FA=NKFKFBNGAKJHDHGSTXLKQGHJINJPPNTQLVQKUPLUOOa[]NBDoa`sedeZXRHFMDE]TWSJKOGEe\WkYUva^hUQtg_�ul�����x~}h�}j��u��x�ue�����ɣ�x��~��{����v[VPYXVTPQHDESCF�ej����������������yn�������ļ�{uĴ�·�����ƾ����õ������������������zzredbEH?-. pnYXH;q]R�uo^LH8,,6.+3.(2.%51&67)G@6XQIWSJUGbQGfSL]P@bVJh_Xkd^ne`le_mhbkhaogd�����������ü�de]�����}���PVJPVLHJEOPKUTOXWR~�s���jn`de_lhe`ZZ����������Ļ�������Ľ���������������ö�ķ����ŷ�������������ʷ�ɸ����;���ö��ź����FDEEEGTSX[\aWU`b_f���[Q\TT^���������������������ƺ���������ޱ��OIUKN]GM[=ERBHV?GR3;F:>GAAI@6>@3;=CIFJSKQ]CKXBGMMPUCFK7;D48;7;<;>C=>C59:<@??@B;?B6=C18>8;@>=C?@E7D>?DBAFBAF@CHBEBEJBELGKTHOWLQWCFMJNOQSR���Ļ�����������������������������������������žȰ��u�qdujhu�����Ȇ��a\c������������˾����ǹ�������n��]z�l���������������þ��û�����ŵ���Λ������Ż��ʜ��YmxBby9]w.Ti)Od*O_*P]'Q_'Rb(Ta'Qa*R\\tt���}x�`aXZsPXkXZob_r���a^iVT_TUWjkmmns���������������������zu{���_T\]S\id^������ufk������������������}yz���znrwmn���������������jkmppnzytutpzyw�����������}��|����������{���������������������ú����ļ��ú���������������������*2'#($*,)*,)%'$%'&((&%'"$&!(*%).*')()))+)*01,/0**/)21-RIJukiRSM'0/ &&!''#-,",.$*($(+#))%% %(#'(,0/ $##"'+*(*'553224439HKRWZ_���OOO�����������Ũ�����Ű�ͻ���vRL4��o�qf��xsbXf^S^PGnUPz^[�ki�ur���������vbY������������ƴ�������Ǵ�п����ȭ��ǽ���yh`ѻ�����ºŶ������ʶ���������j_XH������\XLRKCWNOkV]���������������������������*0$1-,d_[880&'!('%.*'-)&>56PEC:2/'$"%!$%%#/+*OGDYTNNNFLMGQRMJJJOQPTTRTSQXWRPQLLHIWOMMCASIJVNLUIKWGHxhh~noOCEG=>TPQYX]RPQ[SQvlkcYWLA=TE@�ym�����}����������o���m_���з��ħucK�{l��{�yrSLFc]]��}STNYQN|c^Ȱ�ο�����̼�����������ȱ��vpb�u�����|�������ƾ���������������������Z[STUMd_K���_XFznb=/,2-*-,(41,52+62&71#B>2OH>URIZWNVOEUKAWJ:\KA\J;:?>>@6793781:98A@?BG::B48A)06.239>A7>D?;55c]_PJJKA?gRO~kdobYULEUFA�~w���l^�����������yh]G�o[���������ykNhYF�{owlYYObVV�uv�������}vл��ŷ���л������������ʙ�������}����̻������������������������������rpc_^Iǽ��®<5+-,('#"''%,(%00&5.$7.'73*D@7WPH\TQTOIZQHWI>XK:_O@^N>aSFUF?TB8^MCaSPfa^[VSa^Ycb^c_^f^\haYgcZe`\mgghbda_`c_^[WV[ZXYWXQPLOPJZ[VVUSHKBJL?UM@aZJRK8cWG[MB_QHcVMl^[n`]ofadc^njg���]YVcad������������������������������zqt�������������������������ʼ���������������ø������������}���������������������Ͼ��Ⱦ����Ľ�¾������dTadXbTKPRPQOMNBAFONTLKSELTDKQAKMQVYlot^^`�����������Ž��Ķ���������޽��:>GWbt@M^:HU8EN2;B5:@38>.5?27;013777???:@@.7@/8?59B:=D<:=::<@@@@EH7?B7CG..632:58?/6<6>@9>B8AH>CI79E>=E@@BCBG>AHAJ>AHMNR]_^���lljQMN��~��������ƻ��Ѿ����������������������Ǹ�������������������������������������͸�Į���������������������������������������������������������������দ�bv�Ut�Or�Qs�No�Lo�Uv�Mo�Li�Q_|bf[aw`e{Z[oTVcT[eRVW������rov������ź¿�����������umz���Ź�����������}z���kegnhh������˹�˷���ÿ��������}vp�������kpuii������м����IOKLQMaa_dc_ffdlljgidjmfbd_kkiwspmij����~}�����������������~���������������������������������JS>CK6:A146+45/,.)02-((&***...---**(12-+++,-/4259521.)3333544579BG4GK(88&*++/0%++%*-%)*&')')(%'&#'(+*(653"$!%'$,.-.0/+11-31@DESTVvus������������������©�������ss[oiY�{p��s��xzme�||�ut�qj|gb�wv�����������{����zsԺ�ĭ�������¦�ä�Ȧ�ʯ����̮�Ժ�����{����Ծ�������������õ���մ��������yw`IL9??5>A:NIFZIO{lqcTQ�zv�����������ȃ�uW]];GC#"%$ '&"*&#(*35*KJEQPNSUREIHGIFFFDDE@LMGRRHROFKNGAFBBFEFHG<;7NFDc[Y_ZWQNIE@<@86<42940@65\NNH>=QB=mOM�oj�{p�rcdRD��{�����ǖ�v���ͼ�������zoQ������©���mRJ5�zj�|qxxn_ZT}sr�y{��������������lй�ð�ͽ��������ͽ���������ȶ��̾����ƽ�����������������կ�����Ⱦ���š�}782!'#%'$$% )($2.#7.%7-$A8/GA5\UKWSJJD8ZPDUG:XFBMFNYBMQJSXOTX��������������������ļ������÷������LIRJP^=FW8GZ5FV8FS3;H4:H08C#*2,-2::>@>;;?B09@'1;)7@/>E9CL,2>18>?A@78:6:=6:=788:F35B<@L28D-8>,59C?HM@GO;=I?@E;;;FDE�����˭�����fbWǺ����������ĺ�ƶ�ξ����������������ȼ����������fek���bXpeXlsit�x|��������ͻ��������İ�˺�����������������������������������������������Ĺ��������؅��[o�Ml�Mr�Nq�Ps�Sr�Qn�Sg�GVk`jv������ffpSWcRZ]�����ɀs������������������������ғ��~zy���hYle]l}w��|�jbm���������������͹����������̽�Ķ����������ykj��~������ɵ�Z`^Z^]SSSdbchgeWVTZVUokjafbaaanhhgaalllyywmlhywxwwu���������������������������������������������������������~�p��vZdLMXHT_NKS>;=/DG>GP/FFDQSNQSFOOEPMHRQOFHG>BAGHCSIG���XLLSIHGB?:635,-K8:J:=WDH^JLXDCjPO�zs�zo��y�|r�m\������|aX���ϸ�ͳ�Ī���������������G2!��}��~�xsxnlmac_LPs_`�rq����������ĸ�������Ź���������ǹ��������ı������ҽ��������ǻѺ��|u�������dzη�fYP24/$*(+(#.+$22*11'44*33'@>2D@4VRFB>3ZKFfTPcRKaNGdQJfYQf\RfZNcWIZN>\SBb\Pj`_dZ[d\Za^U^\Pd]Wib\hfZfbVj_Yd^^a\`a[_b\\WWURTS[ZVYXSZYUVNLQLHPRGd[R]VD\NCcYO]SJVLCZPFc_Vd]Wg_]fdg[\^[]\`^ae_awnorjh���������������tov���������������ǻ�����������������������������������ν���hdY|tg����ʼ����������¾�����ó����˟��ZNPXRTA@EJKPA@F;8?ECFHHHIKJBCEHGLNNVNQZLOTac`�����ͤ��Ƹ�������������������������YUdEJ^9@S>5:=2:<2:<+,089;>?D3:B6=G:?E@AEAH69@7B;h�Lk�v����Ƿ����������ұ��zr�dcs���fdygh�������������������������׻�ucsvizcXhXO`TQZddpeir�����������Ƴ�Ǵ�ȷ����;�������˻�������wdj������������Ū�^][^`[\a[^`]fgbSUPOOO[WX[[[XZWhgcmniokl}yxde_fgbggg}}vupmlhojn~zy��������������������������������������������������s�����z��xyul��{�������k�����uzcKR@U[MdhYgm_U`RAM??I@9@8.6+',()4.)%$*(,01(,+013997762()$130051015<9@rju}{|����zz�����{�������wk�zv������������bQ?N94bLOR?;ZADsVZdGKuUX����������ǾUG:S;;|Zj�|��sv��� ��}wt\X�dd�����x���|h_�zv��}��r��w����ó������ؾ�Ծ�ͷ�ȸ������}ž��������������������������ƿ�}zTY\GNX>FI!''&'"KFB_US_WUUQNEFAMLGLIBHD;SOFNNDRKEXPNSNJPHEXSPEDBPLMRMJ[VSZQTVEKPADI=?A;;C=?F;?G99W?=\DBWGGePUjTV�jl��������u���shqSI��z��~��������w~\S����}w��z@" []�{|s^[��b[Q]ZQm`Z����tp�����׺��������ξ��ŷ�������������������ͷ���Ƶ��о�ƶ�Ĵ������δ�Ժ�ӹ���n@<101,,,,***)*%43/10,92,?8.D=3RL@EA5B;1^WM^SOaSR\MFZLCaPHi[RkaWj\SXJ=`OEh[Sd\Z^YVcYWcXTaXSaVReXRpcZkdZe]P��u�����{geXUYK[aWaaYa\YZTXUQPPHFUJDfYQ`VL[NE\PDaWKZREd\Qc_T`_[^]b``hW\`[\ac^dZTVhfkohoɾ�������ȷ����������������������Ź���������������������Ⱦ��������������»���¯������������������ɹ���̽�������mcdTIOTNPGIHBGK@AF98=>BEHMPAJOAHRKOZIO[KU_\]b{wv�������������vr������¸���������;��RQYKTc;IV:KUJT`>BM:/47047BBBECDB>?=;<6<:CGFBGJ;IL7EF49<4>@;DK6=E5CAF38?<;9997873?74f]V����������������¿���������������˿������������º����������������ِ��������¿��������������yx��~������������������������Ҿ��������½ฮ�ij߶�ⳟ෥�ȹ��������̓}�VcvF_}Odry���]_n�����̚��qc�ke�ehw���y{�dezko{���|w~������������������Ѻ��rzjcsZZb[Zbehmjsr������{|��Ю�����;ż���{�ξ�ȴ����̼���Ź��k`d������������Ѵ�dfaqrmqpnjiefi`Y_UMRL@EAAC@PPN`\Yojgmgiqmnmolhhffaenloz{u`a[]][gfdvvvzzz�}�������������������������������������������������rrf��|�����������������������������������������z��r}�k��z���wpHUC6B6)2/7;<:<;68302/6666:;69>6-2�����msiVWR|sv�����������|������������������eYAeYMRE]A@xYV�rip[vfV���ͷ����ɷ�}p`����������ƾ�����Ʋ����y���Ű��������}tų��������������¼±��ƿ�����LjvNPMJSR?KK8DB+54 !JG@[VPUMJWRN[VRIIIBDC@B?CF?PQIUMJ^VTTVKNNBUNDTOKHGEKJHSNJa\XQPNHGCDAM>9V>3/A81RI@JC;ULCaWMdYS]URQRLZRGaSFn\RfYQh[RYM?ZPDeaVmjea\X\WQ^WOa]R\^PcfUmlZhiW��{�����������x�����Ȯ��quf_`Z_WTWRNRKAWODbXL^UFYR@^WG[SHh_Xe][a\b[Xa_^fXX`ROXYY[ZZZ���igj���{o�j[pyh{���������������������������������������Ƽ�����������������������ü�Ǿ����������������������Ȼ����ƻUPLRSNKLGRTQHLO8AFCNTN_gJWgRZqHYkJ[eMX^y�������������������Ⱥ��wsj����Ż��������ҕ��\[cRYa@HUBJU;BR:8;88:9=<=C?>FH@DG?GJ4=B.7>.8:;EF5=@:?C+042:<47<>=C54:0/4//1/554::.68,1536;457=>@8:9/3248;C<;CB@KBBJ47>4F67;<>=?@D:8;??A9:<8:9777MLJ�}VIP������������ƾ�ſ���ɾ��������������������ɿ���������������;��������ĺ����û�������sed������������������׿����������������ڼ�ᵨݲ�۵�ʠ�޵�⾦�ɷ���������SQ\@ZgQ^q_euqty���cdy]]y]\{ce|ch|np���gdu���pqu���������������������Dz����g\l^[nVZc]`ibkrmpw����}������������ƶ�����ļ������ȩ�����ï�ȵ�jad������������ʰ�uzslqmqvrkngbe^kmjjoh]b[be^twlORK^][^aZdfa`ba[]\[Y\dbclmhY[X^^^oomcedb`aggioooztt|vz���������~}y�~����������������������������������������������������~w~ts������������������������������������y�pel\rzcnx][eL?H5=E6271316f\d���JMFNNV���wst�������������zv������ͽ����fND���saW�wpo]Qpa\�~y�|yä������t��z�yjwn_{md�}x���ĩ�Ư����������˯�η����ǹ����������ȶ�ɶ�Ŵ�ð����������Ļ��������¿������ӿ�κ����ջ��ƿ�˿WYNQWSSWVT\_PXZAKJ ??7WSJ`[WYTPURMTPOIIGAEF>?AKJFXPNYVOXTKUPLNKFSRMTSNPPFMOBEE;HC?KFCE;:E:6VDBTBBN>>H=;B:7D93M>9H>5^QHxg]m\T�un�un��w�nc���hKC{UR�pm���`D8O;0hNMoWU�ofcUL:/+@00fb�{u�ysrkeojgRFF��������������������ڿ��������}r^�n`Ǵ�ӽ��ɻ���ͳ�����p_��|���ȷ���~�©���C>+63.02155557455395287398372.?61E<7D=3B<0VSDZWH_]Q���qseUVHVSBRH<\NEnhZrtfy|kceXab]``XabRpu_~j������������������������������������š��pwg[bRdj\��}���nq`mn\[]Ha`NROH][^XY^RSXXV[STXijo\Z_cX\������rqwVUc_[i^Xdwq{������������½����|rz��������������������������������������������������r�����������������Ɠ��]WYTRSOQPEKGiomjsr������Rafew{���r���������þ�������ż�Ǿ�������ż�������ǿ������kabVZcEN]I-5B,3=9>B;@C=>CC>B??=@B?ACBDEG;DK3=I3;F09B5>G:AI:?E04=(,503:38>5:@/3448912605956;:;@C.-5=>B9AC9@J29C7?B;@F8?A7:?.768:9EECJIGSMMd^^������ɹ�ǻ������Ӻ�������������������������ж����������������Ͽ��������ҿ�¬����s���������������Į�ɮ����ɬ�����������żӦ�ݳ�˦�㷞ⴝ弦鿧�Ʈ�����Վ~rt�cigjy���mp�vy�cfyeeq���������knw����kiv������������������������j}^YoTRhZXf`do|��������a\`�����˾�������ʺ�����������Ⱥ�������r|���������ϻ�ʳ�Ŭ�tysjlgpqkttlihc�{rskrql~}yy{pceZ_a\_]^qqqsxq`_ZedbklggleX^ZUVXWWYa`\hdacb^lljutruvqssqyyyojnuqr�������������������������{���������������������������|zn��|����������������������������������������������������������}^fWRWQFJI6:=BAGnlmJKM`_e���xtq����~|���������Ƴ�iQE�pl�wt�zs}g\�{w�����|���ʱ������������z������������ɱ�ç����Թ�ֹ�ؿ��ļ�Ľ�����ӵ��������˷�°�������������Կ�������̳�ӵ�ȳ�����pm׾�ɸ����JKEMNSHLWNQXQQYJMR.40 ! @?:ZWRrrhfh[RULMOLIKHEGBEECAB=PMFZWPUVQXTQUMKXSPIHDLKGKJEGG?NJAD93H=9D;6B75OA>RD;I>:C97=84C98N>?M>;\IEycX�~o{hZ�um�~qx]R���tZK�fW�|r�{nT>3L=6YDAxd]nZO�n_H;2=/.lPL���yf_}sjtkdi[X�����y���ʶ�����ȿԾ�ε�δ��Ʒ������ʹ����ո����������æ���ǵ��۽�ظ�ԺDZ�2(.*)--+241653875<=8?>:=>9651>>2HI;KL>XUL���ZYUkgf����������̺��������������~�ɿ����ñ�ϻ��������������������|�������������������������������Ķ������d_\f\]����z�������[VZTT\WV^TSYcckiet]Wa`V^���~ny\TaWSaYYc^[f^Va�����������Ȫ��������������������������ǽ�������ź�Ƹ����������̿��������ɽº������������䧖�cV`USV]][�����Ƭ�������̯����������ǐ������������������»�ż���о���������������ۿ��vyQQ[JSb8BN9CM9CO567<;:?9;:?>/8A+4=38>:=D7;D48A:?EB?BG:>A:BD7?B=@G@?E88@6;A08:99;:97MKLTPMnkf������ynt�����������Ψ��tql��������������������������������������͹�����pec���O<>�������Ŀ���Ҿ�ֽí�����������տ�������Ͱ�կ�ӫ�ś�֭�㶟ⳡ䳢�DZ�ο���Ѵ�xgy_]sgj{`fr������hm�ux�~~���������Ҙ����������������������������ح��kXtXUfOS_Y\cejn����~�g`r��½����Ǽ�������Ÿ������������ݡ���w�������ſ����Ƕ�ʵ����msgmpgtsovussssvvty|uy|uvvtyzuqrlpqkmljpokprgZ]Tcb^pmhiialmhWWWcedeeexwujfcrnm������iigiiilllnnnpppsqry{}wy�}}���������������������������snh��������������������������|������������������������������������������������������VcO@H;FGK?=B���kgfzzxwqu�����|mrһ�ͻ�����sd���ng��~�oi�����z���������������������li����le�srǤ�ͫ�д�ֹ�ٹ�ո�Կ������ϰ���vsxilxcj������˸�ʷ�ν��������������{yа������{~lj���������@?=IJODGNDEIEEMBEL8@B))'IJEQNIldaqifXTQPQLNPKAC>@@>HGCIHCURKWMK`XUPMHEF@BC=>C=CHBGGGLKIQLHE;9PJJD:9<1/PA>VC=P?7H;3C<4E;9G99L<=O;=\BC�}{�{p�sh��v�vk�og�ne�����{�qe^C:M:6[IG`MIrSP���YF7E9-VB9����������{u}ldoXR������Ӻ����˻����̺�Į�������Ӽ��İ�v_�fT����������Ƹ����Ƶ����Ѿ�κS=2.(((((*+-0.////431954>96>=8WWOed_mmk_cd\\fcalgflhgotr����y�}nu�����������}�����z�������̳�����������|�����������������w�����������������������ҹ�����NMSSZdU_kJUg>EWCGRUR[TSYUVZ^af`af^T]WUXRPSXQXNGOKKUUT\XU\XU^\Ybebi�������}��|����pkq������������˿��������������ý������������Ⱥ����������ƻ���������͔tdP\UU]Y^d`ek�����������է��������������½�����������������úɽ��ĸ�ƽ��������������Ҳ��vppKIT>EU;CP7@I8BN7?J5;G)2;%.507=78=87<<<>AC@EGDJJHECD@AE>AF9BI+:A0=F07?-263:B.5?.2;01626759<14;8;B9=F03:27=%-0',/*+-346;<@34958=9B9@H=AJ9=F7>F6;A;<@457?;<<;7CCCKMH������zur��~������������˿�gac�����������������������������������������վ��������ia^����ɿ������̺�����������yp����|�~z���Ѿ�ť�ˢ�ڭ�ܱ�Ӫ��ϵ��e�ǧ�ȳ��ƃcze]u[]lZYi_am��í��nnz���ro�{y����������w������������ݥ�������ٻ���v�]_xNTdKN][^eadi���}�fju������ÿ���������������������߻��|n���������ʾ��������������ntjjlgmolqtmqsnwwyyuttsooqltvqxwssupoomtupz{uz{u|}u}~vprgZ[Sjiepnosurz|ypsl`b]fff_a\USTZUYZYU]\Xjig~}y�zsto}}}ljm|xy{|����~z��������������s��z�����������������������������������z�����������������������������������������������yNZLY[Zmknmijvup{�ylmh�����������������v��z�uq�|xyce�����{�dc�v|����x~�������}v�{w��~�����������г�ҵ�Ů��x|�}��x�pddJC=D;6I?>MCAS@BXFDhNQ�|{�������mcwY[uUXoRV�gkgROeSO������¸����CCA>=C9@H49=6:=5=?/>;"!++)JIDKJEVSNrjgJKFGLHEJFHJEFKDJJHFE@WVQQMJXPMMI@NNFCF?AB7>71@64E:8F;9UHB�kc�qd�qf�ha�|q�tb�_R��|����k]sXMQ>7bSNTE>sZS���{_T�m`�sf׾���{�yt�yxuf_������ھ����ʲ�����ɳ�����w��yç�ڿ��waYD1bE5�vf�vm�wn���к�Ƭ�����lgC0*2*')%"&%!"(&')&))',,*//-331WYV_a^bbdc`gddn`doikwjftgfn`cjlp{mqtwxs�����������������y����������Ѹ��������������z������������{wt�}}������ò����wj|^Uj^[nVWiOViS\mSYiPSd69H@DPSS[QRWWX][Zb\W]YSUXRTFBCCBGBAGJGP]Q]YS_\W^YYa__g���������ttt���c`i�����������Ŵ������������¼�¼Ǿ����������Ŷ��qt���������w`jy^m���k`f`_gV]g[]iabg}}�rp}{z�fhtnp|��ɬ������������ļ���������������´�Ⱥ�ƹ����ʼ����������²��|zTTVCJR;EQ6@J;EO-6?2BCEOQPCEDHJEKKK>?A:;@:?E2=C,7=(-3'*1',0+0449?15@18>/7:1;<:BD:BE59:?<;@BAF??G7>D:CL?C8;B:89=<:9;:BDCSXR����������{x��������������ǧ��pjl�����������������������������������������߲��ymo�������ɽ��������֡����{��}�mjZDF]RP���˽�����Ŀܹ�̣�޺��ʻ�ĸ�Ű�ι���з�qe{TZtQYpTYluy�������y{�ln}ls{��������������Ͻ����������������������ѿ��khyXZiMS_[bjgktxx�qq{lov������������������������������z�������ý�·�������������ű�pokonlkkiegdgifnpovwqkkcwtoyxsuxmpqkpokyxv|z{~|}}vvtzzx}~y}|z������������xys`e_mrl|}wmje]\Xedbnlmzxywxswxpde_gggnim�~������������������������������������������tx�|���������r������������������������������ù���ż������������Ʒ�����zJOHIIIzvw}~����~}��������~�~u����xv�xx}nk�}{â����zgYaOK}ngtg^\FH����|x�zv�fgoORsUWwX]�������ǧ��JAD=7DF8FJ;@G7=A0OH>qh_�xoYNL�����~���cZQ;;1<=/<8,EA5wod������ù����ZVSBGJ2=C4=D0;7-655=?0:9$-,! LKGNNDLME\YTYPKQQEX[RINHBBBQMLCCCKGDYQNTOKJEABA>K??\NNXJJPHFNKDC@;D@?A;;E;eQJ`KF^DCӸ�P70�jg�y��y~cZ�niWCB�tn������������Ծ�ν��ο���������ƫ�˱��xPMC(N>/C7+2(&?,0N3:�cc_GC:,),"#($#"#"#$#!"$!#%$$&%(,+243SSQb^]e`ddcihgmgihinjjpnjlkwvq��ɫ������������z��{��������w��������������۶����������z�����z��z�xsjfc�����~rilb]cUUaOUcOWjOViIO_MP_KN]RU^KOZ7?J<@KKNUTT^SQ\WV\TVUSSSIDHE@FB@CPNQQPVZSZVU[\Z_VV^JNQ�{���piq������\`i~~���������ء������������ʾº���Ѷ�����Ͻ��xzQJ)1>'.627;4:::>?@EACDFDCHKKIKMJ::<7D48A-4<.7>9=F.18),103858?45:<;@CCE?@B=E??G@DO9@J29C59B237457:@@8=A59<888;;9GGIZ_Y������YNTlhe��������������ʾ��]U`|st��������������������ְ�����Ŷ������������ۻ�����Ʒ�н�������ֻĉin�|t�sj|nk_^Yxxl��}���������ǭ�Ҿ������������������ޗ�����[]tV`yV`lru|�}��{�������tv�~�������ު�����ɼÓ�������������ԯ����������ķ��������������������pny��������������������빩�����}����������¸������������ʠ��iomkmjihcihcegdikjhmghrgrzowzsvyrw|ux{t���~~~��}�|tysuzvxzy{zx~|�~����������OTPlnm�{wyt}~ttrwwuxxvuus~~|��qtilofqlf��z}|wsrp{uu����~{������|{v�����������||t`c\a`\�}x����������������������~|�����������������������������������������\bTolg��|~znjk������������������TGAxcb�vu���`XCQL6}vdVMFA<6?>:RINS@BP>D7<@6=C6;A37@/3<+033<9JPFTWLNOGMJEPOJIJBLGCLHGIIGCEBKKKCD?IHFBA=?=1F?5B>5C@9DA8EA6C@9;:6450450A@>JDDG=>C6=ZLLYMMWKK]RPOLGJEAKF@GB>�xpcZxh[�ma�ra��|��v�vnȔ������i�mXM:,}gZhRE^F<��{K=0kWV�pnæ�wZLhQI�ni�vmǵ������ܨ���Ⱥ��ͼ���Ǹ���DZ��������¡VG&I='73(!" ! !!!"!"!$$$ ""$#&'"'(#[[Y_]^^]babgghl�{}�����ʠ�������w�����â����������������������{��������������������Ԟ����|�����}��~zvs�{}qkoXW]RU\NR[LS[ELVIQ^JNZJJVOOYOS\UYeAM[,:C8:FIFQQNWYTZ_Z`TNRNIMPPPMMKTRUXU\VQXZW`^^`_[\QPU�����~bW[\V`UU_���tr}��������������������������������Խ�����uajJ@H;;=;76>96KKKW\`UYdQXhRafT]dUYeZZdSTXRW]NW\��ʢ��opt}}}�����å���Ľ�ǽ����������ȿ�ſ����������ò����ƽǾ�ƻ����»�QQS@GO?IS9GP7ER6@L-7@(2;,2>36=ECF=;56;77?269576---(,-',/)14-4:14;7:A>J;;G;>E?DH>AHG?BI88:756???BFI489798999IEBf_Y��������������~�~y˻�õ�Ź�Ĺ������x���������������������°�����������������������������ſ�½dz�����fe{fcWGGD@5�������������ȿ������������������������~q���ڋ��ek�jv����~y�mep`_e������yt������䳢����ǼĮ����������������������������������������Љ�������������������������������ʹ���ͦ��������������ż�������пż��jokjokotpjliqplxwsprolnmvyrlmgssq���xws~}y{{{||zz|y{{yyzuzyu|xyxsw���ust{z�}}zyunnlnlmkijonl][\ijestowvt�|}�y|�����������|��~vwrvus������������������������hh`olg��w��{�������������������~rzpo����������������������������������Ƽ���Ƽ��ı���hfY�zw��}��~������ı��~z����z~o\��z�������|b������;8)43.331574983=:3EB;CF=CI;OQF?@8@B=GJCIJBz{k�����ƴ��������\ZCNM;MI>xnd�����||{i������������������Ƶ���Ț��`\[@EH9>A47<47<16:16:,15.36DFAVYNUWLHJ?>=8<;7:94C@;NDBD;6EE=BE;2762761=<8A=:D?GEHZQTQFLD?COMNUTRWUVWWYUSXXQXsmme\_VOVUPT���`_ZPOUPSZPSXRQY[Y^pnq���ʺ���������������Ы�����������ƶ�J=DFAH>=C<>;?A>���ZagLS]W^f���hou\cmQXbQXbW`e�����Ɂ|������������������������ȷ�����;����ú�����������������¼���ǹ�̼�qdn@267059+04/55/87/87-65-12/34,15-25.239>D35A03<*1914;;9<444/10-.0378:;?7>D3;?B27:66>14=:=FAHR@JS:DP4=FEJM9:<335335333465555111:<;::>64��w�ö��������������������͛�����������m��x������٤��yw|�����Ö����������������إ����������������������ԭ�����������������������������˻ŷ��õ����ȼ���������������̽����dz��������������������������������`ifioktvqlkgrsmwzspqkmnhmnipqlklgqpnztt}xuxws~z��}yxv�}~{zzyu{zx}|znpmwvrplizyuzytv}us{pntjfgbtrs�~����rqmwro�����������}�����{{y�����|wvtyy|}x~y��������}��������y��������������z��������z��}�����������������~���½����������ò��Ĺ������ehW_[R���_WU��������������~��{������������ò�ǵ����7:)8=7796;<6RTGY\G��x�����������w����Ĭ������Ǹ�ο����������jdJyt^��z�}uñ�������������������Ų�µ������}JIDBCE?@B568-65+56-58)27.76EJFXZOWUIKI<;=0=@5AA7FD7A?2>:/85,<90=90E@MJCFF>6;:523.444<<:?A6A>5F>;PDHdXZ]QSWNQQGHWIIVHGLDBC>:D=7K?AQ>B^EK\BE�gd�qb�mc�ug��t�yk�~r�d[�rp�vt�{v~ga�kh�yt_ZZA:��z�na�sd[N;MD3WF<�vrȫ�������ѿ��������ǹkW?���Ϸ��š�ԫ���Ϲ�=5 !#+,'ed`YSU\XY```YWZVTYXORaRO����²�����������|�������������������÷����ò��}�����������������Õ�����hcgZW^SS[HOUIPVGLRJORMSQIOODGNJMTIMNGKJRVYX\gPWgGOZ3D@?@@B=AB`fb��խ�����������}|JSRU_a_gi������[Xa��������ı����������������͔�����������������ɼ�Ϳ������������ϰ������|~HKZ08C48A7;D6:E/7B(6A*3<1588:9=>@?A@BBBCAB78:+,0&.0+3516925<038156/32/27//796;A.16,15.9=/27=;<.0/,03/34096?A@CCE48;58=>?D78<87<679169*25)-0059;=<4428867775766451/0BDC@@@NNF���������}yp�����ğ�������������������̹����������������������ը������w{��������������������ˢ��y^cO8846+����Ҿ����������������������ண����zk�ibr���������up������������Ő��zv�{x�������������opt������������ſ������ü�����Ļ�������������������ĵ�ǽ�������Ⱦ����������²�������Ǿó�����������������������������gihhjgiphembhkbqtknojklgjkfonlnnluvqoqnyywstn~}y~yyzuyxv�}��~xysz{u�}x|{ysqrvusz{v{}z������}�|w|vw|xz|yqsnxvw}x|xwuz|{�����������������xfncjhiokj����{wtso}yx������������������������������������������������������������������������·��ùȼ����egY���rvguqh�������������pl������������Ǭ����������@I8GIDEB;�������¯�Ź����ð�������������ŷ���;������u����sk�{t�vs�nmį�÷��÷���ù����ma���������AA9664=;@76<-07156#,++04(..=??7<<0?B1:KLFSPGOPBMMCGJC;=877/>;2<<052-450984933B:7NBDPDFMDEQIGVLK`VTc^XGG?JALMH\`_������lhv��������������ʙ����������������������˾�������������Ͻ��þ�������Ź�����������Ƚ������Ƚ�ʾ�������g[eDI\4@P4>>EEC=A@7?A07=(3/-3/457267*2415689;059/6>+/8+03058-4=-2.265EKK9ACBEJ<<>9BA;9:PLA���XPM���������ʽ����������Ż��ǿ�����ؕ�����������ȼ����������������yon������Ƿ�ŵ����������gS^NAJ;<7QWI�����������������������������������������ۧ�������������������������߲��st�hi{��������������������������ϟ��������������������������������������������ʷ�̼���������Ԟ�������������������������߸��������������fffppnprmhkdfhefhelmglmhlnkmolppn��wxstup{{ywxsutpyxv{|wyzu|{y~|xysyzuwwusskzvszyu�����������w{|t�~{�zstnwyt��{��~zzx�~zxy�{������wvtsqrhbd|ptwmnsmm���������zvu�yv��������x��~�������������������������{w��}���ne^������tql��±���������������������{rmt`a�ko�}y�������������������������Ͻ��������yȷ�ŷ��ǵ�²���ŷ����������������˾�Ⱥ��waTN8VO=j\SlbYulch[U�{}�����������������z���B862,,.*+,,.346.23%'&((*$(+)-0314GB>QJBIF=>=877/961;8188.<>3;;3DB5FB6@>/CA2EC6B@4LF:QJ@HE:D@=B>;940@;7;:523-51.:12;25;25B68PBBRFFSJKVKOjZ]���ZROI?=mZ\\NKfWRnVR�tpiULeQF�rk�yuu]YeWV0/-<00�~��{�vk�sitdWpfZ]SJwcb�nq�a`�xy��}��~�ebɛ�ƞ�ϸ���������tŹ��տ÷��n_٫��о���ͻ�JG7;*# ##"" MNHb^[YYWVWYYYYZXY[UWTRSSTVb^]��������������z��{��t�����������|�yr��ݛ�������ȹ�����żecdSRbRTcPO]KPVJORHMQFKOCLKQRWRSXLPYLU^CJR?HMGRTJSRaedfljgngXc_NXYNVX:BE.9;#% >>>dbc���omr���cTWbXYNHL@AFZZb���iglQRVXW\wrxojplnm}��ORWPPXROV\P\nv������ù�½����������A;;B:7MJEklnfht~}���������������̳�����������������������������������ɽ����ȹ������ƞ�����ĵ�˽��¹�ż����Ļ������̾��z�SP[@GQDFU?@R6=>@?=>BA@H9:?.16.1601667;25:8;B34934667922:+.3.1:3;F-7A-4:25>99A-0936=<7>@:<<;9:97;:8;AA>FH9:??>FEEG???==?/02@>AEDIBEJDGNDDL<@I.5?"%,33;58?243450@B=HMIYMO�����������е��������ķ�����ſ�º�����ü�������������������������Ƈom�������w����ó������ܟ��762W[Zmrv���������������ƶ����ȿ������������������������������������׹�������˵��hh�eg~om{��������ѝ��������ľ����������ľ����������������ƹ������������������������������������ؒ������¾������������������ö����ɾ����pnoomninh]b[jlgnojmljsonuwtsxrtuovuqttrvvtvwrrsnrsmuvp|{y}|zz{vuvq}~x{�yvxs||z��|{zvwxs�|y���������~z��~����~}����~~������z{vtvujhkkjhqopkmlcd_b]Zuqnqopmijkij{yz|||{z���������������|u��}���������������y{p�����������������������������������������������whj\ukb���������������������������͵�ƴ��²�����������Խ�����ƻ�Ƚ���z��q�����������~��v�����z{{_TN>gZT�{n�|m���������ylc�|~���KKC')$#($%%#&%#')(%'&')&+++!'''+*8:7LIBMHB:;589336/241561==3AB4EE9AB4B@3E?1D<1EA6>?1IEAC5KK?C>:CB=AB<@=6C>8HE>AC559*;A534/730@44;31=53D:;C89511/>22�ut����sh�~qzdWų������zhVJM83�������v�{p�������ĵ����ж��i�����ɤ���dUȚ�㹩����۽������:>-/4-0434637<68=9*,)# **(]YVZ\Y[_`XVYTPQVRQYUTUUURTSWWU��������������ɠ����y���������������Ǻ���y���������������SS_NWhKSfENWGOQGORDMT@GMMRVQX`Q[dIS\NW`HLO^`_ooozyw��ź�������������ȯ��kxq'56 (+CABhXcoy���^PPYPQWWY108TW\opt���LMRHLOBELRR\STYqwwty|OV^OTZJKMRQV[[]�vz�����ɗ�����������HJ?BDA[\`���JP^Y_mw{~�����ե�������������������������������������ҵ��˿��������������ý��������������ɿ���������ɽ��PN\J7=I8>J5=J28D(/7!'$-,&02%*.(,+1328:9:;?9:>7;:5:>+2:.5;.25.4423867<,/4269047#(,'.4,39;DI@GM>AH<=666534>>>9;:869=>B?A@FFH<:?9:?,39<@CGHJJLIRRPFGI5:@)06/36.0/*././1758BCE?CF<;C65:540?;:OHBwec����ÿ�������������Ĺ�ȿ�������������ƻ��������������������˒�t�Ľ���vow�|~���ļ�������wt}ry�����������������������������������������������������������������������̩��xu�mo~w|�������·�������pr~yx���������������ʹ�����������Ǻ���������������������������������������������������������������ᴣ�Ƚ�������kngijefgb_`[ssqoootvsvuqspk{|v||tpsjlkgsrnorkoqlzzx|{y~z{zx}~yqrlssq�����~~�z��|~}y~y������������~}y��}�������~{~z��~���wxs|~y{�zrwqbd_mmkhfgcabnlmzzz{{ymihlhiwwuyywvtu}{|�����~��|�������������������������������������������������������������������|�����������������������������������������z�uu��������~���������������ȿ�����ξǺ����������������������_ZDrc\�zt�|s���������]UHTEJB9>173$-*$('$&#!'%$(+#'&"$#$$&!!#111GH@ONI@?:@A;89312-886>=8C@7CC9DC>>>2;=/@@4CA5EF8@A3JF;HD9GI>CD>BA=CB=@@8=?4AB:MMCLJ;LI:FD7A=2C:5A55830901:971++6,+WOME<=I;;RDAVKG_QQzfh����yoH94�nlYNLQIFIEB/.*-,(@65{cc�{y�xp�zo�~s��~�zr��s^PE>./������������������������Թ�Ǯ����Ȱ���{��x���ǧ�Ͳ��Ȯ����ս�æ57*;=8B?:AB=:;=@AC>@?5>=&,*LMHa`^aa_]][RRTVTUVTUUUSSUTWXZQOP�����������������ʟ�����������������������������������fe`PY^FT]BP[CJRDGLGJOCLSFJSHOWIUcO]jQX^\a]������WZ_femqjr���������ó������ѽ��''%$**#!$C8?LDAc]_^\g7;FPQUrpuRRZNU]\dgGLRINTQVZ���QTYOR[MPUJORJRUKNW`]d������lff��������՚��]ehP]eQ[dS`h�����Ͽ����������١��������������������������ɾ����ǻ�¶�����������ľ����������ȼ���������������������HFS;AM7?J3=F6@I3-58/47&.0+03156;@C9AD@EIGHJ<<>217?>CJHIB>=?;8<;98:7<=835237898>=)27:?CEFH>=9MGGC?@9;:59:=>@78:267333:89;9::89243:<99;::89C>;RID���������������wmd�tkʼ�����������ȿ����Ĵ����û���������å������Ÿ��xmuzw����������u�������������������������������������������������������ɼ������������������ב��ro����sy����������Ŀ������̼�����������Ĺ�������ź�ǹ�������������������������������������������������ξ����������������������ʻ©��������noirsnqrmlohstoqopssqwytpokttrrsntvqbb`rsnoninmivwqsvoxwu~xz���}zwww}~������}���������~z��}��|���������������������������}}{��inghjgmnppnspnqnjk���|xw~}{~|}���}||~{{{y��|}|wsss�����������������������������������������������������������y������������������������������������������������W[L}}s��xXXNupj�����������}������к�������������������������NL7vncL?7VD@�npӾ����E>43998@C6<<)32*24(02(10%)*#'(%"!"$#?;:DD:AA9A>9B>;10.9;6CC;D@4FB7BB8==1@>1=;,GA3IE9CE8<<4JF;QK?MI=FC>C?OF?JA:C84;6332083061+41*.*'40/-'';1/K@:KB;RE?VA>�jf�zuC9-���^\O9:4...,,,0/+>64D88Q??jPO�hg�dh�dg���`MIH88G.2y[[������������Է��qf�ɹ��v�ź�hcž��Ƚε����ֽ�ϴ�ѵ������⪢�@>2FGBFEA<@??CDJNMEKI?ECFHEd`]^VTb\\_YYQPNUUURRRSUTRVURRR\W[������������������ľ���������v�|v��������������z��~���vxcQXQDMVDLYEN_@JSFOVFKOFJMFJSKRbLT_{}|�����ɟ��x{�x{�`af����������rz���������220&,*!"&%#>=;ONLTOS\W^URY?@E]\bcbj]`g[\`nlqJIOILSXX`XVcMMYRU\V[aKPTJOSMPURR\dal�����������ɚ��}u�x{����������|�������֬��������pom�����������������������ĺ���½����½˽������������ʞ��������������ż�������j]qEF[7>Q:AQ7:I58G9=I8?G3:@!$&(/6<2;D$-60:;4=D49A687/04837LDBPHFICC=9:888;;;56834645978=59:598;?>+.305959:796CCAECD=;>:89999668837<89<:;243666@?=845651<<::972.+TME������ɽ��ɽ���}wk����ſ�������������ǹ����ú����������������������y~ytp�����������������ɨ�������������������������������徬������”����������������������Ҽ������������������������������������������ux������������������������ɼ�ò���������������ห�ʻ�������������������������������������̽½��ù����oqlgihimnhmimojopkcmdjqjrrrlllrwqssqfkgqsnstovvtzyfmfmtmxwu~}y���~y�|����������~{�~�����~������������������������u��~������������rsmpqltupeldglemojxzy���lljllltrs{yzywxwyxxvw~{vrnk���vus���}}{���������|{yuto�|�����}�������������������������������������������������}r��x������������������~~r{{s�ɻ�����������������z���������wph������������������]cIZ\F]^LEI:>;6KD717806;77;:8:9/10,-//27+43&,*%+)$('"""2./F?9>;4;819:405//1,B=7LC2CB0EC*ID0A>/F?7LE=MFCD?>A6HD;OF?SLDIG;=90G>9F<::72903,-/756961.*))($))'+,'C>8PF=[IEjXTwjaZME\MJfWRiaVWWK23....8:7JJB]]UA=2OF=ZQJVOI;0,iTQlhE;910.0/-W:?�v~���������¯��Ũ�~efZLZG@XC@_A9е�©�˯�ո���y��|�����ʄz_PO=IJDHMICLGZaZ������������������_bWTQHSLDVQMTSQPPNPOKROJXOPshn�����������������Ω�����nl_ytn{tj��|��������v��{���ynhRU\=M\:P[=PWEV^AR\?NUAKMHPRMUXw}{�����ӕ�������������������͟��iefufi������be^)85%(470OTMRXXY^b[`f\fh���LKQWT]RU\OR[INQNSWMV]DOSJ9?K7?J$-4 (/%,F49=4<>/472;D&4?(4B518@44<205*.-561JE?MEBA<9>93>:1;63JJJ487457:=B-79(10*.-269.39:=D:9><7=8453/01/2668154+/.568,03/02;;=B>=645>=8?>:999.0/ijd}ur�wu���ȹ�ĵ��žɽ�����Ļ�������»�Ƿ�ξ����ĺ������§�������÷������������������¹�Ÿ�������������������������������级���Ĉ�������������������������������˼�������������׽�������������������������������������������������ⲫ���������׷��������������������������������������������Ǻ�������Ļ�������bdccccecdgggmonkonhohopkopjnpklupjoknponpoppnqqoqpnopkoqluuuzxy���{zxyxvtvu}~��}}{�~������~��|~{������������xzy�����������������{|v��}������z}v���vus��}xyty~zqut~�}tupstooqn���__]yxvxvw�������w|x|~y��~}~v��������z�������������������������������{���������������������������������������������������������ro`jg^��~������hl]��}���������yyqzvu�����������{JS@%*&((('''')&&('%)*&,,%++&*)$*(#+-"*,!''"+($-,'+*00.<85?:6=@95<524/841@=8AA9?@8;:577/@=4B;1H?8C=1@>1?@2MK>RJ=KD:D?9B?8CB=DE=HJ=@=4F>;?<7350::8=96:20/.,---)))+++&&&)))++)''%0,)QIFFA;MD?[LG������yk`|mfH@=D@?952DE@SNKhWP�zsiVO�sj{k^oeYYOE���JF:<;93/0352850Q;=�fd�}r��q̯�Ŭ�Ǹ��|fED2DD*viI۾�ѧة{��]��������̸�QF0JLANPMMNF�������������������˿��Ŀ±EI:LL@QSNKPLLNMLLJNKDQJB\PP�����������������������Ň�}mninqj��������������w]VPYW\HT`EUeNWhGTeGP_CJZAJYFPYHQXQRW`[_�w|������qqo���������kij��ɣ���������ü��ݛ��.0+"((%*&SWVWXZbafY\abena`f���NNPW[ZW_aPW]MQTRQWJHS7:CHT4@L4EO6DO7AK-7@/7:7>D9CL5?I/7B$#+&.907?69>ABG89>3:@/8=38.8A-79/8=(7>'694>?7=;9=>:@>;DA>CFAEH7352AAC1/2/366>@3993786;>489(,-457335779568346331775235()++/.$()>DBIKHB@A:<;ECD?=>>><==;WXR���_YYmd_��þ����º��Ϳ��������ż���������������н�������saU��������������������Ӎ��������������ɻ���������ٯ��ǷĴ����֖��vq���������������������������Ѱ�����¿�¿�������������Ƹ�Ŵ�Ŵ���������������������ԯ����������ᨠ����¾͖��������������������������������������������������������������ø�������bb`hjg_hc\e`lqmlnkpppssqmojjokdokmolstolljssqtuplninpktvsxxx}}}uwtmolprossqxxxswvtvuwwuyzu}�|~��{��|{x���~z||z���������~������������}~y�����}�z�����������w|x}�x}v�x��}���x|{nrqkmlqqq������������������������}|x���������������������v{���������������������snk�����������������������������������������������������������������¿��������������������Ȼ���������"!'%!'% (*)+)+'$#)' )()* (*$(+"'+$),+0,54/?;2991692:;5761872<;6:;3;<4;:5880AA5GA1I@1B<0A:2MB8442.-+21-32.764775//--.0&&&###'''##!))'*()+++;55@78850A<6`VM�������}rC2(C<6<73aZP\XMaXOhZQdWOVGD�ljoWS��yyma��~UX;`eQAC6mj[��rmeN��mǺ������y�����������g����׶б�Ъy��a��k�������è���IJ:quf��������ʑ����������������������ƣ��JK;QLHOOMNNNMMKHICCC9MJEteh�������������������ǽ���lkfypk������������e\]XXZROXJLYFLXENSOOYDIMCHKDILTY\���NWVYbaZ^]���yz~ons������mmm^be������lgn������������',%%/.&,*YYYX\]dglZ_ebfi������DHGZ``fmsV_hKSUGJO98>97:JJJOOONTTJS\IQ^FLXHPSBIQQVZ^ekMT^V`lXaj[bjY^bW[^z�dglzsz���������rmt������{|��������������¯�����Ƽ���������ٿ����Ň�������������������������GQS=IU9FW3IV1CO9BQ:CR3=G07A:AK5?I0:F5=H)'.*4=.7>3:B8BD6>@16:--5,/808;7==;A?GL8AF1:AAENAFL16:8<;5;9+,.457886FB?;:8553AA?346(02#+-&,,-3126748;59:2<;096162243235,03237542=<:999**,"$#132HHHGGGLPOFFFHFGB@AEGBEJC;>7���MIHJEA�ɽŷ��ƽɼ�ǹ�ɻ������˛����z����Ľ����������Ϳȷ�������ilu��������ū�����»���������������������ّ��~p�pg|mi�no�ku�����ʟ��������������������������������˾����������������þļ�ƶ����������ϴ��½������������ܼ��������������������þ������������������ާ��̼�������������������������������˿� \ No newline at end of file diff --git a/src/devices/fake/fakebot/textures/fore.ppm b/src/devices/fake/fakebot/textures/fore.ppm deleted file mode 100644 index bcbed5682c9..00000000000 Binary files a/src/devices/fake/fakebot/textures/fore.ppm and /dev/null differ diff --git a/src/devices/messages/ControlBoardMsgs/ControlBoardMsgs.thrift b/src/devices/messages/ControlBoardMsgs/ControlBoardMsgs.thrift index 213bd775c02..4e0213078c3 100644 --- a/src/devices/messages/ControlBoardMsgs/ControlBoardMsgs.thrift +++ b/src/devices/messages/ControlBoardMsgs/ControlBoardMsgs.thrift @@ -100,12 +100,67 @@ struct return_isPidEnabled { 2: bool isEnabled; } +struct return_getPidError { + 1: yReturnValue ret; + 2: double err; +} + +struct return_getPidErrors { + 1: yReturnValue ret; + 2: list errs; +} + +struct return_getPidReference { + 1: yReturnValue ret; + 2: double ref; +} + +struct return_getPidReferences { + 1: yReturnValue ret; + 2: list refs; +} + +struct return_getPidErrorLimit { + 1: yReturnValue ret; + 2: double lim; +} + +struct return_getPidErrorLimits { + 1: yReturnValue ret; + 2: list lims; +} + +struct return_getPidOutput { + 1: yReturnValue ret; + 2: double out; +} + +struct return_getPidOutputs { + 1: yReturnValue ret; + 2: list outs; +} + +//------------------------------------------------- +// ILimits + +struct return_getPosLimits { + 1: yReturnValue ret; + 2: double min; + 3: double max; +} + +struct return_getVelLimits { + 1: yReturnValue ret; + 2: double min; + 3: double max; +} + //------------------------------------------------- service ControlBoardMsgs { - return_isJointBraked isJointBrakedRPC(1:i32 j) (yarp.qualifier = "const"); yReturnValue setManualBrakeActiveRPC(1: i32 j, 2:bool active); yReturnValue setAutoBrakeEnabledRPC(1: i32 j, 2:bool enabled); + return_isJointBraked isJointBrakedRPC(1:i32 j) (yarp.qualifier = "const"); return_getAutoBrakeEnabled getAutoBrakeEnabledRPC(1: i32 j) (yarp.qualifier = "const"); return_getAxes getAxesRPC() (yarp.qualifier = "const"); @@ -113,13 +168,29 @@ service ControlBoardMsgs return_getRefVelocityAll getRefVelocityAllRPC() (yarp.qualifier = "const"); return_getRefVelocityGroup getRefVelocityGroupRPC(1: list j) (yarp.qualifier = "const"); + yReturnValue setPosLimitsRPC(1: i16 j, 2: double min, 3: double max); + yReturnValue setVelLimitsRPC(1: i16 j, 2: double min, 3: double max); + return_getPosLimits getPosLimitsRPC(1: i16 j); + return_getVelLimits getVelLimitsRPC(2: i16 j); + yReturnValue enablePidRPC(1: yPidControlTypeEnum pidtype, 2: i16 j); yReturnValue disablePidRPC(1: yPidControlTypeEnum pidtype, 2: i16 j); yReturnValue resetPidRPC(1: yPidControlTypeEnum pidtype, 2: i16 j); - return_isPidEnabled isPidEnabledRPC(1: yPidControlTypeEnum pidtype, 2: i16 j); - yReturnValue setPidRPC(1: yPidControlTypeEnum pidtype, 2: i16 j, 3: yPid pid); yReturnValue setPidsRPC(1: yPidControlTypeEnum pidtype, 2: list pids); + yReturnValue setPidReferenceRPC(1: yPidControlTypeEnum pidtype, 2: i16 j, 3: double ref); + yReturnValue setPidReferencesRPC(1: yPidControlTypeEnum pidtype, 2: list refs); + yReturnValue setPidErrorLimitRPC(1: yPidControlTypeEnum pidtype, 2: i16 j, 3: double limit); + yReturnValue setPidErrorLimitsRPC(1: yPidControlTypeEnum pidtype, 2: list limits); + return_isPidEnabled isPidEnabledRPC(1: yPidControlTypeEnum pidtype, 2: i16 j); + return_getPidError getPidErrorRPC(1: yPidControlTypeEnum pidtype, 2: i16 j); + return_getPidErrors getPidErrorsRPC(1: yPidControlTypeEnum pidtype); + return_getPidReference getPidReferenceRPC(1: yPidControlTypeEnum pidtype, 2: i16 j); + return_getPidReferences getPidReferencesRPC(1: yPidControlTypeEnum pidtype); + return_getPidErrorLimit getPidErrorLimitRPC(1: yPidControlTypeEnum pidtype, 2: i16 j); + return_getPidErrorLimits getPidErrorLimitsRPC(1: yPidControlTypeEnum pidtype); + return_getPidOutput getPidOutputRPC(1: yPidControlTypeEnum pidtype, 2: i16 j); + return_getPidOutputs getPidOutputsRPC(1: yPidControlTypeEnum pidtype); return_getPid getPidRPC(1: yPidControlTypeEnum pidtype, 2: i16 j); return_getPids getPidsRPC(1: yPidControlTypeEnum pidtype); return_getPidExtraInfo getPidExtraInfoRPC(1: yPidControlTypeEnum pidtype, 2: i16 j); diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs.cpp b/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs.cpp index 7c4fd1a11c7..51ccaf8358d 100644 --- a/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs.cpp +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs.cpp @@ -105,13 +105,13 @@ yarp::os::ApplicationNetworkProtocolVersion ControlBoardMsgs::getLocalProtocolVe return myproto; } -// isJointBrakedRPC helper class declaration -class ControlBoardMsgs_isJointBrakedRPC_helper : +// setManualBrakeActiveRPC helper class declaration +class ControlBoardMsgs_setManualBrakeActiveRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_isJointBrakedRPC_helper() = default; - explicit ControlBoardMsgs_isJointBrakedRPC_helper(const std::int32_t j); + ControlBoardMsgs_setManualBrakeActiveRPC_helper() = default; + ControlBoardMsgs_setManualBrakeActiveRPC_helper(const std::int32_t j, const bool active); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -120,7 +120,7 @@ class ControlBoardMsgs_isJointBrakedRPC_helper : { public: Command() = default; - explicit Command(const std::int32_t j); + Command(const std::int32_t j, const bool active); ~Command() override = default; @@ -136,6 +136,7 @@ class ControlBoardMsgs_isJointBrakedRPC_helper : bool readArgs(yarp::os::idl::WireReader& reader); std::int32_t j{0}; + bool active{false}; }; class Reply : @@ -151,30 +152,30 @@ class ControlBoardMsgs_isJointBrakedRPC_helper : bool write(const yarp::os::idl::WireWriter& writer) const override; bool read(yarp::os::idl::WireReader& reader) override; - return_isJointBraked return_helper{}; + yarp::dev::ReturnValue return_helper{}; }; - using funcptr_t = return_isJointBraked (*)(const std::int32_t); + using funcptr_t = yarp::dev::ReturnValue (*)(const std::int32_t, const bool); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"isJointBrakedRPC"}; + static constexpr const char* s_tag{"setManualBrakeActiveRPC"}; static constexpr size_t s_tag_len{1}; - static constexpr size_t s_cmd_len{2}; - static constexpr size_t s_reply_len{2}; - static constexpr const char* s_prototype{"return_isJointBraked ControlBoardMsgs::isJointBrakedRPC(const std::int32_t j) const"}; + static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_reply_len{1}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setManualBrakeActiveRPC(const std::int32_t j, const bool active)"}; static constexpr const char* s_help{""}; }; -// setManualBrakeActiveRPC helper class declaration -class ControlBoardMsgs_setManualBrakeActiveRPC_helper : +// setAutoBrakeEnabledRPC helper class declaration +class ControlBoardMsgs_setAutoBrakeEnabledRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_setManualBrakeActiveRPC_helper() = default; - ControlBoardMsgs_setManualBrakeActiveRPC_helper(const std::int32_t j, const bool active); + ControlBoardMsgs_setAutoBrakeEnabledRPC_helper() = default; + ControlBoardMsgs_setAutoBrakeEnabledRPC_helper(const std::int32_t j, const bool enabled); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -183,7 +184,7 @@ class ControlBoardMsgs_setManualBrakeActiveRPC_helper : { public: Command() = default; - Command(const std::int32_t j, const bool active); + Command(const std::int32_t j, const bool enabled); ~Command() override = default; @@ -199,7 +200,7 @@ class ControlBoardMsgs_setManualBrakeActiveRPC_helper : bool readArgs(yarp::os::idl::WireReader& reader); std::int32_t j{0}; - bool active{false}; + bool enabled{false}; }; class Reply : @@ -224,21 +225,21 @@ class ControlBoardMsgs_setManualBrakeActiveRPC_helper : Command cmd; Reply reply; - static constexpr const char* s_tag{"setManualBrakeActiveRPC"}; + static constexpr const char* s_tag{"setAutoBrakeEnabledRPC"}; static constexpr size_t s_tag_len{1}; static constexpr size_t s_cmd_len{3}; static constexpr size_t s_reply_len{1}; - static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setManualBrakeActiveRPC(const std::int32_t j, const bool active)"}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setAutoBrakeEnabledRPC(const std::int32_t j, const bool enabled)"}; static constexpr const char* s_help{""}; }; -// setAutoBrakeEnabledRPC helper class declaration -class ControlBoardMsgs_setAutoBrakeEnabledRPC_helper : +// isJointBrakedRPC helper class declaration +class ControlBoardMsgs_isJointBrakedRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_setAutoBrakeEnabledRPC_helper() = default; - ControlBoardMsgs_setAutoBrakeEnabledRPC_helper(const std::int32_t j, const bool enabled); + ControlBoardMsgs_isJointBrakedRPC_helper() = default; + explicit ControlBoardMsgs_isJointBrakedRPC_helper(const std::int32_t j); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -247,7 +248,7 @@ class ControlBoardMsgs_setAutoBrakeEnabledRPC_helper : { public: Command() = default; - Command(const std::int32_t j, const bool enabled); + explicit Command(const std::int32_t j); ~Command() override = default; @@ -263,7 +264,6 @@ class ControlBoardMsgs_setAutoBrakeEnabledRPC_helper : bool readArgs(yarp::os::idl::WireReader& reader); std::int32_t j{0}; - bool enabled{false}; }; class Reply : @@ -279,20 +279,20 @@ class ControlBoardMsgs_setAutoBrakeEnabledRPC_helper : bool write(const yarp::os::idl::WireWriter& writer) const override; bool read(yarp::os::idl::WireReader& reader) override; - yarp::dev::ReturnValue return_helper{}; + return_isJointBraked return_helper{}; }; - using funcptr_t = yarp::dev::ReturnValue (*)(const std::int32_t, const bool); + using funcptr_t = return_isJointBraked (*)(const std::int32_t); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"setAutoBrakeEnabledRPC"}; + static constexpr const char* s_tag{"isJointBrakedRPC"}; static constexpr size_t s_tag_len{1}; - static constexpr size_t s_cmd_len{3}; - static constexpr size_t s_reply_len{1}; - static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setAutoBrakeEnabledRPC(const std::int32_t j, const bool enabled)"}; + static constexpr size_t s_cmd_len{2}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_isJointBraked ControlBoardMsgs::isJointBrakedRPC(const std::int32_t j) const"}; static constexpr const char* s_help{""}; }; @@ -601,13 +601,13 @@ class ControlBoardMsgs_getRefVelocityGroupRPC_helper : static constexpr const char* s_help{""}; }; -// enablePidRPC helper class declaration -class ControlBoardMsgs_enablePidRPC_helper : +// setPosLimitsRPC helper class declaration +class ControlBoardMsgs_setPosLimitsRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_enablePidRPC_helper() = default; - ControlBoardMsgs_enablePidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + ControlBoardMsgs_setPosLimitsRPC_helper() = default; + ControlBoardMsgs_setPosLimitsRPC_helper(const std::int16_t j, const double min, const double max); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -616,7 +616,7 @@ class ControlBoardMsgs_enablePidRPC_helper : { public: Command() = default; - Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + Command(const std::int16_t j, const double min, const double max); ~Command() override = default; @@ -631,8 +631,9 @@ class ControlBoardMsgs_enablePidRPC_helper : bool readTag(yarp::os::idl::WireReader& reader); bool readArgs(yarp::os::idl::WireReader& reader); - yarp::dev::PidControlTypeEnum pidtype{}; std::int16_t j{0}; + double min{0.0}; + double max{0.0}; }; class Reply : @@ -651,27 +652,27 @@ class ControlBoardMsgs_enablePidRPC_helper : yarp::dev::ReturnValue return_helper{}; }; - using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + using funcptr_t = yarp::dev::ReturnValue (*)(const std::int16_t, const double, const double); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"enablePidRPC"}; + static constexpr const char* s_tag{"setPosLimitsRPC"}; static constexpr size_t s_tag_len{1}; - static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_cmd_len{4}; static constexpr size_t s_reply_len{1}; - static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::enablePidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setPosLimitsRPC(const std::int16_t j, const double min, const double max)"}; static constexpr const char* s_help{""}; }; -// disablePidRPC helper class declaration -class ControlBoardMsgs_disablePidRPC_helper : +// setVelLimitsRPC helper class declaration +class ControlBoardMsgs_setVelLimitsRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_disablePidRPC_helper() = default; - ControlBoardMsgs_disablePidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + ControlBoardMsgs_setVelLimitsRPC_helper() = default; + ControlBoardMsgs_setVelLimitsRPC_helper(const std::int16_t j, const double min, const double max); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -680,7 +681,7 @@ class ControlBoardMsgs_disablePidRPC_helper : { public: Command() = default; - Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + Command(const std::int16_t j, const double min, const double max); ~Command() override = default; @@ -695,8 +696,9 @@ class ControlBoardMsgs_disablePidRPC_helper : bool readTag(yarp::os::idl::WireReader& reader); bool readArgs(yarp::os::idl::WireReader& reader); - yarp::dev::PidControlTypeEnum pidtype{}; std::int16_t j{0}; + double min{0.0}; + double max{0.0}; }; class Reply : @@ -715,27 +717,27 @@ class ControlBoardMsgs_disablePidRPC_helper : yarp::dev::ReturnValue return_helper{}; }; - using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + using funcptr_t = yarp::dev::ReturnValue (*)(const std::int16_t, const double, const double); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"disablePidRPC"}; + static constexpr const char* s_tag{"setVelLimitsRPC"}; static constexpr size_t s_tag_len{1}; - static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_cmd_len{4}; static constexpr size_t s_reply_len{1}; - static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::disablePidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setVelLimitsRPC(const std::int16_t j, const double min, const double max)"}; static constexpr const char* s_help{""}; }; -// resetPidRPC helper class declaration -class ControlBoardMsgs_resetPidRPC_helper : +// getPosLimitsRPC helper class declaration +class ControlBoardMsgs_getPosLimitsRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_resetPidRPC_helper() = default; - ControlBoardMsgs_resetPidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + ControlBoardMsgs_getPosLimitsRPC_helper() = default; + explicit ControlBoardMsgs_getPosLimitsRPC_helper(const std::int16_t j); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -744,7 +746,7 @@ class ControlBoardMsgs_resetPidRPC_helper : { public: Command() = default; - Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + explicit Command(const std::int16_t j); ~Command() override = default; @@ -759,7 +761,6 @@ class ControlBoardMsgs_resetPidRPC_helper : bool readTag(yarp::os::idl::WireReader& reader); bool readArgs(yarp::os::idl::WireReader& reader); - yarp::dev::PidControlTypeEnum pidtype{}; std::int16_t j{0}; }; @@ -776,30 +777,30 @@ class ControlBoardMsgs_resetPidRPC_helper : bool write(const yarp::os::idl::WireWriter& writer) const override; bool read(yarp::os::idl::WireReader& reader) override; - yarp::dev::ReturnValue return_helper{}; + return_getPosLimits return_helper{}; }; - using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + using funcptr_t = return_getPosLimits (*)(const std::int16_t); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"resetPidRPC"}; + static constexpr const char* s_tag{"getPosLimitsRPC"}; static constexpr size_t s_tag_len{1}; - static constexpr size_t s_cmd_len{3}; - static constexpr size_t s_reply_len{1}; - static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::resetPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr size_t s_cmd_len{2}; + static constexpr size_t s_reply_len{3}; + static constexpr const char* s_prototype{"return_getPosLimits ControlBoardMsgs::getPosLimitsRPC(const std::int16_t j)"}; static constexpr const char* s_help{""}; }; -// isPidEnabledRPC helper class declaration -class ControlBoardMsgs_isPidEnabledRPC_helper : +// getVelLimitsRPC helper class declaration +class ControlBoardMsgs_getVelLimitsRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_isPidEnabledRPC_helper() = default; - ControlBoardMsgs_isPidEnabledRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + ControlBoardMsgs_getVelLimitsRPC_helper() = default; + explicit ControlBoardMsgs_getVelLimitsRPC_helper(const std::int16_t j); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -808,7 +809,7 @@ class ControlBoardMsgs_isPidEnabledRPC_helper : { public: Command() = default; - Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + explicit Command(const std::int16_t j); ~Command() override = default; @@ -823,7 +824,6 @@ class ControlBoardMsgs_isPidEnabledRPC_helper : bool readTag(yarp::os::idl::WireReader& reader); bool readArgs(yarp::os::idl::WireReader& reader); - yarp::dev::PidControlTypeEnum pidtype{}; std::int16_t j{0}; }; @@ -840,30 +840,30 @@ class ControlBoardMsgs_isPidEnabledRPC_helper : bool write(const yarp::os::idl::WireWriter& writer) const override; bool read(yarp::os::idl::WireReader& reader) override; - return_isPidEnabled return_helper{}; + return_getVelLimits return_helper{}; }; - using funcptr_t = return_isPidEnabled (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + using funcptr_t = return_getVelLimits (*)(const std::int16_t); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"isPidEnabledRPC"}; + static constexpr const char* s_tag{"getVelLimitsRPC"}; static constexpr size_t s_tag_len{1}; - static constexpr size_t s_cmd_len{3}; - static constexpr size_t s_reply_len{2}; - static constexpr const char* s_prototype{"return_isPidEnabled ControlBoardMsgs::isPidEnabledRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr size_t s_cmd_len{2}; + static constexpr size_t s_reply_len{3}; + static constexpr const char* s_prototype{"return_getVelLimits ControlBoardMsgs::getVelLimitsRPC(const std::int16_t j)"}; static constexpr const char* s_help{""}; }; -// setPidRPC helper class declaration -class ControlBoardMsgs_setPidRPC_helper : +// enablePidRPC helper class declaration +class ControlBoardMsgs_enablePidRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_setPidRPC_helper() = default; - ControlBoardMsgs_setPidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid); + ControlBoardMsgs_enablePidRPC_helper() = default; + ControlBoardMsgs_enablePidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -872,7 +872,7 @@ class ControlBoardMsgs_setPidRPC_helper : { public: Command() = default; - Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid); + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); ~Command() override = default; @@ -889,7 +889,6 @@ class ControlBoardMsgs_setPidRPC_helper : yarp::dev::PidControlTypeEnum pidtype{}; std::int16_t j{0}; - yarp::dev::Pid pid{}; }; class Reply : @@ -908,27 +907,27 @@ class ControlBoardMsgs_setPidRPC_helper : yarp::dev::ReturnValue return_helper{}; }; - using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t, const yarp::dev::Pid&); + using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"setPidRPC"}; + static constexpr const char* s_tag{"enablePidRPC"}; static constexpr size_t s_tag_len{1}; - static constexpr size_t s_cmd_len{4}; + static constexpr size_t s_cmd_len{3}; static constexpr size_t s_reply_len{1}; - static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid)"}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::enablePidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; static constexpr const char* s_help{""}; }; -// setPidsRPC helper class declaration -class ControlBoardMsgs_setPidsRPC_helper : +// disablePidRPC helper class declaration +class ControlBoardMsgs_disablePidRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_setPidsRPC_helper() = default; - ControlBoardMsgs_setPidsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids); + ControlBoardMsgs_disablePidRPC_helper() = default; + ControlBoardMsgs_disablePidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -937,7 +936,7 @@ class ControlBoardMsgs_setPidsRPC_helper : { public: Command() = default; - Command(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids); + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); ~Command() override = default; @@ -953,7 +952,7 @@ class ControlBoardMsgs_setPidsRPC_helper : bool readArgs(yarp::os::idl::WireReader& reader); yarp::dev::PidControlTypeEnum pidtype{}; - std::vector pids{}; + std::int16_t j{0}; }; class Reply : @@ -972,27 +971,27 @@ class ControlBoardMsgs_setPidsRPC_helper : yarp::dev::ReturnValue return_helper{}; }; - using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::vector&); + using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"setPidsRPC"}; + static constexpr const char* s_tag{"disablePidRPC"}; static constexpr size_t s_tag_len{1}; static constexpr size_t s_cmd_len{3}; static constexpr size_t s_reply_len{1}; - static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setPidsRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids)"}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::disablePidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; static constexpr const char* s_help{""}; }; -// getPidRPC helper class declaration -class ControlBoardMsgs_getPidRPC_helper : +// resetPidRPC helper class declaration +class ControlBoardMsgs_resetPidRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_getPidRPC_helper() = default; - ControlBoardMsgs_getPidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + ControlBoardMsgs_resetPidRPC_helper() = default; + ControlBoardMsgs_resetPidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -1033,30 +1032,30 @@ class ControlBoardMsgs_getPidRPC_helper : bool write(const yarp::os::idl::WireWriter& writer) const override; bool read(yarp::os::idl::WireReader& reader) override; - return_getPid return_helper{}; + yarp::dev::ReturnValue return_helper{}; }; - using funcptr_t = return_getPid (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"getPidRPC"}; + static constexpr const char* s_tag{"resetPidRPC"}; static constexpr size_t s_tag_len{1}; static constexpr size_t s_cmd_len{3}; - static constexpr size_t s_reply_len{2}; - static constexpr const char* s_prototype{"return_getPid ControlBoardMsgs::getPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr size_t s_reply_len{1}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::resetPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; static constexpr const char* s_help{""}; }; -// getPidsRPC helper class declaration -class ControlBoardMsgs_getPidsRPC_helper : +// setPidRPC helper class declaration +class ControlBoardMsgs_setPidRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_getPidsRPC_helper() = default; - explicit ControlBoardMsgs_getPidsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype); + ControlBoardMsgs_setPidRPC_helper() = default; + ControlBoardMsgs_setPidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -1065,7 +1064,7 @@ class ControlBoardMsgs_getPidsRPC_helper : { public: Command() = default; - explicit Command(const yarp::dev::PidControlTypeEnum pidtype); + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid); ~Command() override = default; @@ -1081,6 +1080,8 @@ class ControlBoardMsgs_getPidsRPC_helper : bool readArgs(yarp::os::idl::WireReader& reader); yarp::dev::PidControlTypeEnum pidtype{}; + std::int16_t j{0}; + yarp::dev::Pid pid{}; }; class Reply : @@ -1096,30 +1097,30 @@ class ControlBoardMsgs_getPidsRPC_helper : bool write(const yarp::os::idl::WireWriter& writer) const override; bool read(yarp::os::idl::WireReader& reader) override; - return_getPids return_helper{}; + yarp::dev::ReturnValue return_helper{}; }; - using funcptr_t = return_getPids (*)(const yarp::dev::PidControlTypeEnum); + using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t, const yarp::dev::Pid&); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"getPidsRPC"}; + static constexpr const char* s_tag{"setPidRPC"}; static constexpr size_t s_tag_len{1}; - static constexpr size_t s_cmd_len{2}; - static constexpr size_t s_reply_len{2}; - static constexpr const char* s_prototype{"return_getPids ControlBoardMsgs::getPidsRPC(const yarp::dev::PidControlTypeEnum pidtype)"}; + static constexpr size_t s_cmd_len{4}; + static constexpr size_t s_reply_len{1}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid)"}; static constexpr const char* s_help{""}; }; -// getPidExtraInfoRPC helper class declaration -class ControlBoardMsgs_getPidExtraInfoRPC_helper : +// setPidsRPC helper class declaration +class ControlBoardMsgs_setPidsRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_getPidExtraInfoRPC_helper() = default; - ControlBoardMsgs_getPidExtraInfoRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + ControlBoardMsgs_setPidsRPC_helper() = default; + ControlBoardMsgs_setPidsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -1128,7 +1129,7 @@ class ControlBoardMsgs_getPidExtraInfoRPC_helper : { public: Command() = default; - Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids); ~Command() override = default; @@ -1144,7 +1145,7 @@ class ControlBoardMsgs_getPidExtraInfoRPC_helper : bool readArgs(yarp::os::idl::WireReader& reader); yarp::dev::PidControlTypeEnum pidtype{}; - std::int16_t j{0}; + std::vector pids{}; }; class Reply : @@ -1160,30 +1161,30 @@ class ControlBoardMsgs_getPidExtraInfoRPC_helper : bool write(const yarp::os::idl::WireWriter& writer) const override; bool read(yarp::os::idl::WireReader& reader) override; - return_getPidExtraInfo return_helper{}; + yarp::dev::ReturnValue return_helper{}; }; - using funcptr_t = return_getPidExtraInfo (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::vector&); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"getPidExtraInfoRPC"}; + static constexpr const char* s_tag{"setPidsRPC"}; static constexpr size_t s_tag_len{1}; static constexpr size_t s_cmd_len{3}; - static constexpr size_t s_reply_len{2}; - static constexpr const char* s_prototype{"return_getPidExtraInfo ControlBoardMsgs::getPidExtraInfoRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr size_t s_reply_len{1}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setPidsRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids)"}; static constexpr const char* s_help{""}; }; -// getPidExtraInfosRPC helper class declaration -class ControlBoardMsgs_getPidExtraInfosRPC_helper : +// setPidReferenceRPC helper class declaration +class ControlBoardMsgs_setPidReferenceRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_getPidExtraInfosRPC_helper() = default; - explicit ControlBoardMsgs_getPidExtraInfosRPC_helper(const yarp::dev::PidControlTypeEnum pidtype); + ControlBoardMsgs_setPidReferenceRPC_helper() = default; + ControlBoardMsgs_setPidReferenceRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double ref); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -1192,7 +1193,7 @@ class ControlBoardMsgs_getPidExtraInfosRPC_helper : { public: Command() = default; - explicit Command(const yarp::dev::PidControlTypeEnum pidtype); + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double ref); ~Command() override = default; @@ -1208,6 +1209,8 @@ class ControlBoardMsgs_getPidExtraInfosRPC_helper : bool readArgs(yarp::os::idl::WireReader& reader); yarp::dev::PidControlTypeEnum pidtype{}; + std::int16_t j{0}; + double ref{0.0}; }; class Reply : @@ -1223,30 +1226,30 @@ class ControlBoardMsgs_getPidExtraInfosRPC_helper : bool write(const yarp::os::idl::WireWriter& writer) const override; bool read(yarp::os::idl::WireReader& reader) override; - return_getPidExtraInfos return_helper{}; + yarp::dev::ReturnValue return_helper{}; }; - using funcptr_t = return_getPidExtraInfos (*)(const yarp::dev::PidControlTypeEnum); + using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t, const double); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"getPidExtraInfosRPC"}; + static constexpr const char* s_tag{"setPidReferenceRPC"}; static constexpr size_t s_tag_len{1}; - static constexpr size_t s_cmd_len{2}; - static constexpr size_t s_reply_len{2}; - static constexpr const char* s_prototype{"return_getPidExtraInfos ControlBoardMsgs::getPidExtraInfosRPC(const yarp::dev::PidControlTypeEnum pidtype)"}; + static constexpr size_t s_cmd_len{4}; + static constexpr size_t s_reply_len{1}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setPidReferenceRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double ref)"}; static constexpr const char* s_help{""}; }; -// getPidOffsetRPC helper class declaration -class ControlBoardMsgs_getPidOffsetRPC_helper : +// setPidReferencesRPC helper class declaration +class ControlBoardMsgs_setPidReferencesRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_getPidOffsetRPC_helper() = default; - ControlBoardMsgs_getPidOffsetRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + ControlBoardMsgs_setPidReferencesRPC_helper() = default; + ControlBoardMsgs_setPidReferencesRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& refs); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -1255,7 +1258,7 @@ class ControlBoardMsgs_getPidOffsetRPC_helper : { public: Command() = default; - Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& refs); ~Command() override = default; @@ -1271,7 +1274,7 @@ class ControlBoardMsgs_getPidOffsetRPC_helper : bool readArgs(yarp::os::idl::WireReader& reader); yarp::dev::PidControlTypeEnum pidtype{}; - std::int16_t j{0}; + std::vector refs{}; }; class Reply : @@ -1287,30 +1290,30 @@ class ControlBoardMsgs_getPidOffsetRPC_helper : bool write(const yarp::os::idl::WireWriter& writer) const override; bool read(yarp::os::idl::WireReader& reader) override; - return_getPidOffset return_helper{}; + yarp::dev::ReturnValue return_helper{}; }; - using funcptr_t = return_getPidOffset (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::vector&); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"getPidOffsetRPC"}; + static constexpr const char* s_tag{"setPidReferencesRPC"}; static constexpr size_t s_tag_len{1}; static constexpr size_t s_cmd_len{3}; - static constexpr size_t s_reply_len{2}; - static constexpr const char* s_prototype{"return_getPidOffset ControlBoardMsgs::getPidOffsetRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr size_t s_reply_len{1}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setPidReferencesRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& refs)"}; static constexpr const char* s_help{""}; }; -// getPidFeedforwardRPC helper class declaration -class ControlBoardMsgs_getPidFeedforwardRPC_helper : +// setPidErrorLimitRPC helper class declaration +class ControlBoardMsgs_setPidErrorLimitRPC_helper : public yarp::os::Portable { public: - ControlBoardMsgs_getPidFeedforwardRPC_helper() = default; - ControlBoardMsgs_getPidFeedforwardRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + ControlBoardMsgs_setPidErrorLimitRPC_helper() = default; + ControlBoardMsgs_setPidErrorLimitRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double limit); bool write(yarp::os::ConnectionWriter& connection) const override; bool read(yarp::os::ConnectionReader& connection) override; @@ -1319,7 +1322,7 @@ class ControlBoardMsgs_getPidFeedforwardRPC_helper : { public: Command() = default; - Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double limit); ~Command() override = default; @@ -1336,6 +1339,7 @@ class ControlBoardMsgs_getPidFeedforwardRPC_helper : yarp::dev::PidControlTypeEnum pidtype{}; std::int16_t j{0}; + double limit{0.0}; }; class Reply : @@ -1351,45 +1355,3422 @@ class ControlBoardMsgs_getPidFeedforwardRPC_helper : bool write(const yarp::os::idl::WireWriter& writer) const override; bool read(yarp::os::idl::WireReader& reader) override; - return_getPidFeedforward return_helper{}; + yarp::dev::ReturnValue return_helper{}; }; - using funcptr_t = return_getPidFeedforward (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t, const double); void call(ControlBoardMsgs* ptr); Command cmd; Reply reply; - static constexpr const char* s_tag{"getPidFeedforwardRPC"}; + static constexpr const char* s_tag{"setPidErrorLimitRPC"}; static constexpr size_t s_tag_len{1}; - static constexpr size_t s_cmd_len{3}; - static constexpr size_t s_reply_len{2}; - static constexpr const char* s_prototype{"return_getPidFeedforward ControlBoardMsgs::getPidFeedforwardRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr size_t s_cmd_len{4}; + static constexpr size_t s_reply_len{1}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setPidErrorLimitRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double limit)"}; static constexpr const char* s_help{""}; }; -// isJointBrakedRPC helper class implementation -ControlBoardMsgs_isJointBrakedRPC_helper::ControlBoardMsgs_isJointBrakedRPC_helper(const std::int32_t j) : - cmd{j} +// setPidErrorLimitsRPC helper class declaration +class ControlBoardMsgs_setPidErrorLimitsRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_setPidErrorLimitsRPC_helper() = default; + ControlBoardMsgs_setPidErrorLimitsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& limits); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& limits); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + std::vector limits{}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + yarp::dev::ReturnValue return_helper{}; + }; + + using funcptr_t = yarp::dev::ReturnValue (*)(const yarp::dev::PidControlTypeEnum, const std::vector&); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"setPidErrorLimitsRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_reply_len{1}; + static constexpr const char* s_prototype{"yarp::dev::ReturnValue ControlBoardMsgs::setPidErrorLimitsRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& limits)"}; + static constexpr const char* s_help{""}; +}; + +// isPidEnabledRPC helper class declaration +class ControlBoardMsgs_isPidEnabledRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_isPidEnabledRPC_helper() = default; + ControlBoardMsgs_isPidEnabledRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + std::int16_t j{0}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_isPidEnabled return_helper{}; + }; + + using funcptr_t = return_isPidEnabled (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"isPidEnabledRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_isPidEnabled ControlBoardMsgs::isPidEnabledRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr const char* s_help{""}; +}; + +// getPidErrorRPC helper class declaration +class ControlBoardMsgs_getPidErrorRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidErrorRPC_helper() = default; + ControlBoardMsgs_getPidErrorRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + std::int16_t j{0}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidError return_helper{}; + }; + + using funcptr_t = return_getPidError (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidErrorRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidError ControlBoardMsgs::getPidErrorRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr const char* s_help{""}; +}; + +// getPidErrorsRPC helper class declaration +class ControlBoardMsgs_getPidErrorsRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidErrorsRPC_helper() = default; + explicit ControlBoardMsgs_getPidErrorsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + explicit Command(const yarp::dev::PidControlTypeEnum pidtype); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidErrors return_helper{}; + }; + + using funcptr_t = return_getPidErrors (*)(const yarp::dev::PidControlTypeEnum); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidErrorsRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{2}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidErrors ControlBoardMsgs::getPidErrorsRPC(const yarp::dev::PidControlTypeEnum pidtype)"}; + static constexpr const char* s_help{""}; +}; + +// getPidReferenceRPC helper class declaration +class ControlBoardMsgs_getPidReferenceRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidReferenceRPC_helper() = default; + ControlBoardMsgs_getPidReferenceRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + std::int16_t j{0}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidReference return_helper{}; + }; + + using funcptr_t = return_getPidReference (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidReferenceRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidReference ControlBoardMsgs::getPidReferenceRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr const char* s_help{""}; +}; + +// getPidReferencesRPC helper class declaration +class ControlBoardMsgs_getPidReferencesRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidReferencesRPC_helper() = default; + explicit ControlBoardMsgs_getPidReferencesRPC_helper(const yarp::dev::PidControlTypeEnum pidtype); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + explicit Command(const yarp::dev::PidControlTypeEnum pidtype); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidReferences return_helper{}; + }; + + using funcptr_t = return_getPidReferences (*)(const yarp::dev::PidControlTypeEnum); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidReferencesRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{2}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidReferences ControlBoardMsgs::getPidReferencesRPC(const yarp::dev::PidControlTypeEnum pidtype)"}; + static constexpr const char* s_help{""}; +}; + +// getPidErrorLimitRPC helper class declaration +class ControlBoardMsgs_getPidErrorLimitRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidErrorLimitRPC_helper() = default; + ControlBoardMsgs_getPidErrorLimitRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + std::int16_t j{0}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidErrorLimit return_helper{}; + }; + + using funcptr_t = return_getPidErrorLimit (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidErrorLimitRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidErrorLimit ControlBoardMsgs::getPidErrorLimitRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr const char* s_help{""}; +}; + +// getPidErrorLimitsRPC helper class declaration +class ControlBoardMsgs_getPidErrorLimitsRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidErrorLimitsRPC_helper() = default; + explicit ControlBoardMsgs_getPidErrorLimitsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + explicit Command(const yarp::dev::PidControlTypeEnum pidtype); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidErrorLimits return_helper{}; + }; + + using funcptr_t = return_getPidErrorLimits (*)(const yarp::dev::PidControlTypeEnum); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidErrorLimitsRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{2}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidErrorLimits ControlBoardMsgs::getPidErrorLimitsRPC(const yarp::dev::PidControlTypeEnum pidtype)"}; + static constexpr const char* s_help{""}; +}; + +// getPidOutputRPC helper class declaration +class ControlBoardMsgs_getPidOutputRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidOutputRPC_helper() = default; + ControlBoardMsgs_getPidOutputRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + std::int16_t j{0}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidOutput return_helper{}; + }; + + using funcptr_t = return_getPidOutput (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidOutputRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidOutput ControlBoardMsgs::getPidOutputRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr const char* s_help{""}; +}; + +// getPidOutputsRPC helper class declaration +class ControlBoardMsgs_getPidOutputsRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidOutputsRPC_helper() = default; + explicit ControlBoardMsgs_getPidOutputsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + explicit Command(const yarp::dev::PidControlTypeEnum pidtype); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidOutputs return_helper{}; + }; + + using funcptr_t = return_getPidOutputs (*)(const yarp::dev::PidControlTypeEnum); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidOutputsRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{2}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidOutputs ControlBoardMsgs::getPidOutputsRPC(const yarp::dev::PidControlTypeEnum pidtype)"}; + static constexpr const char* s_help{""}; +}; + +// getPidRPC helper class declaration +class ControlBoardMsgs_getPidRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidRPC_helper() = default; + ControlBoardMsgs_getPidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + std::int16_t j{0}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPid return_helper{}; + }; + + using funcptr_t = return_getPid (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPid ControlBoardMsgs::getPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr const char* s_help{""}; +}; + +// getPidsRPC helper class declaration +class ControlBoardMsgs_getPidsRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidsRPC_helper() = default; + explicit ControlBoardMsgs_getPidsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + explicit Command(const yarp::dev::PidControlTypeEnum pidtype); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPids return_helper{}; + }; + + using funcptr_t = return_getPids (*)(const yarp::dev::PidControlTypeEnum); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidsRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{2}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPids ControlBoardMsgs::getPidsRPC(const yarp::dev::PidControlTypeEnum pidtype)"}; + static constexpr const char* s_help{""}; +}; + +// getPidExtraInfoRPC helper class declaration +class ControlBoardMsgs_getPidExtraInfoRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidExtraInfoRPC_helper() = default; + ControlBoardMsgs_getPidExtraInfoRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + std::int16_t j{0}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidExtraInfo return_helper{}; + }; + + using funcptr_t = return_getPidExtraInfo (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidExtraInfoRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidExtraInfo ControlBoardMsgs::getPidExtraInfoRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr const char* s_help{""}; +}; + +// getPidExtraInfosRPC helper class declaration +class ControlBoardMsgs_getPidExtraInfosRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidExtraInfosRPC_helper() = default; + explicit ControlBoardMsgs_getPidExtraInfosRPC_helper(const yarp::dev::PidControlTypeEnum pidtype); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + explicit Command(const yarp::dev::PidControlTypeEnum pidtype); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidExtraInfos return_helper{}; + }; + + using funcptr_t = return_getPidExtraInfos (*)(const yarp::dev::PidControlTypeEnum); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidExtraInfosRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{2}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidExtraInfos ControlBoardMsgs::getPidExtraInfosRPC(const yarp::dev::PidControlTypeEnum pidtype)"}; + static constexpr const char* s_help{""}; +}; + +// getPidOffsetRPC helper class declaration +class ControlBoardMsgs_getPidOffsetRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidOffsetRPC_helper() = default; + ControlBoardMsgs_getPidOffsetRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + std::int16_t j{0}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidOffset return_helper{}; + }; + + using funcptr_t = return_getPidOffset (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidOffsetRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidOffset ControlBoardMsgs::getPidOffsetRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr const char* s_help{""}; +}; + +// getPidFeedforwardRPC helper class declaration +class ControlBoardMsgs_getPidFeedforwardRPC_helper : + public yarp::os::Portable +{ +public: + ControlBoardMsgs_getPidFeedforwardRPC_helper() = default; + ControlBoardMsgs_getPidFeedforwardRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + class Command : + public yarp::os::idl::WirePortable + { + public: + Command() = default; + Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + ~Command() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool writeTag(const yarp::os::idl::WireWriter& writer) const; + bool writeArgs(const yarp::os::idl::WireWriter& writer) const; + + bool read(yarp::os::idl::WireReader& reader) override; + bool readTag(yarp::os::idl::WireReader& reader); + bool readArgs(yarp::os::idl::WireReader& reader); + + yarp::dev::PidControlTypeEnum pidtype{}; + std::int16_t j{0}; + }; + + class Reply : + public yarp::os::idl::WirePortable + { + public: + Reply() = default; + ~Reply() override = default; + + bool write(yarp::os::ConnectionWriter& connection) const override; + bool read(yarp::os::ConnectionReader& connection) override; + + bool write(const yarp::os::idl::WireWriter& writer) const override; + bool read(yarp::os::idl::WireReader& reader) override; + + return_getPidFeedforward return_helper{}; + }; + + using funcptr_t = return_getPidFeedforward (*)(const yarp::dev::PidControlTypeEnum, const std::int16_t); + void call(ControlBoardMsgs* ptr); + + Command cmd; + Reply reply; + + static constexpr const char* s_tag{"getPidFeedforwardRPC"}; + static constexpr size_t s_tag_len{1}; + static constexpr size_t s_cmd_len{3}; + static constexpr size_t s_reply_len{2}; + static constexpr const char* s_prototype{"return_getPidFeedforward ControlBoardMsgs::getPidFeedforwardRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)"}; + static constexpr const char* s_help{""}; +}; + +// setManualBrakeActiveRPC helper class implementation +ControlBoardMsgs_setManualBrakeActiveRPC_helper::ControlBoardMsgs_setManualBrakeActiveRPC_helper(const std::int32_t j, const bool active) : + cmd{j, active} +{ +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::Command(const std::int32_t j, const bool active) : + j{j}, + active{active} +{ +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI32(j)) { + return false; + } + if (!writer.writeBool(active)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI32(j)) { + reader.fail(); + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readBool(active)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_setManualBrakeActiveRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->setManualBrakeActiveRPC(cmd.j, cmd.active); +} + +// setAutoBrakeEnabledRPC helper class implementation +ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::ControlBoardMsgs_setAutoBrakeEnabledRPC_helper(const std::int32_t j, const bool enabled) : + cmd{j, enabled} +{ +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::Command(const std::int32_t j, const bool enabled) : + j{j}, + enabled{enabled} +{ +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI32(j)) { + return false; + } + if (!writer.writeBool(enabled)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI32(j)) { + reader.fail(); + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readBool(enabled)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->setAutoBrakeEnabledRPC(cmd.j, cmd.enabled); +} + +// isJointBrakedRPC helper class implementation +ControlBoardMsgs_isJointBrakedRPC_helper::ControlBoardMsgs_isJointBrakedRPC_helper(const std::int32_t j) : + cmd{j} +{ +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_isJointBrakedRPC_helper::Command::Command(const std::int32_t j) : + j{j} +{ +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI32(j)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI32(j)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_isJointBrakedRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (!reader.readListReturn()) { + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_isJointBrakedRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->isJointBrakedRPC(cmd.j); +} + +// getAutoBrakeEnabledRPC helper class implementation +ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::ControlBoardMsgs_getAutoBrakeEnabledRPC_helper(const std::int32_t j) : + cmd{j} +{ +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::Command(const std::int32_t j) : + j{j} +{ +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI32(j)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI32(j)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (!reader.readListReturn()) { + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->getAutoBrakeEnabledRPC(cmd.j); +} + +// getAxesRPC helper class implementation +bool ControlBoardMsgs_getAxesRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_getAxesRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +bool ControlBoardMsgs_getAxesRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_getAxesRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_getAxesRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getAxesRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getAxesRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer [[maybe_unused]]) const +{ + return true; +} + +bool ControlBoardMsgs_getAxesRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getAxesRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getAxesRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getAxesRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_getAxesRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_getAxesRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_getAxesRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (!reader.readListReturn()) { + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_getAxesRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->getAxesRPC(); +} + +// getRefVelocityOneRPC helper class implementation +ControlBoardMsgs_getRefVelocityOneRPC_helper::ControlBoardMsgs_getRefVelocityOneRPC_helper(const std::int32_t j) : + cmd{j} +{ +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::Command(const std::int32_t j) : + j{j} +{ +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI32(j)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI32(j)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (!reader.readListReturn()) { + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_getRefVelocityOneRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->getRefVelocityOneRPC(cmd.j); +} + +// getRefVelocityAllRPC helper class implementation +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer [[maybe_unused]]) const +{ + return true; +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (!reader.readListReturn()) { + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_getRefVelocityAllRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->getRefVelocityAllRPC(); +} + +// getRefVelocityGroupRPC helper class implementation +ControlBoardMsgs_getRefVelocityGroupRPC_helper::ControlBoardMsgs_getRefVelocityGroupRPC_helper(const std::vector& j) : + cmd{j} +{ +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::Command(const std::vector& j) : + j{j} +{ +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeListBegin(BOTTLE_TAG_INT32, j.size())) { + return false; + } + if (!writer.writeBlock(reinterpret_cast(j.data()), j.size() * sizeof(std::int32_t))) { + return false; + } + if (!writer.writeListEnd()) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_INT32) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + j.resize(_csize); + if (_csize != 0 && !reader.readBlock(reinterpret_cast(j.data()), j.size() * sizeof(std::int32_t))) { + return false; + } + reader.readListEnd(); + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (!reader.readListReturn()) { + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_getRefVelocityGroupRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->getRefVelocityGroupRPC(cmd.j); +} + +// setPosLimitsRPC helper class implementation +ControlBoardMsgs_setPosLimitsRPC_helper::ControlBoardMsgs_setPosLimitsRPC_helper(const std::int16_t j, const double min, const double max) : + cmd{j, min, max} +{ +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_setPosLimitsRPC_helper::Command::Command(const std::int16_t j, const double min, const double max) : + j{j}, + min{min}, + max{max} +{ +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI16(j)) { + return false; + } + if (!writer.writeFloat64(min)) { + return false; + } + if (!writer.writeFloat64(max)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI16(j)) { + reader.fail(); + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(min)) { + reader.fail(); + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(max)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_setPosLimitsRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_setPosLimitsRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->setPosLimitsRPC(cmd.j, cmd.min, cmd.max); +} + +// setVelLimitsRPC helper class implementation +ControlBoardMsgs_setVelLimitsRPC_helper::ControlBoardMsgs_setVelLimitsRPC_helper(const std::int16_t j, const double min, const double max) : + cmd{j, min, max} +{ +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_setVelLimitsRPC_helper::Command::Command(const std::int16_t j, const double min, const double max) : + j{j}, + min{min}, + max{max} +{ +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI16(j)) { + return false; + } + if (!writer.writeFloat64(min)) { + return false; + } + if (!writer.writeFloat64(max)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI16(j)) { + reader.fail(); + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(min)) { + reader.fail(); + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(max)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_setVelLimitsRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_setVelLimitsRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->setVelLimitsRPC(cmd.j, cmd.min, cmd.max); +} + +// getPosLimitsRPC helper class implementation +ControlBoardMsgs_getPosLimitsRPC_helper::ControlBoardMsgs_getPosLimitsRPC_helper(const std::int16_t j) : + cmd{j} +{ +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_getPosLimitsRPC_helper::Command::Command(const std::int16_t j) : + j{j} +{ +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI16(j)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI16(j)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_getPosLimitsRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (!reader.readListReturn()) { + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_getPosLimitsRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->getPosLimitsRPC(cmd.j); +} + +// getVelLimitsRPC helper class implementation +ControlBoardMsgs_getVelLimitsRPC_helper::ControlBoardMsgs_getVelLimitsRPC_helper(const std::int16_t j) : + cmd{j} +{ +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_getVelLimitsRPC_helper::Command::Command(const std::int16_t j) : + j{j} +{ +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI16(j)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI16(j)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_getVelLimitsRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (!reader.readListReturn()) { + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_getVelLimitsRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->getVelLimitsRPC(cmd.j); +} + +// enablePidRPC helper class implementation +ControlBoardMsgs_enablePidRPC_helper::ControlBoardMsgs_enablePidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : + cmd{pidtype, j} +{ +} + +bool ControlBoardMsgs_enablePidRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_enablePidRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_enablePidRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : + pidtype{pidtype}, + j{j} +{ +} + +bool ControlBoardMsgs_enablePidRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_enablePidRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_enablePidRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_enablePidRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_enablePidRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI32(static_cast(pidtype))) { + return false; + } + if (!writer.writeI16(j)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_enablePidRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_enablePidRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_enablePidRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + int32_t _ecast; + if (!reader.readI32(_ecast)) { + reader.fail(); + return false; + } + pidtype = static_cast(_ecast); + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI16(j)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_enablePidRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_enablePidRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_enablePidRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_enablePidRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_enablePidRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->enablePidRPC(cmd.pidtype, cmd.j); +} + +// disablePidRPC helper class implementation +ControlBoardMsgs_disablePidRPC_helper::ControlBoardMsgs_disablePidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : + cmd{pidtype, j} +{ +} + +bool ControlBoardMsgs_disablePidRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_disablePidRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_disablePidRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : + pidtype{pidtype}, + j{j} +{ +} + +bool ControlBoardMsgs_disablePidRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_disablePidRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_disablePidRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_disablePidRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_disablePidRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI32(static_cast(pidtype))) { + return false; + } + if (!writer.writeI16(j)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_disablePidRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_disablePidRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_disablePidRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + int32_t _ecast; + if (!reader.readI32(_ecast)) { + reader.fail(); + return false; + } + pidtype = static_cast(_ecast); + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI16(j)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_disablePidRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_disablePidRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_disablePidRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_disablePidRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_disablePidRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->disablePidRPC(cmd.pidtype, cmd.j); +} + +// resetPidRPC helper class implementation +ControlBoardMsgs_resetPidRPC_helper::ControlBoardMsgs_resetPidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : + cmd{pidtype, j} +{ +} + +bool ControlBoardMsgs_resetPidRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_resetPidRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_resetPidRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : + pidtype{pidtype}, + j{j} +{ +} + +bool ControlBoardMsgs_resetPidRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_resetPidRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_resetPidRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_resetPidRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_resetPidRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI32(static_cast(pidtype))) { + return false; + } + if (!writer.writeI16(j)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_resetPidRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_resetPidRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_resetPidRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + int32_t _ecast; + if (!reader.readI32(_ecast)) { + reader.fail(); + return false; + } + pidtype = static_cast(_ecast); + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI16(j)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_resetPidRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_resetPidRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_resetPidRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_resetPidRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; } -bool ControlBoardMsgs_isJointBrakedRPC_helper::write(yarp::os::ConnectionWriter& connection) const +void ControlBoardMsgs_resetPidRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->resetPidRPC(cmd.pidtype, cmd.j); +} + +// setPidRPC helper class implementation +ControlBoardMsgs_setPidRPC_helper::ControlBoardMsgs_setPidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid) : + cmd{pidtype, j, pid} +{ +} + +bool ControlBoardMsgs_setPidRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_isJointBrakedRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_isJointBrakedRPC_helper::Command::Command(const std::int32_t j) : - j{j} +ControlBoardMsgs_setPidRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid) : + pidtype{pidtype}, + j{j}, + pid{pid} { } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -1398,7 +4779,7 @@ bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::write(yarp::os::Connecti return write(writer); } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -1408,7 +4789,7 @@ bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::read(yarp::os::Connectio return read(reader); } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -1419,7 +4800,7 @@ bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::write(const yarp::os::id return true; } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -1427,15 +4808,21 @@ bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::writeTag(const yarp::os: return true; } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { - if (!writer.writeI32(j)) { + if (!writer.writeI32(static_cast(pidtype))) { + return false; + } + if (!writer.writeI16(j)) { + return false; + } + if (!writer.writeNested(pid)) { return false; } return true; } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -1446,7 +4833,7 @@ bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::read(yarp::os::idl::Wire return true; } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -1459,16 +4846,222 @@ bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::readTag(yarp::os::idl::W return true; } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); return false; } - if (!reader.readI32(j)) { + int32_t _ecast; + if (!reader.readI32(_ecast)) { + reader.fail(); + return false; + } + pidtype = static_cast(_ecast); + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI16(j)) { + reader.fail(); + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(pid)) { + reader.fail(); + return false; + } + if (!reader.noMore()) { + reader.fail(); + return false; + } + return true; +} + +bool ControlBoardMsgs_setPidRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + return write(writer); +} + +bool ControlBoardMsgs_setPidRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + return read(reader); +} + +bool ControlBoardMsgs_setPidRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.isNull()) { + if (!writer.write(return_helper)) { + return false; + } + } + return true; +} + +bool ControlBoardMsgs_setPidRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(return_helper)) { + reader.fail(); + return false; + } + return true; +} + +void ControlBoardMsgs_setPidRPC_helper::call(ControlBoardMsgs* ptr) +{ + reply.return_helper = ptr->setPidRPC(cmd.pidtype, cmd.j, cmd.pid); +} + +// setPidsRPC helper class implementation +ControlBoardMsgs_setPidsRPC_helper::ControlBoardMsgs_setPidsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids) : + cmd{pidtype, pids} +{ +} + +bool ControlBoardMsgs_setPidsRPC_helper::write(yarp::os::ConnectionWriter& connection) const +{ + return cmd.write(connection); +} + +bool ControlBoardMsgs_setPidsRPC_helper::read(yarp::os::ConnectionReader& connection) +{ + return reply.read(connection); +} + +ControlBoardMsgs_setPidsRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids) : + pidtype{pidtype}, + pids{pids} +{ +} + +bool ControlBoardMsgs_setPidsRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(s_cmd_len)) { + return false; + } + return write(writer); +} + +bool ControlBoardMsgs_setPidsRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader()) { + reader.fail(); + return false; + } + return read(reader); +} + +bool ControlBoardMsgs_setPidsRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!writeTag(writer)) { + return false; + } + if (!writeArgs(writer)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setPidsRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeTag(s_tag, 1, s_tag_len)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setPidsRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeI32(static_cast(pidtype))) { + return false; + } + if (!writer.writeListBegin(BOTTLE_TAG_LIST, pids.size())) { + return false; + } + for (const auto& _item : pids) { + if (!writer.writeNested(_item)) { + return false; + } + } + if (!writer.writeListEnd()) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setPidsRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +{ + if (!readTag(reader)) { + return false; + } + if (!readArgs(reader)) { + return false; + } + return true; +} + +bool ControlBoardMsgs_setPidsRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +{ + std::string tag = reader.readTag(s_tag_len); + if (reader.isError()) { + return false; + } + if (tag != s_tag) { reader.fail(); return false; } + return true; +} + +bool ControlBoardMsgs_setPidsRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + int32_t _ecast; + if (!reader.readI32(_ecast)) { + reader.fail(); + return false; + } + pidtype = static_cast(_ecast); + if (reader.noMore()) { + reader.fail(); + return false; + } + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_LIST) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + pids.resize(_csize); + for (size_t _i = 0; _i < _csize; ++_i) { + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(pids[_i])) { + reader.fail(); + return false; + } + } + reader.readListEnd(); if (!reader.noMore()) { reader.fail(); return false; @@ -1476,24 +5069,21 @@ bool ControlBoardMsgs_isJointBrakedRPC_helper::Command::readArgs(yarp::os::idl:: return true; } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidsRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidsRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidsRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { - if (!writer.writeListHeader(s_reply_len)) { - return false; - } if (!writer.write(return_helper)) { return false; } @@ -1501,11 +5091,8 @@ bool ControlBoardMsgs_isJointBrakedRPC_helper::Reply::write(const yarp::os::idl: return true; } -bool ControlBoardMsgs_isJointBrakedRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidsRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { - if (!reader.readListReturn()) { - return false; - } if (reader.noMore()) { reader.fail(); return false; @@ -1517,34 +5104,35 @@ bool ControlBoardMsgs_isJointBrakedRPC_helper::Reply::read(yarp::os::idl::WireRe return true; } -void ControlBoardMsgs_isJointBrakedRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_setPidsRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->isJointBrakedRPC(cmd.j); + reply.return_helper = ptr->setPidsRPC(cmd.pidtype, cmd.pids); } -// setManualBrakeActiveRPC helper class implementation -ControlBoardMsgs_setManualBrakeActiveRPC_helper::ControlBoardMsgs_setManualBrakeActiveRPC_helper(const std::int32_t j, const bool active) : - cmd{j, active} +// setPidReferenceRPC helper class implementation +ControlBoardMsgs_setPidReferenceRPC_helper::ControlBoardMsgs_setPidReferenceRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double ref) : + cmd{pidtype, j, ref} { } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidReferenceRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidReferenceRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::Command(const std::int32_t j, const bool active) : +ControlBoardMsgs_setPidReferenceRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double ref) : + pidtype{pidtype}, j{j}, - active{active} + ref{ref} { } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidReferenceRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -1553,7 +5141,7 @@ bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::write(yarp::os::C return write(writer); } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidReferenceRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -1563,7 +5151,7 @@ bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::read(yarp::os::Co return read(reader); } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidReferenceRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -1574,7 +5162,7 @@ bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::write(const yarp: return true; } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidReferenceRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -1582,18 +5170,21 @@ bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::writeTag(const ya return true; } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidReferenceRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { - if (!writer.writeI32(j)) { + if (!writer.writeI32(static_cast(pidtype))) { return false; } - if (!writer.writeBool(active)) { + if (!writer.writeI16(j)) { + return false; + } + if (!writer.writeFloat64(ref)) { return false; } return true; } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidReferenceRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -1604,7 +5195,7 @@ bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::read(yarp::os::id return true; } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidReferenceRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -1617,21 +5208,31 @@ bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::readTag(yarp::os: return true; } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidReferenceRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); return false; } - if (!reader.readI32(j)) { + int32_t _ecast; + if (!reader.readI32(_ecast)) { reader.fail(); return false; } + pidtype = static_cast(_ecast); if (reader.noMore()) { reader.fail(); return false; } - if (!reader.readBool(active)) { + if (!reader.readI16(j)) { + reader.fail(); + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(ref)) { reader.fail(); return false; } @@ -1642,19 +5243,19 @@ bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Command::readArgs(yarp::os return true; } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidReferenceRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidReferenceRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidReferenceRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { if (!writer.write(return_helper)) { @@ -1664,7 +5265,7 @@ bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Reply::write(const yarp::o return true; } -bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidReferenceRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); @@ -1677,34 +5278,34 @@ bool ControlBoardMsgs_setManualBrakeActiveRPC_helper::Reply::read(yarp::os::idl: return true; } -void ControlBoardMsgs_setManualBrakeActiveRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_setPidReferenceRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->setManualBrakeActiveRPC(cmd.j, cmd.active); + reply.return_helper = ptr->setPidReferenceRPC(cmd.pidtype, cmd.j, cmd.ref); } -// setAutoBrakeEnabledRPC helper class implementation -ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::ControlBoardMsgs_setAutoBrakeEnabledRPC_helper(const std::int32_t j, const bool enabled) : - cmd{j, enabled} +// setPidReferencesRPC helper class implementation +ControlBoardMsgs_setPidReferencesRPC_helper::ControlBoardMsgs_setPidReferencesRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& refs) : + cmd{pidtype, refs} { } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidReferencesRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidReferencesRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::Command(const std::int32_t j, const bool enabled) : - j{j}, - enabled{enabled} +ControlBoardMsgs_setPidReferencesRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& refs) : + pidtype{pidtype}, + refs{refs} { } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidReferencesRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -1713,7 +5314,7 @@ bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::write(yarp::os::Co return write(writer); } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidReferencesRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -1723,7 +5324,7 @@ bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::read(yarp::os::Con return read(reader); } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidReferencesRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -1734,7 +5335,7 @@ bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::write(const yarp:: return true; } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidReferencesRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -1742,18 +5343,24 @@ bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::writeTag(const yar return true; } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidReferencesRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { - if (!writer.writeI32(j)) { + if (!writer.writeI32(static_cast(pidtype))) { return false; } - if (!writer.writeBool(enabled)) { + if (!writer.writeListBegin(BOTTLE_TAG_FLOAT64, refs.size())) { + return false; + } + if (!writer.writeBlock(reinterpret_cast(refs.data()), refs.size() * sizeof(double))) { + return false; + } + if (!writer.writeListEnd()) { return false; } return true; } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidReferencesRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -1764,7 +5371,7 @@ bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::read(yarp::os::idl return true; } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidReferencesRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -1777,24 +5384,37 @@ bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::readTag(yarp::os:: return true; } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidReferencesRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); return false; } - if (!reader.readI32(j)) { + int32_t _ecast; + if (!reader.readI32(_ecast)) { reader.fail(); return false; } + pidtype = static_cast(_ecast); if (reader.noMore()) { reader.fail(); return false; } - if (!reader.readBool(enabled)) { - reader.fail(); + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_FLOAT64) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + refs.resize(_csize); + if (_csize != 0 && !reader.readBlock(reinterpret_cast(refs.data()), refs.size() * sizeof(double))) { return false; } + reader.readListEnd(); if (!reader.noMore()) { reader.fail(); return false; @@ -1802,19 +5422,19 @@ bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Command::readArgs(yarp::os: return true; } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidReferencesRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidReferencesRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidReferencesRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { if (!writer.write(return_helper)) { @@ -1824,7 +5444,7 @@ bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Reply::write(const yarp::os return true; } -bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidReferencesRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); @@ -1837,33 +5457,35 @@ bool ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::Reply::read(yarp::os::idl:: return true; } -void ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_setPidReferencesRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->setAutoBrakeEnabledRPC(cmd.j, cmd.enabled); + reply.return_helper = ptr->setPidReferencesRPC(cmd.pidtype, cmd.refs); } -// getAutoBrakeEnabledRPC helper class implementation -ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::ControlBoardMsgs_getAutoBrakeEnabledRPC_helper(const std::int32_t j) : - cmd{j} +// setPidErrorLimitRPC helper class implementation +ControlBoardMsgs_setPidErrorLimitRPC_helper::ControlBoardMsgs_setPidErrorLimitRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double limit) : + cmd{pidtype, j, limit} { } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::Command(const std::int32_t j) : - j{j} +ControlBoardMsgs_setPidErrorLimitRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double limit) : + pidtype{pidtype}, + j{j}, + limit{limit} { } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -1872,7 +5494,7 @@ bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::write(yarp::os::Co return write(writer); } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -1882,7 +5504,7 @@ bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::read(yarp::os::Con return read(reader); } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -1893,7 +5515,7 @@ bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::write(const yarp:: return true; } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -1901,15 +5523,21 @@ bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::writeTag(const yar return true; } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { - if (!writer.writeI32(j)) { + if (!writer.writeI32(static_cast(pidtype))) { + return false; + } + if (!writer.writeI16(j)) { + return false; + } + if (!writer.writeFloat64(limit)) { return false; } return true; } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -1920,7 +5548,7 @@ bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::read(yarp::os::idl return true; } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -1933,13 +5561,31 @@ bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::readTag(yarp::os:: return true; } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); return false; } - if (!reader.readI32(j)) { + int32_t _ecast; + if (!reader.readI32(_ecast)) { + reader.fail(); + return false; + } + pidtype = static_cast(_ecast); + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI16(j)) { + reader.fail(); + return false; + } + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(limit)) { reader.fail(); return false; } @@ -1950,24 +5596,21 @@ bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Command::readArgs(yarp::os: return true; } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { - if (!writer.writeListHeader(s_reply_len)) { - return false; - } if (!writer.write(return_helper)) { return false; } @@ -1975,11 +5618,8 @@ bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Reply::write(const yarp::os return true; } -bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidErrorLimitRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { - if (!reader.readListReturn()) { - return false; - } if (reader.noMore()) { reader.fail(); return false; @@ -1991,23 +5631,34 @@ bool ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::Reply::read(yarp::os::idl:: return true; } -void ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_setPidErrorLimitRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->getAutoBrakeEnabledRPC(cmd.j); + reply.return_helper = ptr->setPidErrorLimitRPC(cmd.pidtype, cmd.j, cmd.limit); } -// getAxesRPC helper class implementation -bool ControlBoardMsgs_getAxesRPC_helper::write(yarp::os::ConnectionWriter& connection) const +// setPidErrorLimitsRPC helper class implementation +ControlBoardMsgs_setPidErrorLimitsRPC_helper::ControlBoardMsgs_setPidErrorLimitsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& limits) : + cmd{pidtype, limits} +{ +} + +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_getAxesRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -bool ControlBoardMsgs_getAxesRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +ControlBoardMsgs_setPidErrorLimitsRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& limits) : + pidtype{pidtype}, + limits{limits} +{ +} + +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -2016,7 +5667,7 @@ bool ControlBoardMsgs_getAxesRPC_helper::Command::write(yarp::os::ConnectionWrit return write(writer); } -bool ControlBoardMsgs_getAxesRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -2026,7 +5677,7 @@ bool ControlBoardMsgs_getAxesRPC_helper::Command::read(yarp::os::ConnectionReade return read(reader); } -bool ControlBoardMsgs_getAxesRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -2037,7 +5688,7 @@ bool ControlBoardMsgs_getAxesRPC_helper::Command::write(const yarp::os::idl::Wir return true; } -bool ControlBoardMsgs_getAxesRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -2045,12 +5696,24 @@ bool ControlBoardMsgs_getAxesRPC_helper::Command::writeTag(const yarp::os::idl:: return true; } -bool ControlBoardMsgs_getAxesRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer [[maybe_unused]]) const +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { + if (!writer.writeI32(static_cast(pidtype))) { + return false; + } + if (!writer.writeListBegin(BOTTLE_TAG_FLOAT64, limits.size())) { + return false; + } + if (!writer.writeBlock(reinterpret_cast(limits.data()), limits.size() * sizeof(double))) { + return false; + } + if (!writer.writeListEnd()) { + return false; + } return true; } -bool ControlBoardMsgs_getAxesRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -2061,7 +5724,7 @@ bool ControlBoardMsgs_getAxesRPC_helper::Command::read(yarp::os::idl::WireReader return true; } -bool ControlBoardMsgs_getAxesRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -2074,8 +5737,37 @@ bool ControlBoardMsgs_getAxesRPC_helper::Command::readTag(yarp::os::idl::WireRea return true; } -bool ControlBoardMsgs_getAxesRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { + if (reader.noMore()) { + reader.fail(); + return false; + } + int32_t _ecast; + if (!reader.readI32(_ecast)) { + reader.fail(); + return false; + } + pidtype = static_cast(_ecast); + if (reader.noMore()) { + reader.fail(); + return false; + } + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_FLOAT64) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + limits.resize(_csize); + if (_csize != 0 && !reader.readBlock(reinterpret_cast(limits.data()), limits.size() * sizeof(double))) { + return false; + } + reader.readListEnd(); if (!reader.noMore()) { reader.fail(); return false; @@ -2083,24 +5775,21 @@ bool ControlBoardMsgs_getAxesRPC_helper::Command::readArgs(yarp::os::idl::WireRe return true; } -bool ControlBoardMsgs_getAxesRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_getAxesRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_getAxesRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { - if (!writer.writeListHeader(s_reply_len)) { - return false; - } if (!writer.write(return_helper)) { return false; } @@ -2108,11 +5797,8 @@ bool ControlBoardMsgs_getAxesRPC_helper::Reply::write(const yarp::os::idl::WireW return true; } -bool ControlBoardMsgs_getAxesRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_setPidErrorLimitsRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { - if (!reader.readListReturn()) { - return false; - } if (reader.noMore()) { reader.fail(); return false; @@ -2124,33 +5810,34 @@ bool ControlBoardMsgs_getAxesRPC_helper::Reply::read(yarp::os::idl::WireReader& return true; } -void ControlBoardMsgs_getAxesRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_setPidErrorLimitsRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->getAxesRPC(); + reply.return_helper = ptr->setPidErrorLimitsRPC(cmd.pidtype, cmd.limits); } -// getRefVelocityOneRPC helper class implementation -ControlBoardMsgs_getRefVelocityOneRPC_helper::ControlBoardMsgs_getRefVelocityOneRPC_helper(const std::int32_t j) : - cmd{j} +// isPidEnabledRPC helper class implementation +ControlBoardMsgs_isPidEnabledRPC_helper::ControlBoardMsgs_isPidEnabledRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : + cmd{pidtype, j} { } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_isPidEnabledRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_isPidEnabledRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::Command(const std::int32_t j) : +ControlBoardMsgs_isPidEnabledRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : + pidtype{pidtype}, j{j} { } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -2159,7 +5846,7 @@ bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::write(yarp::os::Conn return write(writer); } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -2169,7 +5856,7 @@ bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::read(yarp::os::Conne return read(reader); } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -2180,7 +5867,7 @@ bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::write(const yarp::os return true; } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -2188,15 +5875,18 @@ bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::writeTag(const yarp: return true; } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { - if (!writer.writeI32(j)) { + if (!writer.writeI32(static_cast(pidtype))) { + return false; + } + if (!writer.writeI16(j)) { return false; } return true; } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -2207,7 +5897,7 @@ bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::read(yarp::os::idl:: return true; } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -2220,13 +5910,23 @@ bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::readTag(yarp::os::id return true; } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); return false; } - if (!reader.readI32(j)) { + int32_t _ecast; + if (!reader.readI32(_ecast)) { + reader.fail(); + return false; + } + pidtype = static_cast(_ecast); + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI16(j)) { reader.fail(); return false; } @@ -2237,19 +5937,19 @@ bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Command::readArgs(yarp::os::i return true; } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_isPidEnabledRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_isPidEnabledRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_isPidEnabledRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { if (!writer.writeListHeader(s_reply_len)) { @@ -2262,7 +5962,7 @@ bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Reply::write(const yarp::os:: return true; } -bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_isPidEnabledRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { if (!reader.readListReturn()) { return false; @@ -2278,23 +5978,34 @@ bool ControlBoardMsgs_getRefVelocityOneRPC_helper::Reply::read(yarp::os::idl::Wi return true; } -void ControlBoardMsgs_getRefVelocityOneRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_isPidEnabledRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->getRefVelocityOneRPC(cmd.j); + reply.return_helper = ptr->isPidEnabledRPC(cmd.pidtype, cmd.j); } -// getRefVelocityAllRPC helper class implementation -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::write(yarp::os::ConnectionWriter& connection) const +// getPidErrorRPC helper class implementation +ControlBoardMsgs_getPidErrorRPC_helper::ControlBoardMsgs_getPidErrorRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : + cmd{pidtype, j} +{ +} + +bool ControlBoardMsgs_getPidErrorRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +ControlBoardMsgs_getPidErrorRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : + pidtype{pidtype}, + j{j} +{ +} + +bool ControlBoardMsgs_getPidErrorRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -2303,7 +6014,7 @@ bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::write(yarp::os::Conn return write(writer); } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -2313,7 +6024,7 @@ bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::read(yarp::os::Conne return read(reader); } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -2324,7 +6035,7 @@ bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::write(const yarp::os return true; } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -2332,12 +6043,18 @@ bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::writeTag(const yarp: return true; } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer [[maybe_unused]]) const +bool ControlBoardMsgs_getPidErrorRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { + if (!writer.writeI32(static_cast(pidtype))) { + return false; + } + if (!writer.writeI16(j)) { + return false; + } return true; } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -2348,7 +6065,7 @@ bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::read(yarp::os::idl:: return true; } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -2361,8 +6078,26 @@ bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::readTag(yarp::os::id return true; } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { + if (reader.noMore()) { + reader.fail(); + return false; + } + int32_t _ecast; + if (!reader.readI32(_ecast)) { + reader.fail(); + return false; + } + pidtype = static_cast(_ecast); + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readI16(j)) { + reader.fail(); + return false; + } if (!reader.noMore()) { reader.fail(); return false; @@ -2370,19 +6105,19 @@ bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Command::readArgs(yarp::os::i return true; } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidErrorRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { if (!writer.writeListHeader(s_reply_len)) { @@ -2395,7 +6130,7 @@ bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Reply::write(const yarp::os:: return true; } -bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { if (!reader.readListReturn()) { return false; @@ -2411,33 +6146,33 @@ bool ControlBoardMsgs_getRefVelocityAllRPC_helper::Reply::read(yarp::os::idl::Wi return true; } -void ControlBoardMsgs_getRefVelocityAllRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_getPidErrorRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->getRefVelocityAllRPC(); + reply.return_helper = ptr->getPidErrorRPC(cmd.pidtype, cmd.j); } -// getRefVelocityGroupRPC helper class implementation -ControlBoardMsgs_getRefVelocityGroupRPC_helper::ControlBoardMsgs_getRefVelocityGroupRPC_helper(const std::vector& j) : - cmd{j} +// getPidErrorsRPC helper class implementation +ControlBoardMsgs_getPidErrorsRPC_helper::ControlBoardMsgs_getPidErrorsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype) : + cmd{pidtype} { } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidErrorsRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorsRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::Command(const std::vector& j) : - j{j} +ControlBoardMsgs_getPidErrorsRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype) : + pidtype{pidtype} { } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidErrorsRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -2446,7 +6181,7 @@ bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::write(yarp::os::Co return write(writer); } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorsRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -2456,7 +6191,7 @@ bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::read(yarp::os::Con return read(reader); } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorsRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -2467,7 +6202,7 @@ bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::write(const yarp:: return true; } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorsRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -2475,21 +6210,15 @@ bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::writeTag(const yar return true; } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorsRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { - if (!writer.writeListBegin(BOTTLE_TAG_INT32, j.size())) { - return false; - } - if (!writer.writeBlock(reinterpret_cast(j.data()), j.size() * sizeof(std::int32_t))) { - return false; - } - if (!writer.writeListEnd()) { + if (!writer.writeI32(static_cast(pidtype))) { return false; } return true; } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorsRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -2500,7 +6229,7 @@ bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::read(yarp::os::idl return true; } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorsRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -2513,27 +6242,18 @@ bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::readTag(yarp::os:: return true; } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorsRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); return false; } - size_t _csize; - yarp::os::idl::WireState _etype; - reader.readListBegin(_etype, _csize); - // WireReader removes BOTTLE_TAG_LIST from the tag - constexpr int expected_tag = ((BOTTLE_TAG_INT32) & (~BOTTLE_TAG_LIST)); - if constexpr (expected_tag != 0) { - if (_csize != 0 && _etype.code != expected_tag) { - return false; - } - } - j.resize(_csize); - if (_csize != 0 && !reader.readBlock(reinterpret_cast(j.data()), j.size() * sizeof(std::int32_t))) { + int32_t _ecast; + if (!reader.readI32(_ecast)) { + reader.fail(); return false; } - reader.readListEnd(); + pidtype = static_cast(_ecast); if (!reader.noMore()) { reader.fail(); return false; @@ -2541,19 +6261,19 @@ bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Command::readArgs(yarp::os: return true; } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidErrorsRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorsRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorsRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { if (!writer.writeListHeader(s_reply_len)) { @@ -2566,7 +6286,7 @@ bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Reply::write(const yarp::os return true; } -bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorsRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { if (!reader.readListReturn()) { return false; @@ -2582,34 +6302,34 @@ bool ControlBoardMsgs_getRefVelocityGroupRPC_helper::Reply::read(yarp::os::idl:: return true; } -void ControlBoardMsgs_getRefVelocityGroupRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_getPidErrorsRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->getRefVelocityGroupRPC(cmd.j); + reply.return_helper = ptr->getPidErrorsRPC(cmd.pidtype); } -// enablePidRPC helper class implementation -ControlBoardMsgs_enablePidRPC_helper::ControlBoardMsgs_enablePidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : +// getPidReferenceRPC helper class implementation +ControlBoardMsgs_getPidReferenceRPC_helper::ControlBoardMsgs_getPidReferenceRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : cmd{pidtype, j} { } -bool ControlBoardMsgs_enablePidRPC_helper::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidReferenceRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_enablePidRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidReferenceRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_enablePidRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : +ControlBoardMsgs_getPidReferenceRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : pidtype{pidtype}, j{j} { } -bool ControlBoardMsgs_enablePidRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidReferenceRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -2618,7 +6338,7 @@ bool ControlBoardMsgs_enablePidRPC_helper::Command::write(yarp::os::ConnectionWr return write(writer); } -bool ControlBoardMsgs_enablePidRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidReferenceRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -2628,7 +6348,7 @@ bool ControlBoardMsgs_enablePidRPC_helper::Command::read(yarp::os::ConnectionRea return read(reader); } -bool ControlBoardMsgs_enablePidRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidReferenceRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -2639,7 +6359,7 @@ bool ControlBoardMsgs_enablePidRPC_helper::Command::write(const yarp::os::idl::W return true; } -bool ControlBoardMsgs_enablePidRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidReferenceRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -2647,7 +6367,7 @@ bool ControlBoardMsgs_enablePidRPC_helper::Command::writeTag(const yarp::os::idl return true; } -bool ControlBoardMsgs_enablePidRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidReferenceRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeI32(static_cast(pidtype))) { return false; @@ -2658,7 +6378,7 @@ bool ControlBoardMsgs_enablePidRPC_helper::Command::writeArgs(const yarp::os::id return true; } -bool ControlBoardMsgs_enablePidRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidReferenceRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -2669,7 +6389,7 @@ bool ControlBoardMsgs_enablePidRPC_helper::Command::read(yarp::os::idl::WireRead return true; } -bool ControlBoardMsgs_enablePidRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidReferenceRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -2682,7 +6402,7 @@ bool ControlBoardMsgs_enablePidRPC_helper::Command::readTag(yarp::os::idl::WireR return true; } -bool ControlBoardMsgs_enablePidRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidReferenceRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); @@ -2709,21 +6429,24 @@ bool ControlBoardMsgs_enablePidRPC_helper::Command::readArgs(yarp::os::idl::Wire return true; } -bool ControlBoardMsgs_enablePidRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidReferenceRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_enablePidRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidReferenceRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_enablePidRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidReferenceRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } if (!writer.write(return_helper)) { return false; } @@ -2731,8 +6454,11 @@ bool ControlBoardMsgs_enablePidRPC_helper::Reply::write(const yarp::os::idl::Wir return true; } -bool ControlBoardMsgs_enablePidRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidReferenceRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { + if (!reader.readListReturn()) { + return false; + } if (reader.noMore()) { reader.fail(); return false; @@ -2744,34 +6470,33 @@ bool ControlBoardMsgs_enablePidRPC_helper::Reply::read(yarp::os::idl::WireReader return true; } -void ControlBoardMsgs_enablePidRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_getPidReferenceRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->enablePidRPC(cmd.pidtype, cmd.j); + reply.return_helper = ptr->getPidReferenceRPC(cmd.pidtype, cmd.j); } -// disablePidRPC helper class implementation -ControlBoardMsgs_disablePidRPC_helper::ControlBoardMsgs_disablePidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : - cmd{pidtype, j} +// getPidReferencesRPC helper class implementation +ControlBoardMsgs_getPidReferencesRPC_helper::ControlBoardMsgs_getPidReferencesRPC_helper(const yarp::dev::PidControlTypeEnum pidtype) : + cmd{pidtype} { } -bool ControlBoardMsgs_disablePidRPC_helper::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidReferencesRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_disablePidRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidReferencesRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_disablePidRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : - pidtype{pidtype}, - j{j} +ControlBoardMsgs_getPidReferencesRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype) : + pidtype{pidtype} { } -bool ControlBoardMsgs_disablePidRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidReferencesRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -2780,7 +6505,7 @@ bool ControlBoardMsgs_disablePidRPC_helper::Command::write(yarp::os::ConnectionW return write(writer); } -bool ControlBoardMsgs_disablePidRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidReferencesRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -2790,7 +6515,7 @@ bool ControlBoardMsgs_disablePidRPC_helper::Command::read(yarp::os::ConnectionRe return read(reader); } -bool ControlBoardMsgs_disablePidRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidReferencesRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -2801,7 +6526,7 @@ bool ControlBoardMsgs_disablePidRPC_helper::Command::write(const yarp::os::idl:: return true; } -bool ControlBoardMsgs_disablePidRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidReferencesRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -2809,18 +6534,15 @@ bool ControlBoardMsgs_disablePidRPC_helper::Command::writeTag(const yarp::os::id return true; } -bool ControlBoardMsgs_disablePidRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidReferencesRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeI32(static_cast(pidtype))) { return false; } - if (!writer.writeI16(j)) { - return false; - } return true; } -bool ControlBoardMsgs_disablePidRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidReferencesRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -2831,7 +6553,7 @@ bool ControlBoardMsgs_disablePidRPC_helper::Command::read(yarp::os::idl::WireRea return true; } -bool ControlBoardMsgs_disablePidRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidReferencesRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -2844,7 +6566,7 @@ bool ControlBoardMsgs_disablePidRPC_helper::Command::readTag(yarp::os::idl::Wire return true; } -bool ControlBoardMsgs_disablePidRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidReferencesRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); @@ -2856,14 +6578,6 @@ bool ControlBoardMsgs_disablePidRPC_helper::Command::readArgs(yarp::os::idl::Wir return false; } pidtype = static_cast(_ecast); - if (reader.noMore()) { - reader.fail(); - return false; - } - if (!reader.readI16(j)) { - reader.fail(); - return false; - } if (!reader.noMore()) { reader.fail(); return false; @@ -2871,21 +6585,24 @@ bool ControlBoardMsgs_disablePidRPC_helper::Command::readArgs(yarp::os::idl::Wir return true; } -bool ControlBoardMsgs_disablePidRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidReferencesRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_disablePidRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidReferencesRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_disablePidRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidReferencesRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } if (!writer.write(return_helper)) { return false; } @@ -2893,8 +6610,11 @@ bool ControlBoardMsgs_disablePidRPC_helper::Reply::write(const yarp::os::idl::Wi return true; } -bool ControlBoardMsgs_disablePidRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidReferencesRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { + if (!reader.readListReturn()) { + return false; + } if (reader.noMore()) { reader.fail(); return false; @@ -2906,34 +6626,34 @@ bool ControlBoardMsgs_disablePidRPC_helper::Reply::read(yarp::os::idl::WireReade return true; } -void ControlBoardMsgs_disablePidRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_getPidReferencesRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->disablePidRPC(cmd.pidtype, cmd.j); + reply.return_helper = ptr->getPidReferencesRPC(cmd.pidtype); } -// resetPidRPC helper class implementation -ControlBoardMsgs_resetPidRPC_helper::ControlBoardMsgs_resetPidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : +// getPidErrorLimitRPC helper class implementation +ControlBoardMsgs_getPidErrorLimitRPC_helper::ControlBoardMsgs_getPidErrorLimitRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : cmd{pidtype, j} { } -bool ControlBoardMsgs_resetPidRPC_helper::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_resetPidRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_resetPidRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : +ControlBoardMsgs_getPidErrorLimitRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : pidtype{pidtype}, j{j} { } -bool ControlBoardMsgs_resetPidRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -2942,7 +6662,7 @@ bool ControlBoardMsgs_resetPidRPC_helper::Command::write(yarp::os::ConnectionWri return write(writer); } -bool ControlBoardMsgs_resetPidRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -2952,7 +6672,7 @@ bool ControlBoardMsgs_resetPidRPC_helper::Command::read(yarp::os::ConnectionRead return read(reader); } -bool ControlBoardMsgs_resetPidRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -2963,7 +6683,7 @@ bool ControlBoardMsgs_resetPidRPC_helper::Command::write(const yarp::os::idl::Wi return true; } -bool ControlBoardMsgs_resetPidRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -2971,7 +6691,7 @@ bool ControlBoardMsgs_resetPidRPC_helper::Command::writeTag(const yarp::os::idl: return true; } -bool ControlBoardMsgs_resetPidRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeI32(static_cast(pidtype))) { return false; @@ -2982,7 +6702,7 @@ bool ControlBoardMsgs_resetPidRPC_helper::Command::writeArgs(const yarp::os::idl return true; } -bool ControlBoardMsgs_resetPidRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -2993,7 +6713,7 @@ bool ControlBoardMsgs_resetPidRPC_helper::Command::read(yarp::os::idl::WireReade return true; } -bool ControlBoardMsgs_resetPidRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -3006,7 +6726,7 @@ bool ControlBoardMsgs_resetPidRPC_helper::Command::readTag(yarp::os::idl::WireRe return true; } -bool ControlBoardMsgs_resetPidRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); @@ -3033,21 +6753,24 @@ bool ControlBoardMsgs_resetPidRPC_helper::Command::readArgs(yarp::os::idl::WireR return true; } -bool ControlBoardMsgs_resetPidRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_resetPidRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_resetPidRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } if (!writer.write(return_helper)) { return false; } @@ -3055,8 +6778,11 @@ bool ControlBoardMsgs_resetPidRPC_helper::Reply::write(const yarp::os::idl::Wire return true; } -bool ControlBoardMsgs_resetPidRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorLimitRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { + if (!reader.readListReturn()) { + return false; + } if (reader.noMore()) { reader.fail(); return false; @@ -3068,34 +6794,33 @@ bool ControlBoardMsgs_resetPidRPC_helper::Reply::read(yarp::os::idl::WireReader& return true; } -void ControlBoardMsgs_resetPidRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_getPidErrorLimitRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->resetPidRPC(cmd.pidtype, cmd.j); + reply.return_helper = ptr->getPidErrorLimitRPC(cmd.pidtype, cmd.j); } -// isPidEnabledRPC helper class implementation -ControlBoardMsgs_isPidEnabledRPC_helper::ControlBoardMsgs_isPidEnabledRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : - cmd{pidtype, j} +// getPidErrorLimitsRPC helper class implementation +ControlBoardMsgs_getPidErrorLimitsRPC_helper::ControlBoardMsgs_getPidErrorLimitsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype) : + cmd{pidtype} { } -bool ControlBoardMsgs_isPidEnabledRPC_helper::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_isPidEnabledRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_isPidEnabledRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : - pidtype{pidtype}, - j{j} +ControlBoardMsgs_getPidErrorLimitsRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype) : + pidtype{pidtype} { } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -3104,7 +6829,7 @@ bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::write(yarp::os::Connectio return write(writer); } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -3114,7 +6839,7 @@ bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::read(yarp::os::Connection return read(reader); } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -3125,7 +6850,7 @@ bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::write(const yarp::os::idl return true; } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -3133,18 +6858,15 @@ bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::writeTag(const yarp::os:: return true; } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeI32(static_cast(pidtype))) { return false; } - if (!writer.writeI16(j)) { - return false; - } return true; } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -3155,7 +6877,7 @@ bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::read(yarp::os::idl::WireR return true; } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -3168,7 +6890,7 @@ bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::readTag(yarp::os::idl::Wi return true; } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); @@ -3180,14 +6902,6 @@ bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::readArgs(yarp::os::idl::W return false; } pidtype = static_cast(_ecast); - if (reader.noMore()) { - reader.fail(); - return false; - } - if (!reader.readI16(j)) { - reader.fail(); - return false; - } if (!reader.noMore()) { reader.fail(); return false; @@ -3195,19 +6909,19 @@ bool ControlBoardMsgs_isPidEnabledRPC_helper::Command::readArgs(yarp::os::idl::W return true; } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { if (!writer.writeListHeader(s_reply_len)) { @@ -3220,7 +6934,7 @@ bool ControlBoardMsgs_isPidEnabledRPC_helper::Reply::write(const yarp::os::idl:: return true; } -bool ControlBoardMsgs_isPidEnabledRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidErrorLimitsRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { if (!reader.readListReturn()) { return false; @@ -3236,35 +6950,34 @@ bool ControlBoardMsgs_isPidEnabledRPC_helper::Reply::read(yarp::os::idl::WireRea return true; } -void ControlBoardMsgs_isPidEnabledRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_getPidErrorLimitsRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->isPidEnabledRPC(cmd.pidtype, cmd.j); + reply.return_helper = ptr->getPidErrorLimitsRPC(cmd.pidtype); } -// setPidRPC helper class implementation -ControlBoardMsgs_setPidRPC_helper::ControlBoardMsgs_setPidRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid) : - cmd{pidtype, j, pid} +// getPidOutputRPC helper class implementation +ControlBoardMsgs_getPidOutputRPC_helper::ControlBoardMsgs_getPidOutputRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : + cmd{pidtype, j} { } -bool ControlBoardMsgs_setPidRPC_helper::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidOutputRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_setPidRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidOutputRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_setPidRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid) : +ControlBoardMsgs_getPidOutputRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) : pidtype{pidtype}, - j{j}, - pid{pid} + j{j} { } -bool ControlBoardMsgs_setPidRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidOutputRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -3273,7 +6986,7 @@ bool ControlBoardMsgs_setPidRPC_helper::Command::write(yarp::os::ConnectionWrite return write(writer); } -bool ControlBoardMsgs_setPidRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidOutputRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -3283,7 +6996,7 @@ bool ControlBoardMsgs_setPidRPC_helper::Command::read(yarp::os::ConnectionReader return read(reader); } -bool ControlBoardMsgs_setPidRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidOutputRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -3294,7 +7007,7 @@ bool ControlBoardMsgs_setPidRPC_helper::Command::write(const yarp::os::idl::Wire return true; } -bool ControlBoardMsgs_setPidRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidOutputRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -3302,7 +7015,7 @@ bool ControlBoardMsgs_setPidRPC_helper::Command::writeTag(const yarp::os::idl::W return true; } -bool ControlBoardMsgs_setPidRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidOutputRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeI32(static_cast(pidtype))) { return false; @@ -3310,13 +7023,10 @@ bool ControlBoardMsgs_setPidRPC_helper::Command::writeArgs(const yarp::os::idl:: if (!writer.writeI16(j)) { return false; } - if (!writer.writeNested(pid)) { - return false; - } return true; } -bool ControlBoardMsgs_setPidRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidOutputRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -3327,7 +7037,7 @@ bool ControlBoardMsgs_setPidRPC_helper::Command::read(yarp::os::idl::WireReader& return true; } -bool ControlBoardMsgs_setPidRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidOutputRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -3340,7 +7050,7 @@ bool ControlBoardMsgs_setPidRPC_helper::Command::readTag(yarp::os::idl::WireRead return true; } -bool ControlBoardMsgs_setPidRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidOutputRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); @@ -3360,14 +7070,6 @@ bool ControlBoardMsgs_setPidRPC_helper::Command::readArgs(yarp::os::idl::WireRea reader.fail(); return false; } - if (reader.noMore()) { - reader.fail(); - return false; - } - if (!reader.readNested(pid)) { - reader.fail(); - return false; - } if (!reader.noMore()) { reader.fail(); return false; @@ -3375,21 +7077,24 @@ bool ControlBoardMsgs_setPidRPC_helper::Command::readArgs(yarp::os::idl::WireRea return true; } -bool ControlBoardMsgs_setPidRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidOutputRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_setPidRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidOutputRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_setPidRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidOutputRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } if (!writer.write(return_helper)) { return false; } @@ -3397,8 +7102,11 @@ bool ControlBoardMsgs_setPidRPC_helper::Reply::write(const yarp::os::idl::WireWr return true; } -bool ControlBoardMsgs_setPidRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidOutputRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { + if (!reader.readListReturn()) { + return false; + } if (reader.noMore()) { reader.fail(); return false; @@ -3410,34 +7118,33 @@ bool ControlBoardMsgs_setPidRPC_helper::Reply::read(yarp::os::idl::WireReader& r return true; } -void ControlBoardMsgs_setPidRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_getPidOutputRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->setPidRPC(cmd.pidtype, cmd.j, cmd.pid); + reply.return_helper = ptr->getPidOutputRPC(cmd.pidtype, cmd.j); } -// setPidsRPC helper class implementation -ControlBoardMsgs_setPidsRPC_helper::ControlBoardMsgs_setPidsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids) : - cmd{pidtype, pids} +// getPidOutputsRPC helper class implementation +ControlBoardMsgs_getPidOutputsRPC_helper::ControlBoardMsgs_getPidOutputsRPC_helper(const yarp::dev::PidControlTypeEnum pidtype) : + cmd{pidtype} { } -bool ControlBoardMsgs_setPidsRPC_helper::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidOutputsRPC_helper::write(yarp::os::ConnectionWriter& connection) const { return cmd.write(connection); } -bool ControlBoardMsgs_setPidsRPC_helper::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidOutputsRPC_helper::read(yarp::os::ConnectionReader& connection) { return reply.read(connection); } -ControlBoardMsgs_setPidsRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids) : - pidtype{pidtype}, - pids{pids} +ControlBoardMsgs_getPidOutputsRPC_helper::Command::Command(const yarp::dev::PidControlTypeEnum pidtype) : + pidtype{pidtype} { } -bool ControlBoardMsgs_setPidsRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidOutputsRPC_helper::Command::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); if (!writer.writeListHeader(s_cmd_len)) { @@ -3446,7 +7153,7 @@ bool ControlBoardMsgs_setPidsRPC_helper::Command::write(yarp::os::ConnectionWrit return write(writer); } -bool ControlBoardMsgs_setPidsRPC_helper::Command::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidOutputsRPC_helper::Command::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); if (!reader.readListHeader()) { @@ -3456,7 +7163,7 @@ bool ControlBoardMsgs_setPidsRPC_helper::Command::read(yarp::os::ConnectionReade return read(reader); } -bool ControlBoardMsgs_setPidsRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidOutputsRPC_helper::Command::write(const yarp::os::idl::WireWriter& writer) const { if (!writeTag(writer)) { return false; @@ -3467,7 +7174,7 @@ bool ControlBoardMsgs_setPidsRPC_helper::Command::write(const yarp::os::idl::Wir return true; } -bool ControlBoardMsgs_setPidsRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidOutputsRPC_helper::Command::writeTag(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeTag(s_tag, 1, s_tag_len)) { return false; @@ -3475,26 +7182,15 @@ bool ControlBoardMsgs_setPidsRPC_helper::Command::writeTag(const yarp::os::idl:: return true; } -bool ControlBoardMsgs_setPidsRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidOutputsRPC_helper::Command::writeArgs(const yarp::os::idl::WireWriter& writer) const { if (!writer.writeI32(static_cast(pidtype))) { return false; } - if (!writer.writeListBegin(BOTTLE_TAG_LIST, pids.size())) { - return false; - } - for (const auto& _item : pids) { - if (!writer.writeNested(_item)) { - return false; - } - } - if (!writer.writeListEnd()) { - return false; - } return true; } -bool ControlBoardMsgs_setPidsRPC_helper::Command::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidOutputsRPC_helper::Command::read(yarp::os::idl::WireReader& reader) { if (!readTag(reader)) { return false; @@ -3505,7 +7201,7 @@ bool ControlBoardMsgs_setPidsRPC_helper::Command::read(yarp::os::idl::WireReader return true; } -bool ControlBoardMsgs_setPidsRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidOutputsRPC_helper::Command::readTag(yarp::os::idl::WireReader& reader) { std::string tag = reader.readTag(s_tag_len); if (reader.isError()) { @@ -3518,7 +7214,7 @@ bool ControlBoardMsgs_setPidsRPC_helper::Command::readTag(yarp::os::idl::WireRea return true; } -bool ControlBoardMsgs_setPidsRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidOutputsRPC_helper::Command::readArgs(yarp::os::idl::WireReader& reader) { if (reader.noMore()) { reader.fail(); @@ -3530,32 +7226,6 @@ bool ControlBoardMsgs_setPidsRPC_helper::Command::readArgs(yarp::os::idl::WireRe return false; } pidtype = static_cast(_ecast); - if (reader.noMore()) { - reader.fail(); - return false; - } - size_t _csize; - yarp::os::idl::WireState _etype; - reader.readListBegin(_etype, _csize); - // WireReader removes BOTTLE_TAG_LIST from the tag - constexpr int expected_tag = ((BOTTLE_TAG_LIST) & (~BOTTLE_TAG_LIST)); - if constexpr (expected_tag != 0) { - if (_csize != 0 && _etype.code != expected_tag) { - return false; - } - } - pids.resize(_csize); - for (size_t _i = 0; _i < _csize; ++_i) { - if (reader.noMore()) { - reader.fail(); - return false; - } - if (!reader.readNested(pids[_i])) { - reader.fail(); - return false; - } - } - reader.readListEnd(); if (!reader.noMore()) { reader.fail(); return false; @@ -3563,21 +7233,24 @@ bool ControlBoardMsgs_setPidsRPC_helper::Command::readArgs(yarp::os::idl::WireRe return true; } -bool ControlBoardMsgs_setPidsRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const +bool ControlBoardMsgs_getPidOutputsRPC_helper::Reply::write(yarp::os::ConnectionWriter& connection) const { yarp::os::idl::WireWriter writer(connection); return write(writer); } -bool ControlBoardMsgs_setPidsRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) +bool ControlBoardMsgs_getPidOutputsRPC_helper::Reply::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); return read(reader); } -bool ControlBoardMsgs_setPidsRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const +bool ControlBoardMsgs_getPidOutputsRPC_helper::Reply::write(const yarp::os::idl::WireWriter& writer) const { if (!writer.isNull()) { + if (!writer.writeListHeader(s_reply_len)) { + return false; + } if (!writer.write(return_helper)) { return false; } @@ -3585,8 +7258,11 @@ bool ControlBoardMsgs_setPidsRPC_helper::Reply::write(const yarp::os::idl::WireW return true; } -bool ControlBoardMsgs_setPidsRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) +bool ControlBoardMsgs_getPidOutputsRPC_helper::Reply::read(yarp::os::idl::WireReader& reader) { + if (!reader.readListReturn()) { + return false; + } if (reader.noMore()) { reader.fail(); return false; @@ -3598,9 +7274,9 @@ bool ControlBoardMsgs_setPidsRPC_helper::Reply::read(yarp::os::idl::WireReader& return true; } -void ControlBoardMsgs_setPidsRPC_helper::call(ControlBoardMsgs* ptr) +void ControlBoardMsgs_getPidOutputsRPC_helper::call(ControlBoardMsgs* ptr) { - reply.return_helper = ptr->setPidsRPC(cmd.pidtype, cmd.pids); + reply.return_helper = ptr->getPidOutputsRPC(cmd.pidtype); } // getPidRPC helper class implementation @@ -4593,16 +8269,6 @@ ControlBoardMsgs::ControlBoardMsgs() yarp().setOwner(*this); } -return_isJointBraked ControlBoardMsgs::isJointBrakedRPC(const std::int32_t j) const -{ - if (!yarp().canWrite()) { - yError("Missing server method '%s'?", ControlBoardMsgs_isJointBrakedRPC_helper::s_prototype); - } - ControlBoardMsgs_isJointBrakedRPC_helper helper{j}; - bool ok = yarp().write(helper, helper); - return ok ? helper.reply.return_helper : return_isJointBraked{}; -} - yarp::dev::ReturnValue ControlBoardMsgs::setManualBrakeActiveRPC(const std::int32_t j, const bool active) { if (!yarp().canWrite()) { @@ -4623,6 +8289,16 @@ yarp::dev::ReturnValue ControlBoardMsgs::setAutoBrakeEnabledRPC(const std::int32 return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; } +return_isJointBraked ControlBoardMsgs::isJointBrakedRPC(const std::int32_t j) const +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_isJointBrakedRPC_helper::s_prototype); + } + ControlBoardMsgs_isJointBrakedRPC_helper helper{j}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : return_isJointBraked{}; +} + return_getAutoBrakeEnabled ControlBoardMsgs::getAutoBrakeEnabledRPC(const std::int32_t j) const { if (!yarp().canWrite()) { @@ -4673,6 +8349,46 @@ return_getRefVelocityGroup ControlBoardMsgs::getRefVelocityGroupRPC(const std::v return ok ? helper.reply.return_helper : return_getRefVelocityGroup{}; } +yarp::dev::ReturnValue ControlBoardMsgs::setPosLimitsRPC(const std::int16_t j, const double min, const double max) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_setPosLimitsRPC_helper::s_prototype); + } + ControlBoardMsgs_setPosLimitsRPC_helper helper{j, min, max}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; +} + +yarp::dev::ReturnValue ControlBoardMsgs::setVelLimitsRPC(const std::int16_t j, const double min, const double max) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_setVelLimitsRPC_helper::s_prototype); + } + ControlBoardMsgs_setVelLimitsRPC_helper helper{j, min, max}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; +} + +return_getPosLimits ControlBoardMsgs::getPosLimitsRPC(const std::int16_t j) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_getPosLimitsRPC_helper::s_prototype); + } + ControlBoardMsgs_getPosLimitsRPC_helper helper{j}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : return_getPosLimits{}; +} + +return_getVelLimits ControlBoardMsgs::getVelLimitsRPC(const std::int16_t j) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_getVelLimitsRPC_helper::s_prototype); + } + ControlBoardMsgs_getVelLimitsRPC_helper helper{j}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : return_getVelLimits{}; +} + yarp::dev::ReturnValue ControlBoardMsgs::enablePidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) { if (!yarp().canWrite()) { @@ -4703,6 +8419,66 @@ yarp::dev::ReturnValue ControlBoardMsgs::resetPidRPC(const yarp::dev::PidControl return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; } +yarp::dev::ReturnValue ControlBoardMsgs::setPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_setPidRPC_helper::s_prototype); + } + ControlBoardMsgs_setPidRPC_helper helper{pidtype, j, pid}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; +} + +yarp::dev::ReturnValue ControlBoardMsgs::setPidsRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_setPidsRPC_helper::s_prototype); + } + ControlBoardMsgs_setPidsRPC_helper helper{pidtype, pids}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; +} + +yarp::dev::ReturnValue ControlBoardMsgs::setPidReferenceRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double ref) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_setPidReferenceRPC_helper::s_prototype); + } + ControlBoardMsgs_setPidReferenceRPC_helper helper{pidtype, j, ref}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; +} + +yarp::dev::ReturnValue ControlBoardMsgs::setPidReferencesRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& refs) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_setPidReferencesRPC_helper::s_prototype); + } + ControlBoardMsgs_setPidReferencesRPC_helper helper{pidtype, refs}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; +} + +yarp::dev::ReturnValue ControlBoardMsgs::setPidErrorLimitRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double limit) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_setPidErrorLimitRPC_helper::s_prototype); + } + ControlBoardMsgs_setPidErrorLimitRPC_helper helper{pidtype, j, limit}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; +} + +yarp::dev::ReturnValue ControlBoardMsgs::setPidErrorLimitsRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& limits) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_setPidErrorLimitsRPC_helper::s_prototype); + } + ControlBoardMsgs_setPidErrorLimitsRPC_helper helper{pidtype, limits}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; +} + return_isPidEnabled ControlBoardMsgs::isPidEnabledRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) { if (!yarp().canWrite()) { @@ -4713,24 +8489,84 @@ return_isPidEnabled ControlBoardMsgs::isPidEnabledRPC(const yarp::dev::PidContro return ok ? helper.reply.return_helper : return_isPidEnabled{}; } -yarp::dev::ReturnValue ControlBoardMsgs::setPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid) +return_getPidError ControlBoardMsgs::getPidErrorRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) { if (!yarp().canWrite()) { - yError("Missing server method '%s'?", ControlBoardMsgs_setPidRPC_helper::s_prototype); + yError("Missing server method '%s'?", ControlBoardMsgs_getPidErrorRPC_helper::s_prototype); } - ControlBoardMsgs_setPidRPC_helper helper{pidtype, j, pid}; + ControlBoardMsgs_getPidErrorRPC_helper helper{pidtype, j}; bool ok = yarp().write(helper, helper); - return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; + return ok ? helper.reply.return_helper : return_getPidError{}; } -yarp::dev::ReturnValue ControlBoardMsgs::setPidsRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids) +return_getPidErrors ControlBoardMsgs::getPidErrorsRPC(const yarp::dev::PidControlTypeEnum pidtype) { if (!yarp().canWrite()) { - yError("Missing server method '%s'?", ControlBoardMsgs_setPidsRPC_helper::s_prototype); + yError("Missing server method '%s'?", ControlBoardMsgs_getPidErrorsRPC_helper::s_prototype); } - ControlBoardMsgs_setPidsRPC_helper helper{pidtype, pids}; + ControlBoardMsgs_getPidErrorsRPC_helper helper{pidtype}; bool ok = yarp().write(helper, helper); - return ok ? helper.reply.return_helper : yarp::dev::ReturnValue{}; + return ok ? helper.reply.return_helper : return_getPidErrors{}; +} + +return_getPidReference ControlBoardMsgs::getPidReferenceRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_getPidReferenceRPC_helper::s_prototype); + } + ControlBoardMsgs_getPidReferenceRPC_helper helper{pidtype, j}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : return_getPidReference{}; +} + +return_getPidReferences ControlBoardMsgs::getPidReferencesRPC(const yarp::dev::PidControlTypeEnum pidtype) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_getPidReferencesRPC_helper::s_prototype); + } + ControlBoardMsgs_getPidReferencesRPC_helper helper{pidtype}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : return_getPidReferences{}; +} + +return_getPidErrorLimit ControlBoardMsgs::getPidErrorLimitRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_getPidErrorLimitRPC_helper::s_prototype); + } + ControlBoardMsgs_getPidErrorLimitRPC_helper helper{pidtype, j}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : return_getPidErrorLimit{}; +} + +return_getPidErrorLimits ControlBoardMsgs::getPidErrorLimitsRPC(const yarp::dev::PidControlTypeEnum pidtype) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_getPidErrorLimitsRPC_helper::s_prototype); + } + ControlBoardMsgs_getPidErrorLimitsRPC_helper helper{pidtype}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : return_getPidErrorLimits{}; +} + +return_getPidOutput ControlBoardMsgs::getPidOutputRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_getPidOutputRPC_helper::s_prototype); + } + ControlBoardMsgs_getPidOutputRPC_helper helper{pidtype, j}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : return_getPidOutput{}; +} + +return_getPidOutputs ControlBoardMsgs::getPidOutputsRPC(const yarp::dev::PidControlTypeEnum pidtype) +{ + if (!yarp().canWrite()) { + yError("Missing server method '%s'?", ControlBoardMsgs_getPidOutputsRPC_helper::s_prototype); + } + ControlBoardMsgs_getPidOutputsRPC_helper helper{pidtype}; + bool ok = yarp().write(helper, helper); + return ok ? helper.reply.return_helper : return_getPidOutputs{}; } return_getPid ControlBoardMsgs::getPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) @@ -4800,20 +8636,36 @@ std::vector ControlBoardMsgs::help(const std::string& functionName) std::vector helpString; if (showAll) { helpString.emplace_back("*** Available commands:"); - helpString.emplace_back(ControlBoardMsgs_isJointBrakedRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_setManualBrakeActiveRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_isJointBrakedRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_getAxesRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_getRefVelocityOneRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_getRefVelocityAllRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_getRefVelocityGroupRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_setPosLimitsRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_setVelLimitsRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_getPosLimitsRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_getVelLimitsRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_enablePidRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_disablePidRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_resetPidRPC_helper::s_tag); - helpString.emplace_back(ControlBoardMsgs_isPidEnabledRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_setPidRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_setPidsRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_setPidReferenceRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_setPidReferencesRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_setPidErrorLimitRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_setPidErrorLimitsRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_isPidEnabledRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_getPidErrorRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_getPidErrorsRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_getPidReferenceRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_getPidReferencesRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_getPidErrorLimitRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_getPidErrorLimitsRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_getPidOutputRPC_helper::s_tag); + helpString.emplace_back(ControlBoardMsgs_getPidOutputsRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_getPidRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_getPidsRPC_helper::s_tag); helpString.emplace_back(ControlBoardMsgs_getPidExtraInfoRPC_helper::s_tag); @@ -4822,15 +8674,15 @@ std::vector ControlBoardMsgs::help(const std::string& functionName) helpString.emplace_back(ControlBoardMsgs_getPidFeedforwardRPC_helper::s_tag); helpString.emplace_back("help"); } else { - if (functionName == ControlBoardMsgs_isJointBrakedRPC_helper::s_tag) { - helpString.emplace_back(ControlBoardMsgs_isJointBrakedRPC_helper::s_prototype); - } if (functionName == ControlBoardMsgs_setManualBrakeActiveRPC_helper::s_tag) { helpString.emplace_back(ControlBoardMsgs_setManualBrakeActiveRPC_helper::s_prototype); } if (functionName == ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::s_tag) { helpString.emplace_back(ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::s_prototype); } + if (functionName == ControlBoardMsgs_isJointBrakedRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_isJointBrakedRPC_helper::s_prototype); + } if (functionName == ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::s_tag) { helpString.emplace_back(ControlBoardMsgs_getAutoBrakeEnabledRPC_helper::s_prototype); } @@ -4846,6 +8698,18 @@ std::vector ControlBoardMsgs::help(const std::string& functionName) if (functionName == ControlBoardMsgs_getRefVelocityGroupRPC_helper::s_tag) { helpString.emplace_back(ControlBoardMsgs_getRefVelocityGroupRPC_helper::s_prototype); } + if (functionName == ControlBoardMsgs_setPosLimitsRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_setPosLimitsRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_setVelLimitsRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_setVelLimitsRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_getPosLimitsRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_getPosLimitsRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_getVelLimitsRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_getVelLimitsRPC_helper::s_prototype); + } if (functionName == ControlBoardMsgs_enablePidRPC_helper::s_tag) { helpString.emplace_back(ControlBoardMsgs_enablePidRPC_helper::s_prototype); } @@ -4855,15 +8719,51 @@ std::vector ControlBoardMsgs::help(const std::string& functionName) if (functionName == ControlBoardMsgs_resetPidRPC_helper::s_tag) { helpString.emplace_back(ControlBoardMsgs_resetPidRPC_helper::s_prototype); } - if (functionName == ControlBoardMsgs_isPidEnabledRPC_helper::s_tag) { - helpString.emplace_back(ControlBoardMsgs_isPidEnabledRPC_helper::s_prototype); - } if (functionName == ControlBoardMsgs_setPidRPC_helper::s_tag) { helpString.emplace_back(ControlBoardMsgs_setPidRPC_helper::s_prototype); } if (functionName == ControlBoardMsgs_setPidsRPC_helper::s_tag) { helpString.emplace_back(ControlBoardMsgs_setPidsRPC_helper::s_prototype); } + if (functionName == ControlBoardMsgs_setPidReferenceRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_setPidReferenceRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_setPidReferencesRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_setPidReferencesRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_setPidErrorLimitRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_setPidErrorLimitRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_setPidErrorLimitsRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_setPidErrorLimitsRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_isPidEnabledRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_isPidEnabledRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_getPidErrorRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_getPidErrorRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_getPidErrorsRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_getPidErrorsRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_getPidReferenceRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_getPidReferenceRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_getPidReferencesRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_getPidReferencesRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_getPidErrorLimitRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_getPidErrorLimitRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_getPidErrorLimitsRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_getPidErrorLimitsRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_getPidOutputRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_getPidOutputRPC_helper::s_prototype); + } + if (functionName == ControlBoardMsgs_getPidOutputsRPC_helper::s_tag) { + helpString.emplace_back(ControlBoardMsgs_getPidOutputsRPC_helper::s_prototype); + } if (functionName == ControlBoardMsgs_getPidRPC_helper::s_tag) { helpString.emplace_back(ControlBoardMsgs_getPidRPC_helper::s_prototype); } @@ -4934,8 +8834,8 @@ bool ControlBoardMsgs::read(yarp::os::ConnectionReader& connection) reader.accept(); return true; } - if (tag == ControlBoardMsgs_isJointBrakedRPC_helper::s_tag) { - ControlBoardMsgs_isJointBrakedRPC_helper helper; + if (tag == ControlBoardMsgs_setManualBrakeActiveRPC_helper::s_tag) { + ControlBoardMsgs_setManualBrakeActiveRPC_helper helper; if (!helper.cmd.readArgs(reader)) { return false; } @@ -4949,8 +8849,8 @@ bool ControlBoardMsgs::read(yarp::os::ConnectionReader& connection) reader.accept(); return true; } - if (tag == ControlBoardMsgs_setManualBrakeActiveRPC_helper::s_tag) { - ControlBoardMsgs_setManualBrakeActiveRPC_helper helper; + if (tag == ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::s_tag) { + ControlBoardMsgs_setAutoBrakeEnabledRPC_helper helper; if (!helper.cmd.readArgs(reader)) { return false; } @@ -4964,8 +8864,8 @@ bool ControlBoardMsgs::read(yarp::os::ConnectionReader& connection) reader.accept(); return true; } - if (tag == ControlBoardMsgs_setAutoBrakeEnabledRPC_helper::s_tag) { - ControlBoardMsgs_setAutoBrakeEnabledRPC_helper helper; + if (tag == ControlBoardMsgs_isJointBrakedRPC_helper::s_tag) { + ControlBoardMsgs_isJointBrakedRPC_helper helper; if (!helper.cmd.readArgs(reader)) { return false; } @@ -5054,6 +8954,66 @@ bool ControlBoardMsgs::read(yarp::os::ConnectionReader& connection) reader.accept(); return true; } + if (tag == ControlBoardMsgs_setPosLimitsRPC_helper::s_tag) { + ControlBoardMsgs_setPosLimitsRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_setVelLimitsRPC_helper::s_tag) { + ControlBoardMsgs_setVelLimitsRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_getPosLimitsRPC_helper::s_tag) { + ControlBoardMsgs_getPosLimitsRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_getVelLimitsRPC_helper::s_tag) { + ControlBoardMsgs_getVelLimitsRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } if (tag == ControlBoardMsgs_enablePidRPC_helper::s_tag) { ControlBoardMsgs_enablePidRPC_helper helper; if (!helper.cmd.readArgs(reader)) { @@ -5099,6 +9059,96 @@ bool ControlBoardMsgs::read(yarp::os::ConnectionReader& connection) reader.accept(); return true; } + if (tag == ControlBoardMsgs_setPidRPC_helper::s_tag) { + ControlBoardMsgs_setPidRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_setPidsRPC_helper::s_tag) { + ControlBoardMsgs_setPidsRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_setPidReferenceRPC_helper::s_tag) { + ControlBoardMsgs_setPidReferenceRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_setPidReferencesRPC_helper::s_tag) { + ControlBoardMsgs_setPidReferencesRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_setPidErrorLimitRPC_helper::s_tag) { + ControlBoardMsgs_setPidErrorLimitRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_setPidErrorLimitsRPC_helper::s_tag) { + ControlBoardMsgs_setPidErrorLimitsRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } if (tag == ControlBoardMsgs_isPidEnabledRPC_helper::s_tag) { ControlBoardMsgs_isPidEnabledRPC_helper helper; if (!helper.cmd.readArgs(reader)) { @@ -5114,8 +9164,8 @@ bool ControlBoardMsgs::read(yarp::os::ConnectionReader& connection) reader.accept(); return true; } - if (tag == ControlBoardMsgs_setPidRPC_helper::s_tag) { - ControlBoardMsgs_setPidRPC_helper helper; + if (tag == ControlBoardMsgs_getPidErrorRPC_helper::s_tag) { + ControlBoardMsgs_getPidErrorRPC_helper helper; if (!helper.cmd.readArgs(reader)) { return false; } @@ -5129,8 +9179,98 @@ bool ControlBoardMsgs::read(yarp::os::ConnectionReader& connection) reader.accept(); return true; } - if (tag == ControlBoardMsgs_setPidsRPC_helper::s_tag) { - ControlBoardMsgs_setPidsRPC_helper helper; + if (tag == ControlBoardMsgs_getPidErrorsRPC_helper::s_tag) { + ControlBoardMsgs_getPidErrorsRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_getPidReferenceRPC_helper::s_tag) { + ControlBoardMsgs_getPidReferenceRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_getPidReferencesRPC_helper::s_tag) { + ControlBoardMsgs_getPidReferencesRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_getPidErrorLimitRPC_helper::s_tag) { + ControlBoardMsgs_getPidErrorLimitRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_getPidErrorLimitsRPC_helper::s_tag) { + ControlBoardMsgs_getPidErrorLimitsRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_getPidOutputRPC_helper::s_tag) { + ControlBoardMsgs_getPidOutputRPC_helper helper; + if (!helper.cmd.readArgs(reader)) { + return false; + } + + helper.call(this); + + yarp::os::idl::WireWriter writer(reader); + if (!helper.reply.write(writer)) { + return false; + } + reader.accept(); + return true; + } + if (tag == ControlBoardMsgs_getPidOutputsRPC_helper::s_tag) { + ControlBoardMsgs_getPidOutputsRPC_helper helper; if (!helper.cmd.readArgs(reader)) { return false; } diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs.h b/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs.h index 47e7ec3fa76..e40aa6a2e4e 100644 --- a/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs.h +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs.h @@ -16,15 +16,25 @@ #include #include #include -#include -#include -#include #include +#include +#include +#include +#include #include #include #include #include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include #include #include @@ -44,12 +54,12 @@ class ControlBoardMsgs : ControlBoardMsgs(); //Service methods - virtual return_isJointBraked isJointBrakedRPC(const std::int32_t j) const; - virtual yarp::dev::ReturnValue setManualBrakeActiveRPC(const std::int32_t j, const bool active); virtual yarp::dev::ReturnValue setAutoBrakeEnabledRPC(const std::int32_t j, const bool enabled); + virtual return_isJointBraked isJointBrakedRPC(const std::int32_t j) const; + virtual return_getAutoBrakeEnabled getAutoBrakeEnabledRPC(const std::int32_t j) const; virtual return_getAxes getAxesRPC() const; @@ -60,18 +70,50 @@ class ControlBoardMsgs : virtual return_getRefVelocityGroup getRefVelocityGroupRPC(const std::vector& j) const; + virtual yarp::dev::ReturnValue setPosLimitsRPC(const std::int16_t j, const double min, const double max); + + virtual yarp::dev::ReturnValue setVelLimitsRPC(const std::int16_t j, const double min, const double max); + + virtual return_getPosLimits getPosLimitsRPC(const std::int16_t j); + + virtual return_getVelLimits getVelLimitsRPC(const std::int16_t j); + virtual yarp::dev::ReturnValue enablePidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); virtual yarp::dev::ReturnValue disablePidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); virtual yarp::dev::ReturnValue resetPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); - virtual return_isPidEnabled isPidEnabledRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); - virtual yarp::dev::ReturnValue setPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const yarp::dev::Pid& pid); virtual yarp::dev::ReturnValue setPidsRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& pids); + virtual yarp::dev::ReturnValue setPidReferenceRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double ref); + + virtual yarp::dev::ReturnValue setPidReferencesRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& refs); + + virtual yarp::dev::ReturnValue setPidErrorLimitRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double limit); + + virtual yarp::dev::ReturnValue setPidErrorLimitsRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& limits); + + virtual return_isPidEnabled isPidEnabledRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + virtual return_getPidError getPidErrorRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + virtual return_getPidErrors getPidErrorsRPC(const yarp::dev::PidControlTypeEnum pidtype); + + virtual return_getPidReference getPidReferenceRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + virtual return_getPidReferences getPidReferencesRPC(const yarp::dev::PidControlTypeEnum pidtype); + + virtual return_getPidErrorLimit getPidErrorLimitRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + virtual return_getPidErrorLimits getPidErrorLimitsRPC(const yarp::dev::PidControlTypeEnum pidtype); + + virtual return_getPidOutput getPidOutputRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); + + virtual return_getPidOutputs getPidOutputsRPC(const yarp::dev::PidControlTypeEnum pidtype); + virtual return_getPid getPidRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j); virtual return_getPids getPidsRPC(const yarp::dev::PidControlTypeEnum pidtype); diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs_index.txt b/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs_index.txt index e68cfb826ee..a6da035b865 100644 --- a/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs_index.txt +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/ControlBoardMsgs_index.txt @@ -24,5 +24,25 @@ return_getPidFeedforward.h return_getPidFeedforward.cpp return_isPidEnabled.h return_isPidEnabled.cpp +return_getPidError.h +return_getPidError.cpp +return_getPidErrors.h +return_getPidErrors.cpp +return_getPidReference.h +return_getPidReference.cpp +return_getPidReferences.h +return_getPidReferences.cpp +return_getPidErrorLimit.h +return_getPidErrorLimit.cpp +return_getPidErrorLimits.h +return_getPidErrorLimits.cpp +return_getPidOutput.h +return_getPidOutput.cpp +return_getPidOutputs.h +return_getPidOutputs.cpp +return_getPosLimits.h +return_getPosLimits.cpp +return_getVelLimits.h +return_getVelLimits.cpp ControlBoardMsgs.h ControlBoardMsgs.cpp diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidError.cpp b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidError.cpp new file mode 100644 index 00000000000..c5366ccd94d --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidError.cpp @@ -0,0 +1,178 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#include + +// Constructor with field values +return_getPidError::return_getPidError(const yarp::dev::ReturnValue& ret, + const double err) : + WirePortable(), + ret(ret), + err(err) +{ +} + +// Read structure on a Wire +bool return_getPidError::read(yarp::os::idl::WireReader& reader) +{ + if (!nested_read_ret(reader)) { + return false; + } + if (!read_err(reader)) { + return false; + } + if (reader.isError()) { + return false; + } + return true; +} + +// Read structure on a Connection +bool return_getPidError::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader(2)) { + return false; + } + if (!read(reader)) { + return false; + } + return true; +} + +// Write structure on a Wire +bool return_getPidError::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!nested_write_ret(writer)) { + return false; + } + if (!write_err(writer)) { + return false; + } + if (writer.isError()) { + return false; + } + return true; +} + +// Write structure on a Connection +bool return_getPidError::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(2)) { + return false; + } + if (!write(writer)) { + return false; + } + return true; +} + +// Convert to a printable string +std::string return_getPidError::toString() const +{ + yarp::os::Bottle b; + if (!yarp::os::Portable::copyPortable(*this, b)) { + return {}; + } + return b.toString(); +} + +// read ret field +bool return_getPidError::read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write ret field +bool return_getPidError::write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.write(ret)) { + return false; + } + return true; +} + +// read (nested) ret field +bool return_getPidError::nested_read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) ret field +bool return_getPidError::nested_write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeNested(ret)) { + return false; + } + return true; +} + +// read err field +bool return_getPidError::read_err(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(err)) { + reader.fail(); + return false; + } + return true; +} + +// write err field +bool return_getPidError::write_err(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(err)) { + return false; + } + return true; +} + +// read (nested) err field +bool return_getPidError::nested_read_err(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(err)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) err field +bool return_getPidError::nested_write_err(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(err)) { + return false; + } + return true; +} diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidError.h b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidError.h new file mode 100644 index 00000000000..2058d8d66ee --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidError.h @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#ifndef YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERROR_H +#define YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERROR_H + +#include +#include +#include + +class return_getPidError : + public yarp::os::idl::WirePortable +{ +public: + // Fields + yarp::dev::ReturnValue ret{}; + double err{0.0}; + + // Default constructor + return_getPidError() = default; + + // Constructor with field values + return_getPidError(const yarp::dev::ReturnValue& ret, + const double err); + + // Read structure on a Wire + bool read(yarp::os::idl::WireReader& reader) override; + + // Read structure on a Connection + bool read(yarp::os::ConnectionReader& connection) override; + + // Write structure on a Wire + bool write(const yarp::os::idl::WireWriter& writer) const override; + + // Write structure on a Connection + bool write(yarp::os::ConnectionWriter& connection) const override; + + // Convert to a printable string + std::string toString() const; + + // If you want to serialize this class without nesting, use this helper + typedef yarp::os::idl::Unwrapped unwrapped; + +private: + // read/write ret field + bool read_ret(yarp::os::idl::WireReader& reader); + bool write_ret(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_ret(yarp::os::idl::WireReader& reader); + bool nested_write_ret(const yarp::os::idl::WireWriter& writer) const; + + // read/write err field + bool read_err(yarp::os::idl::WireReader& reader); + bool write_err(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_err(yarp::os::idl::WireReader& reader); + bool nested_write_err(const yarp::os::idl::WireWriter& writer) const; +}; + +#endif // YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERROR_H diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimit.cpp b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimit.cpp new file mode 100644 index 00000000000..caeebc0c4a6 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimit.cpp @@ -0,0 +1,178 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#include + +// Constructor with field values +return_getPidErrorLimit::return_getPidErrorLimit(const yarp::dev::ReturnValue& ret, + const double lim) : + WirePortable(), + ret(ret), + lim(lim) +{ +} + +// Read structure on a Wire +bool return_getPidErrorLimit::read(yarp::os::idl::WireReader& reader) +{ + if (!nested_read_ret(reader)) { + return false; + } + if (!read_lim(reader)) { + return false; + } + if (reader.isError()) { + return false; + } + return true; +} + +// Read structure on a Connection +bool return_getPidErrorLimit::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader(2)) { + return false; + } + if (!read(reader)) { + return false; + } + return true; +} + +// Write structure on a Wire +bool return_getPidErrorLimit::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!nested_write_ret(writer)) { + return false; + } + if (!write_lim(writer)) { + return false; + } + if (writer.isError()) { + return false; + } + return true; +} + +// Write structure on a Connection +bool return_getPidErrorLimit::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(2)) { + return false; + } + if (!write(writer)) { + return false; + } + return true; +} + +// Convert to a printable string +std::string return_getPidErrorLimit::toString() const +{ + yarp::os::Bottle b; + if (!yarp::os::Portable::copyPortable(*this, b)) { + return {}; + } + return b.toString(); +} + +// read ret field +bool return_getPidErrorLimit::read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write ret field +bool return_getPidErrorLimit::write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.write(ret)) { + return false; + } + return true; +} + +// read (nested) ret field +bool return_getPidErrorLimit::nested_read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) ret field +bool return_getPidErrorLimit::nested_write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeNested(ret)) { + return false; + } + return true; +} + +// read lim field +bool return_getPidErrorLimit::read_lim(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(lim)) { + reader.fail(); + return false; + } + return true; +} + +// write lim field +bool return_getPidErrorLimit::write_lim(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(lim)) { + return false; + } + return true; +} + +// read (nested) lim field +bool return_getPidErrorLimit::nested_read_lim(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(lim)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) lim field +bool return_getPidErrorLimit::nested_write_lim(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(lim)) { + return false; + } + return true; +} diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimit.h b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimit.h new file mode 100644 index 00000000000..c70049c4550 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimit.h @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#ifndef YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERRORLIMIT_H +#define YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERRORLIMIT_H + +#include +#include +#include + +class return_getPidErrorLimit : + public yarp::os::idl::WirePortable +{ +public: + // Fields + yarp::dev::ReturnValue ret{}; + double lim{0.0}; + + // Default constructor + return_getPidErrorLimit() = default; + + // Constructor with field values + return_getPidErrorLimit(const yarp::dev::ReturnValue& ret, + const double lim); + + // Read structure on a Wire + bool read(yarp::os::idl::WireReader& reader) override; + + // Read structure on a Connection + bool read(yarp::os::ConnectionReader& connection) override; + + // Write structure on a Wire + bool write(const yarp::os::idl::WireWriter& writer) const override; + + // Write structure on a Connection + bool write(yarp::os::ConnectionWriter& connection) const override; + + // Convert to a printable string + std::string toString() const; + + // If you want to serialize this class without nesting, use this helper + typedef yarp::os::idl::Unwrapped unwrapped; + +private: + // read/write ret field + bool read_ret(yarp::os::idl::WireReader& reader); + bool write_ret(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_ret(yarp::os::idl::WireReader& reader); + bool nested_write_ret(const yarp::os::idl::WireWriter& writer) const; + + // read/write lim field + bool read_lim(yarp::os::idl::WireReader& reader); + bool write_lim(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_lim(yarp::os::idl::WireReader& reader); + bool nested_write_lim(const yarp::os::idl::WireWriter& writer) const; +}; + +#endif // YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERRORLIMIT_H diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimits.cpp b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimits.cpp new file mode 100644 index 00000000000..054eb4c4d92 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimits.cpp @@ -0,0 +1,212 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#include + +// Constructor with field values +return_getPidErrorLimits::return_getPidErrorLimits(const yarp::dev::ReturnValue& ret, + const std::vector& lims) : + WirePortable(), + ret(ret), + lims(lims) +{ +} + +// Read structure on a Wire +bool return_getPidErrorLimits::read(yarp::os::idl::WireReader& reader) +{ + if (!nested_read_ret(reader)) { + return false; + } + if (!read_lims(reader)) { + return false; + } + if (reader.isError()) { + return false; + } + return true; +} + +// Read structure on a Connection +bool return_getPidErrorLimits::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader(2)) { + return false; + } + if (!read(reader)) { + return false; + } + return true; +} + +// Write structure on a Wire +bool return_getPidErrorLimits::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!nested_write_ret(writer)) { + return false; + } + if (!write_lims(writer)) { + return false; + } + if (writer.isError()) { + return false; + } + return true; +} + +// Write structure on a Connection +bool return_getPidErrorLimits::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(2)) { + return false; + } + if (!write(writer)) { + return false; + } + return true; +} + +// Convert to a printable string +std::string return_getPidErrorLimits::toString() const +{ + yarp::os::Bottle b; + if (!yarp::os::Portable::copyPortable(*this, b)) { + return {}; + } + return b.toString(); +} + +// read ret field +bool return_getPidErrorLimits::read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write ret field +bool return_getPidErrorLimits::write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.write(ret)) { + return false; + } + return true; +} + +// read (nested) ret field +bool return_getPidErrorLimits::nested_read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) ret field +bool return_getPidErrorLimits::nested_write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeNested(ret)) { + return false; + } + return true; +} + +// read lims field +bool return_getPidErrorLimits::read_lims(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_FLOAT64) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + lims.resize(_csize); + if (_csize != 0 && !reader.readBlock(reinterpret_cast(lims.data()), lims.size() * sizeof(double))) { + return false; + } + reader.readListEnd(); + return true; +} + +// write lims field +bool return_getPidErrorLimits::write_lims(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeListBegin(BOTTLE_TAG_FLOAT64, lims.size())) { + return false; + } + if (!writer.writeBlock(reinterpret_cast(lims.data()), lims.size() * sizeof(double))) { + return false; + } + if (!writer.writeListEnd()) { + return false; + } + return true; +} + +// read (nested) lims field +bool return_getPidErrorLimits::nested_read_lims(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_FLOAT64) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + lims.resize(_csize); + if (_csize != 0 && !reader.readBlock(reinterpret_cast(lims.data()), lims.size() * sizeof(double))) { + return false; + } + reader.readListEnd(); + return true; +} + +// write (nested) lims field +bool return_getPidErrorLimits::nested_write_lims(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeListBegin(BOTTLE_TAG_FLOAT64, lims.size())) { + return false; + } + if (!writer.writeBlock(reinterpret_cast(lims.data()), lims.size() * sizeof(double))) { + return false; + } + if (!writer.writeListEnd()) { + return false; + } + return true; +} diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimits.h b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimits.h new file mode 100644 index 00000000000..870a4faa043 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrorLimits.h @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#ifndef YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERRORLIMITS_H +#define YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERRORLIMITS_H + +#include +#include +#include + +class return_getPidErrorLimits : + public yarp::os::idl::WirePortable +{ +public: + // Fields + yarp::dev::ReturnValue ret{}; + std::vector lims{}; + + // Default constructor + return_getPidErrorLimits() = default; + + // Constructor with field values + return_getPidErrorLimits(const yarp::dev::ReturnValue& ret, + const std::vector& lims); + + // Read structure on a Wire + bool read(yarp::os::idl::WireReader& reader) override; + + // Read structure on a Connection + bool read(yarp::os::ConnectionReader& connection) override; + + // Write structure on a Wire + bool write(const yarp::os::idl::WireWriter& writer) const override; + + // Write structure on a Connection + bool write(yarp::os::ConnectionWriter& connection) const override; + + // Convert to a printable string + std::string toString() const; + + // If you want to serialize this class without nesting, use this helper + typedef yarp::os::idl::Unwrapped unwrapped; + +private: + // read/write ret field + bool read_ret(yarp::os::idl::WireReader& reader); + bool write_ret(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_ret(yarp::os::idl::WireReader& reader); + bool nested_write_ret(const yarp::os::idl::WireWriter& writer) const; + + // read/write lims field + bool read_lims(yarp::os::idl::WireReader& reader); + bool write_lims(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_lims(yarp::os::idl::WireReader& reader); + bool nested_write_lims(const yarp::os::idl::WireWriter& writer) const; +}; + +#endif // YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERRORLIMITS_H diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrors.cpp b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrors.cpp new file mode 100644 index 00000000000..83b1e941a5e --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrors.cpp @@ -0,0 +1,212 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#include + +// Constructor with field values +return_getPidErrors::return_getPidErrors(const yarp::dev::ReturnValue& ret, + const std::vector& errs) : + WirePortable(), + ret(ret), + errs(errs) +{ +} + +// Read structure on a Wire +bool return_getPidErrors::read(yarp::os::idl::WireReader& reader) +{ + if (!nested_read_ret(reader)) { + return false; + } + if (!read_errs(reader)) { + return false; + } + if (reader.isError()) { + return false; + } + return true; +} + +// Read structure on a Connection +bool return_getPidErrors::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader(2)) { + return false; + } + if (!read(reader)) { + return false; + } + return true; +} + +// Write structure on a Wire +bool return_getPidErrors::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!nested_write_ret(writer)) { + return false; + } + if (!write_errs(writer)) { + return false; + } + if (writer.isError()) { + return false; + } + return true; +} + +// Write structure on a Connection +bool return_getPidErrors::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(2)) { + return false; + } + if (!write(writer)) { + return false; + } + return true; +} + +// Convert to a printable string +std::string return_getPidErrors::toString() const +{ + yarp::os::Bottle b; + if (!yarp::os::Portable::copyPortable(*this, b)) { + return {}; + } + return b.toString(); +} + +// read ret field +bool return_getPidErrors::read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write ret field +bool return_getPidErrors::write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.write(ret)) { + return false; + } + return true; +} + +// read (nested) ret field +bool return_getPidErrors::nested_read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) ret field +bool return_getPidErrors::nested_write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeNested(ret)) { + return false; + } + return true; +} + +// read errs field +bool return_getPidErrors::read_errs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_FLOAT64) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + errs.resize(_csize); + if (_csize != 0 && !reader.readBlock(reinterpret_cast(errs.data()), errs.size() * sizeof(double))) { + return false; + } + reader.readListEnd(); + return true; +} + +// write errs field +bool return_getPidErrors::write_errs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeListBegin(BOTTLE_TAG_FLOAT64, errs.size())) { + return false; + } + if (!writer.writeBlock(reinterpret_cast(errs.data()), errs.size() * sizeof(double))) { + return false; + } + if (!writer.writeListEnd()) { + return false; + } + return true; +} + +// read (nested) errs field +bool return_getPidErrors::nested_read_errs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_FLOAT64) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + errs.resize(_csize); + if (_csize != 0 && !reader.readBlock(reinterpret_cast(errs.data()), errs.size() * sizeof(double))) { + return false; + } + reader.readListEnd(); + return true; +} + +// write (nested) errs field +bool return_getPidErrors::nested_write_errs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeListBegin(BOTTLE_TAG_FLOAT64, errs.size())) { + return false; + } + if (!writer.writeBlock(reinterpret_cast(errs.data()), errs.size() * sizeof(double))) { + return false; + } + if (!writer.writeListEnd()) { + return false; + } + return true; +} diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrors.h b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrors.h new file mode 100644 index 00000000000..64532d0384d --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidErrors.h @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#ifndef YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERRORS_H +#define YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERRORS_H + +#include +#include +#include + +class return_getPidErrors : + public yarp::os::idl::WirePortable +{ +public: + // Fields + yarp::dev::ReturnValue ret{}; + std::vector errs{}; + + // Default constructor + return_getPidErrors() = default; + + // Constructor with field values + return_getPidErrors(const yarp::dev::ReturnValue& ret, + const std::vector& errs); + + // Read structure on a Wire + bool read(yarp::os::idl::WireReader& reader) override; + + // Read structure on a Connection + bool read(yarp::os::ConnectionReader& connection) override; + + // Write structure on a Wire + bool write(const yarp::os::idl::WireWriter& writer) const override; + + // Write structure on a Connection + bool write(yarp::os::ConnectionWriter& connection) const override; + + // Convert to a printable string + std::string toString() const; + + // If you want to serialize this class without nesting, use this helper + typedef yarp::os::idl::Unwrapped unwrapped; + +private: + // read/write ret field + bool read_ret(yarp::os::idl::WireReader& reader); + bool write_ret(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_ret(yarp::os::idl::WireReader& reader); + bool nested_write_ret(const yarp::os::idl::WireWriter& writer) const; + + // read/write errs field + bool read_errs(yarp::os::idl::WireReader& reader); + bool write_errs(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_errs(yarp::os::idl::WireReader& reader); + bool nested_write_errs(const yarp::os::idl::WireWriter& writer) const; +}; + +#endif // YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDERRORS_H diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutput.cpp b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutput.cpp new file mode 100644 index 00000000000..93aa818ba47 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutput.cpp @@ -0,0 +1,178 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#include + +// Constructor with field values +return_getPidOutput::return_getPidOutput(const yarp::dev::ReturnValue& ret, + const double out) : + WirePortable(), + ret(ret), + out(out) +{ +} + +// Read structure on a Wire +bool return_getPidOutput::read(yarp::os::idl::WireReader& reader) +{ + if (!nested_read_ret(reader)) { + return false; + } + if (!read_out(reader)) { + return false; + } + if (reader.isError()) { + return false; + } + return true; +} + +// Read structure on a Connection +bool return_getPidOutput::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader(2)) { + return false; + } + if (!read(reader)) { + return false; + } + return true; +} + +// Write structure on a Wire +bool return_getPidOutput::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!nested_write_ret(writer)) { + return false; + } + if (!write_out(writer)) { + return false; + } + if (writer.isError()) { + return false; + } + return true; +} + +// Write structure on a Connection +bool return_getPidOutput::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(2)) { + return false; + } + if (!write(writer)) { + return false; + } + return true; +} + +// Convert to a printable string +std::string return_getPidOutput::toString() const +{ + yarp::os::Bottle b; + if (!yarp::os::Portable::copyPortable(*this, b)) { + return {}; + } + return b.toString(); +} + +// read ret field +bool return_getPidOutput::read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write ret field +bool return_getPidOutput::write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.write(ret)) { + return false; + } + return true; +} + +// read (nested) ret field +bool return_getPidOutput::nested_read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) ret field +bool return_getPidOutput::nested_write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeNested(ret)) { + return false; + } + return true; +} + +// read out field +bool return_getPidOutput::read_out(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(out)) { + reader.fail(); + return false; + } + return true; +} + +// write out field +bool return_getPidOutput::write_out(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(out)) { + return false; + } + return true; +} + +// read (nested) out field +bool return_getPidOutput::nested_read_out(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(out)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) out field +bool return_getPidOutput::nested_write_out(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(out)) { + return false; + } + return true; +} diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutput.h b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutput.h new file mode 100644 index 00000000000..19e2edf1681 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutput.h @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#ifndef YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDOUTPUT_H +#define YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDOUTPUT_H + +#include +#include +#include + +class return_getPidOutput : + public yarp::os::idl::WirePortable +{ +public: + // Fields + yarp::dev::ReturnValue ret{}; + double out{0.0}; + + // Default constructor + return_getPidOutput() = default; + + // Constructor with field values + return_getPidOutput(const yarp::dev::ReturnValue& ret, + const double out); + + // Read structure on a Wire + bool read(yarp::os::idl::WireReader& reader) override; + + // Read structure on a Connection + bool read(yarp::os::ConnectionReader& connection) override; + + // Write structure on a Wire + bool write(const yarp::os::idl::WireWriter& writer) const override; + + // Write structure on a Connection + bool write(yarp::os::ConnectionWriter& connection) const override; + + // Convert to a printable string + std::string toString() const; + + // If you want to serialize this class without nesting, use this helper + typedef yarp::os::idl::Unwrapped unwrapped; + +private: + // read/write ret field + bool read_ret(yarp::os::idl::WireReader& reader); + bool write_ret(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_ret(yarp::os::idl::WireReader& reader); + bool nested_write_ret(const yarp::os::idl::WireWriter& writer) const; + + // read/write out field + bool read_out(yarp::os::idl::WireReader& reader); + bool write_out(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_out(yarp::os::idl::WireReader& reader); + bool nested_write_out(const yarp::os::idl::WireWriter& writer) const; +}; + +#endif // YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDOUTPUT_H diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutputs.cpp b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutputs.cpp new file mode 100644 index 00000000000..213f603d605 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutputs.cpp @@ -0,0 +1,212 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#include + +// Constructor with field values +return_getPidOutputs::return_getPidOutputs(const yarp::dev::ReturnValue& ret, + const std::vector& outs) : + WirePortable(), + ret(ret), + outs(outs) +{ +} + +// Read structure on a Wire +bool return_getPidOutputs::read(yarp::os::idl::WireReader& reader) +{ + if (!nested_read_ret(reader)) { + return false; + } + if (!read_outs(reader)) { + return false; + } + if (reader.isError()) { + return false; + } + return true; +} + +// Read structure on a Connection +bool return_getPidOutputs::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader(2)) { + return false; + } + if (!read(reader)) { + return false; + } + return true; +} + +// Write structure on a Wire +bool return_getPidOutputs::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!nested_write_ret(writer)) { + return false; + } + if (!write_outs(writer)) { + return false; + } + if (writer.isError()) { + return false; + } + return true; +} + +// Write structure on a Connection +bool return_getPidOutputs::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(2)) { + return false; + } + if (!write(writer)) { + return false; + } + return true; +} + +// Convert to a printable string +std::string return_getPidOutputs::toString() const +{ + yarp::os::Bottle b; + if (!yarp::os::Portable::copyPortable(*this, b)) { + return {}; + } + return b.toString(); +} + +// read ret field +bool return_getPidOutputs::read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write ret field +bool return_getPidOutputs::write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.write(ret)) { + return false; + } + return true; +} + +// read (nested) ret field +bool return_getPidOutputs::nested_read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) ret field +bool return_getPidOutputs::nested_write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeNested(ret)) { + return false; + } + return true; +} + +// read outs field +bool return_getPidOutputs::read_outs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_FLOAT64) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + outs.resize(_csize); + if (_csize != 0 && !reader.readBlock(reinterpret_cast(outs.data()), outs.size() * sizeof(double))) { + return false; + } + reader.readListEnd(); + return true; +} + +// write outs field +bool return_getPidOutputs::write_outs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeListBegin(BOTTLE_TAG_FLOAT64, outs.size())) { + return false; + } + if (!writer.writeBlock(reinterpret_cast(outs.data()), outs.size() * sizeof(double))) { + return false; + } + if (!writer.writeListEnd()) { + return false; + } + return true; +} + +// read (nested) outs field +bool return_getPidOutputs::nested_read_outs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_FLOAT64) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + outs.resize(_csize); + if (_csize != 0 && !reader.readBlock(reinterpret_cast(outs.data()), outs.size() * sizeof(double))) { + return false; + } + reader.readListEnd(); + return true; +} + +// write (nested) outs field +bool return_getPidOutputs::nested_write_outs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeListBegin(BOTTLE_TAG_FLOAT64, outs.size())) { + return false; + } + if (!writer.writeBlock(reinterpret_cast(outs.data()), outs.size() * sizeof(double))) { + return false; + } + if (!writer.writeListEnd()) { + return false; + } + return true; +} diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutputs.h b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutputs.h new file mode 100644 index 00000000000..ebaa081ef92 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidOutputs.h @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#ifndef YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDOUTPUTS_H +#define YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDOUTPUTS_H + +#include +#include +#include + +class return_getPidOutputs : + public yarp::os::idl::WirePortable +{ +public: + // Fields + yarp::dev::ReturnValue ret{}; + std::vector outs{}; + + // Default constructor + return_getPidOutputs() = default; + + // Constructor with field values + return_getPidOutputs(const yarp::dev::ReturnValue& ret, + const std::vector& outs); + + // Read structure on a Wire + bool read(yarp::os::idl::WireReader& reader) override; + + // Read structure on a Connection + bool read(yarp::os::ConnectionReader& connection) override; + + // Write structure on a Wire + bool write(const yarp::os::idl::WireWriter& writer) const override; + + // Write structure on a Connection + bool write(yarp::os::ConnectionWriter& connection) const override; + + // Convert to a printable string + std::string toString() const; + + // If you want to serialize this class without nesting, use this helper + typedef yarp::os::idl::Unwrapped unwrapped; + +private: + // read/write ret field + bool read_ret(yarp::os::idl::WireReader& reader); + bool write_ret(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_ret(yarp::os::idl::WireReader& reader); + bool nested_write_ret(const yarp::os::idl::WireWriter& writer) const; + + // read/write outs field + bool read_outs(yarp::os::idl::WireReader& reader); + bool write_outs(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_outs(yarp::os::idl::WireReader& reader); + bool nested_write_outs(const yarp::os::idl::WireWriter& writer) const; +}; + +#endif // YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDOUTPUTS_H diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReference.cpp b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReference.cpp new file mode 100644 index 00000000000..1342c35d8de --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReference.cpp @@ -0,0 +1,178 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#include + +// Constructor with field values +return_getPidReference::return_getPidReference(const yarp::dev::ReturnValue& ret, + const double ref) : + WirePortable(), + ret(ret), + ref(ref) +{ +} + +// Read structure on a Wire +bool return_getPidReference::read(yarp::os::idl::WireReader& reader) +{ + if (!nested_read_ret(reader)) { + return false; + } + if (!read_ref(reader)) { + return false; + } + if (reader.isError()) { + return false; + } + return true; +} + +// Read structure on a Connection +bool return_getPidReference::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader(2)) { + return false; + } + if (!read(reader)) { + return false; + } + return true; +} + +// Write structure on a Wire +bool return_getPidReference::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!nested_write_ret(writer)) { + return false; + } + if (!write_ref(writer)) { + return false; + } + if (writer.isError()) { + return false; + } + return true; +} + +// Write structure on a Connection +bool return_getPidReference::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(2)) { + return false; + } + if (!write(writer)) { + return false; + } + return true; +} + +// Convert to a printable string +std::string return_getPidReference::toString() const +{ + yarp::os::Bottle b; + if (!yarp::os::Portable::copyPortable(*this, b)) { + return {}; + } + return b.toString(); +} + +// read ret field +bool return_getPidReference::read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write ret field +bool return_getPidReference::write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.write(ret)) { + return false; + } + return true; +} + +// read (nested) ret field +bool return_getPidReference::nested_read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) ret field +bool return_getPidReference::nested_write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeNested(ret)) { + return false; + } + return true; +} + +// read ref field +bool return_getPidReference::read_ref(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(ref)) { + reader.fail(); + return false; + } + return true; +} + +// write ref field +bool return_getPidReference::write_ref(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(ref)) { + return false; + } + return true; +} + +// read (nested) ref field +bool return_getPidReference::nested_read_ref(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(ref)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) ref field +bool return_getPidReference::nested_write_ref(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(ref)) { + return false; + } + return true; +} diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReference.h b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReference.h new file mode 100644 index 00000000000..c98b65eb30d --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReference.h @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#ifndef YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDREFERENCE_H +#define YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDREFERENCE_H + +#include +#include +#include + +class return_getPidReference : + public yarp::os::idl::WirePortable +{ +public: + // Fields + yarp::dev::ReturnValue ret{}; + double ref{0.0}; + + // Default constructor + return_getPidReference() = default; + + // Constructor with field values + return_getPidReference(const yarp::dev::ReturnValue& ret, + const double ref); + + // Read structure on a Wire + bool read(yarp::os::idl::WireReader& reader) override; + + // Read structure on a Connection + bool read(yarp::os::ConnectionReader& connection) override; + + // Write structure on a Wire + bool write(const yarp::os::idl::WireWriter& writer) const override; + + // Write structure on a Connection + bool write(yarp::os::ConnectionWriter& connection) const override; + + // Convert to a printable string + std::string toString() const; + + // If you want to serialize this class without nesting, use this helper + typedef yarp::os::idl::Unwrapped unwrapped; + +private: + // read/write ret field + bool read_ret(yarp::os::idl::WireReader& reader); + bool write_ret(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_ret(yarp::os::idl::WireReader& reader); + bool nested_write_ret(const yarp::os::idl::WireWriter& writer) const; + + // read/write ref field + bool read_ref(yarp::os::idl::WireReader& reader); + bool write_ref(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_ref(yarp::os::idl::WireReader& reader); + bool nested_write_ref(const yarp::os::idl::WireWriter& writer) const; +}; + +#endif // YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDREFERENCE_H diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReferences.cpp b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReferences.cpp new file mode 100644 index 00000000000..0cce6e3b0d1 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReferences.cpp @@ -0,0 +1,212 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#include + +// Constructor with field values +return_getPidReferences::return_getPidReferences(const yarp::dev::ReturnValue& ret, + const std::vector& refs) : + WirePortable(), + ret(ret), + refs(refs) +{ +} + +// Read structure on a Wire +bool return_getPidReferences::read(yarp::os::idl::WireReader& reader) +{ + if (!nested_read_ret(reader)) { + return false; + } + if (!read_refs(reader)) { + return false; + } + if (reader.isError()) { + return false; + } + return true; +} + +// Read structure on a Connection +bool return_getPidReferences::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader(2)) { + return false; + } + if (!read(reader)) { + return false; + } + return true; +} + +// Write structure on a Wire +bool return_getPidReferences::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!nested_write_ret(writer)) { + return false; + } + if (!write_refs(writer)) { + return false; + } + if (writer.isError()) { + return false; + } + return true; +} + +// Write structure on a Connection +bool return_getPidReferences::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(2)) { + return false; + } + if (!write(writer)) { + return false; + } + return true; +} + +// Convert to a printable string +std::string return_getPidReferences::toString() const +{ + yarp::os::Bottle b; + if (!yarp::os::Portable::copyPortable(*this, b)) { + return {}; + } + return b.toString(); +} + +// read ret field +bool return_getPidReferences::read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write ret field +bool return_getPidReferences::write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.write(ret)) { + return false; + } + return true; +} + +// read (nested) ret field +bool return_getPidReferences::nested_read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) ret field +bool return_getPidReferences::nested_write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeNested(ret)) { + return false; + } + return true; +} + +// read refs field +bool return_getPidReferences::read_refs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_FLOAT64) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + refs.resize(_csize); + if (_csize != 0 && !reader.readBlock(reinterpret_cast(refs.data()), refs.size() * sizeof(double))) { + return false; + } + reader.readListEnd(); + return true; +} + +// write refs field +bool return_getPidReferences::write_refs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeListBegin(BOTTLE_TAG_FLOAT64, refs.size())) { + return false; + } + if (!writer.writeBlock(reinterpret_cast(refs.data()), refs.size() * sizeof(double))) { + return false; + } + if (!writer.writeListEnd()) { + return false; + } + return true; +} + +// read (nested) refs field +bool return_getPidReferences::nested_read_refs(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + size_t _csize; + yarp::os::idl::WireState _etype; + reader.readListBegin(_etype, _csize); + // WireReader removes BOTTLE_TAG_LIST from the tag + constexpr int expected_tag = ((BOTTLE_TAG_FLOAT64) & (~BOTTLE_TAG_LIST)); + if constexpr (expected_tag != 0) { + if (_csize != 0 && _etype.code != expected_tag) { + return false; + } + } + refs.resize(_csize); + if (_csize != 0 && !reader.readBlock(reinterpret_cast(refs.data()), refs.size() * sizeof(double))) { + return false; + } + reader.readListEnd(); + return true; +} + +// write (nested) refs field +bool return_getPidReferences::nested_write_refs(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeListBegin(BOTTLE_TAG_FLOAT64, refs.size())) { + return false; + } + if (!writer.writeBlock(reinterpret_cast(refs.data()), refs.size() * sizeof(double))) { + return false; + } + if (!writer.writeListEnd()) { + return false; + } + return true; +} diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReferences.h b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReferences.h new file mode 100644 index 00000000000..9a8a9407527 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPidReferences.h @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#ifndef YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDREFERENCES_H +#define YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDREFERENCES_H + +#include +#include +#include + +class return_getPidReferences : + public yarp::os::idl::WirePortable +{ +public: + // Fields + yarp::dev::ReturnValue ret{}; + std::vector refs{}; + + // Default constructor + return_getPidReferences() = default; + + // Constructor with field values + return_getPidReferences(const yarp::dev::ReturnValue& ret, + const std::vector& refs); + + // Read structure on a Wire + bool read(yarp::os::idl::WireReader& reader) override; + + // Read structure on a Connection + bool read(yarp::os::ConnectionReader& connection) override; + + // Write structure on a Wire + bool write(const yarp::os::idl::WireWriter& writer) const override; + + // Write structure on a Connection + bool write(yarp::os::ConnectionWriter& connection) const override; + + // Convert to a printable string + std::string toString() const; + + // If you want to serialize this class without nesting, use this helper + typedef yarp::os::idl::Unwrapped unwrapped; + +private: + // read/write ret field + bool read_ret(yarp::os::idl::WireReader& reader); + bool write_ret(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_ret(yarp::os::idl::WireReader& reader); + bool nested_write_ret(const yarp::os::idl::WireWriter& writer) const; + + // read/write refs field + bool read_refs(yarp::os::idl::WireReader& reader); + bool write_refs(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_refs(yarp::os::idl::WireReader& reader); + bool nested_write_refs(const yarp::os::idl::WireWriter& writer) const; +}; + +#endif // YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPIDREFERENCES_H diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPosLimits.cpp b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPosLimits.cpp new file mode 100644 index 00000000000..8c08a29e836 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPosLimits.cpp @@ -0,0 +1,232 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#include + +// Constructor with field values +return_getPosLimits::return_getPosLimits(const yarp::dev::ReturnValue& ret, + const double min, + const double max) : + WirePortable(), + ret(ret), + min(min), + max(max) +{ +} + +// Read structure on a Wire +bool return_getPosLimits::read(yarp::os::idl::WireReader& reader) +{ + if (!nested_read_ret(reader)) { + return false; + } + if (!read_min(reader)) { + return false; + } + if (!read_max(reader)) { + return false; + } + if (reader.isError()) { + return false; + } + return true; +} + +// Read structure on a Connection +bool return_getPosLimits::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader(3)) { + return false; + } + if (!read(reader)) { + return false; + } + return true; +} + +// Write structure on a Wire +bool return_getPosLimits::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!nested_write_ret(writer)) { + return false; + } + if (!write_min(writer)) { + return false; + } + if (!write_max(writer)) { + return false; + } + if (writer.isError()) { + return false; + } + return true; +} + +// Write structure on a Connection +bool return_getPosLimits::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(3)) { + return false; + } + if (!write(writer)) { + return false; + } + return true; +} + +// Convert to a printable string +std::string return_getPosLimits::toString() const +{ + yarp::os::Bottle b; + if (!yarp::os::Portable::copyPortable(*this, b)) { + return {}; + } + return b.toString(); +} + +// read ret field +bool return_getPosLimits::read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write ret field +bool return_getPosLimits::write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.write(ret)) { + return false; + } + return true; +} + +// read (nested) ret field +bool return_getPosLimits::nested_read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) ret field +bool return_getPosLimits::nested_write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeNested(ret)) { + return false; + } + return true; +} + +// read min field +bool return_getPosLimits::read_min(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(min)) { + reader.fail(); + return false; + } + return true; +} + +// write min field +bool return_getPosLimits::write_min(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(min)) { + return false; + } + return true; +} + +// read (nested) min field +bool return_getPosLimits::nested_read_min(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(min)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) min field +bool return_getPosLimits::nested_write_min(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(min)) { + return false; + } + return true; +} + +// read max field +bool return_getPosLimits::read_max(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(max)) { + reader.fail(); + return false; + } + return true; +} + +// write max field +bool return_getPosLimits::write_max(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(max)) { + return false; + } + return true; +} + +// read (nested) max field +bool return_getPosLimits::nested_read_max(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(max)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) max field +bool return_getPosLimits::nested_write_max(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(max)) { + return false; + } + return true; +} diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPosLimits.h b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPosLimits.h new file mode 100644 index 00000000000..4eebc97996d --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getPosLimits.h @@ -0,0 +1,73 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#ifndef YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPOSLIMITS_H +#define YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPOSLIMITS_H + +#include +#include +#include + +class return_getPosLimits : + public yarp::os::idl::WirePortable +{ +public: + // Fields + yarp::dev::ReturnValue ret{}; + double min{0.0}; + double max{0.0}; + + // Default constructor + return_getPosLimits() = default; + + // Constructor with field values + return_getPosLimits(const yarp::dev::ReturnValue& ret, + const double min, + const double max); + + // Read structure on a Wire + bool read(yarp::os::idl::WireReader& reader) override; + + // Read structure on a Connection + bool read(yarp::os::ConnectionReader& connection) override; + + // Write structure on a Wire + bool write(const yarp::os::idl::WireWriter& writer) const override; + + // Write structure on a Connection + bool write(yarp::os::ConnectionWriter& connection) const override; + + // Convert to a printable string + std::string toString() const; + + // If you want to serialize this class without nesting, use this helper + typedef yarp::os::idl::Unwrapped unwrapped; + +private: + // read/write ret field + bool read_ret(yarp::os::idl::WireReader& reader); + bool write_ret(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_ret(yarp::os::idl::WireReader& reader); + bool nested_write_ret(const yarp::os::idl::WireWriter& writer) const; + + // read/write min field + bool read_min(yarp::os::idl::WireReader& reader); + bool write_min(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_min(yarp::os::idl::WireReader& reader); + bool nested_write_min(const yarp::os::idl::WireWriter& writer) const; + + // read/write max field + bool read_max(yarp::os::idl::WireReader& reader); + bool write_max(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_max(yarp::os::idl::WireReader& reader); + bool nested_write_max(const yarp::os::idl::WireWriter& writer) const; +}; + +#endif // YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETPOSLIMITS_H diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getVelLimits.cpp b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getVelLimits.cpp new file mode 100644 index 00000000000..72fcd83e1b0 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getVelLimits.cpp @@ -0,0 +1,232 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#include + +// Constructor with field values +return_getVelLimits::return_getVelLimits(const yarp::dev::ReturnValue& ret, + const double min, + const double max) : + WirePortable(), + ret(ret), + min(min), + max(max) +{ +} + +// Read structure on a Wire +bool return_getVelLimits::read(yarp::os::idl::WireReader& reader) +{ + if (!nested_read_ret(reader)) { + return false; + } + if (!read_min(reader)) { + return false; + } + if (!read_max(reader)) { + return false; + } + if (reader.isError()) { + return false; + } + return true; +} + +// Read structure on a Connection +bool return_getVelLimits::read(yarp::os::ConnectionReader& connection) +{ + yarp::os::idl::WireReader reader(connection); + if (!reader.readListHeader(3)) { + return false; + } + if (!read(reader)) { + return false; + } + return true; +} + +// Write structure on a Wire +bool return_getVelLimits::write(const yarp::os::idl::WireWriter& writer) const +{ + if (!nested_write_ret(writer)) { + return false; + } + if (!write_min(writer)) { + return false; + } + if (!write_max(writer)) { + return false; + } + if (writer.isError()) { + return false; + } + return true; +} + +// Write structure on a Connection +bool return_getVelLimits::write(yarp::os::ConnectionWriter& connection) const +{ + yarp::os::idl::WireWriter writer(connection); + if (!writer.writeListHeader(3)) { + return false; + } + if (!write(writer)) { + return false; + } + return true; +} + +// Convert to a printable string +std::string return_getVelLimits::toString() const +{ + yarp::os::Bottle b; + if (!yarp::os::Portable::copyPortable(*this, b)) { + return {}; + } + return b.toString(); +} + +// read ret field +bool return_getVelLimits::read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.read(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write ret field +bool return_getVelLimits::write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.write(ret)) { + return false; + } + return true; +} + +// read (nested) ret field +bool return_getVelLimits::nested_read_ret(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readNested(ret)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) ret field +bool return_getVelLimits::nested_write_ret(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeNested(ret)) { + return false; + } + return true; +} + +// read min field +bool return_getVelLimits::read_min(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(min)) { + reader.fail(); + return false; + } + return true; +} + +// write min field +bool return_getVelLimits::write_min(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(min)) { + return false; + } + return true; +} + +// read (nested) min field +bool return_getVelLimits::nested_read_min(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(min)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) min field +bool return_getVelLimits::nested_write_min(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(min)) { + return false; + } + return true; +} + +// read max field +bool return_getVelLimits::read_max(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(max)) { + reader.fail(); + return false; + } + return true; +} + +// write max field +bool return_getVelLimits::write_max(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(max)) { + return false; + } + return true; +} + +// read (nested) max field +bool return_getVelLimits::nested_read_max(yarp::os::idl::WireReader& reader) +{ + if (reader.noMore()) { + reader.fail(); + return false; + } + if (!reader.readFloat64(max)) { + reader.fail(); + return false; + } + return true; +} + +// write (nested) max field +bool return_getVelLimits::nested_write_max(const yarp::os::idl::WireWriter& writer) const +{ + if (!writer.writeFloat64(max)) { + return false; + } + return true; +} diff --git a/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getVelLimits.h b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getVelLimits.h new file mode 100644 index 00000000000..9ee615d2781 --- /dev/null +++ b/src/devices/messages/ControlBoardMsgs/idl_generated_code/return_getVelLimits.h @@ -0,0 +1,73 @@ +/* + * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +// Autogenerated by Thrift Compiler (0.14.1-yarped) +// +// This is an automatically generated file. +// It could get re-generated if the ALLOW_IDL_GENERATION flag is on. + +#ifndef YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETVELLIMITS_H +#define YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETVELLIMITS_H + +#include +#include +#include + +class return_getVelLimits : + public yarp::os::idl::WirePortable +{ +public: + // Fields + yarp::dev::ReturnValue ret{}; + double min{0.0}; + double max{0.0}; + + // Default constructor + return_getVelLimits() = default; + + // Constructor with field values + return_getVelLimits(const yarp::dev::ReturnValue& ret, + const double min, + const double max); + + // Read structure on a Wire + bool read(yarp::os::idl::WireReader& reader) override; + + // Read structure on a Connection + bool read(yarp::os::ConnectionReader& connection) override; + + // Write structure on a Wire + bool write(const yarp::os::idl::WireWriter& writer) const override; + + // Write structure on a Connection + bool write(yarp::os::ConnectionWriter& connection) const override; + + // Convert to a printable string + std::string toString() const; + + // If you want to serialize this class without nesting, use this helper + typedef yarp::os::idl::Unwrapped unwrapped; + +private: + // read/write ret field + bool read_ret(yarp::os::idl::WireReader& reader); + bool write_ret(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_ret(yarp::os::idl::WireReader& reader); + bool nested_write_ret(const yarp::os::idl::WireWriter& writer) const; + + // read/write min field + bool read_min(yarp::os::idl::WireReader& reader); + bool write_min(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_min(yarp::os::idl::WireReader& reader); + bool nested_write_min(const yarp::os::idl::WireWriter& writer) const; + + // read/write max field + bool read_max(yarp::os::idl::WireReader& reader); + bool write_max(const yarp::os::idl::WireWriter& writer) const; + bool nested_read_max(yarp::os::idl::WireReader& reader); + bool nested_write_max(const yarp::os::idl::WireWriter& writer) const; +}; + +#endif // YARP_THRIFT_GENERATOR_STRUCT_RETURN_GETVELLIMITS_H diff --git a/src/devices/networkWrappers/RemoteControlBoard/RemoteControlBoard.cpp b/src/devices/networkWrappers/RemoteControlBoard/RemoteControlBoard.cpp index f79240b31f8..7675cc338c7 100644 --- a/src/devices/networkWrappers/RemoteControlBoard/RemoteControlBoard.cpp +++ b/src/devices/networkWrappers/RemoteControlBoard/RemoteControlBoard.cpp @@ -587,87 +587,6 @@ bool RemoteControlBoard::set2V1I1D(int v1, int v2, int axis, double val) return CHECK_FAIL(ok, response); } -bool RemoteControlBoard::setValWithPidType(int voc, PidControlTypeEnum type, int axis, double val) -{ - if (!isLive()) { - return false; - } - Bottle cmd, response; - cmd.addVocab32(VOCAB_SET); - cmd.addVocab32(VOCAB_PID); - cmd.addVocab32(voc); - cmd.addVocab32((yarp::conf::vocab32_t)(type)); - cmd.addInt32(axis); - cmd.addFloat64(val); - bool ok = rpc_p.write(cmd, response); - return CHECK_FAIL(ok, response); -} - -bool RemoteControlBoard::setValWithPidType(int voc, PidControlTypeEnum type, const double* val_arr) -{ - if (!isLive()) { - return false; - } - Bottle cmd, response; - cmd.addVocab32(VOCAB_SET); - cmd.addVocab32(VOCAB_PID); - cmd.addVocab32(voc); - cmd.addVocab32((yarp::conf::vocab32_t)(type)); - Bottle& l = cmd.addList(); - for (size_t i = 0; i < nj; i++) { - l.addFloat64(val_arr[i]); - } - bool ok = rpc_p.write(cmd, response); - return CHECK_FAIL(ok, response); -} - -bool RemoteControlBoard::getValWithPidType(int voc, PidControlTypeEnum type, int j, double *val) -{ - Bottle cmd, response; - cmd.addVocab32(VOCAB_GET); - cmd.addVocab32(VOCAB_PID); - cmd.addVocab32(voc); - cmd.addVocab32((yarp::conf::vocab32_t)(type)); - cmd.addInt32(j); - bool ok = rpc_p.write(cmd, response); - - if (CHECK_FAIL(ok, response)) - { - *val = response.get(2).asFloat64(); - getTimeStamp(response, lastStamp); - return true; - } - return false; -} - -bool RemoteControlBoard::getValWithPidType(int voc, PidControlTypeEnum type, double *val) -{ - if (!isLive()) { - return false; - } - Bottle cmd, response; - cmd.addVocab32(VOCAB_GET); - cmd.addVocab32(VOCAB_PID); - cmd.addVocab32(voc); - cmd.addVocab32((yarp::conf::vocab32_t)(type)); - bool ok = rpc_p.write(cmd, response); - if (CHECK_FAIL(ok, response)) - { - Bottle* lp = response.get(2).asList(); - if (lp == nullptr) { - return false; - } - Bottle& l = *lp; - yCAssert(REMOTECONTROLBOARD, nj == l.size()); - for (size_t i = 0; i < nj; i++) { - val[i] = l.get(i).asFloat64(); - } - getTimeStamp(response, lastStamp); - return true; - } - return false; -} - bool RemoteControlBoard::set2V1I(int v1, int v2, int axis) { Bottle cmd, response; @@ -1102,34 +1021,74 @@ ReturnValue RemoteControlBoard::setPids(const PidControlTypeEnum& pidtype, const return ret; } -bool RemoteControlBoard::setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) +ReturnValue RemoteControlBoard::setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) { - return setValWithPidType(VOCAB_REF, pidtype, j, ref); + // std::lock_guard lg(m_mutex); + auto ret = m_RPC.setPidReferenceRPC(pidtype, j, ref); + if (!ret) { + yCError(REMOTECONTROLBOARD, "Unable to setPidReference"); + return ret; + } + return ret; } -bool RemoteControlBoard::setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) +ReturnValue RemoteControlBoard::setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) { - return setValWithPidType(VOCAB_REFS, pidtype, refs); + // std::lock_guard lg(m_mutex); + std::vector pids_refs(refs, refs + nj); + auto ret = m_RPC.setPidReferencesRPC(pidtype, pids_refs); + if (!ret) { + yCError(REMOTECONTROLBOARD, "Unable to setPidReferences"); + return ret; + } + return ret; } -bool RemoteControlBoard::setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) +ReturnValue RemoteControlBoard::setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) { - return setValWithPidType(VOCAB_LIM, pidtype, j, limit); + // std::lock_guard lg(m_mutex); + auto ret = m_RPC.setPidErrorLimitRPC(pidtype, j, limit); + if (!ret) { + yCError(REMOTECONTROLBOARD, "Unable to setPidErrorLimit"); + return ret; + } + return ret; } -bool RemoteControlBoard::setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) +ReturnValue RemoteControlBoard::setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) { - return setValWithPidType(VOCAB_LIMS, pidtype, limits); + // std::lock_guard lg(m_mutex); + std::vector pids_lims(limits, limits + nj); + auto ret = m_RPC.setPidErrorLimitsRPC(pidtype, pids_lims); + if (!ret) { + yCError(REMOTECONTROLBOARD, "Unable to setPidErrorLimits"); + return ret; + } + return ret; } -bool RemoteControlBoard::getPidError(const PidControlTypeEnum& pidtype, int j, double *err) +ReturnValue RemoteControlBoard::getPidError(const PidControlTypeEnum& pidtype, int j, double *err) { - return getValWithPidType(VOCAB_ERR, pidtype, j, err); + //std::lock_guard lg(m_mutex); + auto ret = m_RPC.getPidErrorRPC(pidtype,j); + if (!ret.ret) { + yCError(REMOTECONTROLBOARD, "Unable to getPidError"); + return ret.ret; + } + *err = ret.err; + return ret.ret; } -bool RemoteControlBoard::getPidErrors(const PidControlTypeEnum& pidtype, double *errs) +ReturnValue RemoteControlBoard::getPidErrors(const PidControlTypeEnum& pidtype, double *errs) { - return getValWithPidType(VOCAB_ERRS, pidtype, errs); + //std::lock_guard lg(m_mutex); + auto ret = m_RPC.getPidErrorsRPC(pidtype); + if (!ret.ret) { + yCError(REMOTECONTROLBOARD, "Unable to getPidErrors"); + return ret.ret; + } + std::copy(ret.errs.begin(), ret.errs.end(), errs); + return ret.ret; } ReturnValue RemoteControlBoard::getPid(const PidControlTypeEnum& pidtype, int j, Pid *pid) @@ -1156,24 +1115,52 @@ ReturnValue RemoteControlBoard::getPids(const PidControlTypeEnum& pidtype, Pid * return ret.ret; } -bool RemoteControlBoard::getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) +ReturnValue RemoteControlBoard::getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) { - return getValWithPidType(VOCAB_REF, pidtype, j, ref); + //std::lock_guard lg(m_mutex); + auto ret = m_RPC.getPidReferenceRPC(pidtype,j); + if (!ret.ret) { + yCError(REMOTECONTROLBOARD, "Unable to getPidReference"); + return ret.ret; + } + *ref = ret.ref; + return ret.ret; } -bool RemoteControlBoard::getPidReferences(const PidControlTypeEnum& pidtype, double *refs) +ReturnValue RemoteControlBoard::getPidReferences(const PidControlTypeEnum& pidtype, double *refs) { - return getValWithPidType(VOCAB_REFS, pidtype, refs); + //std::lock_guard lg(m_mutex); + auto ret = m_RPC.getPidReferencesRPC(pidtype); + if (!ret.ret) { + yCError(REMOTECONTROLBOARD, "Unable to getPidReferences"); + return ret.ret; + } + std::copy(ret.refs.begin(), ret.refs.end(), refs); + return ret.ret; } -bool RemoteControlBoard::getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *limit) +ReturnValue RemoteControlBoard::getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *limit) { - return getValWithPidType(VOCAB_LIM, pidtype, j, limit); + //std::lock_guard lg(m_mutex); + auto ret = m_RPC.getPidErrorLimitRPC(pidtype,j); + if (!ret.ret) { + yCError(REMOTECONTROLBOARD, "Unable to getPidErrorLimit"); + return ret.ret; + } + *limit = ret.lim; + return ret.ret; } -bool RemoteControlBoard::getPidErrorLimits(const PidControlTypeEnum& pidtype, double *limits) +ReturnValue RemoteControlBoard::getPidErrorLimits(const PidControlTypeEnum& pidtype, double *limits) { - return getValWithPidType(VOCAB_LIMS, pidtype, limits); + //std::lock_guard lg(m_mutex); + auto ret = m_RPC.getPidErrorLimitsRPC(pidtype); + if (!ret.ret) { + yCError(REMOTECONTROLBOARD, "Unable to getPidErrorLimits"); + return ret.ret; + } + std::copy(ret.lims.begin(), ret.lims.end(), limits); + return ret.ret; } ReturnValue RemoteControlBoard::resetPid(const PidControlTypeEnum& pidtype, int j) @@ -1221,14 +1208,28 @@ ReturnValue RemoteControlBoard::isPidEnabled(const PidControlTypeEnum& pidtype, return ret.ret; } -bool RemoteControlBoard::getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) +ReturnValue RemoteControlBoard::getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) { - return getValWithPidType(VOCAB_OUTPUT, pidtype, j, out); + //std::lock_guard lg(m_mutex); + auto ret = m_RPC.getPidOutputRPC(pidtype,j); + if (!ret.ret) { + yCError(REMOTECONTROLBOARD, "Unable to getPidOutput"); + return ret.ret; + } + *out = ret.out; + return ret.ret; } -bool RemoteControlBoard::getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) +ReturnValue RemoteControlBoard::getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) { - return getValWithPidType(VOCAB_OUTPUTS, pidtype, outs); + //std::lock_guard lg(m_mutex); + auto ret = m_RPC.getPidOutputsRPC(pidtype); + if (!ret.ret) { + yCError(REMOTECONTROLBOARD, "Unable to getPidOutputs"); + return ret.ret; + } + std::copy(ret.outs.begin(), ret.outs.end(), outs); + return ret.ret; } ReturnValue RemoteControlBoard::setPidOffset(const PidControlTypeEnum& pidtype, int j, double v) @@ -1949,24 +1950,52 @@ bool RemoteControlBoard::getPowerSupplyVoltage(int m, double* val) // BEGIN IControlLimits -bool RemoteControlBoard::setLimits(int axis, double min, double max) +ReturnValue RemoteControlBoard::setPosLimits(int axis, double min, double max) { - return set1V1I2D(VOCAB_LIMITS, axis, min, max); + // std::lock_guard lg(m_mutex); + auto ret = m_RPC.setPosLimitsRPC(axis,min,max); + if (!ret) { + yCError(REMOTECONTROLBOARD, "Unable to setPosLimits"); + return ret; + } + return ret; } -bool RemoteControlBoard::getLimits(int axis, double *min, double *max) +ReturnValue RemoteControlBoard::getPosLimits(int axis, double *min, double *max) { - return get1V1I2D(VOCAB_LIMITS, axis, min, max); + // std::lock_guard lg(m_mutex); + auto ret = m_RPC.getPosLimitsRPC(axis); + if (!ret.ret) { + yCError(REMOTECONTROLBOARD, "Unable to getPosLimits"); + return ret.ret; + } + *min = ret.min; + *max = ret.max; + return ret.ret; } -bool RemoteControlBoard::setVelLimits(int axis, double min, double max) +ReturnValue RemoteControlBoard::setVelLimits(int axis, double min, double max) { - return set1V1I2D(VOCAB_VEL_LIMITS, axis, min, max); + // std::lock_guard lg(m_mutex); + auto ret = m_RPC.setVelLimitsRPC(axis,min,max); + if (!ret) { + yCError(REMOTECONTROLBOARD, "Unable to setVelLimits"); + return ret; + } + return ret; } -bool RemoteControlBoard::getVelLimits(int axis, double *min, double *max) +ReturnValue RemoteControlBoard::getVelLimits(int axis, double *min, double *max) { - return get1V1I2D(VOCAB_VEL_LIMITS, axis, min, max); + // std::lock_guard lg(m_mutex); + auto ret = m_RPC.getVelLimitsRPC(axis); + if (!ret.ret) { + yCError(REMOTECONTROLBOARD, "Unable to getVelLimits"); + return ret.ret; + } + *min = ret.min; + *max = ret.max; + return ret.ret; } // END IControlLimits @@ -2288,7 +2317,7 @@ bool RemoteControlBoard::getCurrentImpedanceLimit(int j, double *min_stiff, doub Bottle cmd, response; cmd.addVocab32(VOCAB_GET); cmd.addVocab32(VOCAB_IMPEDANCE); - cmd.addVocab32(VOCAB_LIMITS); + cmd.addVocab32(VOCAB_IMP_LIMITS); cmd.addInt32(j); bool ok = rpc_p.write(cmd, response); if (CHECK_FAIL(ok, response)) { diff --git a/src/devices/networkWrappers/RemoteControlBoard/RemoteControlBoard.h b/src/devices/networkWrappers/RemoteControlBoard/RemoteControlBoard.h index c7bde94968f..06f055b5e12 100644 --- a/src/devices/networkWrappers/RemoteControlBoard/RemoteControlBoard.h +++ b/src/devices/networkWrappers/RemoteControlBoard/RemoteControlBoard.h @@ -277,24 +277,24 @@ class RemoteControlBoard : // IPidControl ReturnValue setPid(const PidControlTypeEnum& pidtype, int j, const Pid &pid) override; ReturnValue setPids(const PidControlTypeEnum& pidtype, const Pid *pids) override; - bool setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) override; - bool setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) override; - bool setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) override; - bool setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) override; - bool getPidError(const PidControlTypeEnum& pidtype, int j, double *err) override; - bool getPidErrors(const PidControlTypeEnum& pidtype, double *errs) override; + ReturnValue setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) override; + ReturnValue setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) override; + ReturnValue setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) override; + ReturnValue setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) override; + ReturnValue getPidError(const PidControlTypeEnum& pidtype, int j, double *err) override; + ReturnValue getPidErrors(const PidControlTypeEnum& pidtype, double *errs) override; ReturnValue getPid(const PidControlTypeEnum& pidtype, int j, Pid *pid) override; ReturnValue getPids(const PidControlTypeEnum& pidtype, Pid *pids) override; - bool getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) override; - bool getPidReferences(const PidControlTypeEnum& pidtype, double *refs) override; - bool getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *limit) override; - bool getPidErrorLimits(const PidControlTypeEnum& pidtype, double *limits) override; + ReturnValue getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) override; + ReturnValue getPidReferences(const PidControlTypeEnum& pidtype, double *refs) override; + ReturnValue getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *limit) override; + ReturnValue getPidErrorLimits(const PidControlTypeEnum& pidtype, double *limits) override; ReturnValue resetPid(const PidControlTypeEnum& pidtype, int j) override; ReturnValue disablePid(const PidControlTypeEnum& pidtype, int j) override; ReturnValue enablePid(const PidControlTypeEnum& pidtype, int j) override; ReturnValue isPidEnabled(const PidControlTypeEnum& pidtype, int j, bool& enabled) override; - bool getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) override; - bool getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) override; + ReturnValue getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) override; + ReturnValue getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) override; ReturnValue setPidOffset(const PidControlTypeEnum& pidtype, int j, double v) override; ReturnValue setPidFeedforward(const PidControlTypeEnum& pidtype, int j, double v) override; ReturnValue getPidOffset(const PidControlTypeEnum& pidtype, int j, double& v) override; @@ -403,10 +403,10 @@ class RemoteControlBoard : bool getPowerSupplyVoltage(int m, double* val) override; // IControlLimits - bool setLimits(int axis, double min, double max) override; - bool getLimits(int axis, double *min, double *max) override; - bool setVelLimits(int axis, double min, double max) override; - bool getVelLimits(int axis, double *min, double *max) override; + yarp::dev::ReturnValue setPosLimits(int axis, double min, double max) override; + yarp::dev::ReturnValue getPosLimits(int axis, double *min, double *max) override; + yarp::dev::ReturnValue setVelLimits(int axis, double min, double max) override; + yarp::dev::ReturnValue getVelLimits(int axis, double *min, double *max) override; // IAxisInfo bool getAxisName(int j, std::string& name) override; diff --git a/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoardServerImpl.cpp b/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoardServerImpl.cpp index 9e1a0d38b5f..e13781feeee 100644 --- a/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoardServerImpl.cpp +++ b/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoardServerImpl.cpp @@ -400,3 +400,329 @@ return_isPidEnabled ControlBoardRPCd::isPidEnabledRPC(const yarp::dev::PidContro } return ret; } + +ReturnValue ControlBoardRPCd::setPidErrorLimitRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double lim) +{ + std::lock_guard lg(m_mutex); + ReturnValue ret; + if (!m_iPidControl) { + yCError(CB_RPC, "Invalid interface"); + ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret = m_iPidControl->setPidErrorLimit(pidtype, j, lim); + if (!ret) { + yCError(CB_RPC, "Unable to setPidErrorLimitRPC"); + return ReturnValue::return_code::return_value_error_generic; + } + return ret; +} + +ReturnValue ControlBoardRPCd::setPidErrorLimitsRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& limits) +{ + std::lock_guard lg(m_mutex); + ReturnValue ret; + if (!m_iPidControl) { + yCError(CB_RPC, "Invalid interface"); + ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret = m_iPidControl->setPidErrorLimits(pidtype, limits.data()); + if (!ret) { + yCError(CB_RPC, "Unable to setPidErrorLimitsRPC"); + return ReturnValue::return_code::return_value_error_generic; + } + return ret; +} + +ReturnValue ControlBoardRPCd::setPidReferenceRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double ref) +{ + std::lock_guard lg(m_mutex); + ReturnValue ret; + if (!m_iPidControl) { + yCError(CB_RPC, "Invalid interface"); + ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret = m_iPidControl->setPidReference(pidtype, j, ref); + if (!ret) { + yCError(CB_RPC, "Unable to setPidReferenceRPC"); + return ReturnValue::return_code::return_value_error_generic; + } + return ret; +} + +ReturnValue ControlBoardRPCd::setPidReferencesRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& refs) +{ + std::lock_guard lg(m_mutex); + ReturnValue ret; + if (!m_iPidControl) { + yCError(CB_RPC, "Invalid interface"); + ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret = m_iPidControl->setPidReferences(pidtype, refs.data()); + if (!ret) { + yCError(CB_RPC, "Unable to setPidRPC"); + return ReturnValue::return_code::return_value_error_generic; + } + return ret; +} + +return_getPidError ControlBoardRPCd::getPidErrorRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) +{ + std::lock_guard lg(m_mutex); + return_getPidError ret; + if (!m_iPidControl) + { + yCError(CB_RPC, "Invalid interface"); + ret.ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret.ret = m_iPidControl->getPidError(pidtype, j, &ret.err); + if (!ret.ret) + { + yCError(CB_RPC, "Unable to getPidErrorRPC"); + ret.ret = ReturnValue::return_code::return_value_error_generic; + return ret; + } + return ret; +} + +return_getPidErrors ControlBoardRPCd::getPidErrorsRPC(const yarp::dev::PidControlTypeEnum pidtype) +{ + std::lock_guard lg(m_mutex); + return_getPidErrors ret; + if (!m_iPidControl) + { + yCError(CB_RPC, "Invalid interface"); + ret.ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret.errs.resize(m_njoints); + ret.ret = m_iPidControl->getPidErrors(pidtype, ret.errs.data()); + if (!ret.ret) + { + yCError(CB_RPC, "Unable to getPidErrorsRPC"); + ret.ret = ReturnValue::return_code::return_value_error_generic; + return ret; + } + return ret; +} + +return_getPidReference ControlBoardRPCd::getPidReferenceRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) +{ + std::lock_guard lg(m_mutex); + return_getPidReference ret; + if (!m_iPidControl) + { + yCError(CB_RPC, "Invalid interface"); + ret.ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret.ret = m_iPidControl->getPidReference(pidtype, j, &ret.ref); + if (!ret.ret) + { + yCError(CB_RPC, "Unable to getPidReferenceRPC"); + ret.ret = ReturnValue::return_code::return_value_error_generic; + return ret; + } + return ret; +} + +return_getPidReferences ControlBoardRPCd::getPidReferencesRPC(const yarp::dev::PidControlTypeEnum pidtype) +{ + std::lock_guard lg(m_mutex); + return_getPidReferences ret; + if (!m_iPidControl) + { + yCError(CB_RPC, "Invalid interface"); + ret.ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret.refs.resize(m_njoints); + ret.ret = m_iPidControl->getPidReferences(pidtype, ret.refs.data()); + if (!ret.ret) + { + yCError(CB_RPC, "Unable to getPidReferencesRPC"); + ret.ret = ReturnValue::return_code::return_value_error_generic; + return ret; + } + return ret; +} + +return_getPidErrorLimit ControlBoardRPCd::getPidErrorLimitRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) +{ + std::lock_guard lg(m_mutex); + return_getPidErrorLimit ret; + if (!m_iPidControl) + { + yCError(CB_RPC, "Invalid interface"); + ret.ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret.ret = m_iPidControl->getPidErrorLimit(pidtype, j, &ret.lim); + if (!ret.ret) + { + yCError(CB_RPC, "Unable to getPidErrorLimitRPC"); + ret.ret = ReturnValue::return_code::return_value_error_generic; + return ret; + } + return ret; +} + +return_getPidErrorLimits ControlBoardRPCd::getPidErrorLimitsRPC(const yarp::dev::PidControlTypeEnum pidtype) +{ + std::lock_guard lg(m_mutex); + return_getPidErrorLimits ret; + if (!m_iPidControl) + { + yCError(CB_RPC, "Invalid interface"); + ret.ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret.lims.resize(m_njoints); + ret.ret = m_iPidControl->getPidErrorLimits(pidtype, ret.lims.data()); + if (!ret.ret) + { + yCError(CB_RPC, "Unable to getPidErrorLimitsRPC"); + ret.ret = ReturnValue::return_code::return_value_error_generic; + return ret; + } + return ret; +} + +return_getPidOutput ControlBoardRPCd::getPidOutputRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) +{ + std::lock_guard lg(m_mutex); + return_getPidOutput ret; + if (!m_iPidControl) + { + yCError(CB_RPC, "Invalid interface"); + ret.ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret.ret = m_iPidControl->getPidReference(pidtype, j, &ret.out); + if (!ret.ret) + { + yCError(CB_RPC, "Unable to getPidOutputRPC"); + ret.ret = ReturnValue::return_code::return_value_error_generic; + return ret; + } + return ret; +} + +return_getPidOutputs ControlBoardRPCd::getPidOutputsRPC(const yarp::dev::PidControlTypeEnum pidtype) +{ + std::lock_guard lg(m_mutex); + return_getPidOutputs ret; + if (!m_iPidControl) + { + yCError(CB_RPC, "Invalid interface"); + ret.ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret.outs.resize(m_njoints); + ret.ret = m_iPidControl->getPidReferences(pidtype, ret.outs.data()); + if (!ret.ret) + { + yCError(CB_RPC, "Unable to getPidOutputsRPC"); + ret.ret = ReturnValue::return_code::return_value_error_generic; + return ret; + } + return ret; +} + + +//------------------- + + +return_getPosLimits ControlBoardRPCd::getPosLimitsRPC(const std::int16_t j) +{ + std::lock_guard lg(m_mutex); + return_getPosLimits ret; + if (!m_iLimits) + { + yCError(CB_RPC, "Invalid interface"); + ret.ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret.ret = m_iLimits->getPosLimits(j, &ret.min, &ret.max); + if (!ret.ret) + { + yCError(CB_RPC, "Unable to getPosLimitsRPC"); + ret.ret = ReturnValue::return_code::return_value_error_generic; + return ret; + } + return ret; +} + +return_getVelLimits ControlBoardRPCd::getVelLimitsRPC(const std::int16_t j) +{ + std::lock_guard lg(m_mutex); + return_getVelLimits ret; + if (!m_iLimits) + { + yCError(CB_RPC, "Invalid interface"); + ret.ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret.ret = m_iLimits->getVelLimits(j, &ret.min, &ret.max); + if (!ret.ret) + { + yCError(CB_RPC, "Unable to getVelLimitsRPC"); + ret.ret = ReturnValue::return_code::return_value_error_generic; + return ret; + } + return ret; +} + +ReturnValue ControlBoardRPCd::setPosLimitsRPC(const std::int16_t j, const double min, const double max) +{ + std::lock_guard lg(m_mutex); + ReturnValue ret; + if (!m_iLimits) { + yCError(CB_RPC, "Invalid interface"); + ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret = m_iLimits->setPosLimits(j, min,max); + if (!ret) { + yCError(CB_RPC, "Unable to setPidReferenceRPC"); + return ReturnValue::return_code::return_value_error_generic; + } + return ret; +} + +ReturnValue ControlBoardRPCd::setVelLimitsRPC(const std::int16_t j, const double min, const double max) +{ + std::lock_guard lg(m_mutex); + ReturnValue ret; + if (!m_iLimits) { + yCError(CB_RPC, "Invalid interface"); + ret = ReturnValue::return_code::return_value_error_not_ready; + return ret; + } + + ret = m_iLimits->setVelLimits(j, min,max); + if (!ret) { + yCError(CB_RPC, "Unable to setPidReferenceRPC"); + return ReturnValue::return_code::return_value_error_generic; + } + return ret; +} diff --git a/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoardServerImpl.h b/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoardServerImpl.h index 06a19814eb0..4224cacb3fe 100644 --- a/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoardServerImpl.h +++ b/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoardServerImpl.h @@ -19,17 +19,20 @@ class ControlBoardRPCd : public ControlBoardMsgs yarp::dev::IJointBrake* m_iJointBrake = nullptr; yarp::dev::IVelocityDirect* m_iVelocityDirect = nullptr; yarp::dev::IPidControl* m_iPidControl = nullptr; + yarp::dev::IControlLimits* m_iLimits = nullptr; public: ControlBoardRPCd(size_t njoints, yarp::dev::IJointBrake* iJointBrake, yarp::dev::IVelocityDirect* IVelocityDirect, - yarp::dev::IPidControl* iPid) + yarp::dev::IPidControl* iPid, + yarp::dev::IControlLimits* iLim) { m_njoints = njoints; m_iJointBrake = iJointBrake; m_iVelocityDirect = IVelocityDirect; m_iPidControl = iPid; + m_iLimits=iLim; } //IJointBrake @@ -57,6 +60,24 @@ class ControlBoardRPCd : public ControlBoardMsgs return_getPidExtraInfos getPidExtraInfosRPC(const yarp::dev::PidControlTypeEnum pidtypeo) override; return_getPidOffset getPidOffsetRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) override; return_getPidFeedforward getPidFeedforwardRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j) override; + yarp::dev::ReturnValue setPidReferenceRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double ref) override; + yarp::dev::ReturnValue setPidReferencesRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& refs)override; + yarp::dev::ReturnValue setPidErrorLimitRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j, const double limit)override; + yarp::dev::ReturnValue setPidErrorLimitsRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::vector& limits)override; + return_getPidError getPidErrorRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)override; + return_getPidErrors getPidErrorsRPC(const yarp::dev::PidControlTypeEnum pidtype)override; + return_getPidReference getPidReferenceRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)override; + return_getPidReferences getPidReferencesRPC(const yarp::dev::PidControlTypeEnum pidtype)override; + return_getPidErrorLimit getPidErrorLimitRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)override; + return_getPidErrorLimits getPidErrorLimitsRPC(const yarp::dev::PidControlTypeEnum pidtype)override; + return_getPidOutput getPidOutputRPC(const yarp::dev::PidControlTypeEnum pidtype, const std::int16_t j)override; + return_getPidOutputs getPidOutputsRPC(const yarp::dev::PidControlTypeEnum pidtype)override; + + // ILimits + yarp::dev::ReturnValue setPosLimitsRPC(const std::int16_t j, const double min, const double max) override; + yarp::dev::ReturnValue setVelLimitsRPC(const std::int16_t j, const double min, const double max) override; + return_getPosLimits getPosLimitsRPC(const std::int16_t j) override; + return_getVelLimits getVelLimitsRPC(const std::int16_t j) override; std::mutex* getMutex() {return &m_mutex;} }; diff --git a/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoard_nws_yarp.cpp b/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoard_nws_yarp.cpp index 0b5807430d6..c72e3ad8c8a 100644 --- a/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoard_nws_yarp.cpp +++ b/src/devices/networkWrappers/controlBoard_nws_yarp/ControlBoard_nws_yarp.cpp @@ -332,7 +332,7 @@ bool ControlBoard_nws_yarp::attach(yarp::dev::PolyDriver* poly) return false; } - m_RPC = std::make_unique(this->subdevice_joints, iJointBrake, iVelocityDirect, iPidControl); + m_RPC = std::make_unique(this->subdevice_joints, iJointBrake, iVelocityDirect, iPidControl, iControlLimits); return true; } diff --git a/src/devices/networkWrappers/controlBoard_nws_yarp/RPCMessagesParser.cpp b/src/devices/networkWrappers/controlBoard_nws_yarp/RPCMessagesParser.cpp index ff5b08159b5..55446726dff 100644 --- a/src/devices/networkWrappers/controlBoard_nws_yarp/RPCMessagesParser.cpp +++ b/src/devices/networkWrappers/controlBoard_nws_yarp/RPCMessagesParser.cpp @@ -85,7 +85,7 @@ void RPCMessagesParser::handleImpedanceMsg(const yarp::os::Bottle& cmd, b.addFloat64(offs); *rec = true; } break; - case VOCAB_LIMITS: { + case VOCAB_IMP_LIMITS: { double min_stiff = 0; double max_stiff = 0; double min_damp = 0; @@ -847,161 +847,6 @@ void RPCMessagesParser::handleCurrentMsg(const yarp::os::Bottle& cmd, yarp::os:: } } -void RPCMessagesParser::handlePidMsg(const yarp::os::Bottle& cmd, yarp::os::Bottle& response, bool* rec, bool* ok) -{ - yCTrace(CONTROLBOARD, "Handling IPidControl message"); - - if (!rpc_IPid) { - yCError(CONTROLBOARD, "I do not have a valid IPidControl interface"); - *ok = false; - return; - } - - int code = cmd.get(0).asVocab32(); - int action = cmd.get(2).asVocab32(); - auto pidtype = static_cast(cmd.get(3).asVocab32()); - - *ok = false; - *rec = true; - switch (code) { - case VOCAB_SET: { - *rec = true; - yCTrace(CONTROLBOARD, "set command received"); - - switch (action) { - case VOCAB_OFFSET: { - double v; - int j = cmd.get(4).asInt32(); - v = cmd.get(5).asFloat64(); - *ok = rpc_IPid->setPidOffset(pidtype, j, v); - } break; - - case VOCAB_REF: { - *ok = rpc_IPid->setPidReference(pidtype, cmd.get(4).asInt32(), cmd.get(5).asFloat64()); - } break; - - case VOCAB_REFS: { - Bottle* b = cmd.get(4).asList(); - - if (b == nullptr) { - break; - } - - const size_t njs = b->size(); - if (njs == controlledJoints) { - auto* p = new double[njs]; // LATER: optimize to avoid allocation. - for (size_t i = 0; i < njs; i++) { - p[i] = b->get(i).asFloat64(); - } - *ok = rpc_IPid->setPidReferences(pidtype, p); - delete[] p; - } - } break; - - case VOCAB_LIM: { - *ok = rpc_IPid->setPidErrorLimit(pidtype, cmd.get(4).asInt32(), cmd.get(5).asFloat64()); - } break; - - case VOCAB_LIMS: { - Bottle* b = cmd.get(4).asList(); - - if (b == nullptr) { - break; - } - - const size_t njs = b->size(); - if (njs == controlledJoints) { - auto* p = new double[njs]; // LATER: optimize to avoid allocation. - for (size_t i = 0; i < njs; i++) { - p[i] = b->get(i).asFloat64(); - } - *ok = rpc_IPid->setPidErrorLimits(pidtype, p); - delete[] p; - } - } break; - - } - } break; - - case VOCAB_GET: { - *rec = true; - yCTrace(CONTROLBOARD, "get command received"); - double dtmp = 0.0; - response.addVocab32(VOCAB_IS); - response.add(cmd.get(1)); - - switch (action) { - case VOCAB_LIMS: { - auto* p = new double[controlledJoints]; - *ok = rpc_IPid->getPidErrorLimits(pidtype, p); - Bottle& b = response.addList(); - for (size_t i = 0; i < controlledJoints; i++) { - b.addFloat64(p[i]); - } - delete[] p; - } break; - - case VOCAB_ERR: { - *ok = rpc_IPid->getPidError(pidtype, cmd.get(4).asInt32(), &dtmp); - response.addFloat64(dtmp); - } break; - - case VOCAB_ERRS: { - auto* p = new double[controlledJoints]; - *ok = rpc_IPid->getPidErrors(pidtype, p); - Bottle& b = response.addList(); - for (size_t i = 0; i < controlledJoints; i++) { - b.addFloat64(p[i]); - } - delete[] p; - } break; - - case VOCAB_OUTPUT: { - *ok = rpc_IPid->getPidOutput(pidtype, cmd.get(4).asInt32(), &dtmp); - response.addFloat64(dtmp); - } break; - - case VOCAB_OUTPUTS: { - auto* p = new double[controlledJoints]; - *ok = rpc_IPid->getPidOutputs(pidtype, p); - Bottle& b = response.addList(); - for (size_t i = 0; i < controlledJoints; i++) { - b.addFloat64(p[i]); - } - delete[] p; - } break; - - case VOCAB_REFERENCE: { - *ok = rpc_IPid->getPidReference(pidtype, cmd.get(4).asInt32(), &dtmp); - response.addFloat64(dtmp); - } break; - - case VOCAB_REFERENCES: { - auto* p = new double[controlledJoints]; - *ok = rpc_IPid->getPidReferences(pidtype, p); - Bottle& b = response.addList(); - for (size_t i = 0; i < controlledJoints; i++) { - b.addFloat64(p[i]); - } - delete[] p; - } break; - - case VOCAB_LIM: { - *ok = rpc_IPid->getPidErrorLimit(pidtype, cmd.get(4).asInt32(), &dtmp); - response.addFloat64(dtmp); - } break; - } - } break; - - default: - { - yCError(CONTROLBOARD) << "Unknown handlePWMMsg message received"; - *rec = false; - *ok = false; - } break; - } -} - void RPCMessagesParser::handlePWMMsg(const yarp::os::Bottle& cmd, yarp::os::Bottle& response, bool* rec, bool* ok) { yCTrace(CONTROLBOARD, "Handling IPWMControl message"); @@ -1249,9 +1094,6 @@ bool RPCMessagesParser::respond(const yarp::os::Bottle& cmd, yarp::os::Bottle& r ok = false; } else { switch (cmd.get(1).asVocab32()) { - case VOCAB_PID: - handlePidMsg(cmd, response, &rec, &ok); - break; case VOCAB_TORQUE: handleTorqueMsg(cmd, response, &rec, &ok); @@ -1750,12 +1592,6 @@ bool RPCMessagesParser::respond(const yarp::os::Bottle& cmd, yarp::os::Bottle& r ok = rcp_IAmp->setPWMLimit(cmd.get(2).asInt32(), cmd.get(3).asFloat64()); } break; - case VOCAB_LIMITS: { - if (!rcp_Ilim) {ok= false; break;} - ok = rcp_Ilim->setLimits(cmd.get(2).asInt32(), cmd.get(3).asFloat64(), cmd.get(4).asFloat64()); - } break; - - case VOCAB_TEMPERATURE_LIMIT: { if (!rpc_IMotor) { ok = false; break; } ok = rpc_IMotor->setTemperatureLimit(cmd.get(2).asInt32(), cmd.get(3).asFloat64()); @@ -1766,11 +1602,6 @@ bool RPCMessagesParser::respond(const yarp::os::Bottle& cmd, yarp::os::Bottle& r ok = rpc_IMotor->setGearboxRatio(cmd.get(2).asInt32(), cmd.get(3).asFloat64()); } break; - case VOCAB_VEL_LIMITS: { - if (!rcp_Ilim) { ok = false; break; } - ok = rcp_Ilim->setVelLimits(cmd.get(2).asInt32(), cmd.get(3).asFloat64(), cmd.get(4).asFloat64()); - } break; - default: { yCError(CONTROLBOARD, "received an unknown command after a VOCAB_SET (%s)", cmd.toString().c_str()); @@ -2262,24 +2093,6 @@ bool RPCMessagesParser::respond(const yarp::os::Bottle& cmd, yarp::os::Bottle& r response.addFloat64(dtmp); } break; - case VOCAB_LIMITS: { - double min = 0.0; - double max = 0.0; - if (!rcp_Ilim) { ok = false; break; } - ok = rcp_Ilim->getLimits(cmd.get(2).asInt32(), &min, &max); - response.addFloat64(min); - response.addFloat64(max); - } break; - - case VOCAB_VEL_LIMITS: { - double min = 0.0; - double max = 0.0; - if (!rcp_Ilim) { ok = false; break; } - ok = rcp_Ilim->getVelLimits(cmd.get(2).asInt32(), &min, &max); - response.addFloat64(min); - response.addFloat64(max); - } break; - case VOCAB_INFO_NAME: { std::string name = "undocumented"; if (!rpc_AxisInfo) { ok = false; break; } diff --git a/src/devices/networkWrappers/controlBoard_nws_yarp/RPCMessagesParser.h b/src/devices/networkWrappers/controlBoard_nws_yarp/RPCMessagesParser.h index 5ceb2cde1e5..48bf390bf8c 100644 --- a/src/devices/networkWrappers/controlBoard_nws_yarp/RPCMessagesParser.h +++ b/src/devices/networkWrappers/controlBoard_nws_yarp/RPCMessagesParser.h @@ -132,8 +132,6 @@ class RPCMessagesParser : void handlePWMMsg(const yarp::os::Bottle& cmd, yarp::os::Bottle& response, bool* rec, bool* ok); - void handlePidMsg(const yarp::os::Bottle& cmd, yarp::os::Bottle& response, bool* rec, bool* ok); - /** * Initialize the internal data. * @return true/false on success/failure diff --git a/src/guis/yarpmotorgui/partitem.cpp b/src/guis/yarpmotorgui/partitem.cpp index 069673f1558..15deb35e520 100644 --- a/src/guis/yarpmotorgui/partitem.cpp +++ b/src/guis/yarpmotorgui/partitem.cpp @@ -200,7 +200,7 @@ PartItem::PartItem(std::string robotName, int id, std::string partName, Resource double max_cur = +2.0; for (int k = 0; kgetLimits(k, &min_pos, &max_pos); + bool bpl = m_iLim->getPosLimits(k, &min_pos, &max_pos); bool bvl = m_iLim->getVelLimits(k, &min_vel, &max_vel); bool bcr = m_iCur->getCurrentRange(k, &min_cur, &max_cur); if (bpl == false) diff --git a/src/libYARP_dev/src/yarp/dev/IControlLimits.h b/src/libYARP_dev/src/yarp/dev/IControlLimits.h index 902140b0fb9..1fbc9b4748c 100644 --- a/src/libYARP_dev/src/yarp/dev/IControlLimits.h +++ b/src/libYARP_dev/src/yarp/dev/IControlLimits.h @@ -9,6 +9,7 @@ #include #include +#include /*! \file IControlLimits.h define control board standard interfaces*/ @@ -20,7 +21,7 @@ class IControlLimits; /** * @ingroup dev_iface_motor * - * Interface for control devices, commands to get/set position and veloity limits. + * Interface for control devices, commands to get/set position and velocity limits. */ class YARP_dev_API yarp::dev::IControlLimits { @@ -38,7 +39,7 @@ class YARP_dev_API yarp::dev::IControlLimits * @param max the value of the upper limit * @return true or false on success or failure */ - virtual bool setLimits(int axis, double min, double max)=0; + virtual yarp::dev::ReturnValue setPosLimits(int axis, double min, double max)=0; /** * Get the software limits for a particular axis. @@ -47,7 +48,7 @@ class YARP_dev_API yarp::dev::IControlLimits * @param pointer to store the value of the upper limit * @return true if everything goes fine, false otherwise. */ - virtual bool getLimits(int axis, double *min, double *max)=0; + virtual yarp::dev::ReturnValue getPosLimits(int axis, double *min, double *max)=0; /** * Set the software speed limits for a particular axis, the behavior of the @@ -57,7 +58,7 @@ class YARP_dev_API yarp::dev::IControlLimits * @param max the value of the upper limit * @return true or false on success or failure */ - virtual bool setVelLimits(int axis, double min, double max)=0; + virtual yarp::dev::ReturnValue setVelLimits(int axis, double min, double max)=0; /** * Get the software speed limits for a particular axis. @@ -66,7 +67,7 @@ class YARP_dev_API yarp::dev::IControlLimits * @param max pointer to store the value of the upper limit * @return true if everything goes fine, false otherwise. */ - virtual bool getVelLimits(int axis, double *min, double *max)=0; + virtual yarp::dev::ReturnValue getVelLimits(int axis, double *min, double *max)=0; }; /** @@ -90,7 +91,7 @@ class YARP_dev_API yarp::dev::IControlLimitsRaw * @param max the value of the upper limit * @return true or false on success or failure */ - virtual bool setLimitsRaw(int axis, double min, double max)=0; + virtual yarp::dev::ReturnValue setPosLimitsRaw(int axis, double min, double max)=0; /** * Get the software limits for a particular axis. @@ -99,7 +100,7 @@ class YARP_dev_API yarp::dev::IControlLimitsRaw * @param pointer to store the value of the upper limit * @return true if everything goes fine, false otherwise. */ - virtual bool getLimitsRaw(int axis, double *min, double *max)=0; + virtual yarp::dev::ReturnValue getPosLimitsRaw(int axis, double *min, double *max)=0; /** * Set the software speed limits for a particular axis, the behavior of the @@ -109,7 +110,7 @@ class YARP_dev_API yarp::dev::IControlLimitsRaw * @param max the value of the upper limit * @return true or false on success or failure */ - virtual bool setVelLimitsRaw(int axis, double min, double max)=0; + virtual yarp::dev::ReturnValue setVelLimitsRaw(int axis, double min, double max)=0; /** * Get the software speed limits for a particular axis. @@ -118,11 +119,7 @@ class YARP_dev_API yarp::dev::IControlLimitsRaw * @param max pointer to store the value of the upper limit * @return true if everything goes fine, false otherwise. */ - virtual bool getVelLimitsRaw(int axis, double *min, double *max)=0; + virtual yarp::dev::ReturnValue getVelLimitsRaw(int axis, double *min, double *max)=0; }; -// interface IControlLimits sets/gets -constexpr yarp::conf::vocab32_t VOCAB_LIMITS = yarp::os::createVocab32('l','l','i','m'); -constexpr yarp::conf::vocab32_t VOCAB_VEL_LIMITS = yarp::os::createVocab32('v','l','i','m'); - #endif // YARP_DEV_ICONTROLLIMITS_H diff --git a/src/libYARP_dev/src/yarp/dev/IPidControl.h b/src/libYARP_dev/src/yarp/dev/IPidControl.h index 0d5578d7027..cbf98291ce0 100644 --- a/src/libYARP_dev/src/yarp/dev/IPidControl.h +++ b/src/libYARP_dev/src/yarp/dev/IPidControl.h @@ -61,7 +61,7 @@ class YARP_dev_API yarp::dev::IPidControlRaw * @param ref new reference point * @return true/false upon success/failure */ - virtual bool setPidReferenceRaw(const PidControlTypeEnum& pidtype, int j, double ref) = 0; + virtual yarp::dev::ReturnValue setPidReferenceRaw(const PidControlTypeEnum& pidtype, int j, double ref) = 0; /** Set the controller reference, multiple axes. * Warning this method can result in very large torques @@ -72,7 +72,7 @@ class YARP_dev_API yarp::dev::IPidControlRaw * @param refs pointer to the vector that contains the new reference points. * @return true/false upon success/failure */ - virtual bool setPidReferencesRaw(const PidControlTypeEnum& pidtype, const double *refs) = 0; + virtual yarp::dev::ReturnValue setPidReferencesRaw(const PidControlTypeEnum& pidtype, const double *refs) = 0; /** Set the error limit for the controller on a specific joint * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) @@ -80,14 +80,14 @@ class YARP_dev_API yarp::dev::IPidControlRaw * @param limit limit value * @return true/false on success/failure */ - virtual bool setPidErrorLimitRaw(const PidControlTypeEnum& pidtype, int j, double limit) = 0; + virtual yarp::dev::ReturnValue setPidErrorLimitRaw(const PidControlTypeEnum& pidtype, int j, double limit) = 0; /** Get the error limit for the controller on all joints. * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) * @param limits pointer to the vector with the new limits * @return true/false on success/failure */ - virtual bool setPidErrorLimitsRaw(const PidControlTypeEnum& pidtype, const double *limits) = 0; + virtual yarp::dev::ReturnValue setPidErrorLimitsRaw(const PidControlTypeEnum& pidtype, const double *limits) = 0; /** Get the current error for a joint. * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) @@ -95,13 +95,13 @@ class YARP_dev_API yarp::dev::IPidControlRaw * @param err pointer to the storage for the return value * @return true/false on success failure */ - virtual bool getPidErrorRaw(const PidControlTypeEnum& pidtype, int j, double *err) = 0; + virtual yarp::dev::ReturnValue getPidErrorRaw(const PidControlTypeEnum& pidtype, int j, double *err) = 0; /** Get the error of all joints. * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) * @param errs pointer to the vector that will store the errors */ - virtual bool getPidErrorsRaw(const PidControlTypeEnum& pidtype, double *errs) = 0; + virtual yarp::dev::ReturnValue getPidErrorsRaw(const PidControlTypeEnum& pidtype, double *errs) = 0; /** Get the output of the controller (e.g. pwm value) * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) @@ -109,13 +109,13 @@ class YARP_dev_API yarp::dev::IPidControlRaw * @param out pointer to storage for return value * @return success/failure */ - virtual bool getPidOutputRaw(const PidControlTypeEnum& pidtype, int j, double *out) = 0; + virtual yarp::dev::ReturnValue getPidOutputRaw(const PidControlTypeEnum& pidtype, int j, double *out) = 0; /** Get the output of the controllers (e.g. pwm value) * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) * @param outs pointer to the vector that will store the output values */ - virtual bool getPidOutputsRaw(const PidControlTypeEnum& pidtype, double *outs) = 0; + virtual yarp::dev::ReturnValue getPidOutputsRaw(const PidControlTypeEnum& pidtype, double *outs) = 0; /** Get current PID value for a specific joint. * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) @@ -153,13 +153,13 @@ class YARP_dev_API yarp::dev::IPidControlRaw * @param ref pointer to storage for return value * @return reference value */ - virtual bool getPidReferenceRaw(const PidControlTypeEnum& pidtype, int j, double *ref) = 0; + virtual yarp::dev::ReturnValue getPidReferenceRaw(const PidControlTypeEnum& pidtype, int j, double *ref) = 0; /** Get the current reference of all PID controllers. * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) * @param refs vector that will store the output. */ - virtual bool getPidReferencesRaw(const PidControlTypeEnum& pidtype, double *refs) = 0; + virtual yarp::dev::ReturnValue getPidReferencesRaw(const PidControlTypeEnum& pidtype, double *refs) = 0; /** Get the error limit for the controller on a specific joint * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) @@ -167,14 +167,14 @@ class YARP_dev_API yarp::dev::IPidControlRaw * @param limit pointer to storage * @return success/failure */ - virtual bool getPidErrorLimitRaw(const PidControlTypeEnum& pidtype, int j, double *limit) = 0; + virtual yarp::dev::ReturnValue getPidErrorLimitRaw(const PidControlTypeEnum& pidtype, int j, double *limit) = 0; /** Get the error limit for all controllers * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) * @param limits pointer to the array that will store the output * @return success or failure */ - virtual bool getPidErrorLimitsRaw(const PidControlTypeEnum& pidtype, double *limits) = 0; + virtual yarp::dev::ReturnValue getPidErrorLimitsRaw(const PidControlTypeEnum& pidtype, double *limits) = 0; /** Reset the controller of a given joint, usually sets the current status * of the joint as the reference value for the PID, and resets the integrator. @@ -279,7 +279,7 @@ class YARP_dev_API yarp::dev::IPidControl * @param ref new reference point * @return true/false upon success/failure */ - virtual bool setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) = 0; + virtual yarp::dev::ReturnValue setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) = 0; /** Set the controller reference, multiple axes. * Warning this method can result in very large torques @@ -290,7 +290,7 @@ class YARP_dev_API yarp::dev::IPidControl * @param refs pointer to the vector that contains the new reference points. * @return true/false upon success/failure */ - virtual bool setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) = 0; + virtual yarp::dev::ReturnValue setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) = 0; /** Set the error limit for the controller on a specific joint * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) @@ -298,14 +298,14 @@ class YARP_dev_API yarp::dev::IPidControl * @param limit limit value * @return true/false on success/failure */ - virtual bool setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) = 0; + virtual yarp::dev::ReturnValue setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) = 0; /** Get the error limit for the controller on all joints. * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) * @param limits pointer to the vector with the new limits * @return true/false on success/failure */ - virtual bool setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) = 0; + virtual yarp::dev::ReturnValue setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) = 0; /** Get the current error for a joint. * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) @@ -313,13 +313,13 @@ class YARP_dev_API yarp::dev::IPidControl * @param err pointer to the storage for the return value * @return true/false on success failure */ - virtual bool getPidError(const PidControlTypeEnum& pidtype, int j, double *err) = 0; + virtual yarp::dev::ReturnValue getPidError(const PidControlTypeEnum& pidtype, int j, double *err) = 0; /** Get the error of all joints. * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) * @param errs pointer to the vector that will store the errors */ - virtual bool getPidErrors(const PidControlTypeEnum& pidtype, double *errs) = 0; + virtual yarp::dev::ReturnValue getPidErrors(const PidControlTypeEnum& pidtype, double *errs) = 0; /** Get the output of the controller (e.g. pwm value) * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) @@ -327,13 +327,13 @@ class YARP_dev_API yarp::dev::IPidControl * @param out pointer to storage for return value * @return success/failure */ - virtual bool getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) = 0; + virtual yarp::dev::ReturnValue getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) = 0; /** Get the output of the controllers (e.g. pwm value) * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) * @param outs pointer to the vector that will store the output values */ - virtual bool getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) = 0; + virtual yarp::dev::ReturnValue getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) = 0; /** Get current PID value for a specific joint. * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) @@ -371,13 +371,13 @@ class YARP_dev_API yarp::dev::IPidControl * @param ref pointer to storage for return value * @return reference value */ - virtual bool getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) = 0; + virtual yarp::dev::ReturnValue getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) = 0; /** Get the current reference of all PID controllers. * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) * @param refs vector that will store the output. */ - virtual bool getPidReferences(const PidControlTypeEnum& pidtype, double *refs) = 0; + virtual yarp::dev::ReturnValue getPidReferences(const PidControlTypeEnum& pidtype, double *refs) = 0; /** Get the error limit for the controller on a specific joint * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) @@ -385,14 +385,14 @@ class YARP_dev_API yarp::dev::IPidControl * @param limit pointer to storage * @return success/failure */ - virtual bool getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *limit) = 0; + virtual yarp::dev::ReturnValue getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *limit) = 0; /** Get the error limit for all controllers * @param pidtype the id of the PID that will be affected by the command (e.g. position, velocity etc) * @param limits pointer to the array that will store the output * @return success or failure */ - virtual bool getPidErrorLimits(const PidControlTypeEnum& pidtype, double *limits) = 0; + virtual yarp::dev::ReturnValue getPidErrorLimits(const PidControlTypeEnum& pidtype, double *limits) = 0; /** Reset the controller of a given joint, usually sets the current status of the joint * as the reference value for the PID, and resets the integrator. diff --git a/src/libYARP_dev/src/yarp/dev/ITorqueControl.h b/src/libYARP_dev/src/yarp/dev/ITorqueControl.h index 39a8fd259ff..c7ebca7823c 100644 --- a/src/libYARP_dev/src/yarp/dev/ITorqueControl.h +++ b/src/libYARP_dev/src/yarp/dev/ITorqueControl.h @@ -244,6 +244,7 @@ constexpr yarp::conf::vocab32_t VOCAB_RANGES = yarp::os::createVocab3 constexpr yarp::conf::vocab32_t VOCAB_RANGE = yarp::os::createVocab32('r', 'n', 'g'); constexpr yarp::conf::vocab32_t VOCAB_IMP_PARAM = yarp::os::createVocab32('i', 'p', 'r'); constexpr yarp::conf::vocab32_t VOCAB_IMP_OFFSET = yarp::os::createVocab32('i', 'o', 'f'); +constexpr yarp::conf::vocab32_t VOCAB_IMP_LIMITS = yarp::os::createVocab32('i', 'l', 'i','m'); constexpr yarp::conf::vocab32_t VOCAB_TORQUES_DIRECTS = yarp::os::createVocab32('d', 't', 'q', 's'); //This implements the setRefTorques for the whole part constexpr yarp::conf::vocab32_t VOCAB_TORQUES_DIRECT = yarp::os::createVocab32('d', 't', 'q'); //This implements the setRefTorque for a single joint constexpr yarp::conf::vocab32_t VOCAB_TORQUES_DIRECT_GROUP = yarp::os::createVocab32('d', 't', 'q', 'g'); //This implements the setRefTorques with joint list diff --git a/src/libYARP_dev/src/yarp/dev/ImplementControlLimits.cpp b/src/libYARP_dev/src/yarp/dev/ImplementControlLimits.cpp index cd790618afe..3079198c40c 100644 --- a/src/libYARP_dev/src/yarp/dev/ImplementControlLimits.cpp +++ b/src/libYARP_dev/src/yarp/dev/ImplementControlLimits.cpp @@ -48,7 +48,7 @@ bool ImplementControlLimits::initialize(int size, const int *amap, const double } -bool ImplementControlLimits::setLimits(int axis, double min, double max) +ReturnValue ImplementControlLimits::setPosLimits(int axis, double min, double max) { double minEnc=0; double maxEnc=0; @@ -65,17 +65,17 @@ bool ImplementControlLimits::setLimits(int axis, double min, double max) maxEnc = temp; } - return iLimits2->setLimitsRaw(k, minEnc, maxEnc); + return iLimits2->setPosLimitsRaw(k, minEnc, maxEnc); } -bool ImplementControlLimits::getLimits(int axis, double *min, double *max) +ReturnValue ImplementControlLimits::getPosLimits(int axis, double *min, double *max) { double minEnc=0; double maxEnc=0; int k=castToMapper(helper)->toHw(axis); - bool ret=iLimits2->getLimitsRaw(k, &minEnc, &maxEnc); + ReturnValue ret=iLimits2->getPosLimitsRaw(k, &minEnc, &maxEnc); *min=castToMapper(helper)->posE2A(minEnc, k); *max=castToMapper(helper)->posE2A(maxEnc, k); @@ -90,7 +90,7 @@ bool ImplementControlLimits::getLimits(int axis, double *min, double *max) return ret; } -bool ImplementControlLimits::setVelLimits(int axis, double min, double max) +ReturnValue ImplementControlLimits::setVelLimits(int axis, double min, double max) { double minEnc=0; double maxEnc=0; @@ -102,13 +102,13 @@ bool ImplementControlLimits::setVelLimits(int axis, double min, double max) return iLimits2->setVelLimitsRaw(k, minEnc, maxEnc); } -bool ImplementControlLimits::getVelLimits(int axis, double *min, double *max) +ReturnValue ImplementControlLimits::getVelLimits(int axis, double *min, double *max) { double minEnc=0; double maxEnc=0; int k=castToMapper(helper)->toHw(axis); - bool ret=iLimits2->getVelLimitsRaw(k, &minEnc, &maxEnc); + ReturnValue ret=iLimits2->getVelLimitsRaw(k, &minEnc, &maxEnc); *min = castToMapper(helper)->velE2A_abs(minEnc, k); *max = castToMapper(helper)->velE2A_abs(maxEnc, k); diff --git a/src/libYARP_dev/src/yarp/dev/ImplementControlLimits.h b/src/libYARP_dev/src/yarp/dev/ImplementControlLimits.h index 9555f990937..1036ed4a01f 100644 --- a/src/libYARP_dev/src/yarp/dev/ImplementControlLimits.h +++ b/src/libYARP_dev/src/yarp/dev/ImplementControlLimits.h @@ -57,10 +57,10 @@ class YARP_dev_API ImplementControlLimits: public IControlLimits * Destructor. Perform uninitialize if needed. */ virtual ~ImplementControlLimits(); - bool setLimits(int axis, double min, double max) override; - bool getLimits(int axis, double *min, double *max) override; - bool setVelLimits(int axis, double min, double max) override; - bool getVelLimits(int axis, double *min, double *max) override; + yarp::dev::ReturnValue setPosLimits(int axis, double min, double max) override; + yarp::dev::ReturnValue getPosLimits(int axis, double *min, double *max) override; + yarp::dev::ReturnValue setVelLimits(int axis, double min, double max) override; + yarp::dev::ReturnValue getVelLimits(int axis, double *min, double *max) override; }; @@ -85,7 +85,7 @@ class StubImplControlLimitsRaw: public yarp::dev::IControlLimitsRaw * Helper for printing error message, see below. * Implemented in ControlBoardInterfacesImpl.cpp. */ - bool NOT_YET_IMPLEMENTED(const char *func=0) + yarp::dev::ReturnValue NOT_YET_IMPLEMENTED(const char *func=0) { if (func) { yError("%s: not yet implemented\n", func); @@ -93,7 +93,7 @@ class StubImplControlLimitsRaw: public yarp::dev::IControlLimitsRaw yError("Function not yet implemented\n"); } - return false; + return ReturnValue::return_code::return_value_error_not_implemented_by_device; } @@ -103,22 +103,22 @@ class StubImplControlLimitsRaw: public yarp::dev::IControlLimitsRaw */ virtual ~StubImplControlLimitsRaw() {} - bool setLimitsRaw(int axis, double min, double max) override + yarp::dev::ReturnValue setPosLimitsRaw(int axis, double min, double max) override { - return NOT_YET_IMPLEMENTED("setLimitsRaw"); + return NOT_YET_IMPLEMENTED("setPosLimitsRaw"); } - bool getLimitsRaw(int axis, double *min, double *max) override + yarp::dev::ReturnValue getPosLimitsRaw(int axis, double *min, double *max) override { - return NOT_YET_IMPLEMENTED("getLimitsRaw"); + return NOT_YET_IMPLEMENTED("getPosLimitsRaw"); } - bool setVelLimitsRaw(int axis, double min, double max) override + yarp::dev::ReturnValue setVelLimitsRaw(int axis, double min, double max) override { return NOT_YET_IMPLEMENTED("setVelLimitsRaw"); } - bool getVelLimitsRaw(int axis, double *min, double *max) override + yarp::dev::ReturnValue getVelLimitsRaw(int axis, double *min, double *max) override { return NOT_YET_IMPLEMENTED("getVelLimitsRaw"); } diff --git a/src/libYARP_dev/src/yarp/dev/ImplementPidControl.cpp b/src/libYARP_dev/src/yarp/dev/ImplementPidControl.cpp index 3597cff4ba8..2092c40f4d4 100644 --- a/src/libYARP_dev/src/yarp/dev/ImplementPidControl.cpp +++ b/src/libYARP_dev/src/yarp/dev/ImplementPidControl.cpp @@ -12,7 +12,7 @@ using namespace yarp::dev; using namespace yarp::os; -#define JOINTIDCHECK if (j >= castToMapper(helper)->axes()){yError("joint id out of bound"); return false;} +#define JOINTIDCHECK if (j >= castToMapper(helper)->axes()){yError("joint id out of bound"); return ReturnValue::return_code::return_value_error_method_failed;;} //////////////////// Implement PidControl interface ImplementPidControl::ImplementPidControl(IPidControlRaw *y): @@ -102,7 +102,7 @@ ReturnValue ImplementPidControl::setPids(const PidControlTypeEnum& pidtype, con return ret; } -bool ImplementPidControl::setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) +ReturnValue ImplementPidControl::setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) { JOINTIDCHECK int k=0; @@ -112,17 +112,17 @@ bool ImplementPidControl::setPidReference(const PidControlTypeEnum& pidtype, in return iPid->setPidReferenceRaw(pidtype, k, raw); } -bool ImplementPidControl::setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) +ReturnValue ImplementPidControl::setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) { ControlBoardHelper* cb_helper = castToMapper(helper); yarp::dev::impl::Buffer buffValues = doubleBuffManager->getBuffer(); cb_helper->convert_pidunits_to_machine(pidtype,refs,buffValues.getData()); - bool ret = iPid->setPidReferencesRaw(pidtype, buffValues.getData()); + ReturnValue ret = iPid->setPidReferencesRaw(pidtype, buffValues.getData()); doubleBuffManager->releaseBuffer(buffValues); return ret; } -bool ImplementPidControl::setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) +ReturnValue ImplementPidControl::setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) { JOINTIDCHECK int k; @@ -132,18 +132,18 @@ bool ImplementPidControl::setPidErrorLimit(const PidControlTypeEnum& pidtype, i return iPid->setPidErrorLimitRaw(pidtype, k, raw); } -bool ImplementPidControl::setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) +ReturnValue ImplementPidControl::setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) { ControlBoardHelper* cb_helper = castToMapper(helper); yarp::dev::impl::Buffer buffValues = doubleBuffManager->getBuffer(); cb_helper->convert_pidunits_to_machine(pidtype,limits,buffValues.getData()); - bool ret = iPid->setPidErrorLimitsRaw(pidtype, buffValues.getData()); + ReturnValue ret = iPid->setPidErrorLimitsRaw(pidtype, buffValues.getData()); doubleBuffManager->releaseBuffer(buffValues); return ret; } -bool ImplementPidControl::getPidError(const PidControlTypeEnum& pidtype, int j, double *err) +ReturnValue ImplementPidControl::getPidError(const PidControlTypeEnum& pidtype, int j, double *err) { JOINTIDCHECK int k; @@ -151,15 +151,15 @@ bool ImplementPidControl::getPidError(const PidControlTypeEnum& pidtype, int j, ControlBoardHelper* cb_helper = castToMapper(helper); k=castToMapper(helper)->toHw(j); - bool ret=iPid->getPidErrorRaw(pidtype, k, &raw); + ReturnValue ret=iPid->getPidErrorRaw(pidtype, k, &raw); cb_helper->convert_pidunits_to_user(pidtype,raw,err,k); return ret; } -bool ImplementPidControl::getPidErrors(const PidControlTypeEnum& pidtype, double *errs) +ReturnValue ImplementPidControl::getPidErrors(const PidControlTypeEnum& pidtype, double *errs) { - bool ret; + ReturnValue ret; ControlBoardHelper* cb_helper = castToMapper(helper); yarp::dev::impl::Buffer buffValues = doubleBuffManager->getBuffer(); ret=iPid->getPidErrorsRaw(pidtype, buffValues.getData()); @@ -168,10 +168,10 @@ bool ImplementPidControl::getPidErrors(const PidControlTypeEnum& pidtype, doubl return ret; } -bool ImplementPidControl::getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) +ReturnValue ImplementPidControl::getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) { JOINTIDCHECK - bool ret; + ReturnValue ret; int k_raw; double raw; k_raw = castToMapper(helper)->toHw(j); @@ -181,17 +181,17 @@ bool ImplementPidControl::getPidOutput(const PidControlTypeEnum& pidtype, int j ControlBoardHelper* cb_helper = castToMapper(helper); double output_conversion_units_user2raw = cb_helper->get_pidoutput_conversion_factor_user2raw(pidtype, j); *out = raw / output_conversion_units_user2raw; - return true; + return ret; } - return false; + return ret; } -bool ImplementPidControl::getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) +ReturnValue ImplementPidControl::getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) { ControlBoardHelper* cb_helper = castToMapper(helper); int nj = cb_helper->axes(); yarp::dev::impl::Buffer buffValues = doubleBuffManager->getBuffer(); - bool ret = iPid->getPidOutputsRaw(pidtype, buffValues.getData()); + ReturnValue ret = iPid->getPidOutputsRaw(pidtype, buffValues.getData()); if (ret) { castToMapper(cb_helper)->toUser(buffValues.getData(), outs); @@ -245,10 +245,10 @@ ReturnValue ImplementPidControl::getPids(const PidControlTypeEnum& pidtype, Pid return ret; } -bool ImplementPidControl::getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) +ReturnValue ImplementPidControl::getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) { JOINTIDCHECK - bool ret; + ReturnValue ret; int k; double raw; ControlBoardHelper* cb_helper = castToMapper(helper); @@ -260,9 +260,9 @@ bool ImplementPidControl::getPidReference(const PidControlTypeEnum& pidtype, int return ret; } -bool ImplementPidControl::getPidReferences(const PidControlTypeEnum& pidtype, double *refs) +ReturnValue ImplementPidControl::getPidReferences(const PidControlTypeEnum& pidtype, double *refs) { - bool ret; + ReturnValue ret; ControlBoardHelper* cb_helper = castToMapper(helper); yarp::dev::impl::Buffer buffValues = doubleBuffManager->getBuffer(); ret=iPid->getPidReferencesRaw(pidtype, buffValues.getData()); @@ -272,10 +272,10 @@ bool ImplementPidControl::getPidReferences(const PidControlTypeEnum& pidtype, do return ret; } -bool ImplementPidControl::getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *ref) +ReturnValue ImplementPidControl::getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *ref) { JOINTIDCHECK - bool ret; + ReturnValue ret; int k; double raw; ControlBoardHelper* cb_helper = castToMapper(helper); @@ -287,9 +287,9 @@ bool ImplementPidControl::getPidErrorLimit(const PidControlTypeEnum& pidtype, in return ret; } -bool ImplementPidControl::getPidErrorLimits(const PidControlTypeEnum& pidtype, double *refs) +ReturnValue ImplementPidControl::getPidErrorLimits(const PidControlTypeEnum& pidtype, double *refs) { - bool ret; + ReturnValue ret; ControlBoardHelper* cb_helper = castToMapper(helper); yarp::dev::impl::Buffer buffValues = doubleBuffManager->getBuffer(); ret=iPid->getPidErrorLimitsRaw(pidtype, buffValues.getData()); diff --git a/src/libYARP_dev/src/yarp/dev/ImplementPidControl.h b/src/libYARP_dev/src/yarp/dev/ImplementPidControl.h index 56c577df03f..ba969265085 100644 --- a/src/libYARP_dev/src/yarp/dev/ImplementPidControl.h +++ b/src/libYARP_dev/src/yarp/dev/ImplementPidControl.h @@ -56,20 +56,20 @@ class YARP_dev_API yarp::dev::ImplementPidControl : public IPidControl yarp::dev::ReturnValue setPid(const PidControlTypeEnum& pidtype, int j, const Pid &pid) override; yarp::dev::ReturnValue setPids(const PidControlTypeEnum& pidtype, const Pid *pids) override; - bool setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) override; - bool setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) override; - bool setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) override; - bool setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) override; - bool getPidError(const PidControlTypeEnum& pidtype, int j, double *err) override; - bool getPidErrors(const PidControlTypeEnum& pidtype, double *errs) override; - bool getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) override; - bool getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) override; + yarp::dev::ReturnValue setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) override; + yarp::dev::ReturnValue setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) override; + yarp::dev::ReturnValue setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) override; + yarp::dev::ReturnValue setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) override; + yarp::dev::ReturnValue getPidError(const PidControlTypeEnum& pidtype, int j, double *err) override; + yarp::dev::ReturnValue getPidErrors(const PidControlTypeEnum& pidtype, double *errs) override; + yarp::dev::ReturnValue getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) override; + yarp::dev::ReturnValue getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) override; yarp::dev::ReturnValue getPid(const PidControlTypeEnum& pidtype, int j, Pid *pid) override; yarp::dev::ReturnValue getPids(const PidControlTypeEnum& pidtype, Pid *pids) override; - bool getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) override; - bool getPidReferences(const PidControlTypeEnum& pidtype, double *refs) override; - bool getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *ref) override; - bool getPidErrorLimits(const PidControlTypeEnum& pidtype, double *refs) override; + yarp::dev::ReturnValue getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) override; + yarp::dev::ReturnValue getPidReferences(const PidControlTypeEnum& pidtype, double *refs) override; + yarp::dev::ReturnValue getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *ref) override; + yarp::dev::ReturnValue getPidErrorLimits(const PidControlTypeEnum& pidtype, double *refs) override; yarp::dev::ReturnValue resetPid(const PidControlTypeEnum& pidtype, int j) override; yarp::dev::ReturnValue enablePid(const PidControlTypeEnum& pidtype, int j) override; yarp::dev::ReturnValue disablePid(const PidControlTypeEnum& pidtype, int j) override; diff --git a/src/libYARP_dev/src/yarp/dev/ReturnValue.h b/src/libYARP_dev/src/yarp/dev/ReturnValue.h index d34e11ab459..bdce81ef991 100644 --- a/src/libYARP_dev/src/yarp/dev/ReturnValue.h +++ b/src/libYARP_dev/src/yarp/dev/ReturnValue.h @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -81,26 +82,26 @@ class YARP_dev_API ReturnValue : public yarp::os::Portable #define ReturnValue_ok ReturnValue(yarp::dev::ReturnValue::return_code::return_value_ok) #if __cplusplus >= 202002L -inline ReturnValue YARP_METHOD_NOT_YET_IMPLEMENTED(const std::source_location& location = std::source_location::current()) +inline ReturnValue YARP_METHOD_NOT_YET_IMPLEMENTED(const std::source_location& location = std::source_location::current(), std::string custom_string = "") { - yError("Method %s not yet implemented\n", location.function_name()); + yError("Method %s not yet implemented. %s\n", location.function_name(), custom_string.c_str()); return ReturnValue(yarp::dev::ReturnValue::return_code::return_value_error_not_implemented_by_device); } -inline ReturnValue YARP_METHOD_DEPRECATED(const std::source_location& location = std::source_location::current()) +inline ReturnValue YARP_METHOD_DEPRECATED(const std::source_location& location = std::source_location::current(), std::string custom_string = "") { - yError("Method %s has been deprecated\n", location.function_name()); + yError("Method %s has been deprecated. %s\n", location.function_name(), custom_string.c_str()); return ReturnValue(yarp::dev::ReturnValue::return_code::return_value_error_deprecated); } #else -inline ReturnValue yarp_method_not_implemented(const char* location) +inline ReturnValue yarp_method_not_implemented(std::string location, std::string custom_string = "") { - yError("Method %s not yet implemented\n", location); + yError("Method %s not yet implemented. %s\n", location.c_str(), custom_string.c_str()); return ReturnValue(yarp::dev::ReturnValue::return_code::return_value_error_not_implemented_by_device); } #define YARP_METHOD_NOT_YET_IMPLEMENTED() yarp_method_not_implemented(__func__) -inline ReturnValue yarp_method_deprecated(const char* location) +inline ReturnValue yarp_method_deprecated(std::string location, std::string custom_string = "") { - yError("Method %s has been deprecated\n", location); + yError("Method %s has been deprecated. %s\n", location.c_str(), custom_string.c_str()); return ReturnValue(yarp::dev::ReturnValue::return_code::return_value_error_deprecated); } #define YARP_METHOD_DEPRECATED() yarp_method_deprecated(__func__) diff --git a/src/libYARP_dev/src/yarp/dev/tests/IControlLimitsTest.h b/src/libYARP_dev/src/yarp/dev/tests/IControlLimitsTest.h index 266769c4af6..f24476b0374 100644 --- a/src/libYARP_dev/src/yarp/dev/tests/IControlLimitsTest.h +++ b/src/libYARP_dev/src/yarp/dev/tests/IControlLimitsTest.h @@ -33,17 +33,31 @@ namespace yarp::dev::tests double min=0; double max=0; - b = ilims->getLimits (0, &min, &max); + b = ilims->getPosLimits (0, &min, &max); CHECK(b); + CHECK(min!=100); + CHECK(max!=200); b = ilims->getVelLimits(0, &min, &max); CHECK(b); + CHECK(min!=1000); + CHECK(max!=2000); - b = ilims->setLimits(0, min, max); + b = ilims->setPosLimits(0, 100, 200); CHECK(b); - b = ilims->setVelLimits(0, min, max); + b = ilims->setVelLimits(0, 1000, 2000); CHECK(b); + + b = ilims->getPosLimits (0, &min, &max); + CHECK(b); + CHECK(min==100); + CHECK(max==200); + + b = ilims->getVelLimits(0, &min, &max); + CHECK(b); + CHECK(min==1000); + CHECK(max==2000); } } diff --git a/src/libYARP_dev/src/yarp/dev/tests/IPidControlTest.h b/src/libYARP_dev/src/yarp/dev/tests/IPidControlTest.h index f95a37777a6..e0c8271d352 100644 --- a/src/libYARP_dev/src/yarp/dev/tests/IPidControlTest.h +++ b/src/libYARP_dev/src/yarp/dev/tests/IPidControlTest.h @@ -14,6 +14,8 @@ #include #include +#include "Utils.h" + using namespace yarp::dev; using namespace yarp::os; @@ -61,87 +63,149 @@ namespace yarp::dev::tests REQUIRE(ax > 0); yarp::dev::PidControlTypeEnum pp = yarp::dev::PidControlTypeEnum::VOCAB_PIDTYPE_POSITION; - bool enabled; - b = ipid->disablePid(pp,0); - CHECK(b); - b = ipid->isPidEnabled(pp, 0, enabled); - CHECK(b); - CHECK(!enabled); - - b = ipid->enablePid(pp,0); - CHECK(b); - b = ipid->isPidEnabled(pp, 0, enabled); - CHECK(b); - CHECK(enabled); + yarp::dev::PidControlTypeEnum vv = yarp::dev::PidControlTypeEnum::VOCAB_PIDTYPE_VELOCITY; - b = ipid->disablePid(pp,0); - CHECK(b); - b = ipid->isPidEnabled(pp, 0, enabled); - CHECK(b); - CHECK(!enabled); + // Pid enable/disable + { + bool enabled; + b = ipid->disablePid(pp,0); + CHECK(b); + b = ipid->isPidEnabled(pp, 0, enabled); + CHECK(b); + CHECK(!enabled); + + b = ipid->enablePid(pp,0); + CHECK(b); + b = ipid->isPidEnabled(pp, 0, enabled); + CHECK(b); + CHECK(enabled); + + b = ipid->disablePid(pp,0); + CHECK(b); + b = ipid->isPidEnabled(pp, 0, enabled); + CHECK(b); + CHECK(!enabled); + } - yarp::dev::Pid retpid; - b=ipid->getPid(pp,0, &retpid); - CHECK(b); + // Pid set/get + { + yarp::dev::Pid retpid; + yarp::dev::Pid setpid; - auto retpids = std::vector(ax); - b= ipid->getPids(pp, retpids.data()); - CHECK(b); + b=ipid->getPid(pp,0, &retpid); + CHECK(b); - yarp::dev::Pid setpid; - b = ipid->setPid(pp, 0, setpid); - CHECK(b); + b = ipid->setPid(pp, 0, setpid); + CHECK(b); - auto setpids = std::vector(ax); - b = ipid->setPids(pp, setpids.data()); - CHECK(b); + b=ipid->getPid(pp,0, &retpid); + CHECK(b); + CHECK(retpid == setpid); + } - b = ipid->resetPid(pp,0); - CHECK(b); + // Pids set/get + { + auto retpids = std::vector(ax); + auto setpids = std::vector(ax); + setpids[0] = yarp::dev::Pid(0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0); + setpids[1] = yarp::dev::Pid(0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1); - b = ipid->setPidOffset(pp,0,42); - CHECK(b); - //Streaming message sent on separated thread, delay required before get() - yarp::os::Time::delay(0.050); + b= ipid->getPids(pp, retpids.data()); + CHECK(b); - double pidoff=0; - b = ipid->getPidOffset(pp,0,pidoff); - CHECK(b); - CHECK(pidoff == 42); + b = ipid->setPids(pp, setpids.data()); + CHECK(b); - b = ipid->setPidFeedforward(pp,0,43); - CHECK(b); - //Streaming message sent on separated thread, delay required before get() - yarp::os::Time::delay(0.050); + b= ipid->getPids(pp, retpids.data()); + CHECK(b); + CHECK(retpids == setpids); + } - double pidffd=0; - b = ipid->getPidFeedforward(pp,0,pidffd); + b = ipid->resetPid(pp,0); CHECK(b); - CHECK(pidffd == 43); - double getpidref=0; - b = ipid->getPidReference(pp, 0, &getpidref); - CHECK(b); + //PidOffset + { + double pidoff=0; + b = ipid->getPidOffset(pp,0,pidoff); + CHECK(b); + CHECK(pidoff == 0); + b = ipid->setPidOffset(pp,0,42); + CHECK(b); + //Streaming message sent on separated thread, delay required before get() + yarp::os::Time::delay(0.050); + b = ipid->getPidOffset(pp,0,pidoff); + CHECK(b); + CHECK(pidoff == 42); + } - auto getpidrefs = std::vector(ax); - b = ipid->getPidReferences(pp, getpidrefs.data()); - CHECK(b); + //PidFeedforward + { + double pidffd=0; + b = ipid->getPidFeedforward(pp,0,pidffd); + CHECK(b); + CHECK(pidffd == 0); + b = ipid->setPidFeedforward(pp,0,43); + CHECK(b); + //Streaming message sent on separated thread, delay required before get() + yarp::os::Time::delay(0.050); + b = ipid->getPidFeedforward(pp,0,pidffd); + CHECK(b); + CHECK(pidffd == 43); + } - double setpidref=0; - b = ipid->setPidReference(pp, 0, setpidref); - CHECK(b); + //PidReference + { + double getpidref=0; + b = ipid->getPidReference(pp, 0, &getpidref); + CHECK(b); + CHECK(getpidref == 0.0); + b = ipid->setPidReference(pp, 0, 10.5); + CHECK(b); + b = ipid->getPidReference(pp, 0, &getpidref); + CHECK(b); + CHECK(getpidref == 10.5); + } - auto setpidrefs = std::vector(ax); - b = ipid->setPidReferences(pp, setpidrefs.data()); - CHECK(b); + //PidReferences + { + auto setpidrefs = std::vector(ax); + yarp::dev::tests::set_vector_crescent(setpidrefs, 11.1); + auto pidrefs = std::vector(ax); + b = ipid->getPidReferences(pp, pidrefs.data()); + CHECK(b); + b = ipid->setPidReferences(vv, setpidrefs.data()); + CHECK(b); + b = ipid->getPidReferences(vv, pidrefs.data()); + CHECK(b); + CHECK(setpidrefs == pidrefs); + } - double errlim=0; - b = ipid->getPidErrorLimit(pp, 0, &errlim); - CHECK(b); + //Error limit + { + double errlim=0; + b = ipid->getPidErrorLimit(pp, 0, &errlim); + CHECK(b); + b = ipid->setPidErrorLimit(pp, 0, 5.0); + CHECK(b); + b = ipid->getPidErrorLimit(pp, 0, &errlim); + CHECK(b); + CHECK(errlim == 5.0); + } - auto errlims = std::vector(ax); - b = ipid->getPidErrorLimits(pp, errlims.data()); - CHECK(b); + //Error limits + { + auto seterrlims = std::vector(ax); + auto errlims = std::vector(ax); + yarp::dev::tests::set_vector_crescent(seterrlims,22.2); + b = ipid->getPidErrorLimits(vv, errlims.data()); + CHECK(b); + b = ipid->setPidErrorLimits(vv, seterrlims.data()); + CHECK(b); + b = ipid->getPidErrorLimits(vv, errlims.data()); + CHECK(b); + CHECK(seterrlims == errlims); + } } inline void exec_iPidControl_test_2(IPidControl* ipid, IAxisInfo* iaxis) diff --git a/src/libYARP_robottestingframework/src/yarp/robottestingframework/JointsPosMotion.cpp b/src/libYARP_robottestingframework/src/yarp/robottestingframework/JointsPosMotion.cpp index 1ed1d17e5cf..3f4740cf4c6 100644 --- a/src/libYARP_robottestingframework/src/yarp/robottestingframework/JointsPosMotion.cpp +++ b/src/libYARP_robottestingframework/src/yarp/robottestingframework/JointsPosMotion.cpp @@ -78,7 +78,7 @@ void yarp::robottestingframework::jointsPosMotion::Private::readJointsLimits() max_lims.resize(n_joints); min_lims.resize(n_joints); for (size_t i = 0; i < n_joints; i++) { - ilim->getLimits((int)jointsList[i], &min_lims[i], &max_lims[i]); + ilim->getPosLimits((int)jointsList[i], &min_lims[i], &max_lims[i]); } }