From e6274af667100f81c2d0428dac679ae91f4daed8 Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Sun, 23 May 2021 20:09:00 +0200 Subject: [PATCH] fixup --- .../library/WBToolboxLibrary_repository.mdl | 1350 +--- .../WBToolboxLibrary_repository.mdl.r2019b | 7122 ----------------- matlab/library/exported/WBToolboxLibrary.slx | Bin 549004 -> 549113 bytes 3 files changed, 266 insertions(+), 8206 deletions(-) delete mode 100644 matlab/library/WBToolboxLibrary_repository.mdl.r2019b diff --git a/matlab/library/WBToolboxLibrary_repository.mdl b/matlab/library/WBToolboxLibrary_repository.mdl index f6a85eee..3d367c4c 100644 --- a/matlab/library/WBToolboxLibrary_repository.mdl +++ b/matlab/library/WBToolboxLibrary_repository.mdl @@ -1,23 +1,13 @@ Library { Name "WBToolboxLibrary_repository" - Version 10.3 + Version 8.4 SavedCharacterEncoding "windows-1252" - ModelUUID "3ee331d3-5631-4689-8bd4-3364f1c40e77" - LogicAnalyzerPlugin "on" - WebScopes_FoundationPlugin "on" - SLCCPlugin "on" - slcheck_filter_plugin "on" - DiagnosticSuppressor "on" - AnimationPlugin "on" - NotesPlugin "on" LibraryType "BlockLibrary" - EnableAccessToBaseWorkspace on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off FPTRunName "Run 1" MaxMDLFileLineLength 120 - LastSavedArchitecture "win64" Object { $PropName "BdWindowsInfo" $ObjectID 1 @@ -37,7 +27,6 @@ Library { Width [50] Height [50] Filter [9] - Minimized "Unset" } Object { $PropName "ExplorerBarInfo" @@ -50,186 +39,112 @@ Library { Dimension 10 Object { $ObjectID 5 - IsActive [1] - IsTabbed [1] - ViewObjType "SimulinkSubsys" - LoadSaveID "192" - Extents [1875.0, 754.0] - ZoomFactor [1.25] - Offset [-217.09382355410617, -110.24437001728751] - SceneRectInView [-217.09382355410617, -110.24437001728751, 1200.0, 482.56] + IsActive [0] + ViewObjType "SimulinkTopLevel" + LoadSaveID "0" + Extents [1920.0, 1010.0] + ZoomFactor [2.7745535930960288] + Offset [-71.812363004544125, -62.351722393577177] } Object { $ObjectID 6 IsActive [0] - IsTabbed [1] ViewObjType "SimulinkSubsys" - LoadSaveID "109" - Extents [1920.0, 943.0] - ZoomFactor [1.0] - Offset [-615.5, -289.0] - SceneRectInView [-615.5, -289.0, 1536.0, 754.0] + LoadSaveID "1296" + Extents [1920.0, 1080.0] + ZoomFactor [5.2466166877616587] + Offset [-148.63713628266035, -114.21997476247031] } Object { $ObjectID 7 - IsActive [0] - IsTabbed [0] + IsActive [1] ViewObjType "SimulinkSubsys" - LoadSaveID "369" + LoadSaveID "192" Extents [1875.0, 754.0] - ZoomFactor [1.7203741212915529] - Offset [113.70627670699702, 95.246736292428238] - SceneRectInView [113.70627670699702, 95.246736292428238, 871.90337347895627, 350.62140992167093] + ZoomFactor [0.5] + Offset [-1896.0237954706945, -507.29812352320369] } Object { $ObjectID 8 IsActive [0] - IsTabbed [0] ViewObjType "SimulinkSubsys" LoadSaveID "209" - Extents [1875.0, 754.0] - ZoomFactor [1.2577147623019183] - Offset [-349.93148442964389, -157.8236768561307] - SceneRectInView [-349.93148442964389, -157.8236768561307, 1192.6392572944296, 479.59999999999997] + Extents [1920.0, 1080.0] + ZoomFactor [2.5] + Offset [-258.01185578242905, -157.8236768561307] } Object { $ObjectID 9 IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkTopLevel" - LoadSaveID "0" - Extents [1875.0, 754.0] - ZoomFactor [2.1564637197664718] - Offset [-105.09593354909862, -25.811988773055376] - SceneRectInView [-105.09593354909862, -25.811988773055376, 695.58323019801992, 279.71720297029708] - } - Object { - $ObjectID 10 - IsActive [0] - IsTabbed [0] ViewObjType "SimulinkSubsys" LoadSaveID "202" - Extents [2522.0, 1199.0] + Extents [1920.0, 1080.0] ZoomFactor [2.4606371641733422] - Offset [213.61276834817875, 99.508993480891093] - SceneRectInView [213.61276834817875, 99.508993480891093, 1024.9377830750893, 487.27216570461223] + Offset [213.61276834817869, 99.508993480891093] } Object { - $ObjectID 11 + $ObjectID 10 IsActive [0] - IsTabbed [0] ViewObjType "SimulinkSubsys" LoadSaveID "176" - Extents [2522.0, 1199.0] + Extents [1920.0, 1080.0] ZoomFactor [4.0] Offset [235.1044081864668, 52.222402871604459] - SceneRectInView [235.1044081864668, 52.222402871604459, 630.5, 299.75] } Object { - $ObjectID 12 + $ObjectID 11 IsActive [0] - IsTabbed [0] ViewObjType "SimulinkSubsys" LoadSaveID "1633" - Extents [2010.0, 839.0] + Extents [1920.0, 1080.0] ZoomFactor [6.2999999999999989] - Offset [-19.500372023809547, -8.00793650793652] - SceneRectInView [-19.500372023809547, -8.00793650793652, 319.04761904761909, 133.17460317460319] + Offset [-19.500372023809547, -9.9920634920635081] } Object { - $ObjectID 13 + $ObjectID 12 IsActive [0] - IsTabbed [0] ViewObjType "SimulinkSubsys" LoadSaveID "1663" - Extents [2010.0, 839.0] + Extents [1920.0, 1080.0] ZoomFactor [5.95] - Offset [-20.290375525210067, -11.920168067226882] - SceneRectInView [-20.290375525210067, -11.920168067226882, 337.81512605042013, 141.00840336134453] + Offset [-20.290375525210067, -14.021008403361336] + } + Object { + $ObjectID 13 + IsActive [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "369" + Extents [1920.0, 1080.0] + ZoomFactor [2.3928943762659363] + Offset [129.66449864161302, 90.022936978934951] } Object { $ObjectID 14 IsActive [0] - IsTabbed [0] ViewObjType "SimulinkSubsys" LoadSaveID "206" - Extents [1943.0, 884.0] + Extents [1920.0, 1080.0] ZoomFactor [6.0] - Offset [252.44396551724137, 145.16666666666663] - SceneRectInView [252.44396551724137, 145.16666666666663, 323.83333333333331, 147.33333333333334] + Offset [252.44396551724139, 145.16666666666663] } PropName "EditorsInfo" } - Array { - Type "Simulink.DockComponentInfo" - Dimension 2 - Object { - $ObjectID 15 - Type "Simulink:Editor:ReferencedFiles" - ID "Referenced Files" - Visible [0] - CreateCallback "" - UserData "{\"filterShowRefModels\":\"true\",\"filterShowRefSubs\":\"true\",\"filterShowOnlyDirtyFiles\":\"false\"}\n" - Floating [0] - DockPosition "Left" - Width [512] - Height [384] - Minimized "Unset" - } - Object { - $ObjectID 16 - Type "GLUE2:PropertyInspector" - ID "Property Inspector" - Visible [0] - CreateCallback "" - UserData "" - Floating [0] - DockPosition "Right" - Width [512] - Height [384] - Minimized "Unset" - } - PropName "DockComponentsInfo" - } - WindowState "AAAA/wAAAAD9AAAAAgAAAAAAAAC9AAACivwCAAAABPsAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAA" - "AAAAAAA+wAAABYARABvAGMAawBXAGkAZABnAGUAdAA0AAAAAAD/////AAAAAAAAAAD7AAAAUgBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0Ac" - "ABvAG4AZQBuAHQALwBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQAAAAANQAAAooAAAB5AP////sAAABgAFMAaQBtAHUAb" - "ABpAG4AawA6AEUAZABpAHQAbwByADoAUgBlAGYAZQByAGUAbgBjAGUAZABGAGkAbABlAHMALwBSAGUAZgBlAHIAZQBuAGMAZQBkACAARgBpAGwAZ" - "QBzAAAAAAD/////AAAApwD///8AAAABAAAAAAAAAAD8AgAAAAH7AAAAVABHAEwAVQBFADIAOgBQAHIAbwBwAGUAcgB0AHkASQBuAHMAcABlAGMAd" - "ABvAHIALwBQAHIAbwBwAGUAcgB0AHkAIABJAG4AcwBwAGUAYwB0AG8AcgAAAAAA/////wAAAhYA////AAAHgAAAAzkAAAABAAAAAgAAAAEAAAAC/" - "AAAAAEAAAACAAAAAA==" - Array { - Type "Cell" - Dimension 0 - PropName "PersistedApps" - } - WindowUuid "c7279315-9484-4d17-a8fb-89419ee2a0fe" } - BDUuid "f635108f-97cd-436e-9bd5-741f3038f9ba" } - HideAutomaticNames off - SequenceViewerTimePrecision 3 - SequenceViewerHistory 1000 Created "Thu Feb 06 02:21:39 2014" Creator "jorhabib" ModifiedByFormat "%" LastModifiedBy "STraversaro" ModifiedDateFormat "%" - LastModifiedDate "Tue May 18 14:54:55 2021" - RTWModifiedTimeStamp 543250488 - ModelVersionFormat "%" + LastModifiedDate "Sun May 23 19:57:20 2021" + RTWModifiedTimeStamp 543700640 + ModelVersionFormat "1.%" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "all" WideLines off ShowLineDimensions off ShowPortDataTypes off - ShowAllPropagatedSignalLabels off - PortDataTypeDisplayFormat "AliasTypeOnly" - ShowEditTimeErrors on - ShowEditTimeWarnings on - ShowEditTimeAdvisorChecks off - ShowPortUnits off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off @@ -237,21 +152,15 @@ Library { ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on - VariantCondition off ShowLinearizationAnnotations on - ShowVisualizeInsertedRTB on ShowMarkup on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off - BlockVariantConditionDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off - FunctionConnectors off - ScheduleConnectors off BrowserLookUnderMasks off - MultithreadedSim "on" SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 @@ -261,13 +170,33 @@ Library { LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" + RecordCoverage off + CovPath "/" + CovSaveName "covdata" + CovMetricSettings "dw" + CovNameIncrementing off + CovHtmlReporting off + CovForceBlockReductionOff on + CovEnableCumulative on + CovSaveCumulativeToWorkspaceVar on + CovSaveSingleToWorkspaceVar on + CovCumulativeVarName "covCumulativeData" + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "Off" + CovExternalEMLEnable off + CovSFcnEnable off + CovBoundaryAbsTol 0.000010 + CovBoundaryRelTol 0.010000 + CovUseTimeInterval off + CovStartTime 0 + CovStopTime 0 ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" - ExtModeTrigSignalOutputPortIndex 0 ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 @@ -283,31 +212,24 @@ Library { ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on - VariantFading on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off - OrderedModelArguments on Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 17 - Version "21.0.0" - DisabledProps [] - Description "" + Version "1.14.3" Array { Type "Handle" - Dimension 10 + Dimension 9 Simulink.SolverCC { $ObjectID 18 - Version "21.0.0" - DisabledProps [] - Description "" + Version "1.14.3" Components [] StartTime "0.0" StopTime "10.0" AbsTol "auto" - AutoScaleAbsTol on FixedStep "auto" InitialStep "auto" MaxOrder 5 @@ -320,32 +242,24 @@ Library { MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" - EnableMultiTasking on + SolverMode "Auto" + EnableConcurrentExecution off ConcurrentTasks off SolverName "ode45" SolverJacobianMethodControl "auto" - DaesscMode "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" - SolverInfoToggleStatus off - IsAutoAppliedInSIP off SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" - SampleTimeProperty [] - DecoupledContinuousIntegration off - MinimalZcImpactIntegration off - ODENIntegrationMethod "ode3" } Simulink.DataIOCC { $ObjectID 19 - Version "21.0.0" - DisabledProps [] - Description "" + Version "1.14.3" Components [] Decimation "1" ExternalInput "[t, u]" @@ -356,7 +270,7 @@ Library { LoadExternalInput off LoadInitialState off SaveFinalState off - SaveOperatingPoint off + SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on @@ -365,8 +279,6 @@ Library { DSMLogging on InspectSignalLogs off VisualizeSimOutput on - StreamToWorkspace off - StreamVariableName "streamout" SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" @@ -378,14 +290,10 @@ Library { OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" - LoggingToFile off - DatasetSignalFormat "timeseries" - LoggingFileName "out.mat" - LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { $ObjectID 20 - Version "21.0.0" + Version "1.14.3" Array { Type "Cell" Dimension 9 @@ -400,16 +308,13 @@ Library { Cell "EfficientTunableParamExpr" PropName "DisabledProps" } - Description "" Components [] BlockReduction on BooleanDataType on ConditionallyExecuteInputs on - DefaultParameterBehavior "Tunable" - UseDivisionForNetSlopeComputation "off" - GainParamInheritBuiltInType off + InlineParams off + UseDivisionForNetSlopeComputation "Off" UseFloatMulNetSlope off - InheritOutputTypeSmallerThanSingle off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off @@ -419,15 +324,12 @@ Library { CachingGlobalReferences off GlobalBufferReuse on StrengthReduction off - AdvancedOptControl "" ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" - BitwiseOrLogicalOp "Same as modeled" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" - PassReuseOutputArgsThreshold 12 ExpressionDepthLimit 2147483647 LocalBlockOutputs on RollThreshold 5 @@ -440,40 +342,21 @@ Library { NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on - SimCompilerOptimization "off" + SimCompilerOptimization "Off" AccelVerboseBuild off - OptimizeBlockOrder "off" - OptimizeDataStoreBuffers on - BusAssignmentInplaceUpdate on - DifferentSizesBufferReuse off - UseRowMajorAlgorithm off - OptimizationLevel "level2" - OptimizationPriority "Balanced" - OptimizationCustomize on - LabelGuidedReuse off - MultiThreadedLoops off - DenormalBehavior "GradualUnderflow" - EfficientTunableParamExpr off } Simulink.DebuggingCC { $ObjectID 21 - Version "21.0.0" - Array { - Type "Cell" - Dimension 1 - Cell "UseOnlyExistingSharedCode" - PropName "DisabledProps" - } - Description "" + Version "1.14.3" Components [] RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" - StringTruncationChecking "error" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" @@ -500,7 +383,6 @@ Library { MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" - ExportedTasksRateTransMsg "none" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" @@ -516,75 +398,47 @@ Library { UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" - FcnCallInpInsideContextMsg "warning" + FcnCallInpInsideContextMsg "EnableAllAsWarning" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" - UseOnlyExistingSharedCode "error" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "error" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" - AllowSymbolicDim on - RowMajorDimensionSupport off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" - ModelReferenceNoExplicitFinalValueMsg "none" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" - OperatingPointInterfaceChecksumMismatchMsg "warning" - NonCurrentReleaseOperatingPointMsg "error" - ChecksumConsistencyForSSReuse "none" - PregeneratedLibrarySubsystemCodeDiagnostic "warning" - MatchCodeGenerationContextForUpdateDiagram "none" + SimStateInterfaceChecksumMismatchMsg "warning" + SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" - SymbolicDimMinMaxWarning "warning" - LossOfSymbolicDimsSimulationWarning "warning" - LossOfSymbolicDimsCodeGenerationWarning "error" - SymbolicDimsDataTypeCodeGenerationDiagnostic "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" - SFUnreachableExecutionPathDiag "warning" + SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" - SFOutputUsedAsStateInMooreChartDiag "error" - SFTemporalDelaySmallerThanSampleTimeDiag "warning" - SFSelfTransitionDiag "warning" - SFExecutionAtInitializationDiag "none" - SFMachineParentedDataDiag "warning" IntegerSaturationMsg "warning" - AllowedUnitSystems "all" - UnitsInconsistencyMsg "warning" - AllowAutomaticUnitConversions on - RCSCRenamedMsg "warning" - RCSCObservableMsg "warning" - ForceCombineOutputUpdateInSim off - UnitDatabase "" - UnderSpecifiedDimensionMsg "none" - DebugExecutionForFMUViaOutOfProcess off - ArithmeticOperatorsInVariantConditions "warning" - VariantConditionMismatch "none" + ModelReferenceCSMismatchMessage "none" } Simulink.HardwareCC { $ObjectID 22 - Version "21.0.0" - DisabledProps [] - Description "" + Version "1.14.3" Components [] ProdBitPerChar 8 ProdBitPerShort 16 @@ -594,8 +448,6 @@ Library { ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 - ProdBitPerSizeT 32 - ProdBitPerPtrDiffT 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" @@ -612,8 +464,6 @@ Library { TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 - TargetBitPerSizeT 32 - TargetBitPerPtrDiffT 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on @@ -626,25 +476,18 @@ Library { TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on - UseEmbeddedCoderFeatures on - UseSimulinkCoderFeatures on - HardwareBoardFeatureSet "EmbeddedCoderHSP" } Simulink.ModelReferenceCC { $ObjectID 23 - Version "21.0.0" - DisabledProps [] - Description "" + Version "1.14.3" Components [] UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" - EnableRefExpFcnMdlSchedulingChecks on CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" - ModelDependencies "" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off @@ -652,56 +495,19 @@ Library { } Simulink.SFSimCC { $ObjectID 24 - Version "21.0.0" - DisabledProps [] - Description "" + Version "1.14.3" Components [] - SimCustomSourceCode "" - SimCustomHeaderCode "" - SimCustomInitializer "" - SimCustomTerminator "" - SimReservedNameArray [] - SimUserSources "" - SimUserIncludeDirs "" - SimUserLibraries "" - SimUserDefines "" - SimCustomCompilerFlags "" - SimCustomLinkerFlags "" SFSimEcho on SimCtrlC on - SimIntegrity "on" + SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on - SimAnalyzeCustomCode off - SimDebugExecutionForCustomCode off SimGenImportedTypeDefs off - ModelFunctionsGlobalVisibility "on" - CompileTimeRecursionLimit 50 - EnableRuntimeRecursion on - MATLABDynamicMemAlloc on - MATLABDynamicMemAllocThreshold 65536 - LegacyBehaviorForPersistentVarInContinuousTime off - CustomCodeFunctionArrayLayout [] - DefaultCustomCodeFunctionArrayLayout "NotSpecified" - CustomCodeUndefinedFunction "UseInterfaceOnly" - CustomCodeGlobalsAsFunctionIO off - DefaultCustomCodeDeterministicFunctions "None" - CustomCodeDeterministicFunctions "" - SimHardwareAcceleration "generic" - SimTargetLang "C" - GPUAcceleration off - SimGPUMallocThreshold 200 - SimGPUStackLimitPerThread 1024 - SimGPUErrorChecks off - SimGPUCustomComputeCapability "" - SimGPUCompilerFlags "" - SimDLTargetLibrary "mkl-dnn" - SimDLAutoTuning on } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 25 - Version "21.0.0" + Version "1.14.3" Array { Type "Cell" Dimension 16 @@ -723,43 +529,25 @@ Library { Cell "CodeProfilingInstrumentation" PropName "DisabledProps" } - Description "" SystemTargetFile "grt.tlc" - HardwareBoard "None" - ShowCustomHardwareApp off - ShowEmbeddedHardwareApp off TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off - PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" GenerateReport off RTWVerbose on RetainRTWFile off - RTWBuildHooks [] ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off RTWUseLocalCustomCode off RTWUseSimCustomCode off - CustomSourceCode "" - CustomHeaderCode "" - CustomInclude "" - CustomSource "" - CustomLibrary "" - CustomDefine "" - CustomBLASCallback "" - CustomLAPACKCallback "" - CustomFFTCallback "" - CustomInitializer "" - CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" - CustomToolchainOptions [] IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off @@ -767,10 +555,9 @@ Library { CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" - CodeProfilingInstrumentation "off" + CodeProfilingInstrumentation off SILDebugging off TargetLang "C" - GenerateGPUCode "None" IncludeBusHierarchyInRTWFileBlockHierarchyMap off GenerateTraceInfo off GenerateTraceReport off @@ -780,35 +567,16 @@ Library { GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off - GenerateMissedCodeReplacementReport off - RTWCompilerOptimization "off" - ObjectivePriorities [] + RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" SharedConstantsCachingThreshold 1024 - GPUKernelNamePrefix "" - GPUDeviceID -1 - GPUMallocMode "discrete" - GPUMallocThreshold 200 - GPUStackLimitPerThread 1024 - GPUcuBLAS on - GPUcuSOLVER on - GPUcuFFT on - GPUErrorChecks off - GPUComputeCapability "3.5" - GPUCustomComputeCapability "" - GPUCompilerFlags "" - GPUMaximumBlocksPerKernel 0 - DLTargetLibrary "none" - DLAutoTuning on - DLArmComputeVersion "19.05" - DLArmComputeArch "unspecified" Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 26 - Version "21.0.0" + Version "1.14.3" Array { Type "Cell" Dimension 28 @@ -842,9 +610,7 @@ Library { Cell "BlockCommentType" PropName "DisabledProps" } - Description "" Components [] - Comment "" ForceParamTrailComments off GenerateComments on CommentStyle "Auto" @@ -859,46 +625,32 @@ Library { SFDataObjDesc off MATLABFcnDesc off MangleLength 1 - SharedChecksumLength 8 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" - CustomSymbolStrModelFcn "$R$N" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" - CustomSymbolStrEmxType "emxArray_$M$N" - CustomSymbolStrEmxFcn "emx$M$N" - CustomUserTokenString "" - CustomCommentsFcn "" DefineNamingRule "None" - DefineNamingFcn "" ParamNamingRule "None" - ParamNamingFcn "" SignalNamingRule "None" - SignalNamingFcn "" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on - BlockCommentType "BlockPathComment" - StateflowObjectComments on MATLABSourceComments off EnableCustomComments off - InternalIdentifierFile "" InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off - ReservedNameArray [] - EnumMemberNameClash "error" } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 27 - Version "21.0.0" + Version "1.14.3" Array { Type "Cell" Dimension 19 @@ -923,7 +675,6 @@ Library { Cell "PreserveStateflowLocalDataDimensions" PropName "DisabledProps" } - Description "" Components [] TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" @@ -932,12 +683,9 @@ Library { TargetLangStandard "C89/C90 (ANSI)" CodeReplacementLibrary "None" UtilityFuncGeneration "Auto" - MultiwordTypeDef "System defined" + ERTMultiwordTypeDef "System defined" MultiwordLength 2048 - DynamicStringBufferSize 256 GenerateFullHeader on - InferredTypesCompatibility off - ExistingSharedCode "" GenerateSampleERTMain off GenerateTestInterfaces off ModelReferenceCompliant on @@ -947,7 +695,6 @@ Library { IncludeMdlTerminateFcn on CombineOutputUpdateFcns off CombineSignalStateStructs off - GroupInternalDataByFunction off SuppressErrorStatus off IncludeFileDelimiter "Auto" ERTCustomFileBanners off @@ -955,13 +702,11 @@ Library { LogVarNameModifier "rt_" MatFileLogging on CodeInterfacePackaging "Nonreusable function" - PurelyIntegerCode off SupportNonFinite on SupportComplex on + PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on - RemoveDisableFunc off - RemoveResetFunc off SupportVariableSizeSignals off ParenthesesLevel "Nominal" CastingMode "Nominal" @@ -969,21 +714,9 @@ Library { ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant on AutosarCompliant off - MDXCompliant off GRTInterface on GenerateAllocFcn off - UseToolchainInfoCompliant on GenerateSharedConstants on - CoderGroups [] - AccessMethods [] - LookupTableObjectStructAxisOrder "1,2,3,4,..." - LUTObjectStructOrderExplicitValues "Size,Breakpoints,Table" - LUTObjectStructOrderEvenSpacing "Size,Breakpoints,Table" - ArrayLayout "Column-major" - UnsupportedSFcnMsg "error" - ERTHeaderFileRootName "$R$E" - ERTSourceFileRootName "$R$E" - ERTDataFileRootName "$R_data" UseMalloc off ExtMode off ExtModeStaticAlloc off @@ -991,7 +724,6 @@ Library { ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" - ExtModeMexArgs "" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off @@ -1003,49 +735,9 @@ Library { PropName "Components" } } - SlCovCC.ConfigComp { - $ObjectID 28 - Version "21.0.0" - DisabledProps [] - Description "Simulink Coverage Configuration Component" - Components [] - Name "Simulink Coverage" - CovEnable off - CovScope "EntireSystem" - CovIncludeTopModel on - RecordCoverage off - CovPath "/" - CovSaveName "covdata" - CovCompData "" - CovMetricSettings "dw" - CovFilter "" - CovHTMLOptions "" - CovNameIncrementing off - CovForceBlockReductionOff on - CovEnableCumulative on - CovSaveCumulativeToWorkspaceVar on - CovSaveSingleToWorkspaceVar on - CovCumulativeVarName "covCumulativeData" - CovCumulativeReport off - CovSaveOutputData on - CovOutputDir "slcov_output/$ModelName$" - CovDataFileName "$ModelName$_cvdata" - CovReportOnPause on - CovModelRefEnable "off" - CovModelRefExcluded "" - CovExternalEMLEnable off - CovSFcnEnable off - CovBoundaryAbsTol 1e-05 - CovBoundaryRelTol 0.01 - CovUseTimeInterval off - CovStartTime 0 - CovStopTime 0 - CovMcdcMode "Masking" - } hdlcoderui.hdlcc { $ObjectID 29 - Version "21.0.0" - DisabledProps [] + Version "1.14.3" Description "HDL Coder custom configuration component" Components [] Name "HDL Coder" @@ -1062,7 +754,6 @@ Library { Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 963, 135, 1843, 765 ] - ExtraOptions "" } PropName "ConfigurationSets" } @@ -1071,13 +762,12 @@ Library { ForegroundColor "black" BackgroundColor "white" DropShadow off - NameLocation "bottom" + NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on - HideAutomaticName on BlockRotation 0 BlockMirror off } @@ -1091,12 +781,7 @@ Library { FontSize 10 FontWeight "normal" FontAngle "normal" - MarkupType "model" UseDisplayTextAsClickCallback off - AnnotationType "note_annotation" - FixedHeight off - FixedWidth off - Interpreter "off" } LineDefaults { FontName "Helvetica" @@ -1107,8 +792,8 @@ Library { MaskDefaults { SelfModifiable "off" IconFrame "on" - IconOpaque "opaque" - RunInitForIconRedraw "analyze" + IconOpaque "on" + RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" @@ -1124,11 +809,6 @@ Library { ToolTip "on" } BlockParameterDefaults { - Block { - BlockType Clock - DisplayTime off - Decimation "10" - } Block { BlockType Constant Value "1" @@ -1174,6 +854,11 @@ Library { SaturateOnIntegerOverflow off SampleTime "-1" } + Block { + BlockType InitialCondition + Value "1" + SampleTime "-1" + } Block { BlockType Inport Port "1" @@ -1184,7 +869,6 @@ Library { OutDataTypeStr "Inherit: auto" LockScale off BusOutputAsStruct off - Unit "inherit" PortDimensions "-1" VarSizeSig "Inherit" SampleTime "-1" @@ -1194,30 +878,32 @@ Library { LatchInputForFeedbackSignals off Interpolate on } + Block { + BlockType Memory + X0 "0" + InheritSampleTime off + LinearizeMemory off + LinearizeAsDelay off + StateMustResolveToSignalObject off + } Block { BlockType Outport Port "1" IconDisplay "Port number" - OutputFunctionCall off OutMin "[]" OutMax "[]" OutDataTypeStr "Inherit: auto" LockScale off BusOutputAsStruct off - Unit "inherit" PortDimensions "-1" VarSizeSig "Inherit" SampleTime "-1" SignalType "auto" SamplingMode "auto" - EnsureOutportIsVirtual off SourceOfInitialOutputValue "Dialog" OutputWhenDisabled "held" InitialOutput "[]" - MustResolveToSignalObject off OutputWhenUnConnected off - OutputWhenUnconnectedValue "0" - VectorParamsAs1DForOutWhenUnconnected on } Block { BlockType Product @@ -1239,7 +925,6 @@ Library { FunctionName "system" SFunctionModules "''" PortCounts "[]" - MultithreadedSim "auto" } Block { BlockType SubSystem @@ -1248,14 +933,12 @@ Library { PermitHierarchicalResolution "All" TreatAsAtomicUnit off MinAlgLoopOccurrences off - ScheduleAs "Sample time" SystemSampleTime "-1" RTWSystemCode "Auto" RTWFcnNameOpts "Auto" RTWFileNameOpts "Auto" FunctionInterfaceSpec "void_void" FunctionWithSeparateData off - MatchGraphicalInterface off RTWMemSecFuncInitTerm "Inherit from model" RTWMemSecFuncExecute "Inherit from model" RTWMemSecDataConstants "Inherit from model" @@ -1269,17 +952,8 @@ Library { MaskHideContents off SFBlockType "NONE" Variant off - VariantControlMode "expression" - VariantActivationTime "update diagram" - AllowZeroVariantControls off - PropagateVariantConditions off - TreatAsGroupedWhenPropagatingVariantConditions on + GeneratePreprocessorConditionals off ContentPreviewEnabled off - IsWebBlock off - IsInjectorSS off - Latency "0" - AutoFrameSizeCalculation off - IsWebBlockPanel off } Block { BlockType Sum @@ -1304,11 +978,7 @@ Library { System { Name "WBToolboxLibrary_repository" Location [-7, -7, 1543, 831] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "black" @@ -1319,10 +989,9 @@ Library { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "216" + ZoomFactor "277" ReportName "simulink-default.rpt" - SIDHighWatermark "1854" - SimulinkSubDomain "Simulink" + SIDHighWatermark "1861" Block { BlockType SubSystem Name "Actuators" @@ -1342,11 +1011,7 @@ Library { System { Name "Actuators" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -1358,7 +1023,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "562" - SimulinkSubDomain "Simulink" Block { BlockType S-Function Name "SetMotorParameters" @@ -1372,7 +1036,6 @@ Library { "tKTau,kTau,setBemf,bemf" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 31 @@ -1601,7 +1264,6 @@ Library { "bsName, WBTConfig] = WBToolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimul" "inkParameters;\n clear WBTConfig;\ncatch\nend" Display "disp(get_param(gcb,'controlType'))\n%port_label('input',1,'References')" - RunInitForIconRedraw "off" Object { $PropName "Parameters" $ObjectID 56 @@ -1674,11 +1336,7 @@ Library { System { Name "SetMotorReferences" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -1690,7 +1348,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "1000" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "References" @@ -1709,7 +1366,6 @@ Library { Parameters "'SetReferences','WBToolbox',WBTConfigParameters,configBlockAbsName,controlType,refSpeed" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Line { ZOrder 1 @@ -1747,7 +1403,6 @@ Library { "on\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WBToolbox.BlockInitialization(gcb, gcs" ");\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear WBTConfig;\ncatch\nend" Display "disp(get_param(gcb,'controlType'))\n%port_label('input',1,'References')" - RunInitForIconRedraw "off" Array { Type "Simulink.MaskParameter" Dimension 3 @@ -1856,11 +1511,7 @@ Library { System { Name "SetReferences" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -1872,7 +1523,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "1000" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "References" @@ -1891,7 +1541,6 @@ Library { Parameters "'SetReferences','WBToolbox',WBTConfigParameters,configBlockAbsName,controlType,refTrajectory" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Line { ZOrder 1 @@ -1923,11 +1572,7 @@ Library { System { Name "Model" Location [-7, -7, 1543, 831] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -1938,8 +1583,7 @@ Library { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "126" - SimulinkSubDomain "Simulink" + ZoomFactor "250" Block { BlockType SubSystem Name "Dynamics" @@ -1958,11 +1602,7 @@ Library { System { Name "Dynamics" Location [-7, -7, 1543, 831] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -1973,8 +1613,7 @@ Library { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "172" - SimulinkSubDomain "Simulink" + ZoomFactor "239" Block { BlockType SubSystem Name "CentroidalMomentum" @@ -1999,7 +1638,6 @@ Library { Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " "WBTConfig;\ncatch\nend" - RunInitForIconRedraw "off" Object { $PropName "DialogControls" $ObjectID 78 @@ -2038,11 +1676,7 @@ Library { System { Name "CentroidalMomentum" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -2054,7 +1688,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "480" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "Base Pose" @@ -2097,7 +1730,6 @@ Library { Parameters "'CentroidalMomentum','WBToolbox',WBTConfigParameters,configBlockAbsName" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -2105,7 +1737,6 @@ Library { SID "1700" Position [315, 73, 345, 87] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -2166,7 +1797,6 @@ Library { Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " "WBTConfig;\ncatch\nend" - RunInitForIconRedraw "off" Object { $PropName "DialogControls" $ObjectID 83 @@ -2205,11 +1835,7 @@ Library { System { Name "GetBiasForces" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -2221,7 +1847,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "395" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "Base Pose" @@ -2282,7 +1907,6 @@ Library { Parameters "'InverseDynamics','WBToolbox',WBTConfigParameters,configBlockAbsName" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -2290,7 +1914,6 @@ Library { SID "1783" Position [300, 113, 330, 127] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -2373,7 +1996,6 @@ Library { Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " "WBTConfig;\ncatch\nend" - RunInitForIconRedraw "off" Object { $PropName "DialogControls" $ObjectID 88 @@ -2412,11 +2034,7 @@ Library { System { Name "GetGravityForces" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -2428,7 +2046,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "395" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "Base Pose" @@ -2473,7 +2090,6 @@ Library { Parameters "'InverseDynamics','WBToolbox',WBTConfigParameters,configBlockAbsName" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -2481,7 +2097,6 @@ Library { SID "1789" Position [300, 113, 330, 127] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -2561,7 +2176,6 @@ Library { Parameters "'InverseDynamics','WBToolbox',WBTConfigParameters,configBlockAbsName" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 92 @@ -2581,7 +2195,6 @@ Library { Display "port_label('output', 1, 'Torques')\n\nport_label('input', 1, 'Base pose')\nport_label('input', 2, 'Joints" " configuration')\nport_label('input', 3, 'Base velocity')\nport_label('input', 4, 'Joints velocity')\nport_label('in" "put', 5, 'Base acceleration')\nport_label('input', 6, 'Joints acceleration')\n" - RunInitForIconRedraw "off" Object { $PropName "DialogControls" $ObjectID 93 @@ -2638,7 +2251,6 @@ Library { Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " "WBTConfig;\ncatch\nend" - RunInitForIconRedraw "off" Object { $PropName "DialogControls" $ObjectID 98 @@ -2676,12 +2288,8 @@ Library { } System { Name "MassMatrix" - Location [0, 0, 2048, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Location [-7, -7, 1543, 831] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -2693,7 +2301,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "630" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "Base Pose" @@ -2720,7 +2327,6 @@ Library { Parameters "'MassMatrix','WBToolbox',WBTConfigParameters,configBlockAbsName" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -2728,7 +2334,6 @@ Library { SID "1637" Position [245, 48, 275, 62] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -2774,12 +2379,8 @@ Library { } System { Name "Jacobians" - Location [67, 148, 2627, 1588] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Location [-7, -7, 1543, 831] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -2791,7 +2392,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "246" - SimulinkSubDomain "Simulink" Block { BlockType S-Function Name "CentroidalTotalMomentumMatrix" @@ -2803,7 +2403,6 @@ Library { Parameters "'CentroidalTotalMomentumMatrix', 'WBToolbox', WBTConfigParameters, configBlockAbsName" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 103 @@ -2925,11 +2524,7 @@ Library { System { Name "DotJNu" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -2941,7 +2536,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "595" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "Base Pose" @@ -2984,7 +2578,6 @@ Library { Parameters "'DotJNu','WBToolbox',WBTConfigParameters,configBlockAbsName,frameName" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -2992,7 +2585,6 @@ Library { SID "1689" Position [245, 58, 275, 72] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -3117,12 +2709,8 @@ Library { } System { Name "Jacobian" - Location [0, 0, 2048, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Location [-7, -7, 1543, 831] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -3134,7 +2722,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "595" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "Base Pose" @@ -3161,7 +2748,6 @@ Library { Parameters "'Jacobian','WBToolbox',WBTConfigParameters,configBlockAbsName,frameName" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -3169,7 +2755,6 @@ Library { SID "1667" Position [245, 48, 275, 62] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -3215,12 +2800,8 @@ Library { } System { Name "Kinematics" - Location [67, 148, 2627, 1588] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Location [-7, -7, 1543, 831] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -3232,7 +2813,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "400" - SimulinkSubDomain "Simulink" Block { BlockType SubSystem Name "ForwardKinematics" @@ -3320,11 +2900,7 @@ Library { System { Name "ForwardKinematics" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -3336,7 +2912,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "595" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "Base Pose" @@ -3363,7 +2938,6 @@ Library { Parameters "'ForwardKinematics','WBToolbox',WBTConfigParameters,configBlockAbsName,frameName" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -3371,7 +2945,6 @@ Library { SID "1651" Position [245, 48, 275, 62] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -3588,11 +3161,7 @@ Library { System { Name "InverseKinematics" Location [0, 23, 1280, 744] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -3604,7 +3173,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "312" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "Desired frame pose" @@ -3639,7 +3207,6 @@ Library { Parameters "'InverseKinematics',robotName,localName,wbiFile,wbiList,baseFrame, endEffFrame,optOption" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -3647,7 +3214,6 @@ Library { SID "1758" Position [280, 23, 310, 37] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Block { BlockType Outport @@ -3656,7 +3222,6 @@ Library { Position [280, 68, 310, 82] ZOrder 27 Port "2" - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -3795,11 +3360,7 @@ Library { System { Name "RelativeTransform" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -3811,7 +3372,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "834" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "Joint configuration" @@ -3830,7 +3390,6 @@ Library { Parameters "'RelativeTransform','WBToolbox',WBTConfigParameters,configBlockAbsName,frame1, frame2" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -3838,7 +3397,6 @@ Library { SID "1803" Position [225, 48, 255, 62] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 4 @@ -3988,11 +3546,7 @@ Library { System { Name "RemoteInverseKinematics" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -4004,7 +3558,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "469" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "Desired frame pose" @@ -4031,7 +3584,6 @@ Library { Parameters "'RemoteInverseKinematics',solverName, dofs, optOption" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -4039,7 +3591,6 @@ Library { SID "1765" Position [285, 48, 315, 62] ZOrder 27 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -4086,12 +3637,8 @@ Library { } System { Name "States" - Location [2568, 323, 4549, 1448] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Location [-7, -7, 1543, 831] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -4103,7 +3650,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "600" - SimulinkSubDomain "Simulink" Block { BlockType SubSystem Name "GetLimits" @@ -4134,7 +3680,6 @@ Library { SelfModifiable "on" Display "fprintf('%s\\n(%s)',get_param(gcb,'limitsType'),get_param(gcb,'limitsSource'))\n\nport_label('outpu" "t',1,'Min')\nport_label('output',2,'Max')" - RunInitForIconRedraw "off" Array { Type "Simulink.MaskParameter" Dimension 2 @@ -4235,11 +3780,7 @@ Library { System { Name "GetLimits" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -4252,7 +3793,6 @@ Library { ShowPageBoundaries off ZoomFactor "966" SIDHighWatermark "1773" - SimulinkSubDomain "Simulink" Block { BlockType S-Function Name "S-Function" @@ -4264,7 +3804,6 @@ Library { Parameters "'GetLimits','WBToolbox',WBTConfigParameters,configBlockAbsName,limitsType" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -4272,7 +3811,6 @@ Library { SID "1690:1692" Position [220, 43, 250, 57] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Block { BlockType Outport @@ -4281,7 +3819,6 @@ Library { Position [220, 78, 250, 92] ZOrder 26 Port "2" - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -4321,7 +3858,6 @@ Library { "] = WBToolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n " " clear WBTConfig;\ncatch\nend" Display "port_label('output', 1, get_param(gcb,'measuredType'))" - RunInitForIconRedraw "off" Object { $PropName "Parameters" $ObjectID 186 @@ -4394,11 +3930,7 @@ Library { System { Name "GetMeasurement" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -4410,7 +3942,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "1000" - SimulinkSubDomain "Simulink" Block { BlockType S-Function Name "S-Function" @@ -4422,7 +3953,6 @@ Library { Parameters "'GetMeasurement','WBToolbox',WBTConfigParameters,configBlockAbsName,measuredType" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -4430,7 +3960,6 @@ Library { SID "1673" Position [210, 48, 240, 62] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -4463,7 +3992,6 @@ Library { "] = WBToolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n " " clear WBTConfig;\ncatch\nend" Display "port_label('output', 1, get_param(gcb,'measuredType'))" - RunInitForIconRedraw "off" Object { $PropName "Parameters" $ObjectID 194 @@ -4541,11 +4069,7 @@ Library { System { Name "GetMotorMeasurement" Location [0, 27, 1920, 1080] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -4557,7 +4081,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "1000" - SimulinkSubDomain "Simulink" Block { BlockType S-Function Name "S-Function" @@ -4569,7 +4092,6 @@ Library { Parameters "'GetMeasurement','WBToolbox',WBTConfigParameters,configBlockAbsName,measuredType" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off } Block { BlockType Outport @@ -4577,7 +4099,6 @@ Library { SID "1798" Position [210, 48, 240, 62] ZOrder 25 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -4609,11 +4130,7 @@ Library { System { Name "Utilities" Location [-7, -7, 1543, 831] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] - Open on - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" + Open off ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -4624,8 +4141,7 @@ Library { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "125" - SimulinkSubDomain "Simulink" + ZoomFactor "50" Block { BlockType SubSystem Name "Configuration" @@ -4643,7 +4159,6 @@ Library { $ClassName "Simulink.Mask" SelfModifiable "on" Display "disp('Config')" - RunInitForIconRedraw "off" Array { Type "Simulink.MaskParameter" Dimension 8 @@ -4828,11 +4343,7 @@ Library { System { Name "Configuration" Location [550, 86, 1677, 725] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -4845,7 +4356,6 @@ Library { ShowPageBoundaries off ZoomFactor "600" SIDHighWatermark "70" - SimulinkSubDomain "Simulink" Block { BlockType Constant Name "ImConfig" @@ -4883,7 +4393,6 @@ Library { $PropName "MaskObject" $ObjectID 225 $ClassName "Simulink.Mask" - RunInitForIconRedraw "off" Object { $PropName "Parameters" $ObjectID 226 @@ -4897,11 +4406,7 @@ Library { System { Name "DampPinv" Location [0, 29, 1280, 744] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -4913,7 +4418,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "100" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "mat" @@ -4938,18 +4442,14 @@ Library { ZOrder -4 LibraryVersion "1.32" ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ExplicitOnly" + PermitHierarchicalResolution "ParametersOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" System { Name "Damped Pseudo Inverse" Location [12, 45, 1279, 3773] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -4961,8 +4461,7 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "100" - SIDHighWatermark "1634" - SimulinkSubDomain "Simulink" + SIDHighWatermark "1637" Block { BlockType Inport Name "mat" @@ -4981,25 +4480,24 @@ Library { Block { BlockType Demux Name " Demux " - SID "107::1633" + SID "107::1636" Ports [1, 1] Position [270, 230, 320, 270] - ZOrder 113 + ZOrder 116 Outputs "1" } Block { BlockType S-Function Name " SFunction " - SID "107::1632" - Tag "Stateflow S-Function 6" + SID "107::1635" + Tag "Stateflow S-Function WBToolboxLibrary_repository 6" Ports [2, 2] Position [180, 100, 230, 160] - ZOrder 112 + ZOrder 115 FunctionName "sf_sfun" PortCounts "[2 2]" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Port { PortNumber 2 Name "DPinv" @@ -5008,9 +4506,9 @@ Library { Block { BlockType Terminator Name " Terminator " - SID "107::1634" + SID "107::1637" Position [460, 241, 480, 259] - ZOrder 114 + ZOrder 117 } Block { BlockType Outport @@ -5018,10 +4516,9 @@ Library { SID "107::5" Position [460, 101, 480, 119] ZOrder -6 - VectorParamsAs1DForOutWhenUnconnected off } Line { - ZOrder 86 + ZOrder 91 SrcBlock "mat" SrcPort 1 Points [120, 0] @@ -5029,7 +4526,7 @@ Library { DstPort 1 } Line { - ZOrder 87 + ZOrder 92 SrcBlock "sigma" SrcPort 1 DstBlock " SFunction " @@ -5037,7 +4534,7 @@ Library { } Line { Name "DPinv" - ZOrder 88 + ZOrder 93 Labels [0, 0] SrcBlock " SFunction " SrcPort 2 @@ -5045,14 +4542,14 @@ Library { DstPort 1 } Line { - ZOrder 89 + ZOrder 94 SrcBlock " Demux " SrcPort 1 DstBlock " Terminator " DstPort 1 } Line { - ZOrder 90 + ZOrder 95 SrcBlock " SFunction " SrcPort 1 DstBlock " Demux " @@ -5066,7 +4563,6 @@ Library { SID "108" Position [225, 73, 255, 87] ZOrder -5 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -5103,7 +4599,6 @@ Library { Parameters "'DiscreteFilter','WBToolbox',filterDataStruct" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 227 @@ -5115,7 +4610,6 @@ Library { "umCoeffs;\nfilterDataStruct.DenCoeffs = denCoeffs;\nfilterDataStruct.y0 = y0;\nfilterDataStruct.u0 = u0;\nfilterD" "ataStruct.InitStatus = uint8(initStatus);" Display "disp('Filter')" - RunInitForIconRedraw "off" Array { Type "Simulink.MaskParameter" Dimension 9 @@ -5324,16 +4818,11 @@ Library { "nly 1D vectors." Display "port_label('input', 1, 'Reference')\nport_label('input', 2, 'Signal')\nport_label('output', 1, 'Sig" "nal')" - RunInitForIconRedraw "off" } System { Name "MatchSignalSizes" Location [548, 183, 3416, 1872] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -5345,14 +4834,13 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "1000" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "Reference" SID "1819" Position [315, 178, 345, 192] ZOrder 240 - NameLocation "top" + NamePlacement "alternate" } Block { BlockType Inport @@ -5383,7 +4871,6 @@ Library { SID "1823" Position [410, 243, 440, 257] ZOrder 244 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 27 @@ -5430,7 +4917,6 @@ Library { "ves,explicitInitialValue,externalSettlingTime,resetOnSettlingTime" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 252 @@ -5603,15 +5089,14 @@ Library { Block { BlockType S-Function Name "OSQP" - SID "1854" + SID "1861" Ports [4, 2] - Position [640, -3, 825, 73] - ZOrder 253 + Position [650, -13, 835, 63] + ZOrder 255 FunctionName "BlockFactory" Parameters "'OSQP','WBToolbox',lbA,ubA,lb,ub,computeObjVal,stopIfFails" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 273 @@ -5768,7 +5253,6 @@ Library { Parameters "'QpOases','WBToolbox',lbA,ubA,lb,ub,computeObjVal,stopIfFails" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 292 @@ -5928,7 +5412,6 @@ Library { Parameters "'RealTimeSynchronizer','WBToolbox',period" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 311 @@ -5937,7 +5420,6 @@ Library { Description "This block slows down the simulation trying to match the period specified \nas parameter (in se" "conds).\nThe bigger the period the more probable \nis that Simulink can remain synched with it.\n" Display "disp('Real Time Synchronizer')" - RunInitForIconRedraw "off" Object { $PropName "Parameters" $ObjectID 312 @@ -5962,7 +5444,6 @@ Library { Parameters "'SimulatorSynchronizer','WBToolbox',period, serverPortName, clientPortName" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 313 @@ -5971,7 +5452,6 @@ Library { Description "This block synchronizes with the external simulation on a simulator \n(only Gazebo is supported" " at the moment).\n\n" Display "disp('Simulator Synchronizer')" - RunInitForIconRedraw "off" Array { Type "Simulink.MaskParameter" Dimension 3 @@ -6013,7 +5493,6 @@ Library { $PropName "MaskObject" $ObjectID 317 $ClassName "Simulink.Mask" - RunInitForIconRedraw "off" Object { $PropName "Parameters" $ObjectID 318 @@ -6026,12 +5505,8 @@ Library { } System { Name "TruncPinv" - Location [-7, -7, 1543, 831] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] - Open on - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" + Location [0, 29, 1280, 744] + Open off ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -6043,7 +5518,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "100" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "S" @@ -6068,18 +5542,14 @@ Library { ZOrder -4 LibraryVersion "1.32" ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ExplicitOnly" + PermitHierarchicalResolution "ParametersOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" System { Name "Truncated PseudoInverse" Location [12, 45, 1279, 3773] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -6091,8 +5561,7 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "100" - SIDHighWatermark "1625" - SimulinkSubDomain "Simulink" + SIDHighWatermark "1628" Block { BlockType Inport Name "mat" @@ -6111,25 +5580,24 @@ Library { Block { BlockType Demux Name " Demux " - SID "112::1624" + SID "112::1627" Ports [1, 1] Position [270, 230, 320, 270] - ZOrder 113 + ZOrder 116 Outputs "1" } Block { BlockType S-Function Name " SFunction " - SID "112::1623" - Tag "Stateflow S-Function 7" + SID "112::1626" + Tag "Stateflow S-Function WBToolboxLibrary_repository 7" Ports [2, 2] Position [180, 100, 230, 160] - ZOrder 112 + ZOrder 115 FunctionName "sf_sfun" PortCounts "[2 2]" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Port { PortNumber 2 Name "TPinv" @@ -6138,9 +5606,9 @@ Library { Block { BlockType Terminator Name " Terminator " - SID "112::1625" + SID "112::1628" Position [460, 241, 480, 259] - ZOrder 114 + ZOrder 117 } Block { BlockType Outport @@ -6148,10 +5616,9 @@ Library { SID "112::5" Position [460, 101, 480, 119] ZOrder -6 - VectorParamsAs1DForOutWhenUnconnected off } Line { - ZOrder 86 + ZOrder 91 SrcBlock "mat" SrcPort 1 Points [120, 0] @@ -6159,7 +5626,7 @@ Library { DstPort 1 } Line { - ZOrder 87 + ZOrder 92 SrcBlock "tol" SrcPort 1 DstBlock " SFunction " @@ -6167,7 +5634,7 @@ Library { } Line { Name "TPinv" - ZOrder 88 + ZOrder 93 Labels [0, 0] SrcBlock " SFunction " SrcPort 2 @@ -6175,14 +5642,14 @@ Library { DstPort 1 } Line { - ZOrder 89 + ZOrder 94 SrcBlock " Demux " SrcPort 1 DstBlock " Terminator " DstPort 1 } Line { - ZOrder 90 + ZOrder 95 SrcBlock " SFunction " SrcPort 1 DstBlock " Demux " @@ -6196,7 +5663,6 @@ Library { SID "113" Position [225, 73, 255, 87] ZOrder -5 - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -6233,7 +5699,6 @@ Library { Parameters "'YarpClock','WBToolbox'" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 319 @@ -6243,7 +5708,6 @@ Library { "the C++ function call yarp::os::Time::now()" SelfModifiable "on" Display "disp('YARP Time')\n" - RunInitForIconRedraw "off" } } Block { @@ -6258,7 +5722,6 @@ Library { Parameters "'YarpRead','WBToolbox',portName,signalSize,blocking,timestamp,autoconnect,errorOnConnection,timeout" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 320 @@ -6356,7 +5819,6 @@ Library { Parameters "'YarpWrite','WBToolbox',portName,autoconnect,errorOnConnection" SFunctionDeploymentMode off EnableBusSupport off - SFcnIsStateOwnerBlock off Object { $PropName "MaskObject" $ObjectID 328 @@ -6368,7 +5830,6 @@ Library { " \"yarp write ... /destinationPort\"\n" SelfModifiable "on" Display "disp('YarpWrite')" - RunInitForIconRedraw "off" Array { Type "Simulink.MaskParameter" Dimension 3 @@ -6418,16 +5879,11 @@ Library { Type "Errors" Description "Computes two kinds of errors. The first is just the difference between x\nand y while the secon" "d is the ratio (x-y)/y." - RunInitForIconRedraw "off" } System { Name "errors" Location [0, 29, 1280, 744] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -6439,7 +5895,6 @@ Library { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "100" - SimulinkSubDomain "Simulink" Block { BlockType Inport Name "x" @@ -6480,7 +5935,6 @@ Library { SID "719" Position [225, 13, 255, 27] ZOrder -5 - VectorParamsAs1DForOutWhenUnconnected off } Block { BlockType Outport @@ -6489,7 +5943,6 @@ Library { Position [220, 48, 250, 62] ZOrder -6 Port "2" - VectorParamsAs1DForOutWhenUnconnected off } Line { ZOrder 1 @@ -6557,16 +6010,11 @@ Library { $ClassName "Simulink.Mask" Type "Holder" Description "This block holds the first input value during the simulation." - RunInitForIconRedraw "off" } System { Name "holder\n" - Location [12, 45, 1340, 980] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Location [-7, -7, 1543, 831] Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -6577,210 +6025,115 @@ Library { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "100" - SimulinkSubDomain "Simulink" + ZoomFactor "525" Block { BlockType Inport Name "s" - SID "1297" - Position [145, 43, 175, 57] - ZOrder 13 + SID "1853" + Position [-140, -37, -110, -23] + ZOrder 28 } Block { - BlockType Clock - Name "Clock" - SID "1298" - Position [45, 65, 65, 85] - ZOrder 11 + BlockType Sum + Name "Add" + SID "1854" + Ports [2, 1] + Position [35, -50, 65, -20] + ZOrder 34 + Inputs "|++" } Block { - BlockType Reference - Name "Compare\nTo Constant" - SID "1299" - Ports [1, 1] - Position [90, 60, 120, 90] - ZOrder 10 - LibraryVersion "1.480" - SourceBlock "simulink/Logic and Bit\nOperations/Compare\nTo Constant" - SourceType "Compare To Constant" - SourceProductBaseCode "SL" - RTWMemSecFuncInitTerm "Inherit from model" - RTWMemSecFuncExecute "Inherit from model" - RTWMemSecDataConstants "Inherit from model" - RTWMemSecDataInternal "Inherit from model" - RTWMemSecDataParameters "Inherit from model" - ContentPreviewEnabled off - relop "==" - const "0" - OutDataTypeStr "boolean" - ZeroCross on + BlockType Constant + Name "Constant" + SID "1855" + Position [-140, -95, -110, -65] + ZOrder 32 + Value "0" } Block { - BlockType SubSystem - Name "MATLAB Function" - SID "1300" + BlockType InitialCondition + Name "IC" + SID "1856" + Position [-95, -102, -55, -58] + ZOrder 31 + } + Block { + BlockType Memory + Name "Memory" + SID "1857" + Position [70, -5, 100, 25] + ZOrder 30 + BlockMirror on + InheritSampleTime on + } + Block { + BlockType Product + Name "Product" + SID "1858" Ports [2, 1] - Position [235, 37, 305, 88] - ZOrder 15 - LibraryVersion "1.32" - ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ExplicitOnly" - TreatAsAtomicUnit on - RequestExecContextInheritance off - SFBlockType "MATLAB Function" - System { - Name "MATLAB Function" - Location [12, 45, 1135, 3068] - SystemRect [0.000000, 0.000000, 0.000000, 0.000000] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "100" - SIDHighWatermark "1631" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "s" - SID "1300::24" - Position [20, 101, 40, 119] - ZOrder 10 - } - Block { - BlockType Inport - Name "unused" - SID "1300::26" - Position [20, 136, 40, 154] - ZOrder 12 - Port "2" - } - Block { - BlockType Demux - Name " Demux " - SID "1300::1630" - Ports [1, 1] - Position [270, 230, 320, 270] - ZOrder 101 - Outputs "1" - } - Block { - BlockType S-Function - Name " SFunction " - SID "1300::1629" - Tag "Stateflow S-Function 1" - Ports [2, 2] - Position [180, 100, 230, 160] - ZOrder 100 - FunctionName "sf_sfun" - PortCounts "[2 2]" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Port { - PortNumber 2 - Name "s0" - } - } - Block { - BlockType Terminator - Name " Terminator " - SID "1300::1631" - Position [460, 241, 480, 259] - ZOrder 102 - } - Block { - BlockType Outport - Name "s0" - SID "1300::25" - Position [460, 101, 480, 119] - ZOrder 11 - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 86 - SrcBlock "s" - SrcPort 1 - Points [120, 0] - DstBlock " SFunction " - DstPort 1 - } - Line { - ZOrder 87 - SrcBlock "unused" - SrcPort 1 - DstBlock " SFunction " - DstPort 2 - } - Line { - Name "s0" - ZOrder 88 - Labels [0, 0] - SrcBlock " SFunction " - SrcPort 2 - DstBlock "s0" - DstPort 1 - } - Line { - ZOrder 89 - SrcBlock " Demux " - SrcPort 1 - DstBlock " Terminator " - DstPort 1 - } - Line { - ZOrder 90 - SrcBlock " SFunction " - SrcPort 1 - DstBlock " Demux " - DstPort 1 - } - } + Position [-25, -53, 5, -22] + ZOrder 33 } Block { BlockType Outport Name "s(0)" - SID "1301" - Position [330, 58, 360, 72] - ZOrder 14 - VectorParamsAs1DForOutWhenUnconnected off + SID "1859" + Position [145, -42, 175, -28] + ZOrder 29 } Line { - ZOrder 1 - SrcBlock "Clock" + ZOrder 5 + SrcBlock "Memory" SrcPort 1 - DstBlock "Compare\nTo Constant" - DstPort 1 + Points [-15, 0] + DstBlock "Add" + DstPort 2 } Line { - ZOrder 2 - SrcBlock "MATLAB Function" + ZOrder 6 + SrcBlock "Constant" SrcPort 1 - DstBlock "s(0)" + DstBlock "IC" DstPort 1 } Line { - ZOrder 3 + ZOrder 9 + SrcBlock "Add" + SrcPort 1 + Points [49, 0] + Branch { + ZOrder 8 + Points [0, 45] + DstBlock "Memory" + DstPort 1 + } + Branch { + ZOrder 7 + DstBlock "s(0)" + DstPort 1 + } + } + Line { + ZOrder 10 SrcBlock "s" SrcPort 1 - DstBlock "MATLAB Function" + DstBlock "Product" + DstPort 2 + } + Line { + ZOrder 11 + SrcBlock "IC" + SrcPort 1 + Points [10, 0] + DstBlock "Product" DstPort 1 } Line { - ZOrder 4 - SrcBlock "Compare\nTo Constant" + ZOrder 12 + SrcBlock "Product" SrcPort 1 - DstBlock "MATLAB Function" - DstPort 2 + DstBlock "Add" + DstPort 1 } } } @@ -6789,7 +6142,7 @@ Library { Annotation { SID "1213" Name "WHOLE BODY TOOLBOX" - Position [172, 149, 304, 165] + Position [238, 157, 370, 173] InternalMargins [0, 0, 0, 0] ForegroundColor "white" BackgroundColor "black" @@ -6812,7 +6165,7 @@ Library { "1) http://www.codyco.eu

\n

H2020 EU Project AnDy (No. 731540 H" "2020-ICT-2016-1) http://andy-project.eu

" - Position [157, 176, 333, 208] + Position [245, 192, 421, 224] InternalMargins [0, 0, 0, 0] ForegroundColor "white" BackgroundColor "black" @@ -6831,23 +6184,25 @@ Stateflow { machine { id 1 name "WBToolboxLibrary_repository" - sfVersion 80000041 - firstTarget 26 + created "06-Feb-2014 02:21:39" + isLibrary 1 + sfVersion 80000001 + firstTarget 18 } chart { id 2 machine 1 - name "Utilities/holder\n/MATLAB Function" - windowPosition [1152 -205 -179 985] + name "Utilities/DampPinv/Damped Pseudo Inverse" + windowPosition [699 -205 167 985] viewLimits [0 156.75 0 153.75] screen [1 1 3046 1050 1.25] treeNode [0 3 0 0] viewObj 2 toolbarMode LIBRARY_TOOLBAR - ssIdHighWaterMark 9 + ssIdHighWaterMark 8 decomposition CLUSTER_CHART type EML_CHART - chartFileNumber 1 + chartFileNumber 6 disableImplicitCasting 1 eml { name "fcn" @@ -6870,15 +6225,16 @@ Stateflow { decomposition CLUSTER_STATE eml { isEML 1 - script "function s0 = fcn(s, ~)\npersistent state\n%#codegen\n\nif isempty(state)\n state = s;\nend\n\n" - "s0 = state;" + script "function DPinv = fcn(mat,sigma)\n% Economody size svd of mat\n[U,S,V] = svd(mat,'econ');\n% Damp" + "ed version of S with sigma\nS(S>sigma)=S(S>sigma)./((S(S>sigma)).^2+sigma^2);\n% Damped pseudoinverse\nDPinv = V" + "*pinv(S)*U';" editorLayout "100 M4x1[10 5 700 500]" } } data { id 4 - ssIdNumber 7 - name "s" + ssIdNumber 4 + name "mat" scope INPUT_DATA machine 1 props { @@ -6888,22 +6244,16 @@ Stateflow { type { method SF_INHERITED_TYPE primitive SF_DOUBLE_TYPE - isSigned 1 - wordLength "16" } complexity SF_COMPLEX_INHERITED - frame SF_FRAME_INHERITED - unit { - name "inherit" - } } dataType "Inherit: Same as Simulink" linkNode [2 0 5] } data { id 5 - ssIdNumber 8 - name "s0" + ssIdNumber 5 + name "DPinv" scope OUTPUT_DATA machine 1 props { @@ -6913,22 +6263,17 @@ Stateflow { type { method SF_INHERITED_TYPE primitive SF_DOUBLE_TYPE - isSigned 1 - wordLength "16" } complexity SF_COMPLEX_INHERITED frame SF_FRAME_NO - unit { - name "inherit" - } } dataType "Inherit: Same as Simulink" linkNode [2 4 6] } data { id 6 - ssIdNumber 9 - name "unused" + ssIdNumber 8 + name "sigma" scope INPUT_DATA machine 1 props { @@ -6943,9 +6288,6 @@ Stateflow { } complexity SF_COMPLEX_INHERITED frame SF_FRAME_INHERITED - unit { - name "inherit" - } } dataType "Inherit: Same as Simulink" linkNode [2 5 0] @@ -6962,7 +6304,7 @@ Stateflow { transition { id 8 labelString "{eML_blk_kernel();}" - labelPosition [76.125 85.875 102.544 14.964] + labelPosition [80.125 91.875 102.544 14.964] fontSize 12 src { intersection [0 0 1 0 23.5747 14.625 0 0] @@ -6986,14 +6328,14 @@ Stateflow { instance { id 9 machine 1 - name "Utilities/holder\n/MATLAB Function" + name "Utilities/DampPinv/Damped Pseudo Inverse" chart 2 } chart { id 10 machine 1 - name "Utilities/DampPinv/Damped Pseudo Inverse" - windowPosition [699 -205 167 985] + name "Utilities/TruncPinv/Truncated PseudoInverse" + windowPosition [649 -205 167 985] viewLimits [0 156.75 0 153.75] screen [1 1 3046 1050 1.25] treeNode [0 11 0 0] @@ -7002,7 +6344,7 @@ Stateflow { ssIdHighWaterMark 8 decomposition CLUSTER_CHART type EML_CHART - chartFileNumber 6 + chartFileNumber 7 disableImplicitCasting 1 eml { name "fcn" @@ -7025,9 +6367,8 @@ Stateflow { decomposition CLUSTER_STATE eml { isEML 1 - script "function DPinv = fcn(mat,sigma)\n% Economody size svd of mat\n[U,S,V] = svd(mat,'econ');\n% Damp" - "ed version of S with sigma\nS(S>sigma)=S(S>sigma)./((S(S>sigma)).^2+sigma^2);\n% Damped pseudoinverse\nDPinv = V" - "*pinv(S)*U';" + script "function TPinv = fcn(mat,tol)\n%#codegen\n[U,S,V] = svd(mat,'econ');\n% Setting to zero value\n%" + " Setting to 1/S(i,i) singular values greater than tol\n S(S>tol)=1./S(S>tol);\n TPinv = V*pinv(S)*U';" editorLayout "100 M4x1[10 5 700 500]" } } @@ -7046,9 +6387,6 @@ Stateflow { primitive SF_DOUBLE_TYPE } complexity SF_COMPLEX_INHERITED - unit { - name "inherit" - } } dataType "Inherit: Same as Simulink" linkNode [10 0 13] @@ -7056,7 +6394,7 @@ Stateflow { data { id 13 ssIdNumber 5 - name "DPinv" + name "TPinv" scope OUTPUT_DATA machine 1 props { @@ -7069,9 +6407,6 @@ Stateflow { } complexity SF_COMPLEX_INHERITED frame SF_FRAME_NO - unit { - name "inherit" - } } dataType "Inherit: Same as Simulink" linkNode [10 12 14] @@ -7079,7 +6414,7 @@ Stateflow { data { id 14 ssIdNumber 8 - name "sigma" + name "tol" scope INPUT_DATA machine 1 props { @@ -7094,9 +6429,6 @@ Stateflow { } complexity SF_COMPLEX_INHERITED frame SF_FRAME_INHERITED - unit { - name "inherit" - } } dataType "Inherit: Same as Simulink" linkNode [10 13 0] @@ -7137,161 +6469,11 @@ Stateflow { instance { id 17 machine 1 - name "Utilities/DampPinv/Damped Pseudo Inverse" - chart 10 - } - chart { - id 18 - machine 1 name "Utilities/TruncPinv/Truncated PseudoInverse" - windowPosition [649 -205 167 985] - viewLimits [0 156.75 0 153.75] - screen [1 1 3046 1050 1.25] - treeNode [0 19 0 0] - viewObj 18 - toolbarMode LIBRARY_TOOLBAR - ssIdHighWaterMark 8 - decomposition CLUSTER_CHART - type EML_CHART - chartFileNumber 7 - disableImplicitCasting 1 - eml { - name "fcn" - } - firstData 20 - firstTransition 24 - firstJunction 23 - } - state { - id 19 - labelString "eML_blk_kernel()" - position [18 64.5 118 66] - fontSize 12 - chart 18 - treeNode [18 0 0 0] - superState SUBCHART - subviewer 18 - ssIdNumber 1 - type FUNC_STATE - decomposition CLUSTER_STATE - eml { - isEML 1 - script "function TPinv = fcn(mat,tol)\n%#codegen\n[U,S,V] = svd(mat,'econ');\n% Setting to zero value\n%" - " Setting to 1/S(i,i) singular values greater than tol\n S(S>tol)=1./S(S>tol);\n TPinv = V*pinv(S)*U';" - editorLayout "100 M4x1[10 5 700 500]" - } - } - data { - id 20 - ssIdNumber 4 - name "mat" - scope INPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - } - complexity SF_COMPLEX_INHERITED - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [18 0 21] - } - data { - id 21 - ssIdNumber 5 - name "TPinv" - scope OUTPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - } - complexity SF_COMPLEX_INHERITED - frame SF_FRAME_NO - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [18 20 22] - } - data { - id 22 - ssIdNumber 8 - name "tol" - scope INPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - isSigned 1 - wordLength "16" - } - complexity SF_COMPLEX_INHERITED - frame SF_FRAME_INHERITED - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [18 21 0] - } - junction { - id 23 - position [23.5747 49.5747 7] - chart 18 - subviewer 18 - ssIdNumber 3 - type CONNECTIVE_JUNCTION - linkNode [18 0 0] - } - transition { - id 24 - labelString "{eML_blk_kernel();}" - labelPosition [80.125 91.875 102.544 14.964] - fontSize 12 - src { - intersection [0 0 1 0 23.5747 14.625 0 0] - } - dst { - id 23 - intersection [1 0 -1 0 23.5747 42.5747 0 0] - } - midPoint [23.5747 24.9468] - chart 18 - dataLimits [21.175 25.975 14.625 42.575] - subviewer 18 - drawStyle SMART - slide { - sticky BOTH_STICK - } - executionOrder 1 - ssIdNumber 2 - linkNode [18 0 0] - } - instance { - id 25 - machine 1 - name "Utilities/TruncPinv/Truncated PseudoInverse" - chart 18 + chart 10 } target { - id 26 + id 18 machine 1 name "sfun" description "Default Simulink S-Function Target." diff --git a/matlab/library/WBToolboxLibrary_repository.mdl.r2019b b/matlab/library/WBToolboxLibrary_repository.mdl.r2019b deleted file mode 100644 index 4aac1f9c..00000000 --- a/matlab/library/WBToolboxLibrary_repository.mdl.r2019b +++ /dev/null @@ -1,7122 +0,0 @@ -Library { - Name "WBToolboxLibrary_repository" - Version 10.0 - SavedCharacterEncoding "UTF-8" - SLCCPlugin "on" - LogicAnalyzerPlugin "on" - AnimationPlugin "on" - DiagnosticSuppressor "on" - WebScopes_FoundationPlugin "on" - NotesPlugin "on" - LibraryType "BlockLibrary" - EnableAccessToBaseWorkspace on - ScopeRefreshTime 0.035000 - OverrideScopeRefreshTime on - DisableAllScopes off - FPTRunName "Run 1" - MaxMDLFileLineLength 120 - LastSavedArchitecture "glnxa64" - Object { - $PropName "BdWindowsInfo" - $ObjectID 1 - $ClassName "Simulink.BDWindowsInfo" - Object { - $PropName "WindowsInfo" - $ObjectID 2 - $ClassName "Simulink.WindowInfo" - IsActive [1] - Location [67.0, 148.0, 2560.0, 1440.0] - Object { - $PropName "ModelBrowserInfo" - $ObjectID 3 - $ClassName "Simulink.ModelBrowserInfo" - Visible [0] - DockPosition "Left" - Width [50] - Height [50] - Filter [9] - Minimized "Unset" - } - Object { - $PropName "ExplorerBarInfo" - $ObjectID 4 - $ClassName "Simulink.ExplorerBarInfo" - Visible [1] - } - Array { - Type "Simulink.EditorInfo" - Dimension 9 - Object { - $ObjectID 5 - IsActive [1] - IsTabbed [1] - ViewObjType "SimulinkTopLevel" - LoadSaveID "0" - Extents [2522.0, 1199.0] - ZoomFactor [4.0] - Offset [-71.812363004544125, -25.811988773055347] - SceneRectInView [-71.812363004544125, -25.811988773055347, 630.5, 299.75] - } - Object { - $ObjectID 6 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "209" - Extents [2522.0, 1199.0] - ZoomFactor [2.5] - Offset [-258.01185578242905, -157.8236768561307] - SceneRectInView [-258.01185578242905, -157.8236768561307, 1008.8, 479.6] - } - Object { - $ObjectID 7 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "202" - Extents [2522.0, 1199.0] - ZoomFactor [2.4606371641733422] - Offset [213.61276834817875, 99.508993480891093] - SceneRectInView [213.61276834817875, 99.508993480891093, 1024.9377830750893, 487.27216570461223] - } - Object { - $ObjectID 8 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "176" - Extents [2522.0, 1199.0] - ZoomFactor [4.0] - Offset [235.1044081864668, 52.222402871604459] - SceneRectInView [235.1044081864668, 52.222402871604459, 630.5, 299.75] - } - Object { - $ObjectID 9 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "1633" - Extents [2010.0, 839.0] - ZoomFactor [6.2999999999999989] - Offset [-19.500372023809547, -8.00793650793652] - SceneRectInView [-19.500372023809547, -8.00793650793652, 319.04761904761909, 133.17460317460319] - } - Object { - $ObjectID 10 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "1663" - Extents [2010.0, 839.0] - ZoomFactor [5.95] - Offset [-20.290375525210067, -11.920168067226882] - SceneRectInView [-20.290375525210067, -11.920168067226882, 337.81512605042013, 141.00840336134453] - } - Object { - $ObjectID 11 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "369" - Extents [2010.0, 839.0] - ZoomFactor [2.3928943762659363] - Offset [129.66449864161302, 95.246736292428238] - SceneRectInView [129.66449864161302, 95.246736292428238, 839.98692960972426, 350.621409921671] - } - Object { - $ObjectID 12 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "192" - Extents [1943.0, 884.0] - ZoomFactor [1.75] - Offset [-198.60003045066941, -70.259004698103354] - SceneRectInView [-198.60003045066941, -70.259004698103354, 1110.2857142857142, 505.14285714285717] - } - Object { - $ObjectID 13 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "206" - Extents [1943.0, 884.0] - ZoomFactor [6.0] - Offset [252.44396551724137, 145.16666666666663] - SceneRectInView [252.44396551724137, 145.16666666666663, 323.83333333333331, 147.33333333333334] - } - PropName "EditorsInfo" - } - Object { - $PropName "DockComponentsInfo" - $ObjectID 14 - $ClassName "Simulink.DockComponentInfo" - Type "GLUE2:PropertyInspector" - ID "Property Inspector" - Visible [0] - CreateCallback "" - UserData "" - Floating [0] - DockPosition "Right" - Width [640] - Height [480] - Minimized "Unset" - } - WindowState "AAAA/wAAAAD9AAAAAgAAAAAAAAC9AAACivwCAAAAA/sAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAA" - "AAAAAAA+wAAABYARABvAGMAawBXAGkAZABnAGUAdAA0AAAAAAD/////AAAAAAAAAAD7AAAAUgBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0Ac" - "ABvAG4AZQBuAHQALwBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQAAAAANQAAAooAAABiAP///wAAAAEAAAAAAAAAAPwCA" - "AAAAfsAAABUAEcATABVAEUAMgA6AFAAcgBvAHAAZQByAHQAeQBJAG4AcwBwAGUAYwB0AG8AcgAvAFAAcgBvAHAAZQByAHQAeQAgAEkAbgBzAHAAZ" - "QBjAHQAbwByAAAAAAD/////AAAAOQD///8AAAoAAAAE7AAAAAEAAAACAAAAAQAAAAL8AAAAAQAAAAIAAAAA" - Array { - Type "Cell" - Dimension 0 - PropName "PersistedApps" - } - WindowUuid "c7279315-9484-4d17-a8fb-89419ee2a0fe" - } - BDUuid "f635108f-97cd-436e-9bd5-741f3038f9ba" - } - HideAutomaticNames off - Created "Thu Feb 06 02:21:39 2014" - Creator "jorhabib" - UpdateHistory "UpdateHistoryNever" - ModifiedByFormat "%" - LastModifiedBy "csartore" - ModifiedDateFormat "%" - LastModifiedDate "Thu Oct 08 17:42:42 2020" - RTWModifiedTimeStamp 524078665 - ModelVersionFormat "1.%" - SampleTimeColors off - SampleTimeAnnotations off - LibraryLinkDisplay "all" - WideLines off - ShowLineDimensions off - ShowPortDataTypes off - ShowAllPropagatedSignalLabels off - PortDataTypeDisplayFormat "AliasTypeOnly" - ShowEditTimeErrors on - ShowEditTimeWarnings on - ShowEditTimeAdvisorChecks off - ShowPortUnits off - ShowDesignRanges off - ShowLoopsOnError on - IgnoreBidirectionalLines off - ShowStorageClass off - ShowTestPointIcons on - ShowSignalResolutionIcons on - ShowViewerIcons on - SortedOrder off - VariantCondition off - ShowSubsystemDomainSpec off - ExecutionContextIcon off - ShowLinearizationAnnotations on - ShowVisualizeInsertedRTB on - ShowMarkup on - BlockNameDataTip off - BlockParametersDataTip off - BlockDescriptionStringDataTip off - BlockVariantConditionDataTip off - ToolBar on - StatusBar on - BrowserShowLibraryLinks off - FunctionConnectors off - BrowserLookUnderMasks off - MultiThreadCoSim on - SimulationMode "normal" - PauseTimes "5" - NumberOfSteps 1 - SnapshotBufferSize 10 - SnapshotInterval 10 - NumberOfLastSnapshots 0 - LinearizationMsg "none" - Profile off - ParamWorkspaceSource "MATLABWorkspace" - ExtModeBatchMode off - ExtModeEnableFloating on - ExtModeTrigType "manual" - ExtModeTrigMode "normal" - ExtModeTrigPort "1" - ExtModeTrigElement "any" - ExtModeTrigDuration 1000 - ExtModeTrigDurationFloating "auto" - ExtModeTrigHoldOff 0 - ExtModeTrigDelay 0 - ExtModeTrigDirection "rising" - ExtModeTrigLevel 0 - ExtModeArchiveMode "off" - ExtModeAutoIncOneShot off - ExtModeIncDirWhenArm off - ExtModeAddSuffixToVar off - ExtModeWriteAllDataToWs off - ExtModeArmWhenConnect on - ExtModeSkipDownloadWhenConnect off - ExtModeLogAll on - ExtModeAutoUpdateStatusClock on - ShowModelReferenceBlockVersion off - ShowModelReferenceBlockIO off - OrderedModelArguments on - Array { - Type "Handle" - Dimension 1 - Simulink.ConfigSet { - $ObjectID 15 - Version "19.1.1" - DisabledProps [] - Description "" - Array { - Type "Handle" - Dimension 10 - Simulink.SolverCC { - $ObjectID 16 - Version "19.1.1" - DisabledProps [] - Description "" - Components [] - StartTime "0.0" - StopTime "10.0" - AbsTol "auto" - AutoScaleAbsTol on - FixedStep "auto" - InitialStep "auto" - MaxOrder 5 - ZcThreshold "auto" - ConsecutiveZCsStepRelTol "10*128*eps" - MaxConsecutiveZCs "1000" - ExtrapolationOrder 4 - NumberNewtonIterations 1 - MaxStep "auto" - MinStep "auto" - MaxConsecutiveMinStep "1" - RelTol "1e-3" - EnableMultiTasking on - ConcurrentTasks off - Solver "ode45" - SolverName "ode45" - SolverJacobianMethodControl "auto" - ShapePreserveControl "DisableAll" - ZeroCrossControl "UseLocalSettings" - ZeroCrossAlgorithm "Nonadaptive" - AlgebraicLoopSolver "TrustRegion" - SolverInfoToggleStatus off - IsAutoAppliedInSIP off - SolverResetMethod "Fast" - PositivePriorityOrder off - AutoInsertRateTranBlk off - SampleTimeConstraint "Unconstrained" - InsertRTBMode "Whenever possible" - SampleTimeProperty [] - DecoupledContinuousIntegration off - MinimalZcImpactIntegration off - SolverOrder 3 - } - Simulink.DataIOCC { - $ObjectID 17 - Version "19.1.1" - DisabledProps [] - Description "" - Components [] - Decimation "1" - ExternalInput "[t, u]" - FinalStateName "xFinal" - InitialState "xInitial" - LimitDataPoints on - MaxDataPoints "1000" - LoadExternalInput off - LoadInitialState off - SaveFinalState off - SaveOperatingPoint off - SaveFormat "Array" - SignalLoggingSaveFormat "ModelDataLogs" - SaveOutput on - SaveState off - SignalLogging on - DSMLogging on - InspectSignalLogs off - VisualizeSimOutput on - StreamToWorkspace off - StreamVariableName "streamout" - SaveTime on - ReturnWorkspaceOutputs off - StateSaveName "xout" - TimeSaveName "tout" - OutputSaveName "yout" - SignalLoggingName "logsout" - DSMLoggingName "dsmout" - OutputOption "RefineOutputTimes" - OutputTimes "[]" - ReturnWorkspaceOutputsName "out" - Refine "1" - LoggingToFile off - DatasetSignalFormat "timeseries" - LoggingFileName "out.mat" - LoggingIntervals "[-inf, inf]" - } - Simulink.OptimizationCC { - $ObjectID 18 - Version "19.1.1" - Array { - Type "Cell" - Dimension 9 - Cell "BooleansAsBitfields" - Cell "PassReuseOutputArgsAs" - Cell "PassReuseOutputArgsThreshold" - Cell "ZeroExternalMemoryAtStartup" - Cell "ZeroInternalMemoryAtStartup" - Cell "OptimizeModelRefInitCode" - Cell "NoFixptDivByZeroProtection" - Cell "UseSpecifiedMinMax" - Cell "EfficientTunableParamExpr" - PropName "DisabledProps" - } - Description "" - Components [] - BlockReduction on - BooleanDataType on - ConditionallyExecuteInputs on - DefaultParameterBehavior "Tunable" - UseDivisionForNetSlopeComputation "off" - GainParamInheritBuiltInType off - UseFloatMulNetSlope off - DefaultUnderspecifiedDataType "double" - UseSpecifiedMinMax off - InlineInvariantSignals off - OptimizeBlockIOStorage on - BufferReuse on - EnhancedBackFolding off - CachingGlobalReferences off - GlobalBufferReuse on - StrengthReduction off - AdvancedOptControl "" - ExpressionFolding on - BooleansAsBitfields off - BitfieldContainerType "uint_T" - EnableMemcpy on - MemcpyThreshold 64 - PassReuseOutputArgsAs "Structure reference" - PassReuseOutputArgsThreshold 12 - ExpressionDepthLimit 2147483647 - LocalBlockOutputs on - RollThreshold 5 - StateBitsets off - DataBitsets off - ActiveStateOutputEnumStorageType "Native Integer" - ZeroExternalMemoryAtStartup on - ZeroInternalMemoryAtStartup on - InitFltsAndDblsToZero off - NoFixptDivByZeroProtection off - EfficientFloat2IntCast off - EfficientMapNaN2IntZero on - LifeSpan "inf" - MaxStackSize "Inherit from target" - BufferReusableBoundary on - SimCompilerOptimization "off" - AccelVerboseBuild off - OptimizeBlockOrder "off" - OptimizeDataStoreBuffers on - BusAssignmentInplaceUpdate on - DifferentSizesBufferReuse off - UseRowMajorAlgorithm off - OptimizationLevel "level2" - OptimizationPriority "Balanced" - OptimizationCustomize on - LabelGuidedReuse off - MultiThreadedLoops off - DenormalBehavior "GradualUnderflow" - EfficientTunableParamExpr off - } - Simulink.DebuggingCC { - $ObjectID 19 - Version "19.1.1" - Array { - Type "Cell" - Dimension 1 - Cell "UseOnlyExistingSharedCode" - PropName "DisabledProps" - } - Description "" - Components [] - RTPrefix "error" - ConsistencyChecking "none" - ArrayBoundsChecking "none" - SignalInfNanChecking "none" - StringTruncationChecking "error" - SignalRangeChecking "none" - ReadBeforeWriteMsg "UseLocalSettings" - WriteAfterWriteMsg "UseLocalSettings" - WriteAfterReadMsg "UseLocalSettings" - AlgebraicLoopMsg "warning" - ArtificialAlgebraicLoopMsg "warning" - SaveWithDisabledLinksMsg "warning" - SaveWithParameterizedLinksMsg "warning" - CheckSSInitialOutputMsg on - UnderspecifiedInitializationDetection "Classic" - MergeDetectMultiDrivingBlocksExec "none" - CheckExecutionContextPreStartOutputMsg off - CheckExecutionContextRuntimeOutputMsg off - SignalResolutionControl "UseLocalSettings" - BlockPriorityViolationMsg "warning" - MinStepSizeMsg "warning" - TimeAdjustmentMsg "none" - MaxConsecutiveZCsMsg "error" - MaskedZcDiagnostic "warning" - IgnoredZcDiagnostic "warning" - SolverPrmCheckMsg "warning" - InheritedTsInSrcMsg "warning" - MultiTaskDSMMsg "error" - MultiTaskCondExecSysMsg "error" - MultiTaskRateTransMsg "error" - SingleTaskRateTransMsg "none" - TasksWithSamePriorityMsg "warning" - ExportedTasksRateTransMsg "none" - SigSpecEnsureSampleTimeMsg "warning" - CheckMatrixSingularityMsg "none" - IntegerOverflowMsg "warning" - Int32ToFloatConvMsg "warning" - ParameterDowncastMsg "error" - ParameterOverflowMsg "error" - ParameterUnderflowMsg "none" - ParameterPrecisionLossMsg "warning" - ParameterTunabilityLossMsg "warning" - FixptConstUnderflowMsg "none" - FixptConstOverflowMsg "none" - FixptConstPrecisionLossMsg "none" - UnderSpecifiedDataTypeMsg "none" - UnnecessaryDatatypeConvMsg "none" - VectorMatrixConversionMsg "none" - InvalidFcnCallConnMsg "error" - FcnCallInpInsideContextMsg "warning" - SignalLabelMismatchMsg "none" - UnconnectedInputMsg "warning" - UnconnectedOutputMsg "warning" - UnconnectedLineMsg "warning" - UseOnlyExistingSharedCode "error" - SFcnCompatibilityMsg "none" - FrameProcessingCompatibilityMsg "error" - UniqueDataStoreMsg "none" - BusObjectLabelMismatch "warning" - RootOutportRequireBusObject "warning" - AssertControl "UseLocalSettings" - AllowSymbolicDim on - RowMajorDimensionSupport off - ModelReferenceIOMsg "none" - ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" - ModelReferenceVersionMismatchMessage "none" - ModelReferenceIOMismatchMessage "none" - UnknownTsInhSupMsg "warning" - ModelReferenceDataLoggingMessage "warning" - ModelReferenceSymbolNameMessage "warning" - ModelReferenceExtraNoncontSigs "error" - StateNameClashWarn "warning" - OperatingPointInterfaceChecksumMismatchMsg "warning" - NonCurrentReleaseOperatingPointMsg "error" - ChecksumConsistencyForSSReuse "none" - PregeneratedLibrarySubsystemCodeDiagnostic "warning" - MatchCodeGenerationContextForUpdateDiagram "none" - InitInArrayFormatMsg "warning" - StrictBusMsg "ErrorLevel1" - BusNameAdapt "WarnAndRepair" - NonBusSignalsTreatedAsBus "none" - SymbolicDimMinMaxWarning "warning" - LossOfSymbolicDimsSimulationWarning "warning" - LossOfSymbolicDimsCodeGenerationWarning "error" - SymbolicDimsDataTypeCodeGenerationDiagnostic "error" - BlockIODiagnostic "none" - SFUnusedDataAndEventsDiag "warning" - SFUnexpectedBacktrackingDiag "warning" - SFInvalidInputDataAccessInChartInitDiag "warning" - SFNoUnconditionalDefaultTransitionDiag "warning" - SFTransitionOutsideNaturalParentDiag "warning" - SFUnreachableExecutionPathDiag "warning" - SFUndirectedBroadcastEventsDiag "warning" - SFTransitionActionBeforeConditionDiag "warning" - SFOutputUsedAsStateInMooreChartDiag "error" - SFTemporalDelaySmallerThanSampleTimeDiag "warning" - SFSelfTransitionDiag "warning" - SFExecutionAtInitializationDiag "none" - SFMachineParentedDataDiag "warning" - IntegerSaturationMsg "warning" - AllowedUnitSystems "all" - UnitsInconsistencyMsg "warning" - AllowAutomaticUnitConversions on - RCSCRenamedMsg "warning" - RCSCObservableMsg "warning" - ForceCombineOutputUpdateInSim off - UnitDatabase "" - UnderSpecifiedDimensionMsg "none" - DebugExecutionForFMUViaOutOfProcess off - ArithmeticOperatorsInVariantConditions "warning" - } - Simulink.HardwareCC { - $ObjectID 20 - Version "19.1.1" - DisabledProps [] - Description "" - Components [] - ProdBitPerChar 8 - ProdBitPerShort 16 - ProdBitPerInt 32 - ProdBitPerLong 32 - ProdBitPerLongLong 64 - ProdBitPerFloat 32 - ProdBitPerDouble 64 - ProdBitPerPointer 32 - ProdBitPerSizeT 32 - ProdBitPerPtrDiffT 32 - ProdLargestAtomicInteger "Char" - ProdLargestAtomicFloat "None" - ProdIntDivRoundTo "Undefined" - ProdEndianess "Unspecified" - ProdWordSize 32 - ProdShiftRightIntArith on - ProdLongLongMode off - ProdHWDeviceType "32-bit Generic" - TargetBitPerChar 8 - TargetBitPerShort 16 - TargetBitPerInt 32 - TargetBitPerLong 32 - TargetBitPerLongLong 64 - TargetBitPerFloat 32 - TargetBitPerDouble 64 - TargetBitPerPointer 32 - TargetBitPerSizeT 32 - TargetBitPerPtrDiffT 32 - TargetLargestAtomicInteger "Char" - TargetLargestAtomicFloat "None" - TargetShiftRightIntArith on - TargetLongLongMode off - TargetIntDivRoundTo "Undefined" - TargetEndianess "Unspecified" - TargetWordSize 32 - TargetPreprocMaxBitsSint 32 - TargetPreprocMaxBitsUint 32 - TargetHWDeviceType "Specified" - TargetUnknown off - ProdEqTarget on - UseEmbeddedCoderFeatures on - UseSimulinkCoderFeatures on - HardwareBoardFeatureSet "EmbeddedCoderHSP" - } - Simulink.ModelReferenceCC { - $ObjectID 21 - Version "19.1.1" - DisabledProps [] - Description "" - Components [] - UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" - EnableRefExpFcnMdlSchedulingChecks on - CheckModelReferenceTargetMessage "error" - EnableParallelModelReferenceBuilds off - ParallelModelReferenceErrorOnInvalidPool on - ParallelModelReferenceMATLABWorkerInit "None" - ModelReferenceNumInstancesAllowed "Multi" - PropagateVarSize "Infer from blocks in model" - ModelDependencies "" - ModelReferencePassRootInputsByReference on - ModelReferenceMinAlgLoopOccurrences off - PropagateSignalLabelsOutOfModel off - SupportModelReferenceSimTargetCustomCode off - } - Simulink.SFSimCC { - $ObjectID 22 - Version "19.1.1" - DisabledProps [] - Description "" - Components [] - SimCustomSourceCode "" - SimCustomHeaderCode "" - SimCustomInitializer "" - SimCustomTerminator "" - SimReservedNameArray [] - SimUserSources "" - SimUserIncludeDirs "" - SimUserLibraries "" - SimUserDefines "" - SimCustomCompilerFlags "" - SimCustomLinkerFlags "" - SFSimEcho on - SimCtrlC on - SimIntegrity on - SimUseLocalCustomCode off - SimParseCustomCode on - SimAnalyzeCustomCode off - SimBuildMode "sf_incremental_build" - SimGenImportedTypeDefs off - ModelFunctionsGlobalVisibility "on" - CompileTimeRecursionLimit 50 - EnableRuntimeRecursion on - MATLABDynamicMemAlloc on - MATLABDynamicMemAllocThreshold 65536 - CustomCodeFunctionArrayLayout [] - DefaultCustomCodeFunctionArrayLayout "NotSpecified" - CustomCodeUndefinedFunction "UseInterfaceOnly" - } - Simulink.RTWCC { - $BackupClass "Simulink.RTWCC" - $ObjectID 23 - Version "19.1.1" - Array { - Type "Cell" - Dimension 16 - Cell "IncludeHyperlinkInReport" - Cell "GenerateTraceInfo" - Cell "GenerateTraceReport" - Cell "GenerateTraceReportSl" - Cell "GenerateTraceReportSf" - Cell "GenerateTraceReportEml" - Cell "GenerateWebview" - Cell "GenerateCodeMetricsReport" - Cell "GenerateCodeReplacementReport" - Cell "PortableWordSizes" - Cell "GenerateMissedCodeReplacementReport" - Cell "GenerateErtSFunction" - Cell "CreateSILPILBlock" - Cell "CodeExecutionProfiling" - Cell "CodeProfilingSaveOptions" - Cell "CodeProfilingInstrumentation" - PropName "DisabledProps" - } - Description "" - SystemTargetFile "grt.tlc" - HardwareBoard "None" - ShowCustomHardwareApp off - ShowEmbeddedHardwareApp off - TLCOptions "" - GenCodeOnly off - MakeCommand "make_rtw" - GenerateMakefile on - PackageGeneratedCodeAndArtifacts off - PackageName "" - TemplateMakefile "grt_default_tmf" - PostCodeGenCommand "" - GenerateReport off - RTWVerbose on - RetainRTWFile off - RTWBuildHooks [] - ProfileTLC off - TLCDebug off - TLCCoverage off - TLCAssert off - RTWUseLocalCustomCode off - RTWUseSimCustomCode off - CustomSourceCode "" - CustomHeaderCode "" - CustomInclude "" - CustomSource "" - CustomLibrary "" - CustomDefine "" - CustomBLASCallback "" - CustomLAPACKCallback "" - CustomFFTCallback "" - CustomInitializer "" - CustomTerminator "" - Toolchain "Automatically locate an installed toolchain" - BuildConfiguration "Faster Builds" - CustomToolchainOptions [] - IncludeHyperlinkInReport off - LaunchReport off - PortableWordSizes off - CreateSILPILBlock "None" - CodeExecutionProfiling off - CodeExecutionProfileVariable "executionProfile" - CodeProfilingSaveOptions "SummaryOnly" - CodeProfilingInstrumentation "off" - SILDebugging off - TargetLang "C" - IncludeBusHierarchyInRTWFileBlockHierarchyMap off - GenerateTraceInfo off - GenerateTraceReport off - GenerateTraceReportSl off - GenerateTraceReportSf off - GenerateTraceReportEml off - GenerateWebview off - GenerateCodeMetricsReport off - GenerateCodeReplacementReport off - GenerateMissedCodeReplacementReport off - RTWCompilerOptimization "off" - ObjectivePriorities [] - RTWCustomCompilerOptimizations "" - CheckMdlBeforeBuild "Off" - SharedConstantsCachingThreshold 1024 - Array { - Type "Handle" - Dimension 2 - Simulink.CodeAppCC { - $ObjectID 24 - Version "19.1.1" - Array { - Type "Cell" - Dimension 28 - Cell "IgnoreCustomStorageClasses" - Cell "IgnoreTestpoints" - Cell "InsertBlockDesc" - Cell "InsertPolySpaceComments" - Cell "SFDataObjDesc" - Cell "MATLABFcnDesc" - Cell "SimulinkDataObjDesc" - Cell "DefineNamingRule" - Cell "SignalNamingRule" - Cell "ParamNamingRule" - Cell "InlinedPrmAccess" - Cell "CustomSymbolStr" - Cell "CustomSymbolStrGlobalVar" - Cell "CustomSymbolStrType" - Cell "CustomSymbolStrField" - Cell "CustomSymbolStrFcn" - Cell "CustomSymbolStrFcnArg" - Cell "CustomSymbolStrBlkIO" - Cell "CustomSymbolStrTmpVar" - Cell "CustomSymbolStrMacro" - Cell "ReqsInCode" - Cell "InternalIdentifier" - Cell "CustomSymbolStrModelFcn" - Cell "CustomSymbolStrUtil" - Cell "CustomUserTokenString" - Cell "CustomSymbolStrEmxType" - Cell "CustomSymbolStrEmxFcn" - Cell "BlockCommentType" - PropName "DisabledProps" - } - Description "" - Components [] - Comment "" - ForceParamTrailComments off - GenerateComments on - CommentStyle "Auto" - IgnoreCustomStorageClasses on - IgnoreTestpoints off - MaxIdLength 31 - PreserveName off - PreserveNameWithParent off - ShowEliminatedStatement off - OperatorAnnotations off - SimulinkDataObjDesc off - SFDataObjDesc off - MATLABFcnDesc off - MangleLength 1 - SharedChecksumLength 8 - CustomSymbolStrGlobalVar "$R$N$M" - CustomSymbolStrType "$N$R$M_T" - CustomSymbolStrField "$N$M" - CustomSymbolStrFcn "$R$N$M$F" - CustomSymbolStrModelFcn "$R$N" - CustomSymbolStrFcnArg "rt$I$N$M" - CustomSymbolStrBlkIO "rtb_$N$M" - CustomSymbolStrTmpVar "$N$M" - CustomSymbolStrMacro "$R$N$M" - CustomSymbolStrUtil "$N$C" - CustomSymbolStrEmxType "emxArray_$M$N" - CustomSymbolStrEmxFcn "emx$M$N" - CustomUserTokenString "" - CustomCommentsFcn "" - DefineNamingRule "None" - DefineNamingFcn "" - ParamNamingRule "None" - ParamNamingFcn "" - SignalNamingRule "None" - SignalNamingFcn "" - InsertBlockDesc off - InsertPolySpaceComments off - SimulinkBlockComments on - BlockCommentType "BlockPathComment" - StateflowObjectComments on - MATLABSourceComments off - EnableCustomComments off - InternalIdentifierFile "" - InternalIdentifier "Shortened" - InlinedPrmAccess "Literals" - ReqsInCode off - UseSimReservedNames off - ReservedNameArray [] - EnumMemberNameClash "error" - } - Simulink.GRTTargetCC { - $BackupClass "Simulink.TargetCC" - $ObjectID 25 - Version "19.1.1" - Array { - Type "Cell" - Dimension 19 - Cell "GeneratePreprocessorConditionals" - Cell "IncludeMdlTerminateFcn" - Cell "SupportNonInlinedSFcns" - Cell "SuppressErrorStatus" - Cell "ERTCustomFileBanners" - Cell "GenerateSampleERTMain" - Cell "GenerateTestInterfaces" - Cell "ModelStepFunctionPrototypeControlCompliant" - Cell "CPPClassGenCompliant" - Cell "PortableWordSizes" - Cell "PurelyIntegerCode" - Cell "SupportComplex" - Cell "SupportAbsoluteTime" - Cell "SupportContinuousTime" - Cell "GenerateAllocFcn" - Cell "RemoveResetFunc" - Cell "ExistingSharedCode" - Cell "RemoveDisableFunc" - Cell "PreserveStateflowLocalDataDimensions" - PropName "DisabledProps" - } - Description "" - Components [] - TargetFcnLib "ansi_tfl_table_tmw.mat" - TargetLibSuffix "" - TargetPreCompLibLocation "" - GenFloatMathFcnCalls "NOT IN USE" - TargetLangStandard "C89/C90 (ANSI)" - CodeReplacementLibrary "None" - UtilityFuncGeneration "Auto" - MultiwordTypeDef "System defined" - MultiwordLength 2048 - DynamicStringBufferSize 256 - GenerateFullHeader on - InferredTypesCompatibility off - ExistingSharedCode "" - GenerateSampleERTMain off - GenerateTestInterfaces off - ModelReferenceCompliant on - ParMdlRefBuildCompliant on - CompOptLevelCompliant on - ConcurrentExecutionCompliant on - IncludeMdlTerminateFcn on - GeneratePreprocessorConditionals "Disable all" - CombineOutputUpdateFcns off - CombineSignalStateStructs off - GroupInternalDataByFunction off - SuppressErrorStatus off - IncludeFileDelimiter "Auto" - ERTCustomFileBanners off - SupportAbsoluteTime on - LogVarNameModifier "rt_" - MatFileLogging on - MultiInstanceERTCode off - CodeInterfacePackaging "Nonreusable function" - PurelyIntegerCode off - SupportNonFinite on - SupportComplex on - SupportContinuousTime on - SupportNonInlinedSFcns on - RemoveDisableFunc off - RemoveResetFunc off - SupportVariableSizeSignals off - ParenthesesLevel "Nominal" - CastingMode "Nominal" - PreserveStateflowLocalDataDimensions off - MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" - ModelStepFunctionPrototypeControlCompliant off - CPPClassGenCompliant on - AutosarCompliant off - MDXCompliant off - GRTInterface on - GenerateAllocFcn off - UseToolchainInfoCompliant on - GenerateSharedConstants on - CoderGroups [] - AccessMethods [] - LookupTableObjectStructAxisOrder "1,2,3,4,..." - LUTObjectStructOrderExplicitValues "Size,Breakpoints,Table" - LUTObjectStructOrderEvenSpacing "Size,Breakpoints,Table" - ArrayLayout "Column-major" - UnsupportedSFcnMsg "error" - ERTHeaderFileRootName "$R$E" - ERTSourceFileRootName "$R$E" - ERTDataFileRootName "$R_data" - UseMalloc off - ExtMode off - ExtModeStaticAlloc off - ExtModeTesting off - ExtModeStaticAllocSize 1000000 - ExtModeTransport 0 - ExtModeMexFile "ext_comm" - ExtModeMexArgs "" - ExtModeIntrfLevel "Level1" - RTWCAPISignals off - RTWCAPIParams off - RTWCAPIStates off - RTWCAPIRootIO off - GenerateASAP2 off - MultiInstanceErrorCode "Error" - } - PropName "Components" - } - } - SlCovCC.ConfigComp { - $ObjectID 26 - Version "19.1.1" - DisabledProps [] - Description "Simulink Coverage Configuration Component" - Components [] - Name "Simulink Coverage" - CovEnable off - CovScope "EntireSystem" - CovIncludeTopModel on - RecordCoverage off - CovPath "/" - CovSaveName "covdata" - CovCompData "" - CovMetricSettings "dw" - CovFilter "" - CovHTMLOptions "" - CovNameIncrementing off - CovHtmlReporting on - CovForceBlockReductionOff on - CovEnableCumulative on - CovSaveCumulativeToWorkspaceVar on - CovSaveSingleToWorkspaceVar on - CovCumulativeVarName "covCumulativeData" - CovCumulativeReport off - CovSaveOutputData on - CovOutputDir "slcov_output/$ModelName$" - CovDataFileName "$ModelName$_cvdata" - CovShowResultsExplorer on - CovReportOnPause on - CovModelRefEnable "off" - CovModelRefExcluded "" - CovExternalEMLEnable off - CovSFcnEnable off - CovBoundaryAbsTol 1e-05 - CovBoundaryRelTol 0.01 - CovUseTimeInterval off - CovStartTime 0 - CovStopTime 0 - CovMcdcMode "Masking" - } - hdlcoderui.hdlcc { - $ObjectID 27 - Version "19.1.1" - DisabledProps [] - Description "HDL Coder custom configuration component" - Components [] - Name "HDL Coder" - Array { - Type "Cell" - Dimension 1 - Cell " " - PropName "HDLConfigFile" - } - HDLCActiveTab "0" - } - PropName "Components" - } - Name "Configuration" - CurrentDlgPage "Solver" - ConfigPrmDlgPosition [ 963, 135, 1843, 765 ] - ExtraOptions "" - } - PropName "ConfigurationSets" - } - ExplicitPartitioning off - BlockDefaults { - ForegroundColor "black" - BackgroundColor "white" - DropShadow off - NamePlacement "normal" - FontName "Helvetica" - FontSize 10 - FontWeight "normal" - FontAngle "normal" - ShowName on - HideAutomaticName on - BlockRotation 0 - BlockMirror off - } - AnnotationDefaults { - HorizontalAlignment "center" - VerticalAlignment "middle" - ForegroundColor "black" - BackgroundColor "white" - DropShadow off - FontName "Helvetica" - FontSize 10 - FontWeight "normal" - FontAngle "normal" - MarkupType "model" - UseDisplayTextAsClickCallback off - AnnotationType "note_annotation" - FixedHeight off - FixedWidth off - Interpreter "off" - } - LineDefaults { - FontName "Helvetica" - FontSize 9 - FontWeight "normal" - FontAngle "normal" - } - MaskDefaults { - SelfModifiable "off" - IconFrame "on" - IconOpaque "opaque" - RunInitForIconRedraw "analyze" - IconRotate "none" - PortRotate "default" - IconUnits "autoscale" - } - MaskParameterDefaults { - Evaluate "on" - Tunable "on" - NeverSave "off" - Internal "off" - ReadOnly "off" - Enabled "on" - Visible "on" - ToolTip "on" - } - BlockParameterDefaults { - Block { - BlockType Clock - DisplayTime off - Decimation "10" - } - Block { - BlockType Constant - Value "1" - VectorParams1D on - SamplingMode "Sample based" - OutMin "[]" - OutMax "[]" - OutDataTypeStr "Inherit: Inherit from 'Constant value'" - LockScale off - SampleTime "inf" - FramePeriod "inf" - PreserveConstantTs off - } - Block { - BlockType Demux - Outputs "4" - DisplayOption "none" - BusSelectionMode off - } - Block { - BlockType DotProduct - InputSameDT on - OutMin "[]" - OutMax "[]" - OutDataTypeStr "Inherit: Same as first input" - LockScale off - RndMeth "Floor" - SaturateOnIntegerOverflow off - SampleTime "-1" - } - Block { - BlockType Gain - Gain "1" - Multiplication "Element-wise(K.*u)" - ParamMin "[]" - ParamMax "[]" - ParamDataTypeStr "Inherit: Same as input" - OutMin "[]" - OutMax "[]" - OutDataTypeStr "Inherit: Same as input" - LockScale off - RndMeth "Floor" - SaturateOnIntegerOverflow on - SampleTime "-1" - } - Block { - BlockType Inport - Port "1" - OutputFunctionCall off - OutMin "[]" - OutMax "[]" - OutDataTypeStr "Inherit: auto" - LockScale off - BusOutputAsStruct off - Unit "inherit" - PortDimensions "-1" - VarSizeSig "Inherit" - SampleTime "-1" - SignalType "auto" - SamplingMode "auto" - LatchByDelayingOutsideSignal off - LatchInputForFeedbackSignals off - Interpolate on - } - Block { - BlockType Outport - Port "1" - OutMin "[]" - OutMax "[]" - OutDataTypeStr "Inherit: auto" - LockScale off - BusOutputAsStruct off - Unit "inherit" - PortDimensions "-1" - VarSizeSig "Inherit" - SampleTime "-1" - SignalType "auto" - SamplingMode "auto" - EnsureOutportIsVirtual off - SourceOfInitialOutputValue "Dialog" - OutputWhenDisabled "held" - InitialOutput "[]" - MustResolveToSignalObject off - OutputWhenUnConnected off - OutputWhenUnconnectedValue "0" - VectorParamsAs1DForOutWhenUnconnected on - } - Block { - BlockType Product - Inputs "2" - Multiplication "Element-wise(.*)" - CollapseMode "All dimensions" - CollapseDim "1" - InputSameDT on - OutMin "[]" - OutMax "[]" - OutDataTypeStr "Inherit: Same as first input" - LockScale off - RndMeth "Zero" - SaturateOnIntegerOverflow on - SampleTime "-1" - } - Block { - BlockType S-Function - FunctionName "system" - SFunctionModules "''" - PortCounts "[]" - MultiThreadCoSim "auto" - } - Block { - BlockType SubSystem - ShowPortLabels "FromPortIcon" - Permissions "ReadWrite" - PermitHierarchicalResolution "All" - TreatAsAtomicUnit off - MinAlgLoopOccurrences off - PropExecContextOutsideSubsystem off - ScheduleAs "Sample time" - SystemSampleTime "-1" - RTWSystemCode "Auto" - RTWFcnNameOpts "Auto" - RTWFileNameOpts "Auto" - FunctionInterfaceSpec "void_void" - FunctionWithSeparateData off - RTWMemSecFuncInitTerm "Inherit from model" - RTWMemSecFuncExecute "Inherit from model" - RTWMemSecDataConstants "Inherit from model" - RTWMemSecDataInternal "Inherit from model" - RTWMemSecDataParameters "Inherit from model" - SimViewingDevice off - DataTypeOverride "UseLocalSettings" - DataTypeOverrideAppliesTo "AllNumericTypes" - MinMaxOverflowLogging "UseLocalSettings" - Opaque off - MaskHideContents off - SFBlockType "NONE" - VariantControlMode "Expression" - Variant off - GeneratePreprocessorConditionals off - AllowZeroVariantControls off - PropagateVariantConditions off - TreatAsGroupedWhenPropagatingVariantConditions on - ContentPreviewEnabled off - IsWebBlock off - IsObserver off - Latency "0" - AutoFrameSizeCalculation off - IsWebBlockPanel off - } - Block { - BlockType Sum - IconShape "rectangular" - Inputs "++" - CollapseMode "All dimensions" - CollapseDim "1" - InputSameDT on - AccumDataTypeStr "Inherit: Inherit via internal rule" - OutMin "[]" - OutMax "[]" - OutDataTypeStr "Inherit: Same as first input" - LockScale off - RndMeth "Floor" - SaturateOnIntegerOverflow on - SampleTime "-1" - } - Block { - BlockType Terminator - } - } - System { - Name "WBToolboxLibrary_repository" - Location [67, 148, 2627, 1588] - Open on - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "black" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "400" - ReportName "simulink-default.rpt" - SIDHighWatermark "1852" - SimulinkSubDomain "Simulink" - Block { - BlockType SubSystem - Name "Actuators" - SID "224" - Ports [] - Position [250, 16, 348, 113] - ZOrder -17 - ForegroundColor "white" - DropShadow on - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 28 - $ClassName "Simulink.Mask" - Display "image(imread('wholeBodyActuators.png'),'center')" - } - System { - Name "Actuators" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "562" - SimulinkSubDomain "Simulink" - Block { - BlockType S-Function - Name "SetMotorParameters" - SID "1847" - Ports [1, 1] - Position [645, 290, 755, 340] - ZOrder 106 - BackgroundColor "[0.513700, 0.851000, 0.670600]" - FunctionName "BlockFactory" - Parameters "'SetMotorParameters','WBToolbox',WBTConfigParameters,configBlockAbsName,readP,readI,readD,pidType,se" - "tKTau,kTau,setBemf,bemf" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Object { - $PropName "MaskObject" - $ObjectID 29 - $ClassName "Simulink.Mask" - Type "SetMotorParameters" - Description "This block allows to set motor PIDs and constants such as the motor constant and the back EMF.\n" - "\nThe motor constant and the back EMF are set in the block's mask, and their values are applied during the first " - "simulation loop. The PIDs values are instead set from the input ports.\n\nAll these vectors should have a size eq" - "ual to the number of controlled joints specified in the referred Configuration block.\n\nAt the end of the simula" - "tion, the default values are restored." - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig" - "] = WBToolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n " - " clear WBTConfig;\ncatch\nend\n\n% The booleans of the checkboxes always create problems\nreadP = uint8(readP);" - "\nreadI = uint8(readI);\nreadD = uint8(readD);" - Display "fprintf('Motor Parameters\\n(%s)',pidType);\n\nnumPorts = 0;\n\nif readP\n numPorts = numPorts +" - " 1;\n port_label('input',numPorts,'P')\nend\n\nif readI\n numPorts = numPorts + 1;\n port_label('input'," - "numPorts,'I')\nend\n\nif readD\n numPorts = numPorts + 1;\n port_label('input',numPorts,'D')\nend\n" - RunInitForIconRedraw "on" - Array { - Type "Simulink.MaskParameter" - Dimension 8 - Object { - $ObjectID 30 - Type "popup" - Array { - Type "Cell" - Dimension 2 - Cell "Position" - Cell "Torque" - PropName "TypeOptions" - } - Name "pidType" - Prompt "PID Type" - Value "Position" - Evaluate "off" - Callback "% Get the mask parameter values. This is a cell\n% array of strings.\nmaskStr = get_param(gcb,'pidType'" - ");\n\nswitch maskStr\n case 'Position'\n set_param(gcb,'BackgroundColor', '[0.5137, 0.8510, 0.6706, 1.0]')" - ";\n case 'Position Direct'\n set_param(gcb,'BackgroundColor', '[0.3922, 0.7882, 0.3451, 1.0]');\n case " - "'Velocity'\n set_param(gcb,'BackgroundColor', '[0.5137, 0.6745, 1.0000, 1.0]');\n case 'Torque'\n s" - "et_param(gcb,'BackgroundColor', '[0.8275, 0.5765, 0.6039, 1.0]');\n otherwise\n error('PID Type not recogn" - "ized');\nend\n\nclear maskStr" - } - Object { - $ObjectID 31 - Type "checkbox" - Name "readP" - Prompt "Enable P gains input signal" - Value "on" - } - Object { - $ObjectID 32 - Type "checkbox" - Name "readI" - Prompt "Enable I gains input signal" - Value "off" - } - Object { - $ObjectID 33 - Type "checkbox" - Name "readD" - Prompt "Enable D gains input signal" - Value "off" - } - Object { - $ObjectID 34 - Type "checkbox" - Name "setKTau" - Prompt "Set motor constant KTau" - Value "off" - Callback "h = Simulink.Mask.get(gcb);\nsetKTauValue = get_param(gcb,'setKTau');\n\nif ~strcmp(setKTauValue,'on')\n " - " h.Parameters(6).Enabled = 'off';\nelse\n h.Parameters(6).Enabled = 'on';\nend\n\nclear h setKTauValue" - } - Object { - $ObjectID 35 - Type "edit" - Name "kTau" - Prompt "kTau" - Value "[0]" - Enabled "off" - } - Object { - $ObjectID 36 - Type "checkbox" - Name "setBemf" - Prompt "Set motor back EMF constant" - Value "off" - Callback "h = Simulink.Mask.get(gcb);\nsetBemfValue = get_param(gcb,'setBemf');\n\nif ~strcmp(setBemfValue,'on')\n " - " h.Parameters(8).Enabled = 'off';\nelse\n h.Parameters(8).Enabled = 'on';\nend\n\nclear h setBemfValue" - } - Object { - $ObjectID 37 - Type "edit" - Name "bemf" - Prompt "bemf" - Value "[0]" - Enabled "off" - } - PropName "Parameters" - } - Array { - Type "Simulink.dialog.Group" - Dimension 2 - Object { - $ObjectID 38 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 39 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 40 - Prompt "Simulink:studio:ToolBarParametersMenu" - Array { - Type "Simulink.dialog.Group" - Dimension 3 - Object { - $ObjectID 41 - Prompt "Gains" - Array { - Type "Simulink.dialog.parameter.Control" - Dimension 4 - Object { - $ObjectID 42 - $ClassName "Simulink.dialog.parameter.Popup" - Name "pidType" - } - Object { - $ObjectID 43 - $ClassName "Simulink.dialog.parameter.CheckBox" - Name "readP" - } - Object { - $ObjectID 44 - $ClassName "Simulink.dialog.parameter.CheckBox" - Name "readI" - } - Object { - $ObjectID 45 - $ClassName "Simulink.dialog.parameter.CheckBox" - Name "readD" - } - PropName "DialogControls" - } - Name "Container3" - } - Object { - $ObjectID 46 - Prompt "Motor Torque Parameters" - Array { - Type "Simulink.dialog.parameter.Control" - Dimension 4 - Object { - $ObjectID 47 - $ClassName "Simulink.dialog.parameter.CheckBox" - Name "setKTau" - } - Object { - $ObjectID 48 - $ClassName "Simulink.dialog.parameter.Edit" - PromptLocation "left" - Name "kTau" - } - Object { - $ObjectID 49 - $ClassName "Simulink.dialog.parameter.CheckBox" - Name "setBemf" - } - Object { - $ObjectID 50 - $ClassName "Simulink.dialog.parameter.Edit" - PromptLocation "left" - Name "bemf" - } - PropName "DialogControls" - } - Name "Container4" - } - Object { - $ObjectID 51 - Object { - $PropName "DialogControls" - $ObjectID 52 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(conf" - "igBlock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system" - "(configBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block n" - "ame: %s',gcb,configBlock);\nend\n\nclear configBlock" - Name "Control2" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - Name "ParameterGroupVar" - } - PropName "DialogControls" - } - } - } - Block { - BlockType SubSystem - Name "SetMotorReferences" - SID "1791" - Ports [1] - Position [710, 210, 785, 260] - ZOrder 44 - BackgroundColor "[0.960000, 0.770000, 0.460000]" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 53 - $ClassName "Simulink.Mask" - Type "SetMotorReferences" - Description "This block sets motor references. The type of control mode is specified as a parameter in the b" - "lock.\n\nAssuming N as the number of motors (usually equal to internal DoFs):\n\nInput:\n - References: Vector o" - "f size N, representing the references to be sent to the robot controlled motors.\n\nParameters:\n - Control Mode" - ": The control mode. Choose one of the supplied mode.\n\nUnit of measurement:\n - PWM [-100, 100]% Duty cycle\n " - " - Current [A]\n - Back EMF\n - Torque Constant" - Initialization "refSpeed = 0;\n\n% WBBlock Initialization\n% ======================\n\ntry\n [configBlockA" - "bsName, WBTConfig] = WBToolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimul" - "inkParameters;\n clear WBTConfig;\ncatch\nend" - Display "disp(get_param(gcb,'controlType'))\n%port_label('input',1,'References')" - RunInitForIconRedraw "off" - Object { - $PropName "Parameters" - $ObjectID 54 - $ClassName "Simulink.MaskParameter" - Type "popup" - Array { - Type "Cell" - Dimension 4 - Cell "PWM" - Cell "Current" - Cell "Back EMF" - Cell "Torque Constant" - PropName "TypeOptions" - } - Name "controlType" - Prompt "Control Mode" - Value "Current" - Evaluate "off" - Callback "% Get the mask parameter values. This is a cell\n% array of strings.\n\nmaskStr = get_param(" - "gcb,'controlType');\n\nswitch maskStr\n case 'PWM'\n set_param(gcb,'BackgroundColor', '[1, 1, 1, 1.0]" - "');\n case 'Current'\n set_param(gcb,'BackgroundColor', '[0.96, 0.77, 0.46, 1.0]');\n case 'Back E" - "MF'\n set_param(gcb,'BackgroundColor', '[0.8, 0.4, 1.0, 1.0]');\n case 'Torque Constant'\n set" - "_param(gcb,'BackgroundColor', '[0.8, 1.0, 0.4, 1.0]');\n otherwise\n error('Control Type not recogniz" - "ed.')\nend\n\nclear maskStr" - } - Array { - Type "Simulink.dialog.Group" - Dimension 3 - Object { - $ObjectID 55 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 56 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 57 - Prompt "Simulink:studio:ToolBarParametersMenu" - Object { - $PropName "DialogControls" - $ObjectID 58 - $ClassName "Simulink.dialog.parameter.Popup" - Name "controlType" - } - Name "ParameterGroupVar" - } - Object { - $ObjectID 59 - Object { - $PropName "DialogControls" - $ObjectID 60 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(configBl" - "ock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system(confi" - "gBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block name: %s'" - ",gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - } - System { - Name "SetMotorReferences" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "1000" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "References" - SID "1794" - Position [55, 48, 85, 62] - ZOrder 24 - IconDisplay "Port number" - } - Block { - BlockType S-Function - Name "S-Function" - SID "1795" - Ports [1] - Position [125, 39, 185, 71] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'SetReferences','WBToolbox',WBTConfigParameters,configBlockAbsName,controlType,refSpeed" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Line { - ZOrder 1 - SrcBlock "References" - SrcPort 1 - DstBlock "S-Function" - DstPort 1 - } - } - } - Block { - BlockType SubSystem - Name "SetReferences" - SID "1767" - Ports [1] - Position [605, 210, 680, 260] - ZOrder 43 - BackgroundColor "[0.513700, 0.851000, 0.670600]" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 61 - $ClassName "Simulink.Mask" - Type "SetReferences" - Description "This block sets the references for the robot actuators.\nThe type of control mode is specified " - "as a parameter in the block.\n\nAssuming DoFs is the number of internal degrees of freedom configured in the asso" - "ciated Config block:\n\nInput:\n - References: Vector of size DoFs, representing the references to be sent to th" - "e robot controlled joints.\n - Reference Speed (Position): Set the reference speed in rad/s used by the trajecto" - "ry generator of the IPositionControl interface\n - Reference Acceleration (Velocity): Set the reference speed in" - " rad/s/s used by the trajectory generator of the IVelocityControl interface\n\nParameters:\n - Control Mode: The" - " control mode. Choose one of the supplied mode.\n\nUnit of measurement:\n- Position [rad]\n- Velocity [rad/s]\n- " - "Acceleration [rad/s/s]\n- Torque [Nm]" - Initialization "if (strcmp(controlType,'Position'))\n refTrajectory = refSpeed;\nelseif (strcmp(controlTyp" - "e,'Velocity'))\n refTrajectory = refAcceleration;\nelse\n refTrajectory = 0;\nend\n\n% WBBlock Initializati" - "on\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WBToolbox.BlockInitialization(gcb, gcs" - ");\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear WBTConfig;\ncatch\nend" - Display "disp(get_param(gcb,'controlType'))\n%port_label('input',1,'References')" - RunInitForIconRedraw "off" - Array { - Type "Simulink.MaskParameter" - Dimension 3 - Object { - $ObjectID 62 - Type "popup" - Array { - Type "Cell" - Dimension 4 - Cell "Position" - Cell "Position Direct" - Cell "Velocity" - Cell "Torque" - PropName "TypeOptions" - } - Name "controlType" - Prompt "Control Mode" - Value "Position" - Evaluate "off" - Callback "% Get the mask parameter values. This is a cell\n% array of strings.\n\nmaskStr = get_param(gcb,'contro" - "lType');\n\nswitch maskStr\n case 'Position'\n set_param(gcb,'BackgroundColor', '[0.5137, 0.8510, 0.6706, " - "1.0]');\n set_param(gcb,'MaskVisibilities', {'on';'on';'off'});\n case 'Position Direct'\n set_para" - "m(gcb,'BackgroundColor', '[0.3922, 0.7882, 0.3451, 1.0]');\n set_param(gcb,'MaskVisibilities', {'on';'off';'o" - "ff'});\n case 'Velocity'\n set_param(gcb,'BackgroundColor', '[0.5137, 0.6745, 1.0000, 1.0]');\n set" - "_param(gcb,'MaskVisibilities', {'on';'off';'on'});\n case 'Torque'\n set_param(gcb,'BackgroundColor', '[0." - "8275, 0.5765, 0.6039, 1.0]');\n set_param(gcb,'MaskVisibilities', {'on';'off';'off'});\n otherwise\n " - " error('Control Type not recognized.')\nend\n\nclear maskStr" - } - Object { - $ObjectID 63 - Type "edit" - Name "refSpeed" - Prompt "Reference Speed" - Value "10*(pi/180)" - } - Object { - $ObjectID 64 - Type "edit" - Name "refAcceleration" - Prompt "Reference Velocity" - Value "1000000*(pi/180)" - Visible "off" - } - PropName "Parameters" - } - Array { - Type "Simulink.dialog.Group" - Dimension 3 - Object { - $ObjectID 65 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 66 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 67 - Prompt "Simulink:studio:ToolBarParametersMenu" - Array { - Type "Simulink.dialog.parameter.Control" - Dimension 3 - Object { - $ObjectID 68 - $ClassName "Simulink.dialog.parameter.Popup" - Name "controlType" - } - Object { - $ObjectID 69 - $ClassName "Simulink.dialog.parameter.Edit" - PromptLocation "left" - Name "refSpeed" - } - Object { - $ObjectID 70 - $ClassName "Simulink.dialog.parameter.Edit" - PromptLocation "left" - Name "refAcceleration" - } - PropName "DialogControls" - } - Name "ParameterGroupVar" - } - Object { - $ObjectID 71 - Object { - $PropName "DialogControls" - $ObjectID 72 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(configBl" - "ock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system(confi" - "gBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block name: %s'" - ",gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - } - System { - Name "SetReferences" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "1000" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "References" - SID "1768" - Position [55, 48, 85, 62] - ZOrder 24 - IconDisplay "Port number" - } - Block { - BlockType S-Function - Name "S-Function" - SID "1769" - Ports [1] - Position [125, 39, 185, 71] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'SetReferences','WBToolbox',WBTConfigParameters,configBlockAbsName,controlType,refTrajectory" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Line { - ZOrder 1 - SrcBlock "References" - SrcPort 1 - DstBlock "S-Function" - DstPort 1 - } - } - } - } - } - Block { - BlockType SubSystem - Name "Model" - SID "209" - Ports [] - Position [133, 16, 231, 113] - ZOrder -3 - ForegroundColor "white" - DropShadow on - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 73 - $ClassName "Simulink.Mask" - Display "image(imread('wholeBodyModel.png'),'center')" - } - System { - Name "Model" - Location [67, 148, 2627, 1588] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "250" - SimulinkSubDomain "Simulink" - Block { - BlockType SubSystem - Name "Dynamics" - SID "369" - Ports [] - Position [364, 21, 471, 128] - ZOrder -1 - DropShadow on - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 74 - $ClassName "Simulink.Mask" - Display "image(imread('Dynamics.png'))" - } - System { - Name "Dynamics" - Location [0, 0, 2048, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "239" - SimulinkSubDomain "Simulink" - Block { - BlockType SubSystem - Name "CentroidalMomentum" - SID "1694" - Ports [4, 1] - Position [475, 101, 660, 164] - ZOrder 72 - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 75 - $ClassName "Simulink.Mask" - Type "CentroidalMomentum" - Description "This block computed the 6 element centroidal momentum, as defined in:\n\n\"Centroidal dynamics of a hu" - "manoid robot\" - DE Orin, A Goswami, SH Lee\nAutonomous Robots 35 (2-3), 161-176\n\nAssuming DoFs is the number of i" - "nternal degrees of freedom of the robot:\n\nInput:\n - Base pose: 4x4 matrix representing the homogenous transforma" - "tion between the base frame and the world frame.\n - Joint configuration: Vector of size DoFs, representing the con" - "figuration of the joints.\n - Base velocity: Vector of size 6 representing the linear and angular velocity of the b" - "ase frame.\n - Joints velocity: Vector of size DoFs, representing the velocity of the joints.\n\nOutput:\n - Centr" - "oidal Momentum: 6-element vector containg the centroidal momentum (3 value for linear momentum and 3 for angular mom" - "entum)." - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" - "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " - "WBTConfig;\ncatch\nend" - RunInitForIconRedraw "off" - Object { - $PropName "DialogControls" - $ObjectID 76 - $ClassName "Simulink.dialog.Group" - Prompt "%" - Array { - Type "Simulink.dialog.Control" - Dimension 2 - Object { - $ObjectID 77 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Object { - $ObjectID 78 - $ClassName "Simulink.dialog.Group" - Object { - $PropName "DialogControls" - $ObjectID 79 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(conf" - "igBlock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system" - "(configBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block n" - "ame: %s',gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - Name "DescGroupVar" - } - } - System { - Name "CentroidalMomentum" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "480" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "Base Pose" - SID "1695" - Position [20, 18, 50, 32] - ZOrder 22 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Joint configuration" - SID "1696" - Position [20, 53, 50, 67] - ZOrder 24 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Base velocity" - SID "1697" - Position [20, 88, 50, 102] - ZOrder 26 - Port "3" - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Joints velocity" - SID "1698" - Position [20, 123, 50, 137] - ZOrder 27 - Port "4" - IconDisplay "Port number" - } - Block { - BlockType S-Function - Name "S-Function" - SID "1699" - Ports [4, 1] - Position [180, 11, 255, 144] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'CentroidalMomentum','WBToolbox',WBTConfigParameters,configBlockAbsName" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "CentroidalMomentum" - SID "1700" - Position [315, 73, 345, 87] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "CentroidalMomentum" - DstPort 1 - } - Line { - ZOrder 2 - SrcBlock "Base Pose" - SrcPort 1 - DstBlock "S-Function" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "Joint configuration" - SrcPort 1 - DstBlock "S-Function" - DstPort 2 - } - Line { - ZOrder 4 - SrcBlock "Base velocity" - SrcPort 1 - DstBlock "S-Function" - DstPort 3 - } - Line { - ZOrder 5 - SrcBlock "Joints velocity" - SrcPort 1 - DstBlock "S-Function" - DstPort 4 - } - } - } - Block { - BlockType SubSystem - Name "GetBiasForces" - SID "1724" - Ports [4, 1] - Position [400, 212, 540, 313] - ZOrder 73 - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 80 - $ClassName "Simulink.Mask" - Type "Get Generalized Bias Forces" - Description "This block retrieves the generalied bias forces of the robot.\n\nAssuming DoFs is the number of intern" - "al degrees of freedom of the robot:\n\nInput:\n - Base pose: 4x4 matrix representing the homogenous transformation " - "between the base frame and the world frame.\n - Joint configuration: Vector of size DoFs, representing the configur" - "ation of the joints.\n - Base velocity: Vector of size 6 representing the linear and angular velocity of the base f" - "rame.\n - Joints velocity: Vector of size DoFs, representing the velocity of the joints.\n\nOutput:\n - Bias Force" - "s: a Dofs + 6 vector representing the generalized bias forces of the robot." - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" - "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " - "WBTConfig;\ncatch\nend" - RunInitForIconRedraw "off" - Object { - $PropName "DialogControls" - $ObjectID 81 - $ClassName "Simulink.dialog.Group" - Prompt "%" - Array { - Type "Simulink.dialog.Control" - Dimension 2 - Object { - $ObjectID 82 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Object { - $ObjectID 83 - $ClassName "Simulink.dialog.Group" - Object { - $PropName "DialogControls" - $ObjectID 84 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(conf" - "igBlock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system" - "(configBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block n" - "ame: %s',gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - Name "DescGroupVar" - } - } - System { - Name "GetBiasForces" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "395" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "Base Pose" - SID "1776" - Position [10, 38, 40, 52] - ZOrder 22 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Joint configuration" - SID "1777" - Position [10, 68, 40, 82] - ZOrder 24 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Base velocity" - SID "1778" - Position [10, 98, 40, 112] - ZOrder 26 - Port "3" - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Joints velocity" - SID "1779" - Position [10, 128, 40, 142] - ZOrder 27 - Port "4" - IconDisplay "Port number" - } - Block { - BlockType Constant - Name "Constant" - SID "1780" - Position [-5, 157, 50, 173] - ZOrder 30 - ShowName off - Value "zeros(6,1)" - } - Block { - BlockType Gain - Name "Gain" - SID "1781" - Position [110, 180, 140, 210] - ZOrder 31 - ShowName off - Gain "0" - ParamDataTypeStr "Inherit: Inherit via internal rule" - OutDataTypeStr "Inherit: Inherit via internal rule" - SaturateOnIntegerOverflow off - } - Block { - BlockType S-Function - Name "S-Function" - SID "1782" - Ports [6, 1] - Position [180, 24, 240, 216] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'InverseDynamics','WBToolbox',WBTConfigParameters,configBlockAbsName" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "Bias Forces" - SID "1783" - Position [300, 113, 330, 127] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "Bias Forces" - DstPort 1 - } - Line { - ZOrder 2 - SrcBlock "Base Pose" - SrcPort 1 - DstBlock "S-Function" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "Joint configuration" - SrcPort 1 - DstBlock "S-Function" - DstPort 2 - } - Line { - ZOrder 4 - SrcBlock "Base velocity" - SrcPort 1 - DstBlock "S-Function" - DstPort 3 - } - Line { - ZOrder 5 - SrcBlock "Joints velocity" - SrcPort 1 - Points [44, 0] - Branch { - ZOrder 11 - Points [0, 60] - DstBlock "Gain" - DstPort 1 - } - Branch { - ZOrder 10 - DstBlock "S-Function" - DstPort 4 - } - } - Line { - ZOrder 8 - SrcBlock "Constant" - SrcPort 1 - DstBlock "S-Function" - DstPort 5 - } - Line { - ZOrder 9 - SrcBlock "Gain" - SrcPort 1 - DstBlock "S-Function" - DstPort 6 - } - } - } - Block { - BlockType SubSystem - Name "GetGravityForces" - SID "1733" - Ports [2, 1] - Position [600, 210, 740, 310] - ZOrder 74 - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 85 - $ClassName "Simulink.Mask" - Type "Gravity bias" - Description "This block compute the generalized bias forces due to the gravity\n\nAssuming DoFs is the number of in" - "ternal degrees of freedom of the robot:\n\nInput:\n - Base pose: 4x4 matrix representing the homogenous transformat" - "ion between the base frame and the world frame.\n - Joint configuration: Vector of size DoFs, representing the conf" - "iguration of the joints.\n\nOutput:\n - Gravity: a DoFs + 6 vector representing the torques due to the gravity." - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" - "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " - "WBTConfig;\ncatch\nend" - RunInitForIconRedraw "off" - Object { - $PropName "DialogControls" - $ObjectID 86 - $ClassName "Simulink.dialog.Group" - Prompt "%" - Array { - Type "Simulink.dialog.Control" - Dimension 2 - Object { - $ObjectID 87 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Object { - $ObjectID 88 - $ClassName "Simulink.dialog.Group" - Object { - $PropName "DialogControls" - $ObjectID 89 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(conf" - "igBlock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system" - "(configBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block n" - "ame: %s',gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - Name "DescGroupVar" - } - } - System { - Name "GetGravityForces" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "395" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "Base Pose" - SID "1784" - Position [10, 38, 40, 52] - ZOrder 22 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Joint configuration" - SID "1785" - Position [10, 68, 40, 82] - ZOrder 24 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType Constant - Name "Constant" - SID "1786" - Position [0, 97, 55, 113] - ZOrder 32 - ShowName off - Value "zeros(6,1)" - } - Block { - BlockType Gain - Name "Gain" - SID "1787" - Position [100, 120, 130, 150] - ZOrder 33 - ShowName off - Gain "0" - ParamDataTypeStr "Inherit: Inherit via internal rule" - OutDataTypeStr "Inherit: Inherit via internal rule" - SaturateOnIntegerOverflow off - } - Block { - BlockType S-Function - Name "S-Function" - SID "1788" - Ports [6, 1] - Position [180, 24, 240, 216] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'InverseDynamics','WBToolbox',WBTConfigParameters,configBlockAbsName" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "Gravity Torques" - SID "1789" - Position [300, 113, 330, 127] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "Gravity Torques" - DstPort 1 - } - Line { - ZOrder 2 - SrcBlock "Base Pose" - SrcPort 1 - DstBlock "S-Function" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "Joint configuration" - SrcPort 1 - Points [41, 0] - Branch { - ZOrder 12 - Points [0, 60] - DstBlock "Gain" - DstPort 1 - } - Branch { - ZOrder 11 - DstBlock "S-Function" - DstPort 2 - } - } - Line { - ZOrder 8 - SrcBlock "Constant" - SrcPort 1 - Points [4, 0] - Branch { - ZOrder 10 - Points [0, 60] - DstBlock "S-Function" - DstPort 5 - } - Branch { - ZOrder 9 - DstBlock "S-Function" - DstPort 3 - } - } - Line { - ZOrder 13 - SrcBlock "Gain" - SrcPort 1 - Points [13, 0] - Branch { - ZOrder 15 - Points [0, 60] - DstBlock "S-Function" - DstPort 6 - } - Branch { - ZOrder 14 - DstBlock "S-Function" - DstPort 4 - } - } - } - } - Block { - BlockType S-Function - Name "InverseDynamics" - SID "1748" - Ports [6, 1] - Position [190, 199, 355, 331] - ZOrder 75 - FunctionName "BlockFactory" - Parameters "'InverseDynamics','WBToolbox',WBTConfigParameters,configBlockAbsName" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Object { - $PropName "MaskObject" - $ObjectID 90 - $ClassName "Simulink.Mask" - Type "InverseDynamics" - Description "This block compute the inverse dynamics of the robot.\n\nAssuming DoFs is the number of internal degre" - "es of freedom of the robot:\n\nInput:\n - Base pose: 4x4 matrix representing the homogenous transformation between " - "the base frame and the world frame.\n - Joint configuration: Vector of size DoFs, representing the configuration of" - " the joints.\n - Base velocity: Vector of size 6 representing the linear and angular velocity of the base frame.\n " - " - Joints velocity: Vector of size DoFs, representing the velocity of the joints.\n - Base acceleration: Vector of " - "size 6 representing the linear and angular acceleration of the base frame.\n - Joints acceleration: Vector of size " - "DoFs, representing the acceleration of the joints.\n\nOutput:\n - Torques: a Dofs + 6 vector representing the corre" - "sponding torques required to achive the desired accelerations given the robot state." - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" - "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " - "WBTConfig;\ncatch\nend" - Display "port_label('output', 1, 'Torques')\n\nport_label('input', 1, 'Base pose')\nport_label('input', 2, 'Joints" - " configuration')\nport_label('input', 3, 'Base velocity')\nport_label('input', 4, 'Joints velocity')\nport_label('in" - "put', 5, 'Base acceleration')\nport_label('input', 6, 'Joints acceleration')\n" - RunInitForIconRedraw "off" - Object { - $PropName "DialogControls" - $ObjectID 91 - $ClassName "Simulink.dialog.Group" - Prompt "%" - Array { - Type "Simulink.dialog.Control" - Dimension 2 - Object { - $ObjectID 92 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Object { - $ObjectID 93 - $ClassName "Simulink.dialog.Group" - Object { - $PropName "DialogControls" - $ObjectID 94 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(conf" - "igBlock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system" - "(configBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block n" - "ame: %s',gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - Name "DescGroupVar" - } - } - } - Block { - BlockType SubSystem - Name "MassMatrix" - SID "1633" - Ports [2, 1] - Position [250, 104, 390, 171] - ZOrder 32 - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 95 - $ClassName "Simulink.Mask" - Type "MassMatrix" - Description "This block retrieves the robot mass matrix.\n\nAssuming DoFs is the number of internal degrees of free" - "dom of the robot,\n\nInput:\n - Base pose: 4x4 matrix representing the homogenous transformation between the base f" - "rame and the world frame.\n - Joint configuration: Vector of size DoFs, representing the configuration of the joint" - "s.\n\nOutput:\n - MassMatrix: a (DoFs + 6) x (DoFs + 6) matrix representing the mass matrix of the robot." - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" - "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " - "WBTConfig;\ncatch\nend" - RunInitForIconRedraw "off" - Object { - $PropName "DialogControls" - $ObjectID 96 - $ClassName "Simulink.dialog.Group" - Prompt "%" - Array { - Type "Simulink.dialog.Control" - Dimension 2 - Object { - $ObjectID 97 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Object { - $ObjectID 98 - $ClassName "Simulink.dialog.Group" - Object { - $PropName "DialogControls" - $ObjectID 99 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(conf" - "igBlock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system" - "(configBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block n" - "ame: %s',gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - Name "DescGroupVar" - } - } - System { - Name "MassMatrix" - Location [0, 0, 2048, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "630" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "Base Pose" - SID "1634" - Position [20, 23, 50, 37] - ZOrder 22 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Joint configuration" - SID "1635" - Position [20, 63, 50, 77] - ZOrder 24 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType S-Function - Name "S-Function" - SID "1636" - Ports [2, 1] - Position [125, 37, 185, 68] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'MassMatrix','WBToolbox',WBTConfigParameters,configBlockAbsName" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "MassMatrix" - SID "1637" - Position [245, 48, 275, 62] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "MassMatrix" - DstPort 1 - } - Line { - ZOrder 2 - SrcBlock "Base Pose" - SrcPort 1 - Points [36, 0; 0, 15] - DstBlock "S-Function" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "Joint configuration" - SrcPort 1 - Points [33, 0; 0, -10] - DstBlock "S-Function" - DstPort 2 - } - } - } - } - } - Block { - BlockType SubSystem - Name "Jacobians" - SID "202" - Ports [] - Position [217, 20, 324, 127] - ZOrder -3 - DropShadow on - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 100 - $ClassName "Simulink.Mask" - Display "image(imread('jacobian.png'))" - } - System { - Name "Jacobians" - Location [67, 148, 2627, 1588] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "246" - SimulinkSubDomain "Simulink" - Block { - BlockType S-Function - Name "CentroidalTotalMomentumMatrix" - SID "1852" - Ports [2, 1] - Position [805, 171, 1075, 264] - ZOrder 70 - FunctionName "BlockFactory" - Parameters "'CentroidalTotalMomentumMatrix', 'WBToolbox', WBTConfigParameters, configBlockAbsName" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Object { - $PropName "MaskObject" - $ObjectID 101 - $ClassName "Simulink.Mask" - Type "CentroidalTotalMomentumMatrix" - Description "This block retrieves the Centroidal Total Momentum Matrix.\n\nAssuming DoFs is the number of internal " - "degrees of freedom of the robot:\n\nInput:\n - Base pose: 4x4 matrix representing the homogenous transformation bet" - "ween the the base frame and the world frame.\n - Joint configuration: Vector of size DoFs, representing the configu" - "ration of the joints.\n\nOutput:\n - CMM: a 6x6+dofs matrix representing the Centroidal Momentum Matrix written in " - "the world frame." - Initialization "try\n [configBlockAbsName, WBTConfig] = WBToolbox.BlockInitialization(gcb, gcs);\n \n WBTC" - "onfigParameters = WBTConfig.getSimulinkParameters;\n clear WBTConfig;\ncatch\nend" - Display "\nport_label('output', 1, 'CentroidalTotalMomentumMatrix', 'texmode','on')\nport_label('input', 1, '{}^{w" - "orld} H_{base}', 'texmode','on')\nport_label('input', 2, 'Joint configuration')\n\n" - RunInitForIconRedraw "on" - Object { - $PropName "DialogControls" - $ObjectID 102 - $ClassName "Simulink.dialog.Group" - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 103 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - } - } - Block { - BlockType SubSystem - Name "DotJNu" - SID "1683" - Ports [4, 1] - Position [590, 170, 755, 265] - ZOrder 67 - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 104 - $ClassName "Simulink.Mask" - Type "DotJNu" - Description "This block computes the product between the time derivative of the Jacobian of the specified frame and" - " the state (base and joints) velocity vector.\n\nAssuming DoFs is the number of internal degrees of freedom of the r" - "obot:\n\nInput:\n - Base pose: 4x4 matrix representing the homogenous transformation between the the base frame and" - " the world frame.\n - Joint configuration: Vector of size DoFs, representing the configuration of the joints.\n - " - "Base velocity: Vector of size 6 representing the linear and angular velocity of the base frame.\n - Joints velocity" - ": Vector of size DoFs, representing the velocity of the joints.\n\nOutput:\n - dotJ nu: a 6D vector representing th" - "e product between the time derivative of the Jacobian of the specified frame and the state velocity vector\n\nParame" - "ters:\n - Frame name: the name of the frame. It should be specified in the URDF model." - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" - "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " - "WBTConfig;\ncatch\nend" - Display "escapedFrameName = strrep(frameName, '_', '\\_');\nport_label('output', 1, strcat('dot J_{',escapedFrameN" - "ame,'} \\nu'), 'texmode','on')\n\nport_label('input', 1, '{}^{world} H_{base}', 'texmode','on')\nport_label('input'," - " 2, 'Joint configuration')\nport_label('input', 3, 'Base velocity')\nport_label('input', 4, 'Joint velocity')\n\ncle" - "ar escapedFrameName;" - RunInitForIconRedraw "on" - Object { - $PropName "Parameters" - $ObjectID 105 - $ClassName "Simulink.MaskParameter" - Type "edit" - Name "frameName" - Prompt "Frame name" - Value "'frame'" - } - Array { - Type "Simulink.dialog.Group" - Dimension 2 - Object { - $ObjectID 106 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 107 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 108 - Prompt "Simulink:studio:ToolBarParametersMenu" - Array { - Type "Simulink.dialog.Control" - Dimension 2 - Object { - $ObjectID 109 - $ClassName "Simulink.dialog.parameter.Edit" - Name "frameName" - } - Object { - $ObjectID 110 - $ClassName "Simulink.dialog.Group" - Object { - $PropName "DialogControls" - $ObjectID 111 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(conf" - "igBlock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system" - "(configBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block n" - "ame: %s',gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - Name "ParameterGroupVar" - } - PropName "DialogControls" - } - } - System { - Name "DotJNu" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "595" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "Base Pose" - SID "1684" - Position [20, 13, 50, 27] - ZOrder 22 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Joint configuration" - SID "1685" - Position [20, 43, 50, 57] - ZOrder 24 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Base velocity" - SID "1686" - Position [20, 73, 50, 87] - ZOrder 26 - Port "3" - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Joints velocity" - SID "1687" - Position [20, 103, 50, 117] - ZOrder 27 - Port "4" - IconDisplay "Port number" - } - Block { - BlockType S-Function - Name "S-Function" - SID "1688" - Ports [4, 1] - Position [125, 4, 190, 126] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'DotJNu','WBToolbox',WBTConfigParameters,configBlockAbsName,frameName" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "dotJ dotnu" - SID "1689" - Position [245, 58, 275, 72] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "Joint configuration" - SrcPort 1 - DstBlock "S-Function" - DstPort 2 - } - Line { - ZOrder 2 - SrcBlock "Base Pose" - SrcPort 1 - DstBlock "S-Function" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "dotJ dotnu" - DstPort 1 - } - Line { - ZOrder 4 - SrcBlock "Base velocity" - SrcPort 1 - DstBlock "S-Function" - DstPort 3 - } - Line { - ZOrder 5 - SrcBlock "Joints velocity" - SrcPort 1 - DstBlock "S-Function" - DstPort 4 - } - } - } - Block { - BlockType SubSystem - Name "Jacobian" - SID "1663" - Ports [2, 1] - Position [380, 190, 540, 245] - ZOrder 39 - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 112 - $ClassName "Simulink.Mask" - Type "Jacobian" - Description "This block retrieves the Jacobian of the specified frame.\n\nAssuming DoFs is the number of internal d" - "egrees of freedom of the robot:\n\nInput:\n - Base pose: 4x4 matrix representing the homogenous transformation betw" - "een the the base frame and the world frame.\n - Joint configuration: Vector of size DoFs, representing the configur" - "ation of the joints.\n\nOutput:\n - Jacobian: a 6x6+dofs matrix representing the Jacobian of the specified frame wr" - "itten in the world frame.\n\nParameters:\n - Frame name: the name of the frame. It should be specified in the URDF " - "model." - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" - "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " - "WBTConfig;\ncatch\nend" - Display "escapedFrameName = strrep(frameName, '_', '\\_');\nport_label('output', 1, strcat('{}^{world} J_{',escape" - "dFrameName,'}'), 'texmode','on')\n\nport_label('input', 1, '{}^{world} H_{base}', 'texmode','on')\nport_label('input" - "', 2, 'Joint configuration')\n\nclear escapedFrameName;" - RunInitForIconRedraw "on" - Object { - $PropName "Parameters" - $ObjectID 113 - $ClassName "Simulink.MaskParameter" - Type "edit" - Name "frameName" - Prompt "Frame name" - Value "'frame'" - } - Array { - Type "Simulink.dialog.Group" - Dimension 2 - Object { - $ObjectID 114 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 115 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 116 - Prompt "Simulink:studio:ToolBarParametersMenu" - Array { - Type "Simulink.dialog.Control" - Dimension 2 - Object { - $ObjectID 117 - $ClassName "Simulink.dialog.parameter.Edit" - Name "frameName" - } - Object { - $ObjectID 118 - $ClassName "Simulink.dialog.Group" - Object { - $PropName "DialogControls" - $ObjectID 119 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(conf" - "igBlock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system" - "(configBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block n" - "ame: %s',gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - Name "ParameterGroupVar" - } - PropName "DialogControls" - } - } - System { - Name "Jacobian" - Location [0, 0, 2048, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "595" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "Base Pose" - SID "1664" - Position [20, 23, 50, 37] - ZOrder 22 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Joint configuration" - SID "1665" - Position [20, 63, 50, 77] - ZOrder 24 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType S-Function - Name "S-Function" - SID "1666" - Ports [2, 1] - Position [125, 37, 185, 68] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'Jacobian','WBToolbox',WBTConfigParameters,configBlockAbsName,frameName" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "ForwardKinematics" - SID "1667" - Position [245, 48, 275, 62] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "ForwardKinematics" - DstPort 1 - } - Line { - ZOrder 2 - SrcBlock "Base Pose" - SrcPort 1 - Points [36, 0; 0, 15] - DstBlock "S-Function" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "Joint configuration" - SrcPort 1 - Points [33, 0; 0, -10] - DstBlock "S-Function" - DstPort 2 - } - } - } - } - } - Block { - BlockType SubSystem - Name "Kinematics" - SID "176" - Ports [] - Position [70, 20, 177, 127] - ZOrder -17 - DropShadow on - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 120 - $ClassName "Simulink.Mask" - Display "image(imread('forwardKinematics.png'))" - } - System { - Name "Kinematics" - Location [67, 148, 2627, 1588] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "400" - SimulinkSubDomain "Simulink" - Block { - BlockType SubSystem - Name "ForwardKinematics" - SID "1647" - Ports [2, 1] - Position [360, 103, 510, 167] - ZOrder 34 - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 121 - $ClassName "Simulink.Mask" - Type "ForwardKinematics" - Description "This block retrieves the forward kinematics of the specified frame.\n\nAssuming DoFs is the number of " - "internal degrees of freedom of the robot:\n\nInput:\n - Base pose: 4x4 matrix representing the homogenous transform" - "ation between the the base frame and the world frame.\n - Joint configuration: Vector of size DoFs, representing th" - "e configuration of the joints.\n\nOutput:\n - ForwardKinematics: a 4x4 matrix representing the homogenous transform" - "ation between the specified frame and the world frame.\n\nParameters:\n - Frame name: the name of the frame. It sho" - "uld be specified in the URDF model." - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" - "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " - "WBTConfig;\ncatch\nend" - Display "escapedFrameName = strrep(frameName, '_', '\\_');\n% port_label('output', 1, strcat('{}^{world} H_{',esca" - "pedFrameName,'}'), 'texmode','on')\n\nport_label('input', 1, '{}^{world} H_{base}', 'texmode','on')\nport_label('inp" - "ut', 2, 'Joint configuration')\n\nclear escapedFrameName;" - RunInitForIconRedraw "on" - Object { - $PropName "Parameters" - $ObjectID 122 - $ClassName "Simulink.MaskParameter" - Type "edit" - Name "frameName" - Prompt "Frame name" - Value "'frame'" - } - Array { - Type "Simulink.dialog.Group" - Dimension 2 - Object { - $ObjectID 123 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 124 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 125 - Prompt "Simulink:studio:ToolBarParametersMenu" - Array { - Type "Simulink.dialog.Control" - Dimension 2 - Object { - $ObjectID 126 - $ClassName "Simulink.dialog.parameter.Edit" - Name "frameName" - } - Object { - $ObjectID 127 - $ClassName "Simulink.dialog.Group" - Object { - $PropName "DialogControls" - $ObjectID 128 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(conf" - "igBlock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system" - "(configBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block n" - "ame: %s',gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - Name "ParameterGroupVar" - } - PropName "DialogControls" - } - } - System { - Name "ForwardKinematics" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "595" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "Base Pose" - SID "1648" - Position [20, 23, 50, 37] - ZOrder 22 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Joint configuration" - SID "1649" - Position [20, 63, 50, 77] - ZOrder 24 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType S-Function - Name "S-Function" - SID "1650" - Ports [2, 1] - Position [125, 37, 185, 68] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'ForwardKinematics','WBToolbox',WBTConfigParameters,configBlockAbsName,frameName" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "ForwardKinematics" - SID "1651" - Position [245, 48, 275, 62] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "ForwardKinematics" - DstPort 1 - } - Line { - ZOrder 2 - SrcBlock "Base Pose" - SrcPort 1 - Points [36, 0; 0, 15] - DstBlock "S-Function" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "Joint configuration" - SrcPort 1 - Points [33, 0; 0, -10] - DstBlock "S-Function" - DstPort 2 - } - } - } - Block { - BlockType SubSystem - Name "InverseKinematics" - SID "1754" - Ports [3, 2] - Position [350, 198, 525, 262] - ZOrder 35 - Commented "on" - InitFcn "if ~exist('WBT_robotName','var')\n WBT_robotName = '';\nend\nif ~exist('WBT_modelName','var'" - ")\n WBT_modelName = 'WBT_simulink';\nend\nif ~exist('WBT_wbiFilename','var')\n WBT_wbiFilename = 'yarpWho" - "leBodyInterface.ini';\nend\nif ~exist('WBT_wbiList','var')\n WBT_wbiList = 'ROBOT_TORQUE_CONTROL_JOINTS';\ne" - "nd" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 129 - $ClassName "Simulink.Mask" - Type "ForwardKinematics" - Description "This block retrieves the forward kinematics of the specified frame.\n\nAssuming DoFs is the number of " - "internal degrees of freedom of the robot,\nInput:\n- Base pose: 4x4 matrix representing the homogenous transformatio" - "n between\n the the base frame and the world frame.\n- Joint configuration: Vector of size DoFs, represe" - "nting the configuration \n of the joints.\n\nOutput:\n- ForwardKinematics: a 4x4 matrix repres" - "enting the homogenous transformation between\n the specified frame and the world frame.\n\nParameters:\n" - "- Frame name: the name of the frame. It should be specified in the URDF model.\n\n- Robot Port Name: Name of the por" - "ts opened by the robot. (e.g. icub).\n Set an empty string ('') to use the name specified in the \n" - " Whole Body Interface configuration file.\n- Model Name: Prefix name of the ports opened by the un" - "derlying Whole Body Interface.\n- WBI filename: name of the file containing the configuration of the Whole Body Inte" - "rface\n- WBI List Name: name of the list of joints used to configure the Whole Body Interface\n" - Display "escapedBaseFrameName = strrep(baseFrame, '_', '\\_');\nescapedEndEffFrameName = strrep(endEffFrame, '_', " - "'\\_');\n\n%port_label('output', 1, strcat('{}^{world} H_{',escapedFrameName,'}'), 'texmode','on')\n\n%port_label('i" - "nput', 1, '{}^{world} H_{base}', 'texmode','on')\n%port_label('input', 2, 'Joint configuration')\n\n%clear escapedFr" - "ameName;\n\n\n% if strcmp(robotPart, 'left')\n% prefix = 'l';\n% else\n% prefix = 'r';\n% end\n% \nport_labe" - "l('input', 1, strcat('{}^{',escapedBaseFrameName,'} H_{',escapedEndEffFrameName,'}^d'), 'texmode','on');\n\nport_lab" - "el('input', 2, '{}^{world} H_{base}', 'texmode','on')\nport_label('input', 3, 'q_j', 'texmode','on');\n% \n% \nport_" - "label('output', 1, '{}^{world} H_{base}^d', 'texmode','on')\nport_label('output', 2, 'q_j^d', 'texmode','on');\n\n" - RunInitForIconRedraw "on" - Array { - Type "Simulink.MaskParameter" - Dimension 7 - Object { - $ObjectID 130 - Type "edit" - Name "baseFrame" - Prompt "Base Frame" - Value "'root_link'" - } - Object { - $ObjectID 131 - Type "edit" - Name "endEffFrame" - Prompt "End Effector frame" - Value "'l_sole'" - } - Object { - $ObjectID 132 - Type "popup" - Array { - Type "Cell" - Dimension 2 - Cell "Full Constraint (Position and Orientation)" - Cell "Position only constraint" - PropName "TypeOptions" - } - Name "optOption" - Prompt "Optimization Option" - Value "Full Constraint (Position and Orientation)" - } - Object { - $ObjectID 133 - Type "edit" - Name "robotName" - Prompt "Robot Port Name" - Value "WBT_robotName" - Tunable "off" - } - Object { - $ObjectID 134 - Type "edit" - Name "localName" - Prompt "Model Name" - Value "WBT_modelName" - Tunable "off" - } - Object { - $ObjectID 135 - Type "edit" - Name "wbiFile" - Prompt "WBI filename" - Value "WBT_wbiFilename" - Tunable "off" - } - Object { - $ObjectID 136 - Type "edit" - Name "wbiList" - Prompt "WBI list name" - Value "WBT_wbiList" - Tunable "off" - } - PropName "Parameters" - } - Array { - Type "Simulink.dialog.Group" - Dimension 2 - Object { - $ObjectID 137 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 138 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 139 - Prompt "Simulink:studio:ToolBarParametersMenu" - Object { - $PropName "DialogControls" - $ObjectID 140 - $ClassName "Simulink.dialog.TabContainer" - Array { - Type "Simulink.dialog.Tab" - Dimension 2 - Object { - $ObjectID 141 - Prompt "Block parameters" - Array { - Type "Simulink.dialog.parameter.Control" - Dimension 3 - Object { - $ObjectID 142 - $ClassName "Simulink.dialog.parameter.Edit" - PromptLocation "left" - Name "baseFrame" - } - Object { - $ObjectID 143 - $ClassName "Simulink.dialog.parameter.Edit" - Name "endEffFrame" - } - Object { - $ObjectID 144 - $ClassName "Simulink.dialog.parameter.Popup" - Name "optOption" - } - PropName "DialogControls" - } - Name "Container8" - } - Object { - $ObjectID 145 - Prompt "WBI parameters" - Array { - Type "Simulink.dialog.parameter.Edit" - Dimension 4 - Object { - $ObjectID 146 - Name "robotName" - } - Object { - $ObjectID 147 - Name "localName" - } - Object { - $ObjectID 148 - Name "wbiFile" - } - Object { - $ObjectID 149 - Name "wbiList" - } - PropName "DialogControls" - } - Name "Container5" - } - PropName "DialogControls" - } - Name "Container4" - } - Name "ParameterGroupVar" - } - PropName "DialogControls" - } - } - System { - Name "InverseKinematics" - Location [0, 23, 1280, 744] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "312" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "Desired frame pose" - SID "1759" - Position [10, 13, 40, 27] - ZOrder 26 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Current Base Pose" - SID "1755" - Position [10, 43, 40, 57] - ZOrder 22 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Current Joint configuration" - SID "1756" - Position [10, 73, 40, 87] - ZOrder 24 - Port "3" - IconDisplay "Port number" - } - Block { - BlockType S-Function - Name "S-Function" - SID "1757" - Ports [3, 2] - Position [145, 4, 225, 96] - ZOrder 19 - FunctionName "WBToolbox" - Parameters "'InverseKinematics',robotName,localName,wbiFile,wbiList,baseFrame, endEffFrame,optOption" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "Desired Base Pose" - SID "1758" - Position [280, 23, 310, 37] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Block { - BlockType Outport - Name "Desired Joint Configuration" - SID "1760" - Position [280, 68, 310, 82] - ZOrder 27 - Port "2" - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "Desired Base Pose" - DstPort 1 - } - Line { - ZOrder 5 - SrcBlock "Current Base Pose" - SrcPort 1 - DstBlock "S-Function" - DstPort 2 - } - Line { - ZOrder 4 - SrcBlock "Current Joint configuration" - SrcPort 1 - DstBlock "S-Function" - DstPort 3 - } - Line { - ZOrder 7 - SrcBlock "Desired frame pose" - SrcPort 1 - DstBlock "S-Function" - DstPort 1 - } - Line { - ZOrder 8 - SrcBlock "S-Function" - SrcPort 2 - DstBlock "Desired Joint Configuration" - DstPort 1 - } - } - } - Block { - BlockType SubSystem - Name "RelativeTransform" - SID "1799" - Ports [1, 1] - Position [565, 198, 715, 262] - ZOrder 67 - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 150 - $ClassName "Simulink.Mask" - Type "RelativeTransform" - Description "This block calculates the relative transform between two frames.\n\nAssuming DoFs is the number of int" - "ernal degrees of freedom of the robot:\n\nInput:\n - Joint configuration: Vector of size DoFs, representing the con" - "figuration of the joints.\n\nOutput:\n - Transform: a 4x4 matrix representing the homogenous transformation between" - " frame1 and frame2.\n\nParameters:\n - Frame1 name: the name of the first frame. It should be part of the URDF mode" - "l.\n - Frame2 name: the name of the second frame. It should be part of the URDF model." - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig] = WB" - "Toolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n clear " - "WBTConfig;\ncatch\nend" - Display "port_label('input', 1, 'Joint configuration')\nport_label('output', 1, strcat('{}^{', frame1, '}', 'H_{'," - " frame2, '}'), 'texmode','on')" - RunInitForIconRedraw "on" - Array { - Type "Simulink.MaskParameter" - Dimension 2 - Object { - $ObjectID 151 - Type "edit" - Name "frame1" - Prompt "Frame1 name" - Value "'frame1'" - } - Object { - $ObjectID 152 - Type "edit" - Name "frame2" - Prompt "Frame2 name" - Value "'frame2'" - } - PropName "Parameters" - } - Array { - Type "Simulink.dialog.Group" - Dimension 2 - Object { - $ObjectID 153 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 154 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 155 - Prompt "Simulink:studio:ToolBarParametersMenu" - Array { - Type "Simulink.dialog.Control" - Dimension 3 - Object { - $ObjectID 156 - $ClassName "Simulink.dialog.parameter.Edit" - Name "frame1" - } - Object { - $ObjectID 157 - $ClassName "Simulink.dialog.parameter.Edit" - Name "frame2" - } - Object { - $ObjectID 158 - $ClassName "Simulink.dialog.Group" - Object { - $PropName "DialogControls" - $ObjectID 159 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(conf" - "igBlock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system" - "(configBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block n" - "ame: %s',gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - Name "ParameterGroupVar" - } - PropName "DialogControls" - } - } - System { - Name "RelativeTransform" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "834" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "Joint configuration" - SID "1800" - Position [45, 48, 75, 62] - ZOrder 22 - IconDisplay "Port number" - } - Block { - BlockType S-Function - Name "S-Function" - SID "1806" - Ports [1, 1] - Position [120, 40, 180, 70] - ZOrder 27 - FunctionName "BlockFactory" - Parameters "'RelativeTransform','WBToolbox',WBTConfigParameters,configBlockAbsName,frame1, frame2" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "RelativeTransform" - SID "1803" - Position [225, 48, 255, 62] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 4 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "RelativeTransform" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "Joint configuration" - SrcPort 1 - DstBlock "S-Function" - DstPort 1 - } - } - } - Block { - BlockType SubSystem - Name "RemoteInverseKinematics" - SID "1761" - Ports [2, 1] - Position [560, 105, 720, 165] - ZOrder 66 - Commented "on" - InitFcn "if ~exist('WBT_robotName','var')\n WBT_robotName = '';\nend\nif ~exist('WBT_modelName','var'" - ")\n WBT_modelName = 'WBT_simulink';\nend\nif ~exist('WBT_wbiFilename','var')\n WBT_wbiFilename = 'yarpWho" - "leBodyInterface.ini';\nend\nif ~exist('WBT_wbiList','var')\n WBT_wbiList = 'ROBOT_TORQUE_CONTROL_JOINTS';\ne" - "nd" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 160 - $ClassName "Simulink.Mask" - Type "ForwardKinematics" - Description "This block retrieves the forward kinematics of the specified frame.\n\nAssuming DoFs is the number of " - "internal degrees of freedom of the robot,\nInput:\n- Base pose: 4x4 matrix representing the homogenous transformatio" - "n between\n the the base frame and the world frame.\n- Joint configuration: Vector of size DoFs, represe" - "nting the configuration \n of the joints.\n\nOutput:\n- ForwardKinematics: a 4x4 matrix repres" - "enting the homogenous transformation between\n the specified frame and the world frame.\n\nParameters:\n" - "- Frame name: the name of the frame. It should be specified in the URDF model.\n\n- Robot Port Name: Name of the por" - "ts opened by the robot. (e.g. icub).\n Set an empty string ('') to use the name specified in the \n" - " Whole Body Interface configuration file.\n- Model Name: Prefix name of the ports opened by the un" - "derlying Whole Body Interface.\n- WBI filename: name of the file containing the configuration of the Whole Body Inte" - "rface\n- WBI List Name: name of the list of joints used to configure the Whole Body Interface\n" - Display "disp(solverName)\n\n\n\n% escapedBaseFrameName = strrep(baseFrame, '_', '\\_');\n% escapedEndEffFrameName" - " = strrep(endEffFrame, '_', '\\_');\n% \n% %port_label('output', 1, strcat('{}^{world} H_{',escapedFrameName,'}'), '" - "texmode','on')\n% \n% %port_label('input', 1, '{}^{world} H_{base}', 'texmode','on')\n% %port_label('input', 2, 'Joi" - "nt configuration')\n% \n% %clear escapedFrameName;\n% \n% \n% % if strcmp(robotPart, 'left')\n% % prefix = 'l';\n" - "% % else\n% % prefix = 'r';\n% % end\n% % \n\nport_label('input', 1, 'H^d', 'texmode','on');\n% port_label('inpu" - "t', 1, strcat('{}^{',escapedBaseFrameName,'} H_{',escapedEndEffFrameName,'}^d'), 'texmode','on');\n% \n% port_label(" - "'input', 2, '{}^{world} H_{base}', 'texmode','on')\nport_label('input', 2, 'q_j(0)', 'texmode','on');\n% % \n% % \n%" - " port_label('output', 1, '{}^{world} H_{base}^d', 'texmode','on')\nport_label('output', 1, 'q_j^d', 'texmode','on');" - "\n\n" - RunInitForIconRedraw "on" - Array { - Type "Simulink.MaskParameter" - Dimension 3 - Object { - $ObjectID 161 - Type "edit" - Name "solverName" - Prompt "Solver Name" - Value "'/cartesianSolver'" - } - Object { - $ObjectID 162 - Type "edit" - Name "dofs" - Prompt "#Dofs" - Value "12" - Tunable "off" - } - Object { - $ObjectID 163 - Type "popup" - Array { - Type "Cell" - Dimension 2 - Cell "Full Constraint (Position and Orientation)" - Cell "Position only constraint" - PropName "TypeOptions" - } - Name "optOption" - Prompt "Optimization Option" - Value "Full Constraint (Position and Orientation)" - } - PropName "Parameters" - } - Array { - Type "Simulink.dialog.Group" - Dimension 2 - Object { - $ObjectID 164 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 165 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 166 - Prompt "Simulink:studio:ToolBarParametersMenu" - Object { - $PropName "DialogControls" - $ObjectID 167 - $ClassName "Simulink.dialog.TabContainer" - Object { - $PropName "DialogControls" - $ObjectID 168 - $ClassName "Simulink.dialog.Tab" - Prompt "Block parameters" - Array { - Type "Simulink.dialog.parameter.Control" - Dimension 3 - Object { - $ObjectID 169 - $ClassName "Simulink.dialog.parameter.Edit" - PromptLocation "left" - Name "solverName" - } - Object { - $ObjectID 170 - $ClassName "Simulink.dialog.parameter.Edit" - Name "dofs" - } - Object { - $ObjectID 171 - $ClassName "Simulink.dialog.parameter.Popup" - Name "optOption" - } - PropName "DialogControls" - } - Name "Container8" - } - Name "Container4" - } - Name "ParameterGroupVar" - } - PropName "DialogControls" - } - } - System { - Name "RemoteInverseKinematics" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "469" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "Desired frame pose" - SID "1762" - Position [10, 23, 40, 37] - ZOrder 26 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Current Joint configuration" - SID "1763" - Position [10, 68, 40, 82] - ZOrder 24 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType S-Function - Name "S-Function" - SID "1764" - Ports [2, 1] - Position [145, 6, 225, 99] - ZOrder 19 - FunctionName "WBToolbox" - Parameters "'RemoteInverseKinematics',solverName, dofs, optOption" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "Desired Joint Configuration" - SID "1765" - Position [285, 48, 315, 62] - ZOrder 27 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "Desired Joint Configuration" - DstPort 1 - } - Line { - ZOrder 2 - SrcBlock "Desired frame pose" - SrcPort 1 - DstBlock "S-Function" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "Current Joint configuration" - SrcPort 1 - DstBlock "S-Function" - DstPort 2 - } - } - } - } - } - } - } - Block { - BlockType SubSystem - Name "States" - SID "206" - Ports [] - Position [16, 17, 114, 114] - ZOrder -4 - ForegroundColor "white" - DropShadow on - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 172 - $ClassName "Simulink.Mask" - Display "image(imread('wholeBodyStates.png'),'center');" - } - System { - Name "States" - Location [2568, 323, 4549, 1448] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "600" - SimulinkSubDomain "Simulink" - Block { - BlockType SubSystem - Name "GetLimits" - SID "1690" - Ports [0, 2] - Position [345, 225, 460, 260] - ZOrder 68 - BackgroundColor "[0.513700, 0.851000, 0.670600]" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 173 - $ClassName "Simulink.Mask" - Type "GetLimits" - Description "This block provides the joint limits gathering data from either the Robot's Control Board or UR" - "DF model.\n\nOutput:\n - Max: 1xDoFs vector containing the maximum limit\n - Min: 1xDoFs vector containing the" - " maximum limit\n\nUnit of measurement:\n - Position: rad\n - Velocity: rad/sec" - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig" - "] = WBToolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n " - " clear WBTConfig;\ncatch\nend\n\n% GetLimits Initialization\n% =========================\n\nsourceLimit = get_p" - "aram(gcb,'limitsSource');\ntypeLimit = get_param(gcb,'limitsType');\nnotifyError = false;\n\nswitch sourceLimit\n" - " case 'ControlBoard'\n switch typeLimit\n case 'Position'\n limitsType = 'Con" - "trolBoardPosition';\n case 'Velocity'\n limitsType = 'ControlBoardVelocity';\n " - " otherwise\n notifyError = true;\n end\n case 'URDF'\n switch typeLimit\n " - " case 'Position'\n limitsType = 'ModelPosition';\n otherwise\n noti" - "fyError = true;\n end\nend\n\nif notifyError\n error('Limit Type not recognized');\nend\n\nclear source" - "Limit typeLimit notifyError" - SelfModifiable "on" - Display "fprintf('%s\\n(%s)',get_param(gcb,'limitsType'),get_param(gcb,'limitsSource'))\n\nport_label('outpu" - "t',1,'Min')\nport_label('output',2,'Max')" - RunInitForIconRedraw "off" - Array { - Type "Simulink.MaskParameter" - Dimension 2 - Object { - $ObjectID 174 - Type "popup" - Array { - Type "Cell" - Dimension 2 - Cell "ControlBoard" - Cell "URDF" - PropName "TypeOptions" - } - Name "limitsSource" - Prompt "Limits Source" - Value "ControlBoard" - Evaluate "off" - Callback "sourceLimit = get_param(gcb,'limitsSource');\nblockParameters = Simulink.Mask.get(gcb).Parameters;\nlimit" - "sTypeBlockParam = blockParameters(2);\n\nswitch sourceLimit\n case 'ControlBoard'\n limitsTypeBlockParam.T" - "ypeOptions = {'Position','Velocity'};\n %limitsTypeBlockParam.Value = limitsTypeBlockParam.TypeOptions{1};\n " - " case 'URDF'\n limitsTypeBlockParam.TypeOptions = {'Position'};\n %limitsTypeBlockParam.Value = limi" - "tsTypeBlockParam.TypeOptions{1};\n otherwise\n error('Limit Source not recognized');\nend\n\nclear sourceL" - "imit blockParameters limitsTypeBlockParam" - } - Object { - $ObjectID 175 - Type "popup" - Array { - Type "Cell" - Dimension 2 - Cell "Position" - Cell "Velocity" - PropName "TypeOptions" - } - Name "limitsType" - Prompt "Limits Type" - Value "Position" - Evaluate "off" - Callback "% Get the mask parameter values. This is a cell array of strings.\n% \nmaskStr = get_param(gcb,'limitsT" - "ype');\nif strcmp(maskStr, 'Position')\n set_param(gcb,'BackgroundColor', '[0.5137, 0.8510, 0.6706, 1.0]');\nelse" - "if strcmp(maskStr, 'Velocity')\n set_param(gcb,'BackgroundColor', '[0.5137, 0.6745, 1.0000, 1.0]');\nelseif strcm" - "p(maskStr, 'Acceleration')\n set_param(gcb,'BackgroundColor', '[0.9255, 0.8706, 0.1333, 1.0]');\nelseif strcmp(ma" - "skStr, 'Torque')\n set_param(gcb,'BackgroundColor', '[0.8275, 0.5765, 0.6039, 1.0]');\nend\nclear maskStr" - } - PropName "Parameters" - } - Array { - Type "Simulink.dialog.Group" - Dimension 3 - Object { - $ObjectID 176 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 177 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 178 - Prompt "Simulink:studio:ToolBarParametersMenu" - Array { - Type "Simulink.dialog.parameter.Popup" - Dimension 2 - Object { - $ObjectID 179 - Name "limitsSource" - } - Object { - $ObjectID 180 - Name "limitsType" - } - PropName "DialogControls" - } - Name "ParameterGroupVar" - } - Object { - $ObjectID 181 - Object { - $PropName "DialogControls" - $ObjectID 182 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(configBl" - "ock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system(confi" - "gBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block name: %s'" - ",gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "ToggleButtonContainer" - } - PropName "DialogControls" - } - } - System { - Name "GetLimits" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "966" - SIDHighWatermark "1773" - SimulinkSubDomain "Simulink" - Block { - BlockType S-Function - Name "S-Function" - SID "1690:1691" - Ports [0, 2] - Position [115, 33, 175, 102] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'GetLimits','WBToolbox',WBTConfigParameters,configBlockAbsName,limitsType" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "Min" - SID "1690:1692" - Position [220, 43, 250, 57] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Block { - BlockType Outport - Name "Max" - SID "1690:1693" - Position [220, 78, 250, 92] - ZOrder 26 - Port "2" - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "Min" - DstPort 1 - } - Line { - ZOrder 2 - SrcBlock "S-Function" - SrcPort 2 - DstBlock "Max" - DstPort 1 - } - } - } - Block { - BlockType SubSystem - Name "GetMeasurement" - SID "1671" - Ports [0, 1] - Position [290, 158, 385, 192] - ZOrder 53 - BackgroundColor "[0.513700, 0.851000, 0.670600]" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 183 - $ClassName "Simulink.Mask" - Type "GetMeasurement" - Description "This block gathers the measurement of the specified type.\n\nAssuming DoFs is the number of deg" - "rees of freedom of the robot,\n\nOutput:\n - References: Vector of size DoFs, representing the requested measure" - "ment.\n\nParameters:\n - Control Mode: The control mode. Choose one of the supplied mode.\n\nUnit of measurement" - ":\n - Position: rad\n - Velocity: rad/sec\n - Acceleration: rad/sec/sec\n - Torque: Nm\n" - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig" - "] = WBToolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n " - " clear WBTConfig;\ncatch\nend" - Display "port_label('output', 1, get_param(gcb,'measuredType'))" - RunInitForIconRedraw "off" - Object { - $PropName "Parameters" - $ObjectID 184 - $ClassName "Simulink.MaskParameter" - Type "popup" - Array { - Type "Cell" - Dimension 4 - Cell "Joints Position" - Cell "Joints Velocity" - Cell "Joints Acceleration" - Cell "Joints Torque" - PropName "TypeOptions" - } - Name "measuredType" - Prompt "Estimate Type" - Value "Joints Position" - Evaluate "off" - Callback "% Get the mask parameter values. This is a cell\n% array of strings.\n\nmaskStr = get_param(" - "gcb,'measuredType');\nif strcmp(maskStr, 'Joints Position')\n set_param(gcb,'BackgroundColor', '[0.5137, 0.8" - "510, 0.6706, 1.0]');\nelseif strcmp(maskStr, 'Joints Velocity')\n set_param(gcb,'BackgroundColor', '[0.5137," - " 0.6745, 1.0000, 1.0]');\nelseif strcmp(maskStr, 'Joints Acceleration')\n set_param(gcb,'BackgroundColor', '" - "[0.9255, 0.8706, 0.1333, 1.0]');\nelseif strcmp(maskStr, 'Joints Torque')\n set_param(gcb,'BackgroundColor'," - " '[0.8275, 0.5765, 0.6039, 1.0]');\nend\nclear maskStr" - } - Array { - Type "Simulink.dialog.Group" - Dimension 3 - Object { - $ObjectID 185 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 186 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 187 - Prompt "Simulink:studio:ToolBarParametersMenu" - Object { - $PropName "DialogControls" - $ObjectID 188 - $ClassName "Simulink.dialog.parameter.Popup" - Name "measuredType" - } - Name "ParameterGroupVar" - } - Object { - $ObjectID 189 - Object { - $PropName "DialogControls" - $ObjectID 190 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(configBl" - "ock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system(confi" - "gBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block name: %s'" - ",gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "Container8" - } - PropName "DialogControls" - } - } - System { - Name "GetMeasurement" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "1000" - SimulinkSubDomain "Simulink" - Block { - BlockType S-Function - Name "S-Function" - SID "1672" - Ports [0, 1] - Position [125, 39, 185, 71] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'GetMeasurement','WBToolbox',WBTConfigParameters,configBlockAbsName,measuredType" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "Estimate" - SID "1673" - Position [210, 48, 240, 62] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "Estimate" - DstPort 1 - } - } - } - Block { - BlockType SubSystem - Name "GetMotorMeasurement" - SID "1796" - Ports [0, 1] - Position [410, 158, 505, 192] - ZOrder 69 - BackgroundColor "[0.960000, 0.770000, 0.460000]" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 191 - $ClassName "Simulink.Mask" - Type "GetMeasurement" - Description "This block gathers the measurement of the specified type.\n\nAssuming DoFs is the number of deg" - "rees of freedom of the robot,\n\nOutput:\n - References: Vector of size DoFs, representing the requested measure" - "ment.\n\nParameters:\n - Control Mode: The control mode. Choose one of the supplied mode.\n\nUnit of measurement" - ":\n - PWM: duty cycle expressed as percentage [-100, 100]%\n - Current: values in Ampere\n" - Initialization "% WBBlock Initialization\n% ======================\n\ntry\n [configBlockAbsName, WBTConfig" - "] = WBToolbox.BlockInitialization(gcb, gcs);\n \n WBTConfigParameters = WBTConfig.getSimulinkParameters;\n " - " clear WBTConfig;\ncatch\nend" - Display "port_label('output', 1, get_param(gcb,'measuredType'))" - RunInitForIconRedraw "off" - Object { - $PropName "Parameters" - $ObjectID 192 - $ClassName "Simulink.MaskParameter" - Type "popup" - Array { - Type "Cell" - Dimension 7 - Cell "Motor Position" - Cell "Motor Velocity" - Cell "Motor Acceleration" - Cell "Motor PWM" - Cell "Motor Current" - Cell "Motor Back EMF" - Cell "Motor Torque Constant" - PropName "TypeOptions" - } - Name "measuredType" - Prompt "Estimate Type" - Value "Motor Current" - Evaluate "off" - Callback "maskStr = get_param(gcb,'measuredType');\n\nswitch maskStr\n case 'Motor Position'\n " - " set_param(gcb,'BackgroundColor', '[0.5137, 0.8510, 0.6706, 1.0]');\n case 'Motor Velocity'\n set_par" - "am(gcb,'BackgroundColor', '[0.5137, 0.6745, 1.0000, 1.0]');\n case 'Motor Acceleration'\n set_param(g" - "cb,'BackgroundColor', '[0.9255, 0.8706, 0.1333, 1.0]');\n case 'Motor PWM'\n set_param(gcb,'Backgroun" - "dColor', '[1, 1, 1, 1.0]');\n case 'Motor Current'\n set_param(gcb,'BackgroundColor', '[0.96, 0.77, 0" - ".46, 1.0]');\n case 'Motor Back EMF'\n set_param(gcb,'BackgroundColor', '[0.8, 0.4, 1.0, 1.0]');\n " - " case 'Motor Torque Constant'\n set_param(gcb,'BackgroundColor', '[0.8, 1.0, 0.4, 1.0]');\n otherwise" - "\n error('Control Type not recognized.')\nend\n\nclear maskStr" - } - Array { - Type "Simulink.dialog.Group" - Dimension 3 - Object { - $ObjectID 193 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 194 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 195 - Prompt "Simulink:studio:ToolBarParametersMenu" - Object { - $PropName "DialogControls" - $ObjectID 196 - $ClassName "Simulink.dialog.parameter.Popup" - Name "measuredType" - } - Name "ParameterGroupVar" - } - Object { - $ObjectID 197 - Object { - $PropName "DialogControls" - $ObjectID 198 - $ClassName "Simulink.dialog.Button" - Prompt "Toggle Config Block Highlighting" - Callback "[configBlock, ~] = WBToolbox.BlockInitialization(gcb, gcs);\n\ntry\n if (strcmp(get_param(configBl" - "ock,'HiliteAncestors'),'none'))\n hilite_system(configBlock,'find');\n else\n hilite_system(confi" - "gBlock,'none');\n end\ncatch\n error('[%s:ShowConfigBlock:Callback] Failed to process config block name: %s'" - ",gcb,configBlock);\nend\n\nclear configBlock" - Name "toggleHighlighting" - } - Name "Container8" - } - PropName "DialogControls" - } - } - System { - Name "GetMotorMeasurement" - Location [0, 27, 1920, 1080] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "1000" - SimulinkSubDomain "Simulink" - Block { - BlockType S-Function - Name "S-Function" - SID "1797" - Ports [0, 1] - Position [125, 39, 185, 71] - ZOrder 19 - FunctionName "BlockFactory" - Parameters "'GetMeasurement','WBToolbox',WBTConfigParameters,configBlockAbsName,measuredType" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - } - Block { - BlockType Outport - Name "Estimate" - SID "1798" - Position [210, 48, 240, 62] - ZOrder 25 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S-Function" - SrcPort 1 - DstBlock "Estimate" - DstPort 1 - } - } - } - } - } - Block { - BlockType SubSystem - Name "Utilities" - SID "192" - Ports [] - Position [364, 17, 462, 114] - ZOrder -1 - ForegroundColor "white" - DropShadow on - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 199 - $ClassName "Simulink.Mask" - Display "image(imread('utilities.png'))" - } - System { - Name "Utilities" - Location [2568, 323, 4549, 1448] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "175" - SimulinkSubDomain "Simulink" - Block { - BlockType SubSystem - Name "Configuration" - SID "1774" - Ports [] - Position [295, 310, 370, 340] - ZOrder 95 - InitFcn "source = get_param(gcb,'ConfigSource');\n\nif strcmp(source, 'Workspace')\n object = get_param(gcb,'" - "ConfigObject');\n WBToolbox.ConfigurationToMask(gcb, object);\nend\n\nWBToolbox.MaskToConfiguration(gcb);\n\ncle" - "ar object source" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 200 - $ClassName "Simulink.Mask" - SelfModifiable "on" - Display "disp('Config')" - RunInitForIconRedraw "off" - Array { - Type "Simulink.MaskParameter" - Dimension 8 - Object { - $ObjectID 201 - Type "popup" - Array { - Type "Cell" - Dimension 2 - Cell "Workspace" - Cell "Mask" - PropName "TypeOptions" - } - Name "ConfigSource" - Prompt "Configuration from" - Value "Mask" - Callback "% Get the Workspace/Mask menu\nh = Simulink.Mask.get(gcb);\ncurrentConfigSource = get_param(gcb,'ConfigSo" - "urce');\n\nif strcmp(currentConfigSource,'Workspace')\n % Switch the visibility of the GUI elements\n set_para" - "m(gcb,'MaskVisibilities',{'on';'on';'on';'on';'on';'on';'on';'on';});\n h.Parameters(3).ReadOnly = 'on';\n h.P" - "arameters(4).ReadOnly = 'on';\n h.Parameters(5).ReadOnly = 'on';\n h.Parameters(6).ReadOnly = 'on';\n h.Par" - "ameters(7).ReadOnly = 'on';\n h.Parameters(8).ReadOnly = 'on';\n \n % Parse the object inserted in the Conf" - "igObject field\n currentConfigObject = get_param(gcb,'ConfigObject');\n WBToolbox.ConfigurationToMask(gcb,curr" - "entConfigObject);\n clear currentConfigObject;\nelseif strcmp(currentConfigSource,'Mask')\n % Switch the visib" - "ility of the GUI elements\n set_param(gcb,'MaskVisibilities',{'on';'off';'on';'on';'on';'on';'on';'on';});\n h" - ".Parameters(3).ReadOnly = 'off';\n h.Parameters(4).ReadOnly = 'off';\n h.Parameters(5).ReadOnly = 'off';\n " - "h.Parameters(6).ReadOnly = 'off';\n h.Parameters(7).ReadOnly = 'off';\n h.Parameters(8).ReadOnly = 'off';\n " - " h.Parameters(3).Enabled = 'on';\n h.Parameters(4).Enabled = 'on';\n h.Parameters(5).Enabled = 'on';\n h.Pa" - "rameters(6).Enabled = 'on';\n h.Parameters(7).Enabled = 'on';\n h.Parameters(8).Enabled = 'on';\nend\n\nclear " - "h currentConfigSource" - } - Object { - $ObjectID 202 - Type "edit" - Name "ConfigObject" - Prompt "Name of the object" - Value "'WBTConfigRobot'" - Tunable "off" - Visible "off" - Callback "% This code get called whatsoever\nif strcmp(char(get_param(gcb,'ConfigSource')),'Mask')\n return\nend" - "\n\n% Parse the object inserted in the ConfigObject field\ncurrentConfigObject = get_param(gcb,'ConfigObject');\nWBT" - "oolbox.ConfigurationToMask(gcb,currentConfigObject);\n\nclear currentConfigObject;" - } - Object { - $ObjectID 203 - Type "edit" - Name "RobotName" - Prompt "Robot Name" - Value "'icubSim'" - } - Object { - $ObjectID 204 - Type "edit" - Name "UrdfFile" - Prompt "Urdf File" - Value "'model.urdf'" - } - Object { - $ObjectID 205 - Type "edit" - Name "ControlledJoints" - Prompt "Controlled Joints" - Value "{'l_elbow','l_shoulder_pitch','torso_roll'}" - } - Object { - $ObjectID 206 - Type "edit" - Name "ControlBoardsNames" - Prompt "Control Boards Names" - Value "{'left_arm','right_arm','torso'}" - } - Object { - $ObjectID 207 - Type "edit" - Name "LocalName" - Prompt "Local Name" - Value "'WBT'" - } - Object { - $ObjectID 208 - Type "edit" - Name "GravityVector" - Prompt "Gravity Vector" - Value "[0,0,-9.81]" - } - PropName "Parameters" - } - Array { - Type "Simulink.dialog.Group" - Dimension 2 - Object { - $ObjectID 209 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 210 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 211 - Prompt "Simulink:studio:ToolBarParametersMenu" - Object { - $PropName "DialogControls" - $ObjectID 212 - $ClassName "Simulink.dialog.TabContainer" - Array { - Type "Simulink.dialog.Tab" - Dimension 2 - Object { - $ObjectID 213 - Prompt "From" - Array { - Type "Simulink.dialog.parameter.Control" - Dimension 2 - Object { - $ObjectID 214 - $ClassName "Simulink.dialog.parameter.Popup" - Name "ConfigSource" - } - Object { - $ObjectID 215 - $ClassName "Simulink.dialog.parameter.Edit" - PromptLocation "left" - Name "ConfigObject" - } - PropName "DialogControls" - } - Name "TabFrom" - } - Object { - $ObjectID 216 - Prompt "Data" - Array { - Type "Simulink.dialog.parameter.Edit" - Dimension 6 - Object { - $ObjectID 217 - PromptLocation "left" - Name "RobotName" - } - Object { - $ObjectID 218 - PromptLocation "left" - Name "UrdfFile" - } - Object { - $ObjectID 219 - PromptLocation "left" - Name "ControlledJoints" - } - Object { - $ObjectID 220 - PromptLocation "left" - Name "ControlBoardsNames" - } - Object { - $ObjectID 221 - PromptLocation "left" - Name "LocalName" - } - Object { - $ObjectID 222 - PromptLocation "left" - Name "GravityVector" - } - PropName "DialogControls" - } - Name "TabData" - } - PropName "DialogControls" - } - Name "TabContainer" - } - Name "ParameterGroupVar" - } - PropName "DialogControls" - } - } - System { - Name "Configuration" - Location [550, 86, 1677, 725] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "600" - SIDHighWatermark "70" - SimulinkSubDomain "Simulink" - Block { - BlockType Constant - Name "ImConfig" - SID "1774:67" - Position [20, 20, 50, 50] - ZOrder 81 - Value "0" - } - Block { - BlockType Terminator - Name "Terminator" - SID "1774:68" - Position [95, 25, 115, 45] - ZOrder 80 - } - Line { - ZOrder 1 - SrcBlock "ImConfig" - SrcPort 1 - DstBlock "Terminator" - DstPort 1 - } - } - } - Block { - BlockType SubSystem - Name "DampPinv" - SID "104" - Ports [2, 1] - Position [495, 198, 565, 242] - ZOrder -1 - BackgroundColor "[0.848000, 0.128048, 0.320035]" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 223 - $ClassName "Simulink.Mask" - RunInitForIconRedraw "off" - Object { - $PropName "Parameters" - $ObjectID 224 - $ClassName "Simulink.MaskParameter" - Type "edit" - Name "tol" - Prompt "Tolerance" - Value "1e-4" - } - } - System { - Name "DampPinv" - Location [0, 29, 1280, 744] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "100" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "mat" - SID "105" - Position [50, 53, 80, 67] - ZOrder -1 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "sigma" - SID "106" - Position [50, 93, 80, 107] - ZOrder -2 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType SubSystem - Name "Damped Pseudo Inverse" - SID "107" - Ports [2, 1] - Position [105, 39, 200, 121] - ZOrder -4 - LibraryVersion "1.32" - ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ExplicitOnly" - TreatAsAtomicUnit on - RequestExecContextInheritance off - SFBlockType "MATLAB Function" - System { - Name "Damped Pseudo Inverse" - Location [12, 45, 1279, 3773] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "100" - SIDHighWatermark "1631" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "mat" - SID "107::1" - Position [20, 101, 40, 119] - ZOrder -1 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "sigma" - SID "107::25" - Position [20, 136, 40, 154] - ZOrder 11 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType Demux - Name " Demux " - SID "107::1630" - Ports [1, 1] - Position [270, 230, 320, 270] - ZOrder 110 - Outputs "1" - } - Block { - BlockType S-Function - Name " SFunction " - SID "107::1629" - Tag "Stateflow S-Function 6" - Ports [2, 2] - Position [180, 100, 230, 160] - ZOrder 109 - FunctionName "sf_sfun" - PortCounts "[2 2]" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Port { - PortNumber 2 - Name "DPinv" - } - } - Block { - BlockType Terminator - Name " Terminator " - SID "107::1631" - Position [460, 241, 480, 259] - ZOrder 111 - } - Block { - BlockType Outport - Name "DPinv" - SID "107::5" - Position [460, 101, 480, 119] - ZOrder -6 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 81 - SrcBlock "mat" - SrcPort 1 - Points [120, 0] - DstBlock " SFunction " - DstPort 1 - } - Line { - ZOrder 82 - SrcBlock "sigma" - SrcPort 1 - DstBlock " SFunction " - DstPort 2 - } - Line { - Name "DPinv" - ZOrder 83 - Labels [0, 0] - SrcBlock " SFunction " - SrcPort 2 - DstBlock "DPinv" - DstPort 1 - } - Line { - ZOrder 84 - SrcBlock " Demux " - SrcPort 1 - DstBlock " Terminator " - DstPort 1 - } - Line { - ZOrder 85 - SrcBlock " SFunction " - SrcPort 1 - DstBlock " Demux " - DstPort 1 - } - } - } - Block { - BlockType Outport - Name "DPinv" - SID "108" - Position [225, 73, 255, 87] - ZOrder -5 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "sigma" - SrcPort 1 - DstBlock "Damped Pseudo Inverse" - DstPort 2 - } - Line { - ZOrder 2 - SrcBlock "Damped Pseudo Inverse" - SrcPort 1 - DstBlock "DPinv" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "mat" - SrcPort 1 - DstBlock "Damped Pseudo Inverse" - DstPort 1 - } - } - } - Block { - BlockType S-Function - Name "DiscreteFilter" - SID "1790" - Ports [1, 1] - Position [165, 310, 235, 340] - ZOrder 103 - BackgroundColor "yellow" - FunctionName "BlockFactory" - Parameters "'DiscreteFilter','WBToolbox',filterDataStruct" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Object { - $PropName "MaskObject" - $ObjectID 225 - $ClassName "Simulink.Mask" - Type "DiscreteFilter" - Description "This block wraps the Filter, FirstOrderLowPassFilter, and MedianFilter from iCub::ctrl." - Initialization "filterDataStruct = struct;\nfilterDataStruct.Fc = Fc;\nfilterDataStruct.Ts = Ts;\nfilterDataS" - "truct.MedianOrder = orderMedianFilter;\nfilterDataStruct.FilterType = filterType;\nfilterDataStruct.NumCoeffs = n" - "umCoeffs;\nfilterDataStruct.DenCoeffs = denCoeffs;\nfilterDataStruct.y0 = y0;\nfilterDataStruct.u0 = u0;\nfilterD" - "ataStruct.InitStatus = uint8(initStatus);" - Display "disp('Filter')" - RunInitForIconRedraw "off" - Array { - Type "Simulink.MaskParameter" - Dimension 9 - Object { - $ObjectID 226 - Type "popup" - Array { - Type "Cell" - Dimension 3 - Cell "Generic" - Cell "FirstOrderLowPassFilter" - Cell "MedianFilter" - PropName "TypeOptions" - } - Name "filterType" - Prompt "Type of the filter" - Value "Generic" - Evaluate "off" - Callback "% From: https://it.mathworks.com/help/simulink/slref/simulink.mask-class.html\nfilterType = get_param(gcb" - ", 'filterType');\ninitStatus = get_param(gcb, 'initStatus');\np = Simulink.Mask.get(gcbh);\nhowToCoeffs = p.getDialo" - "gControl('howToCoeffs');\n\n%set_param(gcb, 'initStatus','off');\nif (strcmp(initStatus,'on'))\n vis_init = 'on';" - "\nelse\n vis_init = 'off';\nend\n\nif(strcmp(filterType, 'Generic'))\n set_param(gcb, 'MaskVisibilities',{'on'" - ",'on','on','off','off','off','on',vis_init,vis_init});\n howToCoeffs.Visible = 'on';\nelseif(strcmp(filterType, '" - "FirstOrderLowPassFilter'))\n set_param(gcb, 'MaskVisibilities',{'on','off','off','on','on','off','on',vis_init,'o" - "ff'});\n howToCoeffs.Visible = 'off';\nelseif(strcmp(filterType, 'MedianFilter'))\n set_param(gcb, 'MaskVisibi" - "lities',{'on','off','off','off','off','on','on',vis_init,'off'});\n howToCoeffs.Visible = 'off';\nend\n\nclear fi" - "lterType initStatus p howToCoeffs vis_init;" - } - Object { - $ObjectID 227 - Type "edit" - Name "numCoeffs" - Prompt "Numerator Coefficients*" - Value "[0]" - } - Object { - $ObjectID 228 - Type "edit" - Name "denCoeffs" - Prompt "Denominator Coefficients*" - Value "[0]" - } - Object { - $ObjectID 229 - Type "edit" - Name "Fc" - Prompt "Cut Frequency (Hz)" - Value "0" - Visible "off" - } - Object { - $ObjectID 230 - Type "edit" - Name "Ts" - Prompt "Sampling time (s)" - Value "0" - Visible "off" - } - Object { - $ObjectID 231 - Type "edit" - Name "orderMedianFilter" - Prompt "Order" - Value "0" - Visible "off" - } - Object { - $ObjectID 232 - Type "checkbox" - Name "initStatus" - Prompt "Define initial conditions" - Value "off" - Callback "initStatus = get_param(gcb, 'initStatus');\nvisibilities = get_param(gcb, 'MaskVisibilities');\nfilterT" - "ype = get_param(gcb, 'filterType');\n\nif (strcmp(initStatus,'off'))\n visibilities{8} = 'off';\n visibiliti" - "es{9} = 'off';\nelseif (strcmp(initStatus,'on'))\n visibilities{8} = 'on';\n if (strcmp(filterType,'Generic'))" - "\n visibilities{9} = 'on';\n end\nend\n\nset_param(gcb, 'MaskVisibilities', visibilities);\n\nclear initSt" - "atus visibilities filterType;" - } - Object { - $ObjectID 233 - Type "edit" - Name "y0" - Prompt "Output y0" - Value "[0]" - Visible "off" - } - Object { - $ObjectID 234 - Type "edit" - Name "u0" - Prompt "Input u0" - Value "[0]" - Visible "off" - } - PropName "Parameters" - } - Array { - Type "Simulink.dialog.Group" - Dimension 2 - Object { - $ObjectID 235 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 236 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 237 - Prompt "Simulink:studio:ToolBarParametersMenu" - Array { - Type "Simulink.dialog.Control" - Dimension 8 - Object { - $ObjectID 238 - $ClassName "Simulink.dialog.parameter.Popup" - Name "filterType" - } - Object { - $ObjectID 239 - $ClassName "Simulink.dialog.parameter.Edit" - Name "numCoeffs" - } - Object { - $ObjectID 240 - $ClassName "Simulink.dialog.parameter.Edit" - Name "denCoeffs" - } - Object { - $ObjectID 241 - $ClassName "Simulink.dialog.Text" - Prompt "* The coefficients are ordered in increasing power of z^-1" - Name "howToCoeffs" - } - Object { - $ObjectID 242 - $ClassName "Simulink.dialog.parameter.Edit" - PromptLocation "left" - Name "Fc" - } - Object { - $ObjectID 243 - $ClassName "Simulink.dialog.parameter.Edit" - PromptLocation "left" - Name "Ts" - } - Object { - $ObjectID 244 - $ClassName "Simulink.dialog.parameter.Edit" - PromptLocation "left" - Name "orderMedianFilter" - } - Object { - $ObjectID 245 - $ClassName "Simulink.dialog.Group" - Array { - Type "Simulink.dialog.parameter.Control" - Dimension 3 - Object { - $ObjectID 246 - $ClassName "Simulink.dialog.parameter.CheckBox" - Name "initStatus" - } - Object { - $ObjectID 247 - $ClassName "Simulink.dialog.parameter.Edit" - Name "y0" - } - Object { - $ObjectID 248 - $ClassName "Simulink.dialog.parameter.Edit" - Name "u0" - } - PropName "DialogControls" - } - Name "Container3" - } - PropName "DialogControls" - } - Name "ParameterGroupVar" - } - PropName "DialogControls" - } - } - } - Block { - BlockType SubSystem - Name "MatchSignalSizes" - SID "1818" - Ports [2, 1] - Position [440, 297, 525, 353] - ZOrder 251 - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 249 - $ClassName "Simulink.Mask" - Type "MatchSignalSizes" - Description "It can happen on particular cases that the Simulink engine cannot propagate the right sizes fro" - "m blocks of the toolbox. If you encounter such problems you can try using this blocks which introducing a minimal" - " overhead assigns to input Signal the same size of input Reference and outputs Signal.\n\nCurrently it supports o" - "nly 1D vectors." - Display "port_label('input', 1, 'Reference')\nport_label('input', 2, 'Signal')\nport_label('output', 1, 'Sig" - "nal')" - RunInitForIconRedraw "off" - } - System { - Name "MatchSignalSizes" - Location [548, 183, 3416, 1872] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "1000" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "Reference" - SID "1819" - Position [315, 178, 345, 192] - ZOrder 240 - NamePlacement "alternate" - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "Signal" - SID "1820" - Position [315, 198, 345, 212] - ZOrder 241 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType DotProduct - Name "Dot Product" - SID "1836" - Position [410, 177, 445, 213] - ZOrder 252 - OutDataTypeStr "Inherit: Inherit via internal rule" - } - Block { - BlockType Terminator - Name "Terminator" - SID "1822" - Position [485, 185, 505, 205] - ZOrder 245 - } - Block { - BlockType Outport - Name "Output" - SID "1823" - Position [410, 243, 440, 257] - ZOrder 244 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 27 - SrcBlock "Dot Product" - SrcPort 1 - DstBlock "Terminator" - DstPort 1 - } - Line { - ZOrder 2 - SrcBlock "Signal" - SrcPort 1 - Points [17, 0] - Branch { - ZOrder 28 - Points [0, 45] - DstBlock "Output" - DstPort 1 - } - Branch { - ZOrder 26 - DstBlock "Dot Product" - DstPort 2 - } - } - Line { - ZOrder 24 - SrcBlock "Reference" - SrcPort 1 - DstBlock "Dot Product" - DstPort 1 - } - } - } - Block { - BlockType S-Function - Name "MinimumJerkTrajectoryGenerator" - SID "1747" - Ports [1, 3] - Position [470, 93, 625, 147] - ZOrder 78 - FunctionName "BlockFactory" - Parameters "'MinimumJerkTrajectoryGenerator','WBToolbox',sampleTime,settlingTime,firstDerivatives,secondDerivati" - "ves,explicitInitialValue,externalSettlingTime,resetOnSettlingTime" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Object { - $PropName "MaskObject" - $ObjectID 250 - $ClassName "Simulink.Mask" - Type "MinimumJerkTrajectoryGenerator" - Description "This block wraps the minJerkTrajGen class from iCub::ctrl::minJerkTrajGen.\n\nThe Minimum Jerk " - "Trajectory Generator is approximated using a 3rd order LTI dynamical system (for more details see [1]).\n\nPositi" - "on, velocity and acceleration trajectories are computed.\n\nThe main advantage with respect to the standard polyn" - "omial form is that if the reference value yd changes there is no need to recompute the filter coefficients.\n\n[1" - "]\nPattacini, U.; Nori, F.; Natale, L.; Metta, G.; Sandini, G.\n\"An experimental evaluation of a novel minimum-j" - "erk cartesian controller for humanoid robots\"\nIntelligent Robots and Systems (IROS), 2010\nIEEE/RSJ Internation" - "al Conference on , vol., no., pp.1668-1674, 18-22 Oct. 2010\ndoi: 10.1109/IROS.2010.5650851\nURL: http://ieeexplo" - "re.ieee.org/stamp/stamp.jsp?tp=&arnumber=5650851&isnumber=5648787" - Display "firstDer = get_param(gcb, 'firstDerivatives');\nsecondDer = get_param(gcb, 'secondDerivatives');\ni" - "nitialValues = get_param(gcb, 'explicitInitialValue');\nexternalSettlingTimeParam = get_param(gcb, 'externalSettl" - "ingTime');\n\n%Inputs\nportIndex = 2;\nport_label('input', 1, 'Reference')\nif(strcmp(initialValues, 'on'))\n " - "port_label('input', portIndex, 'Initial Value')\n portIndex = portIndex + 1;\nend\n\nif(strcmp(externalSettlin" - "gTimeParam, 'on'))\n port_label('input', portIndex, 'Settling Time')\n portIndex = portIndex + 1;\nend\n\n%" - "Outputs\nport_label('output', 1, 'Signal')\nsecondDerPortIndex = 2;\nif(strcmp(firstDer, 'on'))\n port_label('" - "output', 2, 'First Derivative')\n secondDerPortIndex = secondDerPortIndex + 1;\nend\nif(strcmp(secondDer, 'on'" - "))\n port_label('output', secondDerPortIndex, 'Second Derivative')\nend\n\n\n" - RunInitForIconRedraw "on" - Array { - Type "Simulink.MaskParameter" - Dimension 7 - Object { - $ObjectID 251 - Type "checkbox" - Name "externalSettlingTime" - Prompt "External Settling Time" - Value "off" - Callback "externalSettlingTime = get_param(gcb, 'externalSettlingTime');\nvisibility = get_param(gcb, 'MaskVisibili" - "ties');\nif(strcmp(externalSettlingTime, 'on'))\n visibility{2} = 'off';\n visibility{4} = 'on';\nelse\n vi" - "sibility{2} = 'on';\n visibility{4} = 'off';\nend\nset_param(gcb, 'MaskVisibilities',visibility);\nclear external" - "SettlingTime" - } - Object { - $ObjectID 252 - Type "edit" - Name "settlingTime" - Prompt "Settling Time" - Value "3" - } - Object { - $ObjectID 253 - Type "edit" - Name "sampleTime" - Prompt "Sample Time" - Value "0.01" - } - Object { - $ObjectID 254 - Type "checkbox" - Name "resetOnSettlingTime" - Prompt "Reset on Settling Time Changes" - Value "off" - Visible "off" - } - Object { - $ObjectID 255 - Type "checkbox" - Name "firstDerivatives" - Prompt "Output First Derivative" - Value "on" - } - Object { - $ObjectID 256 - Type "checkbox" - Name "secondDerivatives" - Prompt "Output Second Derivative" - Value "on" - } - Object { - $ObjectID 257 - Type "checkbox" - Name "explicitInitialValue" - Prompt "Explicit Initial Value" - Value "off" - Visible "off" - } - PropName "Parameters" - } - Array { - Type "Simulink.dialog.Group" - Dimension 2 - Object { - $ObjectID 258 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 259 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 260 - Prompt "Simulink:studio:ToolBarParametersMenu" - Object { - $PropName "DialogControls" - $ObjectID 261 - $ClassName "Simulink.dialog.TabContainer" - Array { - Type "Simulink.dialog.Tab" - Dimension 2 - Object { - $ObjectID 262 - Prompt "Trajectory Parameters" - Array { - Type "Simulink.dialog.parameter.Control" - Dimension 4 - Object { - $ObjectID 263 - $ClassName "Simulink.dialog.parameter.CheckBox" - Name "externalSettlingTime" - } - Object { - $ObjectID 264 - $ClassName "Simulink.dialog.parameter.Edit" - Name "settlingTime" - } - Object { - $ObjectID 265 - $ClassName "Simulink.dialog.parameter.Edit" - Name "sampleTime" - } - Object { - $ObjectID 266 - $ClassName "Simulink.dialog.parameter.CheckBox" - Name "resetOnSettlingTime" - } - PropName "DialogControls" - } - Name "Tab1" - } - Object { - $ObjectID 267 - Prompt "Input/Output" - Array { - Type "Simulink.dialog.parameter.CheckBox" - Dimension 3 - Object { - $ObjectID 268 - Name "firstDerivatives" - } - Object { - $ObjectID 269 - Name "secondDerivatives" - } - Object { - $ObjectID 270 - Name "explicitInitialValue" - } - PropName "DialogControls" - } - Name "Tab2" - } - PropName "DialogControls" - } - Name "Container3" - } - Name "ParameterGroupVar" - } - PropName "DialogControls" - } - } - } - Block { - BlockType S-Function - Name "QP" - SID "1807" - Ports [4, 2] - Position [405, -6, 595, 66] - ZOrder 104 - FunctionName "BlockFactory" - Parameters "'QpOases','WBToolbox',lbA,ubA,lb,ub,computeObjVal,stopIfFails" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Object { - $PropName "MaskObject" - $ObjectID 271 - $ClassName "Simulink.Mask" - Type "QP" - Description "This block solves a QP problem using the qpOASES library:\n\nx = argmin 0.5 * x' * H * x + c' *" - " x\n\ns.t.\n\nlbA <= Ax <= ubA\nlb <= x <= ub \n" - Display "disp('QP')\n\nport_label('output', 1, 'PrimalSolution')\nport_label('output', 2, 'Status')\n\nif (c" - "omputeObjVal)\n port_label('output', 3, 'Obj func value')\nend\n\nport_label('input', 1, 'H');\nport_label('in" - "put', 2, 'g');\n\ninputPortNumber = 2;\n\nif (lbA || ubA)\n inputPortNumber = 3;\n port_label('input', 3, '" - "A');\nend\n\nif (lbA)\n inputPortNumber = inputPortNumber + 1;\n port_label('input', inputPortNumber, 'lbA'" - ");\nend\nif (ubA)\n inputPortNumber = inputPortNumber + 1;\n port_label('input', inputPortNumber, 'ubA');\n" - "end\nif (lb)\n inputPortNumber = inputPortNumber + 1;\n port_label('input', inputPortNumber, 'lb');\nend\ni" - "f (ub)\n inputPortNumber = inputPortNumber + 1;\n port_label('input', inputPortNumber, 'ub');\nend" - RunInitForIconRedraw "on" - Array { - Type "Simulink.MaskParameter" - Dimension 6 - Object { - $ObjectID 272 - Type "checkbox" - Name "lbA" - Prompt "Accept constraints lower bound input (lbA)" - Value "off" - } - Object { - $ObjectID 273 - Type "checkbox" - Name "ubA" - Prompt "Accept constraints upper bound input (ubA)" - Value "on" - } - Object { - $ObjectID 274 - Type "checkbox" - Name "lb" - Prompt "Accept lower bound input (lb)" - Value "off" - } - Object { - $ObjectID 275 - Type "checkbox" - Name "ub" - Prompt "Accept upper bound input (ub)" - Value "off" - } - Object { - $ObjectID 276 - Type "checkbox" - Name "computeObjVal" - Prompt "Output the value of the objective function" - Value "off" - } - Object { - $ObjectID 277 - Type "checkbox" - Name "stopIfFails" - Prompt "Stop the simulation if the solver fails" - Value "off" - } - PropName "Parameters" - } - Array { - Type "Simulink.dialog.Group" - Dimension 2 - Object { - $ObjectID 278 - Prompt "%" - Object { - $PropName "DialogControls" - $ObjectID 279 - $ClassName "Simulink.dialog.Text" - Prompt "%" - Name "DescTextVar" - } - Name "DescGroupVar" - } - Object { - $ObjectID 280 - Prompt "Simulink:studio:ToolBarParametersMenu" - Array { - Type "Simulink.dialog.Group" - Dimension 3 - Object { - $ObjectID 281 - Prompt "Constraints bounds" - Array { - Type "Simulink.dialog.parameter.CheckBox" - Dimension 2 - Object { - $ObjectID 282 - Name "lbA" - } - Object { - $ObjectID 283 - Name "ubA" - } - PropName "DialogControls" - } - Name "constraintsBoundsBox" - } - Object { - $ObjectID 284 - Prompt "Simple bounds" - Array { - Type "Simulink.dialog.parameter.CheckBox" - Dimension 2 - Object { - $ObjectID 285 - Name "lb" - } - Object { - $ObjectID 286 - Name "ub" - } - PropName "DialogControls" - } - Name "simpleBoundsBox" - } - Object { - $ObjectID 287 - Prompt "Other" - Array { - Type "Simulink.dialog.parameter.CheckBox" - Dimension 2 - Object { - $ObjectID 288 - Name "computeObjVal" - } - Object { - $ObjectID 289 - Name "stopIfFails" - } - PropName "DialogControls" - } - Name "otherBox" - } - PropName "DialogControls" - } - Name "ParameterGroupVar" - } - PropName "DialogControls" - } - } - } - Block { - BlockType S-Function - Name "Real Time Synchronizer" - SID "1657" - Ports [] - Position [70, 4, 195, 41] - ZOrder 23 - ForegroundColor "[0.917647, 0.917647, 0.917647]" - BackgroundColor "gray" - ShowName off - FunctionName "BlockFactory" - Parameters "'RealTimeSynchronizer','WBToolbox',period" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Object { - $PropName "MaskObject" - $ObjectID 290 - $ClassName "Simulink.Mask" - Type "Real Time Synchronizer" - Description "This block slows down the simulation trying to match the period specified \nas parameter (in se" - "conds).\nThe bigger the period the more probable \nis that Simulink can remain synched with it.\n" - Display "disp('Real Time Synchronizer')" - RunInitForIconRedraw "off" - Object { - $PropName "Parameters" - $ObjectID 291 - $ClassName "Simulink.MaskParameter" - Type "edit" - Name "period" - Prompt "Controller Period (in seconds)" - Value "0.01" - } - } - } - Block { - BlockType S-Function - Name "Simulator Synchronizer" - SID "1658" - Ports [] - Position [230, 4, 360, 41] - ZOrder 24 - ForegroundColor "[0.490196, 0.000000, 0.000000]" - ShowName off - FunctionName "BlockFactory" - Parameters "'SimulatorSynchronizer','WBToolbox',period, serverPortName, clientPortName" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Object { - $PropName "MaskObject" - $ObjectID 292 - $ClassName "Simulink.Mask" - Type "Simulator Synchronizer" - Description "This block synchronizes with the external simulation on a simulator \n(only Gazebo is supported" - " at the moment).\n\n" - Display "disp('Simulator Synchronizer')" - RunInitForIconRedraw "off" - Array { - Type "Simulink.MaskParameter" - Dimension 3 - Object { - $ObjectID 293 - Type "edit" - Name "period" - Prompt "Controller Period (in seconds)" - Value "0.01" - } - Object { - $ObjectID 294 - Type "edit" - Name "serverPortName" - Prompt "Server Port Name" - Value "'/clock/rpc'" - } - Object { - $ObjectID 295 - Type "edit" - Name "clientPortName" - Prompt "Client Port Name" - Value "'/WBT_synchronizer/rpc:o'" - } - PropName "Parameters" - } - } - } - Block { - BlockType SubSystem - Name "TruncPinv" - SID "109" - Ports [2, 1] - Position [375, 198, 445, 242] - ZOrder -3 - BackgroundColor "[0.534601, 0.470279, 1.000000]" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 296 - $ClassName "Simulink.Mask" - RunInitForIconRedraw "off" - Object { - $PropName "Parameters" - $ObjectID 297 - $ClassName "Simulink.MaskParameter" - Type "edit" - Name "tol" - Prompt "Tolerance" - Value "1e-4" - } - } - System { - Name "TruncPinv" - Location [0, 29, 1280, 744] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "100" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "S" - SID "110" - Position [50, 53, 80, 67] - ZOrder -1 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "tol" - SID "111" - Position [50, 93, 80, 107] - ZOrder -2 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType SubSystem - Name "Truncated PseudoInverse" - SID "112" - Ports [2, 1] - Position [105, 39, 200, 121] - ZOrder -4 - LibraryVersion "1.32" - ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ExplicitOnly" - TreatAsAtomicUnit on - RequestExecContextInheritance off - SFBlockType "MATLAB Function" - System { - Name "Truncated PseudoInverse" - Location [12, 45, 1279, 3773] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "100" - SIDHighWatermark "1622" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "mat" - SID "112::1" - Position [20, 101, 40, 119] - ZOrder -1 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "tol" - SID "112::25" - Position [20, 136, 40, 154] - ZOrder 11 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType Demux - Name " Demux " - SID "112::1621" - Ports [1, 1] - Position [270, 230, 320, 270] - ZOrder 110 - Outputs "1" - } - Block { - BlockType S-Function - Name " SFunction " - SID "112::1620" - Tag "Stateflow S-Function 7" - Ports [2, 2] - Position [180, 100, 230, 160] - ZOrder 109 - FunctionName "sf_sfun" - PortCounts "[2 2]" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Port { - PortNumber 2 - Name "TPinv" - } - } - Block { - BlockType Terminator - Name " Terminator " - SID "112::1622" - Position [460, 241, 480, 259] - ZOrder 111 - } - Block { - BlockType Outport - Name "TPinv" - SID "112::5" - Position [460, 101, 480, 119] - ZOrder -6 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 81 - SrcBlock "mat" - SrcPort 1 - Points [120, 0] - DstBlock " SFunction " - DstPort 1 - } - Line { - ZOrder 82 - SrcBlock "tol" - SrcPort 1 - DstBlock " SFunction " - DstPort 2 - } - Line { - Name "TPinv" - ZOrder 83 - Labels [0, 0] - SrcBlock " SFunction " - SrcPort 2 - DstBlock "TPinv" - DstPort 1 - } - Line { - ZOrder 84 - SrcBlock " Demux " - SrcPort 1 - DstBlock " Terminator " - DstPort 1 - } - Line { - ZOrder 85 - SrcBlock " SFunction " - SrcPort 1 - DstBlock " Demux " - DstPort 1 - } - } - } - Block { - BlockType Outport - Name "Tpinv" - SID "113" - Position [225, 73, 255, 87] - ZOrder -5 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "S" - SrcPort 1 - DstBlock "Truncated PseudoInverse" - DstPort 1 - } - Line { - ZOrder 2 - SrcBlock "Truncated PseudoInverse" - SrcPort 1 - DstBlock "Tpinv" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "tol" - SrcPort 1 - DstBlock "Truncated PseudoInverse" - DstPort 2 - } - } - } - Block { - BlockType S-Function - Name "Yarp Clock" - SID "1773" - Ports [0, 1] - Position [335, 96, 405, 144] - ZOrder 85 - ForegroundColor "[0.490196, 0.000000, 0.000000]" - FunctionName "BlockFactory" - Parameters "'YarpClock','WBToolbox'" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Object { - $PropName "MaskObject" - $ObjectID 298 - $ClassName "Simulink.Mask" - Type "YARP Clock" - Description "This block outputs the current YARP Time.\nIn a nutshell, this block outputs the equivalent of " - "the C++ function call yarp::os::Time::now()" - SelfModifiable "on" - Display "disp('YARP Time')\n" - RunInitForIconRedraw "off" - } - } - Block { - BlockType S-Function - Name "YarpRead" - SID "1632" - Ports [0, 2] - Position [90, 94, 150, 141] - ZOrder 22 - ForegroundColor "[0.490196, 0.000000, 0.000000]" - FunctionName "BlockFactory" - Parameters "'YarpRead','WBToolbox',portName,signalSize,blocking,timestamp,autoconnect,errorOnConnection,timeout" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Object { - $PropName "MaskObject" - $ObjectID 299 - $ClassName "Simulink.Mask" - Type "YARP Read" - Description "This block behaves as the command 'yarp read'. \n\nBy default it has the option 'Autoconnect' a" - "ctive, which means that the user can only specify the name of the port ('Source Port Name') from which readings a" - "re desired, along with the size of the expected data (e.g. 3 when reading the torso state).\n\nWhen the user unch" - "ecks 'Autoconnect', 'Opened Port Name' field shows up and it corresponds to the name of the port the block will c" - "reate. No autoconnection is performed, and the output will be always zero until the user connects it to some othe" - "r port from command line using 'yarp connect [from] [dest]'.\n\nWhen 'Autoconnect' is off, an additional output c" - "alled 'signal' is added to the block. It outputs 1 if the port has received at least one sample, or 0 otherwise.\n" - Initialization "% Solve error in string parsing. Force the type.\nportName = char(portName);" - SelfModifiable "on" - Display "port_label('output', 1, 'signal');\nportNumber = 1;\nif (timestamp)\n portNumber = portNumber + " - "1;\n port_label('output', portNumber, 'timestamp');\nend\n\nif (~autoconnect)\n portNumber = portNumber + 1" - ";\n port_label('output', portNumber, 'status');\nend\n\n" - RunInitForIconRedraw "on" - Array { - Type "Simulink.MaskParameter" - Dimension 7 - Object { - $ObjectID 300 - Type "edit" - Name "portName" - Prompt "Source Port Name" - Value "'/portname'" - } - Object { - $ObjectID 301 - Type "edit" - Name "signalSize" - Prompt "Port Size" - Value "1" - } - Object { - $ObjectID 302 - Type "edit" - Name "timeout" - Prompt "Timeout" - Value "0.5" - Visible "off" - } - Object { - $ObjectID 303 - Type "checkbox" - Name "blocking" - Prompt "Blocking Read" - Value "off" - Callback "blocking_val = get_param(gcb, 'blocking');\nmask_visibility = get_param(gcb, 'MaskVisibilities');\n\nif(s" - "trcmp(blocking_val, 'on'))\n mask_visibility{3} = 'on';\n set_param(gcb, 'MaskVisibilities', mask_visibility);" - "\nelse\n mask_visibility{3} = 'off';\n set_param(gcb, 'MaskVisibilities', mask_visibility);\nend\n\nclear bloc" - "king_val mask_visibility" - } - Object { - $ObjectID 304 - Type "checkbox" - Name "timestamp" - Prompt "Read Timestamp" - Value "on" - } - Object { - $ObjectID 305 - Type "checkbox" - Name "autoconnect" - Prompt "Autoconnect" - Value "on" - Callback "autoconnect_val = get_param(gcb, 'Autoconnect');\nprompt_string = get_param(gcb, 'MaskPrompts');\nmask_vi" - "sibilities = get_param(gcb, 'MaskVisibilities');\n\nif(strcmp(autoconnect_val, 'on'))\n prompt_string{1} = 'Sourc" - "e Port Name';\n mask_visibilities{7} = 'on';\n set_param(gcb, 'MaskVisibilities',mask_visibilities);\nelse\n " - " prompt_string{1} = 'Opened Port Name';\n mask_visibilities{7} = 'off';\n set_param(gcb, 'MaskVisibilities',m" - "ask_visibilities);\nend\nset_param(gcb, 'MaskPrompts', prompt_string);\nclear autoconnect_val prompt_string mask_vis" - "ibilities" - } - Object { - $ObjectID 306 - Type "checkbox" - Name "errorOnConnection" - Prompt "Error on missing connection" - Value "on" - } - PropName "Parameters" - } - } - } - Block { - BlockType S-Function - Name "YarpWrite" - SID "1659" - Ports [1] - Position [230, 96, 290, 144] - ZOrder 27 - ForegroundColor "[0.490196, 0.000000, 0.000000]" - FunctionName "BlockFactory" - Parameters "'YarpWrite','WBToolbox',portName,autoconnect,errorOnConnection" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Object { - $PropName "MaskObject" - $ObjectID 307 - $ClassName "Simulink.Mask" - Type "YARP Write" - Description "This block behaves as the command 'yarp write'. \n\nBy default this block opens a port names as" - " the \"Opened Port Name\" parameter\nand stream the input signal to that port.\nIf the option \"Autoconnect\" is " - "specified, the first parameter become the\nname of the target port to which the data will be stramed, \ne.g. like" - " \"yarp write ... /destinationPort\"\n" - SelfModifiable "on" - Display "disp('YarpWrite')" - RunInitForIconRedraw "off" - Array { - Type "Simulink.MaskParameter" - Dimension 3 - Object { - $ObjectID 308 - Type "edit" - Name "portName" - Prompt "Opened Port Name" - Value "'/portname'" - } - Object { - $ObjectID 309 - Type "checkbox" - Name "autoconnect" - Prompt "Autoconnect" - Value "off" - Callback "autoconnect_val = get_param(gcb, 'Autoconnect');\nprompt_string = get_param(gcb, 'MaskPrompts');\nif(strc" - "mp(autoconnect_val, 'on'))\n prompt_string{1} = 'Destination Port Name';\n set_param(gcb, 'MaskVisibilities',{" - "'on';'on';'on'});\nelse\n prompt_string{1} = 'Opened Port Name';\n set_param(gcb, 'MaskVisibilities',{'on';'on" - "';'off'});\nend\nset_param(gcb, 'MaskPrompts', prompt_string);\nclear autoconnect_val prompt_string" - } - Object { - $ObjectID 310 - Type "checkbox" - Name "errorOnConnection" - Prompt "Error on missing connection" - Value "on" - Visible "off" - } - PropName "Parameters" - } - } - } - Block { - BlockType SubSystem - Name "errors" - SID "714" - Ports [2, 2] - Position [245, 198, 305, 242] - ZOrder -9 - BackgroundColor "[0.300000, 0.580000, 1.000000]" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 311 - $ClassName "Simulink.Mask" - Type "Errors" - Description "Computes two kinds of errors. The first is just the difference between x\nand y while the secon" - "d is the ratio (x-y)/y." - RunInitForIconRedraw "off" - } - System { - Name "errors" - Location [0, 29, 1280, 744] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "100" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "x" - SID "715" - Position [30, 28, 60, 42] - ZOrder -1 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "y" - SID "716" - Position [25, 103, 55, 117] - ZOrder -2 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType Sum - Name "Add" - SID "717" - Ports [2, 1] - Position [95, 27, 125, 58] - ZOrder -3 - Inputs "+-" - InputSameDT off - OutDataTypeStr "Inherit: Inherit via internal rule" - SaturateOnIntegerOverflow off - } - Block { - BlockType Product - Name "Divide" - SID "718" - Ports [2, 1] - Position [165, 37, 195, 68] - ZOrder -4 - Inputs "*/" - InputSameDT off - OutDataTypeStr "Inherit: Inherit via internal rule" - RndMeth "Floor" - SaturateOnIntegerOverflow off - } - Block { - BlockType Outport - Name "x-y" - SID "719" - Position [225, 13, 255, 27] - ZOrder -5 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Block { - BlockType Outport - Name "(x-y)./y" - SID "720" - Position [220, 48, 250, 62] - ZOrder -6 - Port "2" - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "Add" - SrcPort 1 - Points [10, 0] - Branch { - ZOrder 2 - DstBlock "Divide" - DstPort 1 - } - Branch { - ZOrder 3 - Points [0, -25] - DstBlock "x-y" - DstPort 1 - } - } - Line { - ZOrder 4 - SrcBlock "x" - SrcPort 1 - DstBlock "Add" - DstPort 1 - } - Line { - ZOrder 5 - SrcBlock "y" - SrcPort 1 - Points [15, 0] - Branch { - ZOrder 6 - Points [0, -60] - DstBlock "Add" - DstPort 2 - } - Branch { - ZOrder 7 - Points [60, 0; 0, -50] - DstBlock "Divide" - DstPort 2 - } - } - Line { - ZOrder 8 - SrcBlock "Divide" - SrcPort 1 - DstBlock "(x-y)./y" - DstPort 1 - } - } - } - Block { - BlockType SubSystem - Name "holder\n" - SID "1296" - Ports [1, 1] - Position [115, 197, 175, 243] - ZOrder 14 - BackgroundColor "[0.537255, 0.721569, 1.000000]" - RequestExecContextInheritance off - Object { - $PropName "MaskObject" - $ObjectID 312 - $ClassName "Simulink.Mask" - Type "Holder" - Description "This block holds the first input value during the simulation." - RunInitForIconRedraw "off" - } - System { - Name "holder\n" - Location [12, 45, 1340, 980] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "100" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "s" - SID "1297" - Position [145, 43, 175, 57] - ZOrder 13 - IconDisplay "Port number" - } - Block { - BlockType Clock - Name "Clock" - SID "1298" - Position [45, 65, 65, 85] - ZOrder 11 - } - Block { - BlockType Reference - Name "Compare\nTo Constant" - SID "1299" - Ports [1, 1] - Position [90, 60, 120, 90] - ZOrder 10 - LibraryVersion "1.453" - SourceBlock "simulink/Logic and Bit\nOperations/Compare\nTo Constant" - SourceType "Compare To Constant" - SourceProductName "Simulink" - SourceProductBaseCode "SL" - ContentPreviewEnabled off - relop "==" - const "0" - OutDataTypeStr "boolean" - ZeroCross on - } - Block { - BlockType SubSystem - Name "MATLAB Function" - SID "1300" - Ports [2, 1] - Position [235, 37, 305, 88] - ZOrder 15 - LibraryVersion "1.32" - ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ExplicitOnly" - TreatAsAtomicUnit on - RequestExecContextInheritance off - SFBlockType "MATLAB Function" - System { - Name "MATLAB Function" - Location [12, 45, 1135, 3068] - Open off - PortBlocksUseCompactNotation off - SetExecutionDomain off - ExecutionDomainType "Deduce" - ModelBrowserVisibility off - ModelBrowserWidth 200 - ScreenColor "white" - PaperOrientation "landscape" - PaperPositionMode "auto" - PaperType "usletter" - PaperUnits "inches" - TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] - TiledPageScale 1 - ShowPageBoundaries off - ZoomFactor "100" - SIDHighWatermark "1628" - SimulinkSubDomain "Simulink" - Block { - BlockType Inport - Name "s" - SID "1300::24" - Position [20, 101, 40, 119] - ZOrder 10 - IconDisplay "Port number" - } - Block { - BlockType Inport - Name "unused" - SID "1300::26" - Position [20, 136, 40, 154] - ZOrder 12 - Port "2" - IconDisplay "Port number" - } - Block { - BlockType Demux - Name " Demux " - SID "1300::1627" - Ports [1, 1] - Position [270, 230, 320, 270] - ZOrder 98 - Outputs "1" - } - Block { - BlockType S-Function - Name " SFunction " - SID "1300::1626" - Tag "Stateflow S-Function 1" - Ports [2, 2] - Position [180, 100, 230, 160] - ZOrder 97 - FunctionName "sf_sfun" - PortCounts "[2 2]" - SFunctionDeploymentMode off - EnableBusSupport off - SFcnIsStateOwnerBlock off - Port { - PortNumber 2 - Name "s0" - } - } - Block { - BlockType Terminator - Name " Terminator " - SID "1300::1628" - Position [460, 241, 480, 259] - ZOrder 99 - } - Block { - BlockType Outport - Name "s0" - SID "1300::25" - Position [460, 101, 480, 119] - ZOrder 11 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 81 - SrcBlock "s" - SrcPort 1 - Points [120, 0] - DstBlock " SFunction " - DstPort 1 - } - Line { - ZOrder 82 - SrcBlock "unused" - SrcPort 1 - DstBlock " SFunction " - DstPort 2 - } - Line { - Name "s0" - ZOrder 83 - Labels [0, 0] - SrcBlock " SFunction " - SrcPort 2 - DstBlock "s0" - DstPort 1 - } - Line { - ZOrder 84 - SrcBlock " Demux " - SrcPort 1 - DstBlock " Terminator " - DstPort 1 - } - Line { - ZOrder 85 - SrcBlock " SFunction " - SrcPort 1 - DstBlock " Demux " - DstPort 1 - } - } - } - Block { - BlockType Outport - Name "s(0)" - SID "1301" - Position [330, 58, 360, 72] - ZOrder 14 - IconDisplay "Port number" - VectorParamsAs1DForOutWhenUnconnected off - } - Line { - ZOrder 1 - SrcBlock "Clock" - SrcPort 1 - DstBlock "Compare\nTo Constant" - DstPort 1 - } - Line { - ZOrder 2 - SrcBlock "MATLAB Function" - SrcPort 1 - DstBlock "s(0)" - DstPort 1 - } - Line { - ZOrder 3 - SrcBlock "s" - SrcPort 1 - DstBlock "MATLAB Function" - DstPort 1 - } - Line { - ZOrder 4 - SrcBlock "Compare\nTo Constant" - SrcPort 1 - DstBlock "MATLAB Function" - DstPort 2 - } - } - } - } - } - Annotation { - SID "1213" - Name "WHOLE BODY TOOLBOX" - Position [172, 149, 319, 166] - InternalMargins [0, 0, 0, 0] - ForegroundColor "white" - BackgroundColor "black" - ZOrder -1 - FontName "Sans Serif" - FontSize 12 - } - Annotation { - SID "1214" - Name "\n" - "\n" - "

Copyright 2013-2018 Istituto Italiano di Tecnologia

\n


\n

This software is " - "supported by:

\n

FP7 EU Project CoDyCo (No. 600716 ICT 2011.2." - "1) http://www.codyco.eu

\n

H2020 EU Project AnDy (No. 731540 H" - "2020-ICT-2016-1) http://andy-project.eu

" - Position [157, 176, 333, 213] - InternalMargins [0, 0, 0, 0] - ForegroundColor "white" - BackgroundColor "black" - Interpreter "rich" - ZOrder -2 - FontSize 5 - } - } -} -#Finite State Machines -# -# Stateflow 80000019 -# -# -Stateflow { - machine { - id 1 - name "WBToolboxLibrary_repository" - sfVersion 80000019 - firstTarget 26 - } - chart { - id 2 - machine 1 - name "Utilities/holder\n/MATLAB Function" - windowPosition [1152 -205 -179 985] - viewLimits [0 156.75 0 153.75] - screen [1 1 3046 1050 1.25] - treeNode [0 3 0 0] - viewObj 2 - toolbarMode LIBRARY_TOOLBAR - ssIdHighWaterMark 9 - decomposition CLUSTER_CHART - type EML_CHART - chartFileNumber 1 - disableImplicitCasting 1 - eml { - name "fcn" - } - firstData 4 - firstTransition 8 - firstJunction 7 - } - state { - id 3 - labelString "eML_blk_kernel()" - position [18 64.5 118 66] - fontSize 12 - chart 2 - treeNode [2 0 0 0] - superState SUBCHART - subviewer 2 - ssIdNumber 1 - type FUNC_STATE - decomposition CLUSTER_STATE - eml { - isEML 1 - script "function s0 = fcn(s, ~)\npersistent state\n%#codegen\n\nif isempty(state)\n state = s;\nend\n\n" - "s0 = state;" - editorLayout "100 M4x1[10 5 700 500]" - } - } - data { - id 4 - ssIdNumber 7 - name "s" - scope INPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - isSigned 1 - wordLength "16" - } - complexity SF_COMPLEX_INHERITED - frame SF_FRAME_INHERITED - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [2 0 5] - } - data { - id 5 - ssIdNumber 8 - name "s0" - scope OUTPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - isSigned 1 - wordLength "16" - } - complexity SF_COMPLEX_INHERITED - frame SF_FRAME_NO - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [2 4 6] - } - data { - id 6 - ssIdNumber 9 - name "unused" - scope INPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - isSigned 1 - wordLength "16" - } - complexity SF_COMPLEX_INHERITED - frame SF_FRAME_INHERITED - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [2 5 0] - } - junction { - id 7 - position [23.5747 49.5747 7] - chart 2 - subviewer 2 - ssIdNumber 3 - type CONNECTIVE_JUNCTION - linkNode [2 0 0] - } - transition { - id 8 - labelString "{eML_blk_kernel();}" - labelPosition [76.125 85.875 102.544 14.964] - fontSize 12 - src { - intersection [0 0 1 0 23.5747 14.625 0 0] - } - dst { - id 7 - intersection [1 0 -1 0 23.5747 42.5747 0 0] - } - midPoint [23.5747 24.9468] - chart 2 - dataLimits [21.175 25.975 14.625 42.575] - subviewer 2 - drawStyle SMART - slide { - sticky BOTH_STICK - } - executionOrder 1 - ssIdNumber 2 - linkNode [2 0 0] - } - instance { - id 9 - machine 1 - name "Utilities/holder\n/MATLAB Function" - chart 2 - } - chart { - id 10 - machine 1 - name "Utilities/DampPinv/Damped Pseudo Inverse" - windowPosition [699 -205 167 985] - viewLimits [0 156.75 0 153.75] - screen [1 1 3046 1050 1.25] - treeNode [0 11 0 0] - viewObj 10 - toolbarMode LIBRARY_TOOLBAR - ssIdHighWaterMark 8 - decomposition CLUSTER_CHART - type EML_CHART - chartFileNumber 6 - disableImplicitCasting 1 - eml { - name "fcn" - } - firstData 12 - firstTransition 16 - firstJunction 15 - } - state { - id 11 - labelString "eML_blk_kernel()" - position [18 64.5 118 66] - fontSize 12 - chart 10 - treeNode [10 0 0 0] - superState SUBCHART - subviewer 10 - ssIdNumber 1 - type FUNC_STATE - decomposition CLUSTER_STATE - eml { - isEML 1 - script "function DPinv = fcn(mat,sigma)\n% Economody size svd of mat\n[U,S,V] = svd(mat,'econ');\n% Damp" - "ed version of S with sigma\nS(S>sigma)=S(S>sigma)./((S(S>sigma)).^2+sigma^2);\n% Damped pseudoinverse\nDPinv = V" - "*pinv(S)*U';" - editorLayout "100 M4x1[10 5 700 500]" - } - } - data { - id 12 - ssIdNumber 4 - name "mat" - scope INPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - } - complexity SF_COMPLEX_INHERITED - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [10 0 13] - } - data { - id 13 - ssIdNumber 5 - name "DPinv" - scope OUTPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - } - complexity SF_COMPLEX_INHERITED - frame SF_FRAME_NO - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [10 12 14] - } - data { - id 14 - ssIdNumber 8 - name "sigma" - scope INPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - isSigned 1 - wordLength "16" - } - complexity SF_COMPLEX_INHERITED - frame SF_FRAME_INHERITED - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [10 13 0] - } - junction { - id 15 - position [23.5747 49.5747 7] - chart 10 - subviewer 10 - ssIdNumber 3 - type CONNECTIVE_JUNCTION - linkNode [10 0 0] - } - transition { - id 16 - labelString "{eML_blk_kernel();}" - labelPosition [80.125 91.875 102.544 14.964] - fontSize 12 - src { - intersection [0 0 1 0 23.5747 14.625 0 0] - } - dst { - id 15 - intersection [1 0 -1 0 23.5747 42.5747 0 0] - } - midPoint [23.5747 24.9468] - chart 10 - dataLimits [21.175 25.975 14.625 42.575] - subviewer 10 - drawStyle SMART - slide { - sticky BOTH_STICK - } - executionOrder 1 - ssIdNumber 2 - linkNode [10 0 0] - } - instance { - id 17 - machine 1 - name "Utilities/DampPinv/Damped Pseudo Inverse" - chart 10 - } - chart { - id 18 - machine 1 - name "Utilities/TruncPinv/Truncated PseudoInverse" - windowPosition [649 -205 167 985] - viewLimits [0 156.75 0 153.75] - screen [1 1 3046 1050 1.25] - treeNode [0 19 0 0] - viewObj 18 - toolbarMode LIBRARY_TOOLBAR - ssIdHighWaterMark 8 - decomposition CLUSTER_CHART - type EML_CHART - chartFileNumber 7 - disableImplicitCasting 1 - eml { - name "fcn" - } - firstData 20 - firstTransition 24 - firstJunction 23 - } - state { - id 19 - labelString "eML_blk_kernel()" - position [18 64.5 118 66] - fontSize 12 - chart 18 - treeNode [18 0 0 0] - superState SUBCHART - subviewer 18 - ssIdNumber 1 - type FUNC_STATE - decomposition CLUSTER_STATE - eml { - isEML 1 - script "function TPinv = fcn(mat,tol)\n%#codegen\n[U,S,V] = svd(mat,'econ');\n% Setting to zero value\n%" - " Setting to 1/S(i,i) singular values greater than tol\n S(S>tol)=1./S(S>tol);\n TPinv = V*pinv(S)*U';" - editorLayout "100 M4x1[10 5 700 500]" - } - } - data { - id 20 - ssIdNumber 4 - name "mat" - scope INPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - } - complexity SF_COMPLEX_INHERITED - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [18 0 21] - } - data { - id 21 - ssIdNumber 5 - name "TPinv" - scope OUTPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - } - complexity SF_COMPLEX_INHERITED - frame SF_FRAME_NO - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [18 20 22] - } - data { - id 22 - ssIdNumber 8 - name "tol" - scope INPUT_DATA - machine 1 - props { - array { - size "-1" - } - type { - method SF_INHERITED_TYPE - primitive SF_DOUBLE_TYPE - isSigned 1 - wordLength "16" - } - complexity SF_COMPLEX_INHERITED - frame SF_FRAME_INHERITED - unit { - name "inherit" - } - } - dataType "Inherit: Same as Simulink" - linkNode [18 21 0] - } - junction { - id 23 - position [23.5747 49.5747 7] - chart 18 - subviewer 18 - ssIdNumber 3 - type CONNECTIVE_JUNCTION - linkNode [18 0 0] - } - transition { - id 24 - labelString "{eML_blk_kernel();}" - labelPosition [80.125 91.875 102.544 14.964] - fontSize 12 - src { - intersection [0 0 1 0 23.5747 14.625 0 0] - } - dst { - id 23 - intersection [1 0 -1 0 23.5747 42.5747 0 0] - } - midPoint [23.5747 24.9468] - chart 18 - dataLimits [21.175 25.975 14.625 42.575] - subviewer 18 - drawStyle SMART - slide { - sticky BOTH_STICK - } - executionOrder 1 - ssIdNumber 2 - linkNode [18 0 0] - } - instance { - id 25 - machine 1 - name "Utilities/TruncPinv/Truncated PseudoInverse" - chart 18 - } - target { - id 26 - machine 1 - name "sfun" - description "Default Simulink S-Function Target." - linkNode [1 0 0] - } -} diff --git a/matlab/library/exported/WBToolboxLibrary.slx b/matlab/library/exported/WBToolboxLibrary.slx index 2a0b5e50c31686d2fb9099217b707b231cc6e94c..12140146ac136d33bdb8fd88bf5eb14bf1ffaa10 100644 GIT binary patch delta 146023 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 d0m(&S+mqm9~G|V?*-00)HjcIH-e7 zWtQxOA77(u6GfztGipB8thES^rfo&}knr&i{ZXp%J+2Xnz1Bv91y9jyf*miOz;~67 zrD4aEJc6gGRF-z&PLm1K9Y@>O`wc#Hv1GJmwa}dA@RqHKXE+ALuC-x?4)dfcicZX0 zN=Q77Ex^u~%B6o+6iG0uh4PvXjCWtvdPAxe2R?M|VsVqpMX^{|3<_IlPBv+l9`$9z z5#0h!RM>kdJxaL&NfSfcJ>C&kwT|}E&3eOR^n42KJBym-Nn4AKnL@Cgo8H8c4Y_&j zbb_k2Dxf+s!Sx(~2D1JgG}feTT=R>XTT-dmna|U(LS=tKTHI3`KTGz<>`oJin|iXO z9$kb3w)VJ4veA=20+iRo1F2K7hv41vE9jUxj2tV;_3RH;^#FqGoVAc?6Gfvg4ZmM- z#vIs)bE9rkmKr!;Eif6L}bZ4}H4Y2Vj-B*p zVf-q9fa3hWy!H&y0;kscqh}^N)__ z@$%NbaoAC9>%;KNbaBe6_2E&N9Jah1gT+OufX6P7Bt)^ z9e=I*#X%Pz6?j7y-Vbsn-I3HAe3J>}DHu@xG2z((24NOVP{${5&FXQBf7neJ$nAd- zk%7G__TB1Nw8Ej!fWC8+59aQ9Wn4es%0vG(<^Bos2>vZvt5qCs@IobS-o(eJIvHl@ zIxo$B*M%n^w{4Oy9|R|_#Ho!MyG7^JsjSi!Y^ENbJ)qKWu7{7gti~<|WOHK{@)T@p zzBfbc6P4Hg9-u0yzVP*RuqW8&dVzn|FadC8sQuy7$8o^PfI50qIx?%ae`lnfmxD|i zWwcx7dt}afn;$PcyT$feM<0nU-u>k%Edu{umX>p9Mx#-Zg8%cH@J~DqTaKIyg8dyr z{~S+5zrTa>FYzR={O<gqFzWVU~ zHfbX8Bjc-@D=cF+vRS>E;&#b=#=Ty*^A~u=spI}{*?H&;G>ZGRqSnJgJUM8}@g=nn zOG{hd&AqW=%T*&5ji|4T$4gwcm6>z2kFz81^@cFW*`Ps+WoUYry3sP09pVBd(DINV zz%bp>wV#yeLjrp}I-8cNb$@@H_;JOs_|<06_sf2{4Hd>WEHqchX&fp*n-obNRMXpE z7fPayge1^*)ns;OlwFre)^OI>p=UYnQ|DnQo@+vl8m1T}X)5Kg^$sY)MGkOEF9__y*ISE_|D8~L8UDXyj2Q{wf8CgmnJu^#syP(sKwanI zTsFzOT=YGsirh=~@|jOSskf?;ruz#lkhc%1E{G&YTnj1Yh_jefe+M%CY z!e~A7Qh{Mg^!j?kD5iig{r=(vD>$8mJj^V(5>bu3{|r6ExBM;YRC743pV?SYodO8w z@Ep%;1kT%K2pt&yJHLZRgdgKG_$Q;CMWa;PUA`I+4>*vY&Juswk5PW&aQhsQTuF05 zct15oir083hB%SyRWizxIEChb@+or~O(>vLWP=NE{{)P_h00G>)UBA=@Kf25bkK)y z$GE*9surhv&}Xu%-sST}@L)6!+GRm?xW5A`|2aQ&Y(r@*(Tv$W1`O>=;G_oEg~a&ejZ27XZ#Z|+B|W)}8A$3>m(qxI%opKR2RD|sIIvp4z% z;c0k7V+`$7w2dl2~7BemL$Bx;3rc`dab~1B!pqwhx;|l9kY2n9_P4S$db! za>1FPXMW$TZW)7=6zE<}QxG0#b0~24ENJ=YBjz2oFAkdciNG7>5Iv!%lfv5Al-JeB zEe!9N=&W`?TNZ5EM}65VKY}J|R=BtPKZlt*3UoK;f!HHT6xoH+-iUo?5#D6u+RcLT zs7)E5`U`*JO2mm=vvl{f1#QvFHUIp`NB6M~o&%sV4$@^C^1h}0eUE8ml>WAdh&@7V z0|@aIgaQ*XGYj3m@0^tIbiBR5&sEx^_;Fjsrc+YH#cAl&w^BpB%JY8QAGYFpf!Z)0 zaOU!#@l^6Vp0xJojC6m;lQU&+Ol(=C1nYf4p7ejr?|8D&#DI1%2m9aEw8_5}QEJ+DtN&Rw2RX_U zh0WNkJ`NP}I;}cNWp011Wf|64)$iUzQl<<;NRq{e%7LXg!t>2>OqhKrr=ATM3xUoy zSaN@0%=e;Z9*P9}T{a6rJbUn1Vt{Ma$xITN7`PkmtD=jsj76k@q}YMiZY@=V7mUXm zB^f|+Qbs5q8-by_C2prFJ#R}1UXEF-P}kqnOA;=hePJN% z*Zas#wH>tT(&x+M+N#?(0!!zpl%H&P=cZj;O;CZ3snc%1VAe_5CsB{8rPxmU+qLTn zGUDMLw^;ejl&>LZ9fH{uyH-;5IXAlz~ShCqLB z*s)V5i(ewGj{V|I`VO3KUK79iF;mQ%CZJog32Z?>J|4*iSh&;By=UQop5kLtns9gV zONpSOX8&BI#tsAXd`oSYmk)N00$VOPyZU7i%!{HyoF0_RsWnT_I5jBPFzg@FZWr_| zpuyW2&+m;4As-M6>U$l_8Rp6X6vuzta`q|)#w2is4Lp^29n1c#zkg9;<$;^cGKo}k zgr7?M4gS@`qjHI53dz+qEXc#7C-XM?n$!=zL(K9?5~z(Kon$)d=?JmH6Yhrb5+Wp@ z#?+jx>U=g6wpt=vtrF}l(8OZp1?LgS(;nZr{H=}`xNbFwwtd*f6ufyD~ zYQ*6c^kZF?(Vey2VOfCGUXsp2_yB}Hkie@YcnF@xO)JJa>yTrvmtZbkWeaMu`4OjV zql5{+!?JkE_@t2$AE;FjttQQfHHN85Lliej?I9=b!{o~;_W8*yu4ua@I>A)v#edUjql}Wr`B-O|1c=^%ZU>5ys1&YdZ zx^$8$H~G(DOpC1T!zb#6cY#l7Xv$%HJSy&#NTvBgxvJT!tq&}fEczh#<9GO*b8&GO z7zNz|<&}LYb?9oPg2BV}_QLCnMOgc9ow>BVTL!U*it9DR!j6BdHE6s9)7F!iVitXO zc&U6)u58YcE3A9&EE%gjUD}W!Jj>DDSKpmRNmwb6*A$J?W(5qq&(Gn%`E9K7md;3} z9GPX^M5e$xvyJ7#A1kXgXpNpjQ6@3!ToDvwy|7M*vv?hi?MEQw z4&qc@NbIf^j`En(ATh4D7$!c_ThPDA^FtT$*s|o;V~T(GHT!5D!QxZqc%K;Vvm8?N zuze9lD&sWvi{Q-0RU!n4KWXD3{E`(11k*F4NPSLOwcXc=oB77%>`-o=Omyyqi5Qc8 z{5rw)$@Am53p71QpJ$BgE487_cNotmV(a9%eP2A0H!q^X?S!-WYd9)s0K7@@DulO4 z6m#rM93y|B`wdwXMOUaTzEkI~^21~4SA|tJA@=;;AU~$(mz+-DC&)icLh>0D`#}E2 z@V_&`{U1#J>}CmD+ZkK^dsGzv?>5%&NvT35&>u+%?1byjR<7kK>qR_-a7REEHbvpb z19y8|{8uT}uhM8+FAiPYzFRACI<{vpHmQ~^XjFf{*PqC!uxXBp#m{e(n9RK?^@S@x zN)KA~ikC~|WV~ytnY5Vo=)YFNWKw2=4K?gkeo!`3{beOD7TE+zHX=o;y`EtW~0)Fa&=KbO^TOzCMyK+>3{ynDIps6aR9YH<<#V z@Rfgq+QJ(PF5un0aw;E>%b$;2Y_xF%@mk4oa(>Fz3>^}9;|0y}YODG>Hs0W=O+FA+ zFD@Q6-yI6)YXnp8z6xH{69*#^=)EF?&^BRI7SLYgHR07YKh1dwjR(|p_$y`{_e_8H z2S*~eW! zC`2%o%#}>O))@E{xv4ofh4A+f@T|%|c$<0(EO4hZwV#XovajqJI!vcg$~F=^li&!@ zyFnoFI|V2*);_&8_zM|~O4Wvx!P9>R;(&1cW}?1TJqur>xtlIAe1h;a9l@E=#hEbc zrjI`;)`$SQz||4;e*JZStGbcz<-@swc!GZCi4ZaWrIWPKB%n;D9#0bZ3W6lXCXkPa za1$O1KAez6Zfa}l@Mk;t-&)M2=*I4{p@m%0Jn*}* zu(zWiG}WRqlUQqCTrQ}Tw`o6c3Cj#+#VHJXO}xJna1-|U9g9gfgF@vP8+)DKb+}CI zf4IaKG|necM=lre-Ney;GcA9Qpnd#&zJ-qMe43MNoSG3UIwXGNcoH599PATDR5C?` z@F9Ok#x!1QP;PGB6e3rZvnsR6y7#~2;8s5keZk72q#?$I{;q_=1+Kv#X zSCE*Wp5lS*8989y=q(Kiwpr~3*=vpVV`#HRLEJTNU@?rTjZ{{0=I*4i>R{pr&iD&n z<~N-F6O&X~in2`gxp05oQ9HJv0IVkF)mUrRre5iGg{Xp6( zr_aYBc);aWqO%64sgoK8j&^)P>LJA@zjf!klhRvS*P7_YOjDBFb)-rF6KAo0%me#(<9Y9a&q z{roz!iWqQAv_7#>k@oBpLw|1_Jn6Z+LM>ti<~ptBvtvfX%cCR~S12Dee71|TM~bq4(eOl`+nr37@kelDd_F` zu?R8%&g*?DU&YN*NaHeh$Re@ztBN4IwyAf1sqGpmXk)F&o|SqEzsw}jRb`-^9o{j$_0-OqS--Ap z(GPYO9w&d@Sf2=}8fj#gq@N>z`L4H}@bA@f|Mm1oiwZ*6FNo5Fzu|%^@o|5~VwwzV7v26_X53@V)(S9AdZ~7U zj27xneeB-lyZ3O~$(n9_0bL?GrfCprYUOI&(_?Ntc zSfOT0MlGi7Dzws&og*pN+@e@OMs+z9d(c0EjtyYW>6=P#x0lzG@Dyp7327A{gN_w6?L|ta>5TlV$z~ z7{r^gx?-LFvmssffv@Wn2#@4=@S1VgeEZd0E56ia-H}&%45ovYg{dJ6^ z`-N9Qef~X0Gu}w~3xxz#i&5QNhU%1{$TBa)y1N$2B^AU-HVBeOEH4VrI3d#3FMEFl z-Xf3kBzxV6z-`8D$@y3g&d8AM;F*~&s9t1P2oHH-L=`wVNUa0?n82UI{t(!cfpTuf zeqE@!Jg|VD{Qyfm`XP%|GHgj*ibf!3 z(uPOc_ss57(#U8f%o_b8P87V=`5J#C?gi$pV%GsLYAMlQE!&)xThata(bc<%KWl#K zmc6ad2hnmxwsHD(4tqBvoy<6@edE%cD|ab&*v`#TLBcy@*~(am!mDXJDOt3BW=y%Jno^yb{Li9%hAu6`d5GBT0~aVw2^`^ zJu9e?>2ZPfit@>I#?!V%D{Tf5BaLDU97bC!=B*N*ZvJl)UR&(*&8rUaxv3=!(tNLYglYH%jdm&!0z(Y0G`{b1l z9I|fVH-j8zhOTz-B4mGC4i^G%mnM(wU0T@vX4FU~##@jyb4?A&pFa~OWZWu_&^Z$I z6wu7|^J3KqY;x{#swN&S@`v|m)@q$qp(b{*a4yKA4*DdLBf|y{9Eg{0N}PIn1J9R3 z2|CkcXJOjqQBckAK^kH$J8ZGc+4c}f8qiM;f^ptYw?Lf@%a?yrBPg5Poxr4qXuf!K zo)+PWGy6lRw1|KLE z7Y?`1Vj|$f3ksOonVle97$k%HOfxuUBXt!K49*^#0gXsAB2t|?!9ubE+i^dQg)v3} zGs+?ae@juehd_TLn!wO%?aZYI>&DE@6ze&G)|nY8`Mxgq#wb9+CEuC$l}~=-QnHLo z{v>=_nR#8pdYOvIHfBj07pzp9xN#2TSs8cqqN!XiyLX=)YQXv_KH{Px#*4iZ`K4uq z1}_v_J`W&x&1mCH?i=L%qFdu3p(+IJL`!gEe;kzj}sjO3j7LLI3vp&ys)b5&!%2sN&#kYph^l>+(M^gZ&d` zZM!)}wBfDzXM`col|n8|3Y&!T6ChxDQ6ZzSqss4E^<)S!o-2I3!>vw}T0`aN8teVEAL(4{HwHV_4iNa*lG)5a# zW}V-VS1`>X1r5}E2lr;-$a!RiGb1w%Rj8?KHNtA<%su81BCtWoQ?XJ0JD%K}kW znEXfykJAjRmyqn@Yxcx=SGxcwo6}Ul+nr_REiPzAk=pPLBPK6S(!S1u*Q@PbF~Wx&58!T(*3H>4exa3&J9Cn;^BXz zChK!!mN!*-YL*g#7Rj>-O1>8{8r_Xkga?N=uG@PNDjsl2Dqsm_a8JOEq*Jg(>Ro{7 zpwVV^Qti@rqyYz^3n5qFZ56J|QX1_@6xa*RZ2!p{Xuxe)#8stQ18<|zpw^Dqhm;8w z(uAezd67&?*I7{niPjn6@A42k+*5z73zf@k-pzC=V6}x~PXN|aj0-ROU62%5+zvC!c??iiVmk-f~$(9En5N8<||d*g;D#;MKG z?=E^MM?Lo5OE)f1GMe>o&D-8*$2oG<3o zzgP#{;~k@<$Ro80b~9Mh*V%-XYUX;sB#(%~5POZ@k;JeIG7{#9+##j#W5(~(0b+&x z(AcjfES2Pxm?-WfdAk>rUi3E{y;l>k{b@u zpUW0z&H^7K{)91Rebn4wCXBvlYn=V~%%Xb{K~K0oLF0NLX)7>f$A&lNqZ1eIjHSsE z5P;ydZ)Wkp56xq`A)x)9SI@NF$$s~BPM|rxxoAeH_-cA$|Hv2Pbb^h)UB#q!WRF*Y zIj?2?d6E*{U|WCV66TVJ55@;AuIar&2HUzLH?X@T|J3eHA*#nCZ9~yQT3l znp|!$m-*5k?v-Ms=i>=3;37!OS*uJBTdUr@(uFXHm;)J3mWkQZCWVxackUNxM2ums zZs#78y*VyODcq_Z+?mw{F6dMs5QmfSHtl2CT){(KGdO>j5;^3B3r*`%LsXj7RE*AO zmKruO{U4{^cE-Al+tty3oJLZQPX6Wehzcr3cgbOJshoI=)-LqDVFW!*EKS1jT`_{P z%Dbo~)Ej(KVx#C#X2cq`wtUNfxxWiH-075Q8ns^I8#tfwb)B&sV#h6CO!Hg1oAMIOYZm}+vq+-um~-F* z<9l>Eh)y%pZ>>YWwT^tu30>B{CU^vojP`Fo?K9Mfba_FzpElWvd7~?PgL;0rq^Qa|;eAaFt7i`HBMcF1~uFN}R}78i0{gUEP}n3aEc#6%JFL+@HNl8!<1*_^{RK#xbD zAvz6!79QJ!`4~)?j*gkzq#uBVmPq!3dQ7gXT<;$z8U8T+nCPGt2K^i3KQqOJ0RqDN zSEd$@#tx=VreYS>PXDFj@c)JNcg?x_pB;zL6fQoj&?HV7O?*rih*^)BD5xD@m>l8q zKF)t!T~MVUPJ@OBVEW7mQ`+yIvZm8?>?%-fS}cPql_&5bkZX>ZF`eUgubSD(hL+|e z>!}oI96Duck2te2|LVJqD3berP9}-?2UM+`!j~_BvX$BfYqh7RbvyFDi z1AZCIQo)b5?N%0SJ88u&LKYLrgqBBro-BVfbK)`P!Ny8Xv1qm1?2_l|iNmLl1gA1) zYnyPb6oWqYj%4>P77$;r>?)=8cP+CB#C!fCAlA$6_+KHJDMq4dY2RPbT=^ke#}0+~ zm)*Si-d5tXfc+{|)!1Rn%F)!*)QsM;qba>E+@O19(0-IW(^SsVBDBpS&P2J8ipGBq zyEg4O(xLA}g3Gj#t)C3g6(?pgq@N6&?`1#}5d~;IzabYON6tivOeds{%Jn>(e>~V4 zyzaaD&1fZEF;w1-cY`_$UL3`tlP@{@1pSaQuXgchrv`^Aoe=I>$symtH}>OE1nN8g zE+DiWM2f;i+#@*oBfU(q?@9+x=K_C{C*l>Df@0SGLCX9XQOKz$AefJF1{9ri++Q*H zXpacnfsuqjpc}QzEcXhWQofIWWyiO7FEdy#<(`kn?38$Rg!`OWk^go65y|6_pbtVe z=(z_SG~}@m*+d@aLlUXZ*OJ`Ts%l!V@0^?fq=v?Dvbl|-TmH)LJ-G6#rb&MirQwHS zc;&fMv|Erj(<;M*u*I2>DtBU2dr;s}^b=OvGK(JOM%5%qa*t|;QQvlYtkJitjqjl0 zJ)|^)xYcaeSo_=kz3H1_C`f57LzCn0!~Oln2o+{i=1yNTUnkgpnR7Hkl&A{7x0Uz) znd%7Ti~sE5ZhuuzJLF9G+EIVA&}xl)59~f~927Eehb%p0$Q&Z}*e|HRC{@kzn#ud4 zIAo@(l!JI1ZgaHQZtET54U|-x8$y z-*#bagJ2T)I*$wb3u|>^1z-b$5SMpQUq^j$_k$ z8I(ZvjbJcrJc&A}QtAES5H)S@jP|4n{Z!O&kqV&{bI$K8yqFbzd86dbdgPutf!3Vb z^=H;AG$lg*%o3LjWj1 zwa-`tMMeV1yk0SgsD}fJakJgt810xZh?m&B;A|Wg^UZSqB;RQ|?w(11dO(*EddeOX z-bMo7^**gNBg-BW#EMpE+}O&H4s`^vU0&|`>cKp@Fcp@#|HfZP7z*UP* zpl8uXhKswt$ftiB#*oL5r5z#UYNF-d*dsQ%>rVr(oe2D^Hr=hqPv>2N!@=XybnlCD zA$G_V9}bV=?k{`}CbcO#YL`FLJ?|_yLP5U_2FZ3>^ccCW(sD_Fg*2qQ>ev}#?IU?0 zPi@j@Mo{0_r1Dqu!OAtqV9Hv9fh_Kd0 zR>m>;f&XfP^T#3b1NnP6|MNhP`8|se{OfUrp_8$>vW1zgp|!Gwhw1;^Px+^@uCD(d zXW&=cMGSvcL4g-!K}14-`qL?7wM%$Q1|&NV5&z5<_uLsl2?1^Sb>)7$^|9j{FFvkj zEPVQh*jo0Q;dM}SmZ-2dMp{Gp62fOk2beq!Qxtoa@%dT&m+iHotv|ungB4)?5fwpA zWlDdbH=|&b8$v}`HQ#R5k*5eoi(pt6_7PXtar<3JX>no$~$%TkHef=D2!Tb4^ zKNs;~eRKrvk!T0#4;@PSC9nE1Fr<-*3%`H4P^w-RVn1~xpjppzzwK2$M9(G!$XVt5 zl62_lJVq>Q99Biwu<+N2V?{^p@)gfsMh+CLRUyXT^;Q5vXN54L!aW>B`T;&dV6HZ# zZ6bhf&`A}NX7^GPvNs;+rzYg(_!6*bmXM!4i@A3t`6g1-8y)bW9+pBA#10u#&d`6w zBo=;Y;u~+%#%QP>iwEdNzxp09H|IqYGNgf14}rEaCe%;d{MI+{YfYPd%j)^w#8f^A z5OP@tb+0n5eeI{FIQcQ59kMY|h%-bb5zYRJ0sQmG1eY>fmP9mW{mA*ruOppXZn&g2 zZvmKPkBj)r1NdO}YfLAguGxy<1b%<#GPe=q;3I+GAz>_UvnX`>c%x$9vWOEP8~Oh#HOz)O>QDS z?tJg%gG<-$w+h1FVn7Jsb8HhY;!8;5O8{NX^628M|G1ooI!}T>*K~bJnTCJplwRKV zGP%laBr3XXIr1nykp&&&P}SmfHTZD%!HoVF2I?7 zc?W&P1!2ndRm!{LN$Fi8LCx7PDX5<* z->LZZk-+$`wgKn2Th-MBs{mE;FtX8UexKJR-?yb(hCi>q1Dr7;yyye!Y{!=me_!C& zpvBu&iSOHy<<=+NL}^_5pJb-zxP55}rsm_={!Q zJzm$)0ND54({DLTjBudyLYP^oHQwkvQk~ zA1(i42S`5{e6<6-9_dZ+C(d8d`pRtsc+R%E01tLs{HOtd*@S<6{rRU`{*0&7yI5d= zcjnV|H{v^gZv(>y;Kldd_#SY3W&T09&94X0c?19*=!XGpuzUb#PriL|WS=y*TeHHS zs9_`B>|~#q4;Q!75HDMhRJQ=i!V!R9!}IVN0Du5rqSI zNTWK}9;W;Zwg7*#LRT)Idys(degFU@@s0kc@6omIz!@NmF~NK76VqvSNxSQP_`x^R z`C+XC?*$Ofb>B@?0k~SbW`FKH>lQrD=`4L~nE(X(NWRzjrX_n#rjV8_o&+z)G<&>1 zy}cf7?`Ie>Fmy|FUJ#Oe*exVr{=Tyqb~nCn!+tpylmLHy$&N#Y)Q4EMb5xZehr-R2 zOE>hRq$@?kPCJqjg`KrJ>IUGk90VBwX`ft0G`hg6vP1w@K&ih)BLY>jTY?m{rSFT= zVi0>IEYG*qM!-r+LuIqYjOpJPixOH!uF%D(>#>Pg@It!#frmL>8hxh-R2F05j&7eU zO0*uWM1w&iX~vm<^Y6};doca(kp*$SWmm;|Vj@QQEMgAc6;dYo$Gq%{ea<{U|CT;tFgy_?m)~GW?U(af}$7HEe znN`>ROSIc&Hz`Kur(;crTRPBDl_svA4Ch0Es;Syo+Ur11$4unM$67N4a?fXqVzYh0 z4A5fx!=CI~Ia(zT_E|&8O;mmKC$)}#ixmJ1e`Ext%<@9XW#u^-%XWpb*MU_X_`C{- za&hd(nz=83Gvy940X6;DSATvsx|}XuaQlYMX+_F~;#Xqql=bc%JNYwo9K9S@tG3Ol zsrN4DUCF5_$vMlcT`i&nE%B!5AQ&m^3D>|2dAr9QlwiF&zEHuXOnh@3=IvZ`q zXrK}kG9;g{SnH$>*URJ@i!3##t*;cCNg_uVa%s-EX0YItx+OLNMzjFb9%YY6^HnH_tHF__)m%9H1d1hCmPOm7{ zyR>^j>*9O_UtrfG)#=s2KNpQhS1!ue5@5{qMm8qcVfC~lm)?zGqYf3JL+6MheOHQ| zfJC@v8LORm|0YwMe=9;tS3^h4x>UJCKAhq_$Lbp<+TpL!nt-zm58gbDG&1%yn8pcz z*ryntHD3CulGrtDG}*(cRW15c*Yj+?coKXvYc^&&dC(E zf(nzXk|!S#`S>jA!vwN6v8l81g0084Jk8gDkM)woGtz<<_xIdicm}0^SsOgX9`oz4 zJO**ZlvlYfHi6HrihSiNxkVR5^!ZZ$W&8_vnuf!JyBlru*y|RCNQSWMTQ@-x1fRJc27$xETN-BOxwiyo4 z34vLX_B0ocHi2YXB1UE+)HdH8K68mG{qQEikIWf5Wc18@??A8W>XajmARQNajIXA-!*Peqh1|Bs~;^9dRrSVU7^X?uMw*9A|TS2 z`{@m zC_{3#MYtlvSr-?758`}PZP(NXXN!`zo?3R=i3KKO8V#UkWtSpe3Oe8;4TrZ$E&JBS zX%5mXl3ljs?P^C71aZFB588$?QV3M3yRgHYufIvZHlTHh++1N!rsSowSuKEJ>Y?Da zcMsJ4!}J|2?*YbC^7~OtJ{1jiV=7{N2p>P0E^MVSXiy@5c()hOuGJ3cxT=c~vX3+U zt`qOb<@;)|)p8^)AAUcK(1A*4Mx-N-I1hw?}XRw3W{7TB6asz6p6zJ96$EwxL{XC$kTH z65?N012tF*N4zue9M{YS^NJ*GO1j_AqD#t@siUh1Q1A*wdbQjH)ET#T2P%gB6|VId zBNx~SOwuEy`q{R0F48Fm2BvD?nk${zAbx!HskrceFdf~jBr%5D;A**C*oy<(^#boq zj})f53BklMTWHT4JOg5?%o4ITvUP$D-v`^-QTKkQ{x$cZEI1;LR+b@#B~DZSUS9|G z2EEx)h1YW`zWCumHE+!QmMaF-lxT+#7s+qO!nV0_{uwRm!hzkr-K2wmzqRYh|79 ziZ?#bD!Us-fwGP^ECXXE1|BLQQ9iu^bdpvl5 zHO8PGfSgEbB}U&8z?Y&HV)wW%n~)}^;L(XV_U*NJNN~BT52Em62yFUR2Yd3 zwHjOB&!g31MT!Fo-nZ~W6HgJH#{Z62K)T@Z9>)4su^>B% zvMyiI6w?GV>?F?;CqgovG7$S%%gc9vHpsL(%gEKD{uCLlP7ndliXkoHqxv#aKSPqq zw|52fDC)b5@&)E9E=&};AOcEoJr2_$x3BENG+-sZLqo*TPKgJRRThLIs z7yH*-I8D%$*`xYK)lk7n>1HHf0>=8c91t)PTUk@CuD)gsKxkT)tX+XS;E5f(rTUriF(kcE`(+AJl zDSo-`0|Q3ywtw`HxAX`0&b*zg&%sf}TLic;RGNI=Sk-9?YJWVD5guD|S$+5R zx@)Mw73ef!{AdK7*F$}Svu$4GrF@^%ZUU#!VZ^svpGg;Q7c71X)dGhvNAf837+>wB zBggNE`x?!UMO4@7{to~GK>fe5gUj3;reF~s@mn`?N*0v;0GMK={9x5(@`L zw_OVd!9N862SE70mmW(8Mz?882f;sot=a`tT+5m$;KtqE-3boCU4pv@*CtpRm*ByI z)3^qA3liKyaQ6gv5AO0fbMKi+a%QbJllN%$?uJ_Ze_d67Rqd{|2i7#OQ@H8A^9xK0 zZC`gvr*qj>Vqe{UMdOxgrCp{4dyjs_gVMH;u4Uh4kC9Hl)GfU^mJ+HWkQnHH7}S0$ zV*;OWL&WkbkQIH{SH(-+Mu4m2q7H}mz#7)MVvSok%x8o4e+*_!p~>y8CV1Z)%C&$R z#;8l@@ck-}%)8Y1PF>-xW+$$Fno^l9tfqOGcf9Tx%~c))Q5ca`&|VAutsG)!7F~i* zI(AB=81k!v;tV>6ag8hgt9qh;;khCCrmByx7^{yraszS*Kijno1sQX7?F_+P1-_0< zi?}~HH2l_|j3gPLh09d>R`m;0nq*BrG2kt1N`(aj`0Sv_7V(fLhwnNlorJlm#g#y% z9_!LJ$Mka}ezo%s?(jKiH13Py$BRxCeMQ@zqU-Z*0hrOGBg*8L(a3Lq=#2+f*ho{o zwyjXY+eH8>h4&9WDf@f+Jx9ZS-ezKi82;HG?vZPqX~d@`zt3_JM>!ergEGR(FAbhB zMB6Ij8^V-R(`O0t6FA>q*2dV|2(3@BQQR9u;_rlY4EG|2h%io?kE6s$KuWvR5_x@- zPl`Dek%`Qd49kFtQ0zQ^0+gk^whL22g=kCEmnVL8POo#d>5h&+Fr?j~Zi`Om9UzzSp2mzw(_ z?yLy6^)EMMh5eD}+Z47Iy73IB+c;VzkzX4hxAx^rwdb935*a&d>iNaA;n&te-XGv+ zU+^oh^9iMFm)iE#xL)WzEPTNLY_&jeF}sfnT6#1yt8ue`&5Jzt5+dL&^TE@7Ng>C1 zi>a#u@z4y%oma!e)_ zZ^rJQrmGT($4)wsAkd}LLiR$ETM%r5aSaa&Np19hm}^#6gtrh{T@8@pY#Z(Z_MXRU z6|IO^yNphMnsR@ATfjuqT0PYiJG$mu9%cD}+=IKxaIBcTFfkK^X?1GAN0%~1 zi$R{U>6-FcGP1qzfjxDFB-;8^oH7$@_GB+!OWj}t z!&j(TkcyQECNFRso5QW%ooDy6CyRqnY+IkbQs;Gl0=j+-fe=;`F5lF4n$}1jD};yq zca;8mIcMlE0X@JtpwhR!@tHahW?1FAcKq<9tV@bsRjLGeXlF8kAaWZ|Mo$mX+j(*L zfQ2GUw37)p=X1Bf4>01wkcdX9uq2~rQ3H}M!`KFtP+{FiD2$4KZ;3E5mKfv=fsMJg_vYy>t~)Xs`J`h=}KIF3;^QM8ZSY7mN%v^K>`Z!}!Yf zj@@Vk_v2f4EVzkT@m=Xf!!|?^+t(!b9^6PQ1Gv2fsUr7vE`3x&SBh}#b5yhk*`f=7 zsDXZW1Tq-agyApoIU*U7t>{(Rj*lyns!_7Mp=am)k46j(96vHg6KalDgIreQNCG4@ zq|-^{MJ8#Q$)n#X+FGlnod>DIq!Fd(v_0}fGB}Hl#Y!GBF3`R-Og&6Q_dFlzNHzrn zKTgkp!;`2;Q(WaS;4=lp{9uK7Roq9)Bo(a}I1Kf5Ph6QW=8OEDD0uko zMDUzvWn-z)_lk+00AU>zye31zCW<#44oef|IW6*gMryW(;;-a9N;!+Hw_mz{Oi&Tk z&T+FIT$0R$01nCMJ8Ji>CJV1QtYT~`oPKdEY1FAx)Bwez=51-OU>ZKaGdm zufc0{hk#M8G`+qPsX;0V8Hyo)p_y#GeM=@JaI>;uvV{JYYK(Q>yFd|lDldT48f&8z zQ)cS(i(ora?s0&Ja6#Gzjv(gPcK~BsP?sB}EQ&oVoW&P>z7DhiRv<1WRgb6F%M?6L z7}w34Op+WSOA~AQ;U+x1OvP3*ly3C?#;nEqb`}l`($4#TlxrmK(7YPh zl_ohaFa=}7-a*iamyy(f6ECT3@- z=&iSF51(}v47U{}FFZLEbvOTTfQgvdaLDbK<#hd;Zx7!)tr@~pTP&n9U0RGdqv~M+ ziGd-ki+F)NKlBpU;T+mD0Aa)1vzMM76KAp(*U^4SZ8&Na6{1Cddk92;%rBSt$Ulx* z05P`*pXY6q5W&9@uV(0XnQ*4o6P5>oNiL+7Lbt%+>mDxTyVk19tZ-e?+E|4Gqv|3k z;0JZxR-y>8%*85gs|NIlB32^#AdU^XotkY>&_7ihfxHCemiMcoSih%!& zma+fj($SK;(7sE5g#U)ZS=M0}2x-y~>x^(?B@L~6^*x`5p@eKOi6wM6G0JCBYtLa> z8tq8q&92o=5nz7(>e_@ifv9ds{!2Fr0e%zADHutyGPL~h zV-`O!ZWY^VH@HpTW!q$tn9}2 zU7CW<{CzQMQH^)2jmgLH35$FWJ_fdBO^J*SS)1K?Rzc%{xem2d@(VB~lqM;x+NTFejig4BN$+q?AabSOa2R%1V?=dEycqH!?KHDT;(y)9 zFp8;v8QcFDxupeb*w9G0K=)!lqs11oQ0}W_#y!RK7GLgmCh@-iS5@i?DR)l|5lHP1 z4&~*P^zLG0hEwxO6llA2s0s|&)OeMI&@LIRwP)86Cqg;&#g!Vd9=CB}tW>4M`iqK1Z3>Z^SZ=vif8?MT0b#bI2 z{jNx%oDsu||Ld&n+Bu7sq)z-IJ78FnTuhwH_UR@M!Z&YE)|z9&Jrt|Pf%M@>KBlRX z=?k!te6Jze)G@FoY3s8GuvLBdxS#(nsPLZr$=e@5*4anmt?Qogc1ZSHQNxBz2vhBU zK*T3UE|gq`EZEH)IbRqdKUkw%7Ztc`N`~Xft&vEc`l2v9#ECSGb*_=uO9Xs%tudqY z_7FQ-o%LZ;z3(NanvYKMkgLN3n*r=EP%l4c(wSG%JS3AVd)6htn1AoePUWcsa-fs( zhLXMNL#llT%?i_ZMr2+T3h7bH6y6Pg;g45soEKUbblyGRLj|uW6&zuCw6tXrNe|hi z!o#gYj%foKz6oGKQRC9|TeLWv`S>V7BRxmD%0!YLEO!g6nZ35uCWAR;uTsEisAiT@|>Q3+5?*b&-ol z(1L=GB4}cg(aOeEJs2plKj&MTi`KiB{FtD9k zP?T2dfWCd=_{*87WrO9~biX&!It!Ay7P$E}5i8viZZ3JxIzhYxht4v8Rqd=&Ai|Gn z^W2C934S$wGadrOh}?8>R{UU1)S-@A2wcA|ar_@kJzkUylge!6o)-)q??#S}&^@y- z{f&uD8`9|q`5tOM7b2j3IN%@j2Q2$+DCTT6gEC1rZv*__KbZEC-%g-2#&n{`M(FzH zXkGwp91~d$5xj8c>nW;#@DX{AMkBkttBwJ(HMcnoRm!>fsX5KtcQ&IQ%6P-RPMor! z1SJd0ja|g2Y=`dSLmP${{mE~lZX`;oC1N?~UM(}(kvqNK<@u62P%urW z;On6aZ$(cbPg5YLcl&w8&2WDx38q$3LQaGfuc|)x=D)9l7S z!+k)yjmU0NG~({yy^kG&*-;c==m>T5E+o)E4kbAjGClX(-tvG+p3{Yf|I5R z!Lof>WFo%#J#wm(K$YXJ{P99R%-C_?QEUZ_MRd&T`B!Xzbs!%4riUT683GF>r89tE^KJ8x>#5NM`J3(SipBUK8qB>GQWJ`Y6g zyhKBDb~#%sOf0N$3yZ#KrEy526H^_2RjJi_MQ7Ge9WDe$jps@6*osgkVv6&!hhsY$ zl8+f>&M5|eU$p44*{4CN!=ZR!)|DOyQIj)u(*DmT&+;-rTY8&4E%^)tukuxk~Br%0_{ zUnEik^$ETj1Eito`AZ;LrNswCA(f@G8CyrXJRTN*)NY3rhd;RpjUyPi^KY3V#KaQLSHWuZu5An=o7ZvQ+IDmnnhj9d9~a zGU(V(t!=U-qejnUq-`i%z!WV9*_5dcl8G-Lw#dI#E>ZOrW`-i)<$SKnS!+9Q-14Y9 z0DB34dYy$#mj^a{DsO}dcf?w@eX^lRPXVxuZw}4?4QpsTj+XCgbGzw+DIPm(Z;OmD z&rA%H0+?#CJHU$B5nO28)T$LdFgyZ$``lC=xvT^i>QN3)l}#K*jJshsjqmVC7{%>K z5;-(rAI?_vmTr7_O3jj&+bcwTyT3Rb|L}!>8f<@hG5BHghp+s1Ppdf};v zuY=Rw=+ikF%H!YL@_RJs z2N?CIsOMkG_IuyE9=kKPt@gQVoBbL+Up|+lr;}dw`I;o(r{$;pCkPdJIQYRXo)g8C1w zT*~Jwuq^i%*bZ+#-S&PToK($!fKU1cTlaZ5bK1_3u3gyICPh7j|4mKy+KkEZ>r$*V zmeuYoR(rmNg8S8SMm0LrW=@q*;xOqM?wSqHB- z6;Gm?9SAa7tJ;KT12Dr1A?RKwvqTI!*@?oB2Oqc3#QTa12Vg?jkqDO-q^;SLV)phb zx7S<_8O$7<9cs1Ia7WdD=lDLHIeEA_!Rg)11{1s7PfUxlk=$Wa6S0RW93TB9e0OWe z9JaH9`%Rq_MGH+RU*k$rKypdW;fundPJY-l2{>q<^iDYZTEDpN!Uel2n;$}Mn~m#) z6onfSY~-d2kDbm*@`PRYFXK0evZ0wm5LV#y!5VW$q=6VO*M=Z}^{PlQLt~DL(6UB<_+h5r1||fKk7(s(>T9^TCqgyPQK1Ihs~e$78$Gpjs$>|9EG{H)LcV(nknwXveuk79#T~UsIIr31(uH1X=+`MDp_hEe3X2-zUiB6yA9UEtQ zy$%RD@rm269-2z?X{0TOI7h3gF5s*w-?E2+GypRmwZdD%nNpy8k(1bL&5_P)jL35I zlE&@G1c!lRH$}=xTOgz{s{iPI)4squrjjDI_9MT4guG)zKH@&Dlda7mhi-4(w*-=k zP*!@KNVbp08keM=RdEn*Xh2Sv&Lr;<+as}3)H;~sR&W$i3ddC@yMAKVQ{gL>8igXe zJ{h)YtvM9i^T^j5V)T|<3rNHrrk9``wJ}y8S7>CNFt?DIc)J+c%Pk8pI`yr)eC7`v zTw0TV!A9?nG)X|4nAIz!=qX?I*)>10$6NZo0$POIdc^b>Xii6nu8Y0tKAlLiyvim% z%Ddsmr~bCdon_HI0cR;@bTns2o;+U#*5$%Wbhg>ee2<&*Bax9ZmR3^EaWtVX{KtD) z5opq`)nZg65EoY%^r;yg5}=kDnvG=DzQ-Sb$E9mbYM~TC)|KN`08=NFPxyElfGLHt z0j|t^q6D7l!T)@rGla}$rx5w{-Swh332oWIu{Qra`dRRvw~hF=Pf$vlO<7T19-|f) zNZ_*=W%+`Aq4v}ON(wJN!7HN1z@ww$k<8s;Od5r6*?Y_AUmErLT95JIrL* z+`)m=cnj~&Mh3seZrphzfmy{i-l6OAEgU<)EC$oQ%IYLOQ%WglBR`6}7WIJnO4MJi z@y5Hr`7mhVhC)ZA{thb(aYcRZV>6q7Ppg5I=&3?7mrgXB|(fWhbN?3sDYd6Fetf17jc8VDR#{Nd_Us|^4y*0 zuQ?}K2P}#y6`h!(Jl$t6Rt(pN%Z*vKhKuMBnpdcEug zwFftTuQSXW1nUq}+e7(<0eaeh7H!6^eM&n!%b>^S)&m@w;SLZ8(qlrdlgdWE1`Dx+ z@{{~T2lRou^rdC`uQY~>4+hIARhBAhkn1o#iOjZ*HQcrJv?@bo@ynE@4myTwqy(Mw zaiF@G6LgDZ>iZ_>W;>?D0*5=+CETFP8a#(g+3yKN`}53KUlgOTg8gQH#Lig_W3Qrs zFZ=jBhI@p-b}{`wHeQ(3IgM`e&~wmN4?SY$eW&Zqm^_jVw1zs=AVMV#9KM-!tK4dK zVE64ccO-me&LKZa7GDdFTd$Ba=;4aU{;(>4@J720!IQX!f1XV06L%$7s%3mh>S4Ha z%?zxBHF?7tlI|d%tq`VvGs&g&{Enx^x(RLlcb*Y?9cb=wfoKlICl3SsR)cKEMawBjyeKy8c=Q|r@=B*3UI?H zsKYGgJOhwWmEyvYPLzGbhTqxSC17>0dUuhzSx_bjoEa%=7rZ8aMn*c0dU&lH^aqX> zS9V3A@PXb(8#?WkDR*6YYjFaeODRh9(uSNwd0!z3Uc%2%^vlr*E;K45z$?a%DPZ1) z%{`%^3qZKAGcZECoh3tCB91JL)oJ3$LCtD0YN8DC93{RX@m+4w-xv~wm5J^t82Zp5 z7GfxHj+*y|&bHWpR82=tAFMlJ>9-8URLY#Q^YoX>uR6K;Gv&ZT<2|;ER>>`k%o9*WGbs$g&4@lrv8C$=xe~c)TY2QU z0d=#*CF`r=>Z+T-lt->EG!QD5Vlq(%{AlJvc@OBsfbC^}-z3^z|0~Unr!mJJn}$%) zF|nXe*B{@0xuOR`rB&2eWE&_G_AD<({wV z0QyX&k-tK|YthVIb6Yl*?gF5Er;Nv8Q;Z4>Y@#!RjE~QYGAp>Hj6T3bQyx&BMcg5| zl{#&@OftxSvh#MsK}U&V8Wc-Y&9FO0Z^sKHhNBBYs!|J1@v}`$A#=G9btX>rhP)J+ z&6ylK6_a1d{bKBW+8oBJ;qCA3*>K+i2VGyk_ZmTTK`Hw*b^dC0sI#a8VGr376_(j; z?yD6a-mSuYGZtc(mGt}~e$&Q)F;Z`ow|cF22u!?x3WGlO#vB%DT^YBDZ)ba`8bvT= zO9nPkqAH)=4NK$=L?hvx~_86zT_n&@9c7R)(+9G;zV?|mdh8ESIID-nP z;muWwL!l*J)Mm;&#J#HO9H;URR9z}Q$kvVxItmVSo`1~?u-Ld#GXmgyzy93Vgg!Am z^-dOl3jX+9DtoF#<(TDMrm(Fj;C}gtMXIRVJpL^*U)Ki8NgW25Cu1dwgjw+&4W}U8 zn7d1WO0v9QcbI&B&yAda%7J7Vk3!L45yf}#%aS5Hx(>pCcotk+}BwVDR{-pXd~IivcWj7 z#5-*YQ5A1654os-T&?;5+l%Ry}%{^7|78iV*>NO>S>C zQORTKBZ2~(t5Y|gc!h@<;8U>oYWv%N8C2}^`W*=+*a1mdnqfs0=oGxj(33vD8C(mPzbz!5Y2m3Av67CXhNP?G?Pd8W}>jR)E zQ=o9#-O&c&jav*gMPS{0mFif3C~_;XJMR~>sL`UO;NcdD9X7M3bp7*9&5_nbMnx84 z++$w@(>c!jq|jr=Za`refw|nZP%~8AQK@-aUe%~VmXlIT<|b`%^4AyzQ{C?0R(8o& z>tj872{(L90vemmr!EiG%2pBB%*I&~N?SPmW{W@d^KNWhTXzY`SZ%<6wzme(%Fr=> z%ciGt$mSYwyW+ehg!V-?Ce)Gn+|&DT^1%E|86LP>WO%_cYdb z?X+5m@@htiEBB(3a()|@&l3%Vl1F8TfPb0juZre~+>(IYoovsntQzDWJ)9ZBPP`Lh zfkE=wNjJV_JxDrott0J!6l5_3iZQtA7JprUU(}=yO9fJ%4e&$g@PDTgIwwi521(Fe zgd-#Ux`jyllmbow9bO^%)I_d7*eJ!j%QUN>E*bLbOqI=4Hihl2fI~1drVYNDawpcrZyD$D6Bw!m4TS(7asI_fp?1*j!SSui0~AUwr-2M-x(*Yss{A|#Qek*Xj^6u|JZOb;#R$5XSNL*_(LKoB7^CtGl1>fx4#7C*RuO@%+Obq~@h_YILzG?t)a zPn;xwIKgL#?&WD05uVp(izi`bO6mWmSs5Mol{LKJyni5!RvMO?Gg?~k?DC>Qk%)D~ zw>!PE!K8j*pInzl-~7Y$AkMm1NX5OK;3O(M1Onw7hO>U}UBzCrMVGP@UfqG^?`JpU z*TItMF)=uQK(z7>Rd2Q=j#XI#6R`6pD-OQjk%L2Jz@#Dm>-cIHP{jOe4oO?Kq*UB8 zjEGp}Z&tN7fh{T0;7k_v)%9Wylhf#3hZvX;w?G3~WM=jCsFLN&7@n8k>aDSF3({`i zv8*`tl-CU>(N@tp1fZBsw~^rGQx$iE-vsU;*^EwqGa$%VD$S+ODd@gO{a{5msxX-F zl{sx#VbPp%9G73O`D2B=3;qi1&D=c;(iodJQdT7awoT0J@muke>zFVj zn+qp>PvoeuRq2&9iZ>=|tN`qgkKHM~y8;gZlZEQNFf!0(3yw&Wv9d1xPy;!r=-ZI> zDNd4qtWVe+QSIMwF*dIEy6^gB1D(I=HM?HyO_$Du^b>*dCj`9r3EYGq#Gn$5DI2G4 z0oun_bv8DEojV#t$X+NpkxBw2r-p86;hCMo?Bm}Q72jmlRehutw!iFbAib#j){ExQ zYrfi4`nJ@91J=ygAD#QeEMDLYcW4)s|H#vS9y(olv^T%Ja>hEPD)4#KTm1ARLsv-a zxFgpBoYx1S4S^twboD8L4p7(`fxwwsdfNy|58T`f`7NWx$WhM`$#MS)WRLb>kVp^R z{Yv3WnW2Rw6M5L?OGz(O8lLN1-FfrIh?e4}ItOZW-}RvkVgr z%czzjFSUb$^_02KJ5z{AnL4~W2pz%ntAj;UZV~&#)4$T=29V@M;Bsa^wg{`#V(+TZV z4q7uHpqVrUZ4QupgE8o2HnD~9J?xpp zq7SRPjH0w=oS#SCd(&aIN+py{073kWfl6y%mVvr`tzFj5I<1i-lN1}U)mEB?x}`VU z@@3riS+_tNaXZ^LopvjxtZXBxrE2U^$b_1QfEy>69q&u_lJP@47vYzGH+%|*@;)b% zj+swzf9*~(hv*jxV*hIoQbisD5*zAY`;!h?4QfNwm(q=p06+me06+jB|9iU4&h*}{oc#==?A!omz7zbwu(Ep>==`(bH^5!`z8~VStT>r}wgZ zzX+&^e+z#Sw*V$sD)#x4r(gg8w7W3(6SG0$Epo;W z03b;O;UkPiv;;^LC(a?!4&vhjsJZ0CsHq*4r=jp zNfapnK=_Nqg#J%S(!p6y$>mQRkt1<~>F0hb#{vM@e{lqH{^>|Oj~$Q$(A>mU!@=3a zR?*?F!Q^76XyOci0=oYRPi{FdWvkRMWZ<1C&_ zu1Np@%3ny>pns6E_O2EnCyT%T{u7VbXO>!9R%) z%fr+K{0;z&Q$qj{eu)pRg8ol4F7xgzm5J4`i~X&|4r-n#+Q|Q?*133ziWwc|DC2{ z0y43)aDLA5Khc67nj(gepGU431OVk1O)2pw?N34zw#y<#KQ|iz900)hOK8^+Sb(N8 z&=%+nwD@ZgG_e)sU=!5<+FAVdtnOiNW({(%2YOn6fd0gdqiW=g`L|2=i~BD8XIC9) z=VJR;?f!qDy*7OZV$UUb!~g*LFK9sI�=(pG42f9T^jOE+K!8{_6;(i2FIZvihIJ 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

$jE@wfwdcqh^>Yya(-VBxR-QvjMzAEGUh?w}aS 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 z z>x5=0n<9pB4gA>8=dy|xht3#hjftk64HlGCIYK06zFu&@&(CVgpk=A-X;Lqp6Rj3W zl`FHMz>sppUjmL$4jdrUic=;fs4<<95A&OMuQ-pQ+=-Wsj^$>}yj+{E zfac{zvr`(o(#1!3R71A9j8-wcs}6s?>_c_OSef~Rv%CXKtdRYiGK)le@N_pNrImH% znX&>Fq>UKy;S=x7sZEdFgK63YF;Tqr2X}s->9JttHN^8%EkRDN1{PT1Djvw?FEv6}nL>11xoBOm#d|$`AwQ-1SNiSH&sWea4W5gU zbP2)VpQspjhW9Q`TVYJThibm?GBNrF;C`_0?b&)&gU(*`tqv^mXoAZ<8tv;s!G5NW zsNCmZeh0Bf0s?BU{gFS;OB8>hpBJo_R1Urh^!I5b$l8R^H_a0ED?|aUAgX3vDZW5J z-gJE%upnl1!BrYh7UVs6MX1YJ@!uiOr~8%%o_{V>$5B+XdpuVtrm!JZ&)Jf}G+9Ob z_Eqqn7e2PFSQ=-^;1vgn^eU4yCS#L4TwUB8QBvDoJlJAF?YOFZv^o$9LxT}u~*Fo`|0$58ETGJr-6kirO|6s-@O z)JI_3(miBo_1lSt;23*&?7mK-?MvgdZ)vti=E~Iivqyt~Ld)l;yGBB5U8<9TT_@?z zW5AMoEI@{+f7&LOK4pKZ(TKT!cNVO5CRmd(2dE~H;?3kwI%WJxC-S}|e@OXwwT#;( zcY0J?mFm=EChWNyOCWE5JNz9<#Qsgqxt?1+<+(0k@2c0seeJb(aF z&OW_eZGhEqg#tUs^k;mpdDtiU*wvqaN@+L*?^hU0B8lHzp?7~2Cs~E5)A;+8FTEyu zgmy30G2TTdUf(U9uRE+GYs~ht1gjFUZJ_5j5Hn23tv~rR#UAHf&Ttb8vO{;~vlZmD z<=Gg2b=sr%X>{ziTq)j*+x8QNK<#fnwQjz=M=XdK7lx;#C-RV3Wyn0ZNcfU(9Ykx= zUzen_JHO1ij_-exzuIUV!3z4u5GYOI-K)%imoTcgOOEh=-4gtbrzAd8QGT$0Lg+uo z(*rCJ5XQg7lZJt#{hx8Q@qZOjs#%U7H8m zd2n^JkTZXEAF!p4afTsvqDJ)O8+NIG|_vm=vd~E`b=xl$32hYKF1H!Mxtn zJLTj;+@itOiY{&z^h0=2)QK{K^Eox==^1B+1)D|#LObn(O#_>JTyXv0Nf8PGaiD&; zah!kQZX7`Iyloe6Vqi=HH`u^4Nw;zAFM3B;WmcXzxh&I2btib~M5gd>o}SgKEHg-M zZsEb6o_*Q(F}EcC@Lgh-&k{f#44K5U(a$G{RbFs+jMosMg)}DSY&Dnj*-?@SJapKQ z??J{?H{S4G{=99mOv}7>a{jdJM3dJJI6Qy03ws4ta^@;ct*XYHp8>wtFR^h_H=UZyjNr-Oo+{5-E=m>5BTUNNP0)j#Uj5nUN!qQVE z&)Fv?A@)8_qIfvn=25%dkADr@FH>s!z(N1v^q--HLH(%`{y)&v94(wp{;OfS>b6}L zBa+`AY5h)mniUX6eD?+Mwu>EQ(i?xmWtMTQSO@6VrrGho>vl5)#8%2xmT8fD9vph= zc5{-}ms@D(LN7Eav5jU6upHWzE8;z({kFWxjJ&_+Eob3=C;m<&kIhXRt*&9%bU>_! zjr2N0iTkeFgxvL7-NIBFUT7XD6pHK~?-H#xqO7!PlR0AHEq=CTlB|d+?M8pSXhU@L z$s}sWoY8ir#glhTi7JY0R6#mg&ZfEjfVGQ0e&4g3$fvq>j?zsp5MtM+Y|)_x;^m#8 z%v9@FhdPaT)SK+@xYeIf=+aIrB3e20ZTl5(B)`&_YD)N`F3t=KZ=FWKB}Udbhe~Ip zO*$H5)9EI0pjC&VFXJh20n2|ch*wi2$rc`4bI!Kp^v>NBr-xM%HP@uiS+MOPBWu=- zYWDnf>et;i7t&t8?MK1rJXzFSpoq0xgozk$z*BwmY8J4o*>k>-l}>hE^9X}3{n9#R z2wT3K!n`HjB1wMofPHsbYo`!U1e2Gh{mpKw{wNY5Hm(K;tp|bdqnq27r zNkNxbn6!L=?09S5`yGE#bQ82=tBQ5ogy2J_p)TyHdylzw9-;?TG{1WRABE%iO2L4M64hjAKd(hSz(nHyc3U8P07hV0;1V)ENLSNwnvyXqlKBP^H>W^ z9Vovy?2DU~k*seB?lCTH8vsk!lPh+rkB^eUcYC^zfABU*4+j`{=x9SXM*$pVe)rk zOW4}Z$m+kNviqk~Lh}8GifV;ywjLOg#Hz(6YEoszV$*0cN57S!Su9bL-{*|&fWD}* z3O3a4E5~k5@6CUuv1@w;O_OQmu_Ec36Q!6mt?`U##@-FP-WZl%X``!7VeE-#hJGFw z>baLo%zWaVV}*gr-q1V;W9fIZZSi&qMp3k3RJ2ztL5O*B_X-ylm+jh%Y`Gs(1jwbm=d$X2({+J)!J#k`h%{ z@L#~(FJ*sel{Vv~*>E=f?O=mqKc-LKZ!3oKjyXgi*dv%euMTN3g~)b<1idsm=S5hf z{PZ<7!taM))yNShn=cok;7E24+O?$3(%ihMF)S$H#y7n6-b(XfM7q{}y|^cWN$O0@ z8YfUB#zdZ;9T_x_4+&xH&xbDp_7PN%sqc;aRYZUHWft=JD0(yCRQLscgz$L77;3cG z9(M@+zFOq92i})LQ1}|l8hH7`$Pf9C6B$H)r*@v*+8w5;pf)?TX*N$nPs(HH`4F^B zG>vJRbUmtEmF}8j#GjCH2uePB>-h3dDk|LfTt0G*oZcTowQ|ph@3DM&3mK;o# zE^7)kgOg)%y24*qk{3z4dg3?(mngn~JHpIeZXrqX^a<9<1hiXQLdW&yQ_%bUZU4D& zccY`2(gJ>X;>SV3JT*x+IG>4YnnkfxTOof!ES|5$R=cl%t%bzE)@Akn|2h#w1p=b| zHzzU{wiY%nHj*ZeR?3bBmL^8dc8(t6CblMyf2W53t7`))kgWymN@>2?+=fk>h7nym5)1pb;105 zhUQr-lD57KEeYaCf~;6XOpi#xW0PZ@?53R8&+J(-z1S}yvhUGI3t{ya^oKU3_hCwS zXXdQuop#-4q@qqKCJAYn?T_*n&Ub%=BscU?W{5KAt4Srf7g0~tLG+Gv55y81vW&Ue z!;@n)0G(k?{3d`B<=80R2dNX0S%&6;i8W-+!S!r``Ur~&zD}1Z-+SYr4djoyc?aDY z*zWKyQR}9So&sJFJGGt=eKr_L;v3YZc{FbkMxnfHLapf#)+hQGAu$2><1uS+V7A}y1yfbIyqpe0 z{oZ%SJBY4bq{T3+csPMg3!;~7I;%`zq>t(kix*EC^vfvsU_h}tM?jIbFnMXcfnNz% z$X1$TZrjm9^!fEuep6r69>IS{t@PtDfvE)+ti!p+grRAlx6AP6pK?O9NNC6QpQiUa zo#m~4%VCVJMFM@F$ED z&wBHmaD%mTG&b6u;Bmp+=%e7l>c?A>fU+$-L@@>ONz+VKtSjILBj{_%{GvKh9Q;(5 zeRBH}bMlivt)-Ik^>Ggp8%><%j2c1mNf8_t?OaQ?C&l1zz&f3_- zQ9w}OzZ=Z${w;qo|5v}MNd+P7A53Y?-*iQl^n1=?mh?}BY5z}!xeoj-vs|l5S`&5H zjW4$I;aLZv)Xq&bwnbW1I~m!PHWHa8jd$TRX=kz`ju1P2 zlFrOzr&6peR%lCmq}d`|3C}Evc4VS~G8NUedN8I(SC>_5aSb|-9x*#-+fOYelbPR;mPGHmZ^MvU%2%sggei7SNJQp}g3d z8`oJ4EWT%*J9#fda~RKM?Hi2D_dU&LgT*D9m!SUSOLw=yl7Dvag0eC8^)U(D{lG7$ zvE&=A{!vergj$TI&9uHgO@Bg2e2EWw&0_=oj0S&dEC&qbGlCDDdyE)vXTedfTA|vE z?3;E#$RX{H@BM( zH^gsk-|ssD<{_(1Bwz4}5DQp5cP^1&r)NMe{`*rP%g`A-GBcQeXx~zKlBRz<@`fjd z?~H%mbi%M$MbvZM11>az&6`?%j%9}3B)1_SdI_0AT zyPxQx`>D6T&OMa97^2Sm-h0bky(eKujD&yLJ+^oT-@bRhq8{W;iSx$k@P-EE*LjjW zRO3FW9NO!W1T$12KT_?-1MFYUcX5Q6RhhAAQVA6XxIHq$JA`iHrF6pN^Eix-z))v% z;Cvpph4R=GtFhm(c27F|=I9u(h>+lPJI(6!KL4fa-EC#}4&)y@|5?>F3J?(5zo~yR zadfnEbo%dl)NQ9M4y3+ayI)_BDP5#27=%drJR{wm?K??!rHE&b8CZhO`-2oe9qw1% z$oLEcvqCHC)HaP&J9Td)-xt%;ZV)vhe@iEKje*9TmWHbLP!Z=+1pGex&A_v|QLObAWgBWYn1vPeh_b2p1Nk5lC> z7iFa$^-D#21Fuv}g(Yr5o)+lV0M)NfSa6&*02Rm50fKL0WpY-s-5p!9U{-(Es1Ie! zeyCa;wccvp;m-aJu%uQ5Bg3JPaX@NF%3hciGs}KWE_=MRsh~psCp?#?SCh{Ir)JjG zqKI6Xc#Bz9B~tn@6YGX7R#iztbt-byZ6aJTxVCUHa*jq!eekK;sBF1w&b|OC*pj zl7GAru0VbV%V6xa0H^ditBKOLeJ6T|>-d1}m7b(@R=95la>jeQgrM)EEVpr}xz%ss zNCMbj22V1_#Q;O~E7O7;+F`BNC0 zo!$BLXuX*F*ML3!jtn zUhjV`8lO6&bDDpH{^RvOOSVV+pZ%kMPyoIgne_0;eZ4&+|k14MB89f&z`* zWYNkto31L8$ZHmBx3S8qTgDk*&HX+RzAU#)b&5>2vM6ymIDhrMBM~Mo%A^*i%!Md> zgjXCIlHO-Tn(!gswLZv^_Wdar>obd*qo+;6v7NARjIn>k(u8Ih;CY5{cU#mHt9Pqp z!gY=c{Ymik!MaaG!x>^UqTfHCJg=&G#m_wQ+G{t%Y%k*P$WvaIYX!Kz#k?K2x^ra| ziIiG|JEg!z!xSy2K;4Oco370yuNakZz?OPs4ne9%X^%W)gL*@4G)F!-IALBWJOmVw z{%`<}D>i?b(4fXNMqZb#>e@7tk1{8pcFCy2p8b9L0|#j08{V;Kp){=&E0o#fB&+XBt!twn!xie;nXCMOhr80TYjde0T+%~OYX z^2`>&wx1?6Df;>vJDAx!Iw;ndz=}jbMki|leK~@0aM{3P`x}*3RV&bW!c17M*zV20 zW5}8e<+1JLAOsPulL+4@p=d8t!wL3QxQgXGu%O2AT4!VS$w)uCxZjRNqJZofv?Uo55lO`w$b0@qf1nKyHi+cD{4B?EK*!%k@!Qkzz_2A@l^E2_uzj-5iTqOAGg4@9^G7Ou$PN zN|(<0mYF24^a$eZje6Omd!|~!p=Dx;K4H{PgQz~e1V%1h!Th-4v-MgvR7t*@SVbdih z)5fOIe(xw9^hVe}T8_;lR8>f&ftFYr50gY;YC;6VBDgolkBEpbBf3f@a)o(54cTcP@Q9#8 zh}&#LMKa`3Rbe1!_8ga+c6Y|vh3!)fP?#n}jFnB)bt1tG4eqYXY!WQ8kv6mnlW;;q zl4vH0)%c^=^`$o=EsS|M4m0~X?fkayNr#s z1{Kh#IVj9bqmHx3w<2S|`Qv}Il`ih@6i_0RUkF=fXcv`7c&V*Y$LX*AjG7_ow8-#R zT@c~il>qTyM* z<>8PY*5znp)rY!L8)F<)-mxNNHl$hNd!_X1~f8N4;sMj8~1+_i|E)^dY)P7 zFmNId2cZL@TjXN}U4y+evYFJsht7Qa#T&G5D^$f*rBVlPrQWpC_B_DoO@_5GJvP(a ziHCjGo`5g^NDF#+k2vbzKo2I5-L(6Sk8z_FBHIf%-&$&q5*qtSgXK~u0HG-<$o1Ln zKA(=W^?xu8taCE$=-H@P9)g(WY>A5$-QmGGw z)G1$xVhMg1kAq;GKGtT3@00CjpVqp1YfD=r$Ufr!e2CY@wX=UCbui6i#sM`*aa(Jg zIVwkl?;4J?1h?l|!&GwD@@Kz=@q6fxfb9?}FvI^cmHT>>#;Br*H`9GKW)){*p|EE> zRrT+qvQW!s zdfFMp$Dq=Vbjp9)GcyGubi#}oEMRt9=XU>ln&B_gEYwQdzf3*zsO!J54mi%xM=PsRNC`O zR>0r;{5#wplkat_Z<@m1DDk3li3CyjY{ z>)1eTnkFud$(520DHdccH|ya8tFdWFQzC*Mk-Y=orVsORK7pn!*cBh$z0GiX<`j{8 zvrdI^}m)kA+xOFYs>WL$zp$F1nyK$Ob)LPFK3 zynYRE^?q>6V=nn3Xec=9oQVIZ2>xYR)>@_L??1rgEJ!Zj;5f1A8H;L7UQi?08u%b7E%m7H!jF{tUufx z=u?08B{!f4GoJ?pVjk8{HC)LD4H&8`R&A-VY(Ch~czv?+X=;RS`mihKa728Xqg zBo@zW@kk*!_EnLxRol$x1>KnD4%Jl~{C)R4_k*t+^ggX&#W+KyF!)KFtf67?`vLOr zVe{T4#F83Vl`H9uYZQcB_8lW*!&wg<=T?8VD0L7un@H#&E568#ZZ`^eQjoZ6G`qHq zKBM>`L`W-FI!OWJ^Ka}74+Myaah%n;oJI5Q98VcG#q;)-@Um5*FD@!U>txpV{JGK( zUgAIct!kO4ok*?R^{SlK*-k<4%SWN$p`(y-}>xlK`PsSy1RcZ z3o!42$rh}jW;`YJ(VG5Ay^IFIh6Fn?Kc+ zIuJ0FDl{Up1S1h}zKl3>AkcpyVc*N%K#W5EJJ#>;{21GrS?$ZHgtEp7Ug3o>?`|Zw zeo~Hp9iAp4m#ulsU$&k@I#AX1Sabu%3^hN0D`>tqVrA=obT7=5d*!A+U5%upif+RU zKJ8pLiTV52d?q`)8cKcoq7OI^l)B=pv1qy?NX%$l<1zY# z5h{pKfO+@|Nk*e!)&u`Ax@^{ew{mw7VUxc{AJ<9LsB>aJ=YlXx4T15Yx2$glz01Fq z_S;MN$28e$$Ud1ON-cktMrDt%odVD*S^<**v|(B!WqJtH+pmH+oSGF}9n9yL8X{*B zO<5?gpe*yRw`IA%ExkY&&M*MvpZ5HpTYBuDZUq0|*DDO1jm(uS%xn#;l`K3>{@eMK zzuiUOF2$AK?LwOBK)-7b6tQzw3$M#Ulgr;DPL{0r(vA2wdVPP*lH?WT)s$7yk@(&@ zt}ov?%~-hfFgP=vG@>e_X)RG*dFB>`{8(}^X4)++Kt&4) zscj#tMgN#+gbXPA?$nP-P-S9_EFzCZOt2;B-w<1ERZ=?W>sPP720L17ykZs{&*yF{ z9XhF<%-#uSffax1^HB30--Hs~17E{L#SwN{Qk9*jq4wV0aS_3RMa2?Zi`I-Y{g#uV zic|w9fS)g-EI|d3F`Vf3*h>Sv-WHg5M1Dkysl*f0yr{A@&8fWTPP|kTu{vYsG(#BT0Ng6Fo1A#a4fV7|2Q|=+>#mc7m!RF|~-s zHBI_OJ;0E^quJVfstsOtZF=EZ7T!0os-sUTxY zPA>YP(U0OhIDM53U1NH}7&2Lil77{bWda;(En^e946zk#QxvEU$$!r3Qo!D(E{s>J zEa;SeUZ;O1c(wrRMF+w*>0Q;Z!|*4{buQcoiSb?!Pmn!J{&=WFn( zf*=72rAc(X%0Km8H{HF33U&5K$e6*0U?hi~b8}mei^2lJvW+cU2<-}a)UR(xI}BaZ z39&x?lhU&*Pc{c{L|d*?zXP~ue}-cFUn$>bPI9gZ+e6})-?`;FLO(O|om*kX1tH=G zy5WD^#uU>W#LR7c_Cbn6?)a$eY3M`7UhqMGASR?Ze4(8OA-Ke337R--7HHMjl&Ic> z`Pgf(K^iz2c8guU_}U}AO`YMVyjh#R{Xnp2y#W8UgXY{hqF=Y&m+O+|_qv_`_wcZ| z(Vt&kgB*usY4r!tm69(}+T_cHVmHVn(T0Bq23!J51Rd6=?x$%ne6z;ik584nvo3gp z=|%gQAk1#r-9LU$|7#@X;x3RT3Hp!C|E$)59vBGz|E>1FLE7|wlK3c)iU-vrsWF{b z5U>mk#@bpnn%@ioazN0u@=dPyC31QC7wziGN;IkkHUc5<7T)L$?{l{FQSXr?-~C73J-9>i14ZhXt14J`}Jo7 z3&R%gH)VeBCziY8fXC0x1~M~zFr={MJM;YGfrCXvFIKChZ9lW zpARkfY6r+X9)7a}yq)My@h2_a(E7>l0eCKUdjL;%yZoqufceBDy`|@S{;cQohd5w> zPxkX|FX9J(e-pzt;MMQL=n;Q#e`Eehu*a_p(EbeoI@SvZ*kJhrE}s1c;z_?~?sw;f zzfi-+df7?8FrTjOXCYp9A*t>Gl*MBJ|E8DG3jhMuBLFKO05yS0bIb1!3V8kMWg?6K z@Q_4zZ$8cV>+b^Qg>GEG4j};!{r~_Z(VgCx-^s1t&;=leG0|u93)6pjepRdIWAw={ z+vRDq3-=We!S&cnSOvJ*yk&pszUUP^&Fe0IZ<_)H`AU4$`DLVfPp6TTt(=9d#kP8W zJiou4>>XtpGBEW1=)NK#{B)Wbvq(8;6U7{)nI~MPx zUAv>7q}(VNblVY+$?tz}Hc&SKPvjv;3rP9qE1=N@-Bctg7~-pt-s7jCtvamCia{I_ zv%K8b8UiaSj#SK-GG>}GmL#@~-Jpw6H)0dA;D+`N0*`XMHv7%sE3d@Co!mcLlxhC9 z5)A>3qM2kae7IEV!}Nbd7W`(KTNCGni5Tsh_cY{ikO_6r09Zh$zrS678pjm9^fGzx z{zkCd%m}s2%q*=TS;?O!MOpuFqB|O?(LJvro*CLhXKN;KA^C+{>l#2gMQy*Jf2Z<8 zN#~}atfo&lgUiD(P?8ujSCZ^W?9=^MAie`(IAA{7(WiHx_QzOK2b&(FBvkH{UrEf&oXw^)%Sy`P?5J*E ze~@=5uTh8dT<1@9R^?bc@(mjOMyRZDflgQ1u&(M}gE;mu+m(M(wosqIZ9&+4>Tb4~ zpn*zCl-n3C4R>RIV3&=z^%0)YVO=lDSnL{FJ<>L2y zq?B@I9VuN?$QmeMxZVq2WjiDgQY(Cj+a|-DH~Y$WHIF(Qm$3`Gqy3{BMrmDk5W;HT zSp;I}8h2oT+Yltu>X~vRf$UhR;suq$Y<(_~vW+$7MQ;m#^Spcg4Soxo#QAX-Mbt%* zDgbwh_5L7FGSftgziA&uoX@UrV`(H`SRI4g~h7EoB=B% z)2P-eG;GPRCc6-_XcInOhqJ?e1s@Z47quk>s$P2qFb!Jt$ z?zP=3S`X)cZ}4SyT@vknZM;j-1azg6LQMh2Y#(GJ{C!q0J2I(*ST^b~5ju2^Xp#@b zxG6}4Tb7CXsSi`>(!zTY61qA%BG%RFeX`Lsmqk{;aM7*+_4dSXYw+N$vq)nT&%+s< zfFp|0d85^z%1J$=hSPnVnzf=ob!;Ctoq!TpA+x)GlxMlB%LTlAq*e2kzN_WYcHT-*@N&RN5`pJGs3_REVP_A*2~cvvW??mTrry6m&H zIzU!`o4^DLCQ;_q6Vwc37xs;5Ut$#k`P{+cUG)u2vnXwh_{RnpK*p#&EH$KF65&9+ zeRF%=2w*gaJ+nS@1Nyw+ELE!4Om%zxpM%nqu0ACLB(HMv-r)vzck z1`%kHQTyo$l8?HIp2>+hzPV6^8$?deLt}-j`-<<|R>Dsu{2>DRi{^51m1#&=F-D`K zeBKAF2>yF7f{x;9&Z-X;!4Bb(sirl!=&V9Sx*|N!O#8?Ws&GjmAc8<^69JMzv7+67 z`lr+99oM9(-y$r>hmln!=&E{U`lO+A0VZq_NmK;Vy{cKHE@*mtzIyg*pT9L3qtUrN zcMlgjQ$S-K*EF{*2YzmqC0&pdwRwExFW~Bz=WO$odM<6j z^61ACQQqXc+629{EAUk+=a*a&(icj922}7b+i4h#4j*iHEMae17$6z=VLp|%neApX z&Qd^rtvwgrz)R&q#bCH2^7)V8y{laOLcryIiPr`9@pm`=0o61^SadXm72X}vuJx^(3M@+vXU5M%1rQoz2BRo^R87Ty56L#i z0XiixPu!W|%F!W^N=wMdOo-ayx6fz(qed^HMes9wjt&_;yU-`dyS6s%L_PJ*5=U`{ z>AABVO_*j}{aTAH`fi2zYovQ2M|h!u0u}u6jXMYQeT(z~)*y`_|6mNsL+A%@GqeRT z@7;Vp*8mTWg#n8`44;ewFMaQS8vD1}*V7O6`}62GC(zp8mI(drP1kPFr0ll{H3g9n znQH^|imRv~_0jcn0R}Kmzsc1mqeQ_;q*8N(bBscGHv zsfd*zIXfcVkm0OLONYOGSLxKy180ktvz}RV-j4$&Wf~8pW@VQoS`9vb<|B!Kw@I%s z?cg*AX%)$>SoLwUBMyeR+#Ce$z!)nAs@7TFXD-y+q2CP$U}5pM3s2?v0n^n4^B6B0L!5?R)$r~cex9;X_2mE<-<6u zab+;iB4np+@8y4-733f15u=Y(uXypTjm{M=2!!#bb`goZj&DkTPSlQ!JCAK7AKTgN z6OWi^!D^@uOa6p+4xZzdS$|1^xIXSuQr%!Xj!&@B= zwu`?zZp)FFY}Sbphl_AJ9UWgF5u?SG#eKjhr>cwWf1r_n7v7{T?1{w6pt21(4_Yf} zJ1E@wz9=7T8wSZZ*{}>v80&i~L$$lnfjjh9Qo`)F=q>IW#;9GoAaUl7sXNXRqUZpc zA%|u)iwyD~4`b$u`MA}VB~HIJ_07RmI|XHpPnJc|vMy^XA{ak)?QbOTJ`>I8P|%X; z`+LrDfq_+j>l`>Utp0+t?+d>pfJ@f&o|v(Y(w+}MI#=~tx>U?E9Ml4J zOhV&ZMoE99(c(s9tXz?Abx9QOvZxOH31L$O9aK6aOXu$~SS-db(J;Vs({PFg;p6$_ z-5iU0400x+nG|!64_}U2jNRw9W=xWlhD#^n)PIzJ5;DO^vgha@_+_c}s~eiCM!}rP{@&mKbm-&=q#QCdYTSp5-#GCCYS|QYCzFo5CG|l$7dAFv}##q z8f8naswK7sX4F}ZC0>MhHf<>GcRerP#W2&xJR?_|+H+Kl8h#`^D~6PaugdFO;~a4| z-{B2^&~H({0~B(YoA_{1#I`afT&eMk0pV1^%WG(uwA!x)7j}a< zmM1T%#jOrR8VrrLq77kUkMd!{#wTpv%Jk=dE%}7(VHrTYjO)VpWV@PU{n&xXU}0w0lhT%vEb)H>KGNsB z3DYx*p^vokY>@HBR5l>R<=DQyet0#$#tKVx;c^)g04cAWv*qifs7k!;+tQG>Jd&D! zvSQ?Kdj+ov0+}8Xx-`|_sY$i}f}X0WEW|<)-K@CWOjM4}{Pic}k2@;Z%sqM*ni7Qwwx zxnsLq;l0!9Rb7Zq?Uc(NeplbX2hV=N+EIxcam9EE@s5Gy@gWBm3s%rVU`>`&CQAPj zqvzsGG7OTI-8vPl2hD*43!~QFi~@!hB}x)Xo$;ymRix+ zySL>QCU65fOOP-gN$364*yLhcP<<^oAbF6;DfBDS^xk*c)yEZ!pF*X`k^Dpsr4i%1 zy;RiX1JOXU`KgG?W@I^ha8AHmz%UA!bE0pmy0g*VZ+I3W$OS>rW z;O-Q6cQ2*5x42tr@c^MfAh@)6aVrkR-QC@-xEG2PcXzw&bH49}PYpdOdt$N}$c`EGP8q4d7Wo z4`kAz2hU$-k-HZf+^WgjYP927Cn*+L!fTiWx<~1Z(q3jU5(g5S`R+6^+{hxgr_#rK z{)U?nDu((tCqJ1UJf?o>by-6^e>D4DuAwabEmQf?TBdgfQJq!OcV7dZj;-$qmp<=9 zlS1zH_Vs@B$D>GkYvM5%+NyLhCrMUhlK^bt6H0)L(WiTPmdN|O8LzK=zmc*uG&vF~ z*Wg@OW*F7g6O`L;;SHTZM!t3_q@TAd>nd1w=Uts`3c!uT9Z254WgyoeMe1}?PPb)qpIX}Zg5@z>-ACeqceDUEC zOSGjVsy0w5@!Jexb_}=eMOB2gh0y9a2j$&|P=c+%wxM2Re-Wk$lQFai3214DDq^=E za&ZwSB5y)dBm$nU%Xdd?!-q@34sO->nB`QR;AEQ*AX?z@RonPR8R>ucfmMg z9pOIh7Z{^1a}EhnHeR%E+}fAIw0YE?54N_+FsHIPoOsoka*b6He;K&t5`->p$e#(% z<*P{XeduNg`wVxq#}b^ zKx}GI5IrYO&^vuFe@8-!={rOs3B8BxU}0H>HSPFR?~p7ni_QiTjJdj%Nl=M_(JPHz ze`j{2o0?Z^GQwUc3@!2-3!V6SQ!QLglBn+uj+*{cbzVn2W5y$e_=WLlUu?6J53lJH zCW)Qte7ljzOG@cwit-Z(IrGJM8Md(~64o6P>Lf#3`|ddtmr29TPsFKGaAuBoqBPY$ ztYLWwH40L*6T@ZsY~pe`)j0ER*SWHRg(6$}tQFg@e_}9oBM60X8t`6EZYF6CXR$-M z$jzhm*T~w#c6oP$zJe5g?2JuUL$Cu&SGA&sCS)8E-jyXvPz1Ec6AGfX@FsV66Wh*- zBYH37nPMD|JK3K(`2@p>3qvF8C&H7CoQ4fZz6#_RP(+7!9;VViGKgm2rvLEn**SWPMl^lUtj$M=ee=$}c3IDkWZngh?DO!69^Y1Q;T*ND#I?)#95H z!vJeHF#_z4hQ_^_H$P7#qm0MFlgG5o4jE7{gy;v)aE1L8&vH_d9OV?RG^wzwilleT z7-re(O9Yjf7?<4M|Ma~JjRBsN25=;@^EZ*ne}^Q6JHNXca@b#CBkYgfO6#&0e-M0t>9kmPGO8^17%9ED+P?MKUDax(W!f+j zO~Lm4lGL~{DtHiXAgrJnd(S(ifYJoC+0e-7i+ z#8tB|+4n9;r~Lu@ zR*3y(vX1qO71_%%fQxWW(%K6_?9q7uQ;Tnh6O{~_H9G>Zi{Nz|hBrG151YE%)$LUR zJ~y1>`gICvhLEYDIm1u`K7NWqGdWr(W`F(ZeuOJYq!IrQ=Nf0x}E-YYj&e@nDXK3;+;c}D&ffC?|y&BMivM+pD9e=eGY zld+_?#;P@F#!)cHQj{Y1cwf}nBzO-SIi+_0rDv+$)%({w1nx>!bZ@cf10$uLkLm%Wn&-s z$FOstW_J*?-1TEZ_}8LT^*k?PPF1@Dv!JjkgftWA7Z^R9gM>VOHS4g*UzIf1m!ZL_ zI0y=O!d$f!C_pXouuEI2f?Psh^OjKZ%iFPe+Xa(d+^~wZ+YQN7vZMytBSjjTxZ^Gh zcui{>cug!GEIJGAe>#MCt;wIJ?sq^?CiHMliPn~rFgjQKUc2Z?$b2C+g$*J>t0Oaa z9g?Bd3N?tYPVRNkS{vAiK9nqRlPD(0gPx)X}m;&qI-=Qv9OR$Sy8 zI{v6p;33wHLQB=!OQTO|)@f}S^}NceHK!{y-Z10zHf02K=JKVnyEWb>`o0OI; z%!yY$?<_)Zw4%8!P95tt zWk|C@&>Puqe=bFNc<15}pb^wd9glQ>kIVgg3&*)8BgnU(9|D#AY_;zc}}<$3I-`?RD^ii~_WH@>=w@uDpUF+mtJQ%R#-W!O?Z(z9 z{O{`-e@C!2BKsdgH#Fh(YU_y>=vjA@n=GMoWqTx(?UT1EmknDQ(sL+&1IlHQh zKx+kqi;JlkoW;oXCg&6>F}CT^@?POn0ag)$iOOVuMOC>u`Pu0?Ix zD3(5UY&qUov#nPj?y)wxq2b_HjzNnCDU!a~f6s~7k+XpzauXi~Mbt0=l{{pERQSx! z57ebU<;fQ_VY%`5%vk<9W7Cw>j{3<77?PwA6X&sfyv~C1$l8%H=Nfkoz^MR}-5Rdq0YC}i;{I|ZjcNCBAUI6m;K2mob=VaUOGC%Ta*WUOu ze^(8JRNC;MWiqD1uV=`5zzKQ6>)$viBV1829!+cvhw|3s1zI7GC#kRU48LC_d|llf zF~VRCwWZl!6FAxHCo$Q0aGZr&9^}&q;ABO=s7s+YDW$!Sr%-aOj%S_obL6CU)rNrS z-?+obT=t<pLYj$qRsXsbUW5e}wYFFE_{vsP;YUoa?4WRFL`-VtTN+0Ssk; zZcyfZsZD`x0UfjsU_(>o(eV5UJe^K|kf4>GC0k)8{q{xn22{nrOb}JmIn}~4NF=~P zerb{6o7C~5&R^b>0y%ms%Gu{GD-Un#+pN$Du4I$o_$`fM4G&#`VR-L~!1e4Gf8Ig| z*(fAU7{oBb2Ie=KX?QAo0|h{g?!k5$*IdWb{d#7;L0lhnOU#dtTl&DXxzr7h8#B9-+Pi)-gnDCXb082128kMKv#>(e=W~o=9 zZIR0%wVKh*(Q-drC;57b;ySS2bSq^C%lcZN&1^_m`2Q%@6bW|4@YY;KIwo_i?9V6i zX{8YqrPJJFXdOT5Iu$joHT^Z!?~by{hGL=_-T0oEoqiE7lcIZ-Fbd42f4xLqHKXW* zbU0;_8L}Y3uc~XzONbnj`AwXi;EM+O_qHl1JkJhsg2TmbH!8*nC5~d(bH=t$!v_bL zuBq5w1|&wc-xvm8-&fS-BB2NG@eg_dmOig3WNb7-Qb^ZtyuJMHje03=#xa>9+A$+T zbUZRN&H)xSvFv(CZg_Jwf0She$h-$5p&jmJM*x|Mn+(P>rOfQajKoJ zZW&07BG7bg8~HH}+@a_+*Zgt*2jOo{8r=ew59eD zOw!Kj*>~V8NlFpEe-S!LFMaVTMf+Y=GEtun)y_+Ky=M66FswKE_@$+)m|^OJ`RiyM zvr>rOF5sJm$aY*f^7i1}XDd=0GwEC2ksn`R=enXHXhGMjC=qlJFB(WAbD$PzeUc*Og;f43af5MG9c`|ljnP-N(k zR*LxcPbpkg0V0bG=V$S8t!(&p>sLr`IwB5Sa_D%sK31qA(N2-&nB+@_D(B)z^dCFa z4TNpI!oaY1IQ^9yn_J=(7=GPM3yz}~QyF?&s@Z%=Z`@B4BovJv#hc)=5u!rO{MF4G zf#cx2T*L@Ve@1@vdDA<#3@vLy-UtZtrI}A;-dysso?PgsbzPz?1v9D8k-*tOrFuG| z7fFT2Aaa$y>7SYU!=5#2DHP2v4`ieLk9B<-{!TR5W>nD~Fj)>M^~Va9x+!C`xK;AP zlVoP^&tqvox`aIj0BINo{sO3GY4HJ3XeH@1rsm-ef0z3O)te!Cl3q9!nR#%M^BOoQ zp$Ut)irREIH?Io*jr^dTfzW5gl8ko-lj~Uu!aa~8>echjRq>zFhAieDY-L*pMT(Fb zo9lLmWO~jMbBk2Tu#wX@(iW5s(UeVlX;g_|$=Fx-8x%iE7pePlQvy(LGwRARezly{ zZ@5(Ne?_|qx}Ew@75mgy7T3cC+2AZ$K3dRzO8~Hqtq)Fv^eSjw4wi1KGCS$NP(HL* z-Q?+GpBn1Lc{5kxwnZzXh45g!q){p9hT|1@z59~7Et8$_TrCXzSlYm)&$JzQUH=K6 zlu6u*G?q&p{{D3N-Qx9U-a_N}rPdM=kIpXef6<`_%wX#y>tOKup@-bOE6-~6jfR=W z!-ES{X6xfa?Q!o3L6t~^N9W`D=8;@>-lI-dU+OP?`n%ev%YsMsajJ$$_oI2?-MR72 zYVL`M2iWd*lAlfsllEUW zkyq?pmI^7&7(P(52jw1xmpmGqeolGZe+(BHXd2mc9;(!rc-+mqwd9M{f4sy$VfZ3K zafcCq2iN*QD)B(t?Q#8h5j?+P_}!!YcxoD0{Q%ivdt43AtpKt=KD0j0Ji;i;As`l$ zQh>XE0RXmaPyl5)7+72Y;?qOLuR;~@ub&W4000+20kE@_2N^*OAui$&u#+7Sf5PT$ zWvQW#20+jq&oub=)4>@900sNkpZ(Wm|HCe1p0DDeG*>i#r)WQvC9pv^%A_Z7HN@^$ z7tU*e>X@h>-f!O;iDMCYR}_D`*@tgSqEXF?&sr18Pqd}MHs|p?!1x&oe|9$GUoUYG zPj7i3Tu5|o8pAQO7Q3(b)Q^jLe<|n%l2?<}d7U3Figr$zuFtR4ddb`-bt4I1)ROsZ zO2^dMqmw_l+YZ)qZ(x8mBAJe7lZ*R2%wL8M*WKK0&#r9Dc+@W#nbdCz+N7_~3Kr>mu{J`qZCu|Urnq*RRw2isR@ zfvc;z`g1!eZg^pD&TQL-9`*53)#khL`%4RITHm!1u=i%h9L)))F{bWdlO=IrWO@5N z?XW6@W28&LStIKoH}tuge`3j!xM!47C-&EQ&8{3xQK(v@80CrjIK5g;$fjuBsmKH2 zxc38xSiC`6-T8VTIe$;GzYEH$E4uy0o6* z%Xw&1u0^{e!b_s|i^Ol+$wo&I$oZ-a6=7=pSD2IStwp9 z<#8Tu>YY!!@{b2uVGyF}K<;KvKgq^e8A}V&(jo-Im5b(ZBPQc!dRBPIWr{u9wSbq` z4rIJrgd{sliaAbZf4?%J!|cyrQV!wxF&8jt7hG^L!exN()+H9 zf>SG}6VXkS4DRXvmnGgzT!tUGHjzJOIgNOCeJ2u>o4rZ-0`i7*3%2|NMA#qMQY2I% zGDzGaNjx*_z%fMBsd31tp|NL#T4i}rhg;2S>4)9?2uCt+e~^jAUdO5vuVA$5t>1iF zQCLy21EEHDhAA^4W2Ae`IVl{jt;E-!K#0-9OH$eP=4ynnc>?Ig!~;R zSrL^`0|S^(-zE^;TD~!(tCJFI=2FGT7KhxLD?*Bbx8y2JWmrK@qOabuUQKL!wN$wd zeS4Qt$0z@@e@{JH^R$TQQUlx7`|ZBF{w38|*MW-?F8l8Ls`;%Cp21@l#9JS#xaoCy zKXGt3fyzw?SROw%TB1uATql2$dMz0`Gz}TvjZLJ@t;3L&e^+;MJ{D+s?lfW(64;r% zr5JRi5v=&wODl9h`$^nPD(!;QCbV(_Qr7=^wBe^t_#9az@(pRr6uN#E`AD+f(T zHJP-m>!@1N3|@BldaKO2Y_-Y4F9=yC=5q^gs%@OmR_&;00ha8x>moT%4+-snjCUR( zu(X4|4YBU9YWu!F+oYHJq{w`YjFjTMVB$yg6xES$XhY%4Yo@{SBN3zE(cWs8xy638 z(|gree( zWh)!CP@Q0W<~>q@W7S{f31MKz2MF}Mx_=Ckz{IA-+D8*!+bs& zV}WAMr>aFL${J@vV*Z(Ow$Sc>NW7JMR`KcTr#mTK(cY2PyKT(VFNyA!5}TiW6B@^~ z^vVfco0=AnP(%zIMzFkx+R~MGM zLkR(fOu)O{2bHFN`60<^(4Iu5Wu!**nnY61r>|pmdi*R(7UXlL^S$yg8dLyh8`p&} zz|67uHZ1$yDtGor`ZYy=0|(1Xdg1l9f7~(&C&N3}Pz!KW222m`IZfqcvUlZ*lyT|y zn@>Tma3-n;U?$K126fkGH4wTzp<+pXGztU+fLSw%izAq z@-8r2%BneTW~Tmo(`;X9s7tJ0tqAJc*KfbJB7!YtMhTW;RA1g+)lUs7`Z0H{ z*M5nb7|i}iCAY+hK6(K3C1Te+8o~In{|?Mt3R^tGObBa!$})ZBA5G2#Tn4q*-M8)VaS5ZfO+Apt55BHWgKo2=LsD!l&fLP= zH}19@<4%9p##Gb-RA+LcieFmD}#%J()jcUb`kuuy^o^MCH&@^C_acTyFPnjCIej z7|6t`@!x>=H#OrT27d9Ql)jo&_AATE`f1eiX-GLCHnVG?* z5lPigHj~SeWBW9y5CwN@pmu9%!ed9yudi;V(+P?U(t6zZSv^pMwTRP{{jzX^3;8*) zzCCZvsgUj^_Z|@fl06&Zao4>YLGsXQaAx4G9|g#MULTobD!u@5oCZT<7hi!lUvo!v zj2V|RR#MrFrq7Tyf5UA5K+-LU$Bpg41147KEMK+_FaBz$LO;?mEb2xe=Xi%ms9&4g_1}fJ+(&U zqeN$V;Q|%37y{PtFaI8_rOYfWZ32dzFNGx02AA5rTEhWo6fb4vy~4ayq&UCcskW#O z(P)K!3LEz~hN1{2;Rz6Q)R+&D1`a=G|)>xM@40Y8Ry(kh3|c( zO^GHi#T|7!e+yo7$d3Ck#M{z{901=Nv!14q*FWtXuoNs7=7ZDmTAQ&$Ueqxvf!yI- z)Se{K9r{8LkWPwnqJv;Xm96b<*Pnh zZ+^c7AE-gnnq!?FKVj-mPU4DJ@{End5}WS{EmvkEf5Abqhh+xXOu%4o687$|{KG+I zt;_n7`Ir(|i;57RmB#V6d3-l3PGJ#UepG8zO`bHLYZ0&QA9Mt;IDn-k?8fC%YZ!-^ zr|mwlrwc8&?b}E$K)+xlY{j*#W3T z_|_$Cf4=tI3alUil$;$NLp2j_6UzNqIi5zui_m*Azv_FQr>^pE%Ji>GqK?FgZ@9H3tFakr5wDXuAS^yU9=lny+?C0jTbBlCbo{HXF zPrk!6_35K_09JccomqUr&;G?Zd9HKaf5L0x6TinE9RcOh`3wv~LI!Hu7z5e03IDy5 zxf@IkOxdk9*Soa)sQAxq9z0j*tQukUC~QL?Z@|18e-*f1 zSa&nO?yt9|0=9Is+WkILjI{B8^JZ5}JZHNWaN+Y7XJp#$THv7KXF~SlHwTM}Cml71(#~P36`?0%@J0N0B7JBBu&8xE* zUa`jhP~!_rl>qai)fpog(V$5WeUw4y zWuyEO84+2CaE_D*k#L{&Nnu8CT)T&1`DDJRf|;hS4%^96bty*{GM#_3XkyqBA$Nt9 zGui3fu)IyaQWN>9*JACnsZYIt+2oWXP=zM!%zN=h+P#Tb>x2?P025I@ew-uQL_&)$wQSbx1SzNO(H%ELTb0goVK|8* z*!NxRq*@vD%S^hM^b~4CrImaZR6q4`Q(WxcsGS0D3ixv4PQURjf6gecNg3)fL-i}J zES4?z6;B55&}ntj##*@fk!ziqMk+v^UM&rx5rO}=bRTLA_VpSx7+x|obVu&tcq6li zGt1O{K!;?)eI#bMWTgYcS>^y=Hbeq}7F!2tTYV-yov8lig{A0K+VU|$fhsKRgSwyk zZcL#J38awoynyZ^f5xKRz#3PTfEy=UpxJQaIeYVIf2&wDvD9u4^Kfnrzr-n} zL;c>L?`)%ROhV$;GV^sgG@QoQ=j@|-P~TjJo=IcrhGx0pI|2}&1(>&|>UpGFAL zqq5HyQ#O2-e~Gbe#lIP5^tPoThgD znC0E>76N6`9MZyssbd9bC#DuEt_|{j;kg68{USAs6e#G2@Qq&yv~#9OHCp#6t*oo8 z#uz4Zl5Re+E!(vx#|&=rmeGT~(Tt{kgawaBP8trxe@J~NbjaO__NC{hf3NsHr${`! zyE2NtW>wBOR)MYt#2sUfLR!3_yp&6aY7^>S^au@Kg^ic-b zm*MQ**TWvOQ_m~}Khk4EeKZtN&5@4}2ca zr~(&oe+o6f$Cwc(>=&|HS|bJfy5;8Rv%M;Han4xL`)1ekf@8z8FYoiu(5-}4hjYnz z43Ox)3Y-(!zux+lJa4L?<3`2??-h+!q}${IK}H{-preo*e|$h?dH&2#~3;iffY zUcw`e7Shgvjl)@}ML351*612-EJeZ#?ZI4gT8E7aTwuLUj1+6w_c7oY;l)wBLt)e_ zfB2l)tNpuLpSh7C-1L@6tYBbDT*CeX)A47u&w5|9q!#V&wqfPyNSF(lwxv*_DD-2+ zyG>Z!uqmusC5^u6!@sf84pflclnjCCvls55tRWFd3>CR;I7J zZD8e=7npO>FSR@7qZu|gg(a~T0t^t(e>dNXfv7@5;e+KLq}MCR-iX9MD&~&f`9BRE ztUf?83J2(O7HmYIxjkR|V@CESfHr@56cy)w3{SBG*GhCI)>*CP0G2%M92!6$^f7}W4 zuTStM>Rec)?OIbEgtP>w&fkcQPD=*|bZbIqdmz4w2;$|}xz46)|4uEIO;8@`#edPWJ=04fwjR)O~VFB zK&m+S!z_VAd29}HME@-60rw&&_{;Uqs2TwvJ!~K?if>$imAhVxzzV;xcFcv}cY)%f zXlIi7#iy1oot2AxMKv4?<9S4D7<@M`+aK>=1leYdGJHhnOJx?_tPEBOe|3CSdRjj` zVrZd%60F$i@<9IA>7-^f&VwNCf1g1r%Rxco!u;oaQr#0^PzMbF5jb|GC`}xO_<)2K-d5Tum6O;AC zkp0Gx!~Dj8?ZJ@$N9#Mff2_FKQ&bMj|2}g4k0k>CcS{~*1+usMAL0LU0Q;wqC8BN* zLV^M~8$tn)e-jXq|1CTxu5h}Iapco~o`3}a(ES#-9|sDc05$o{ZvJY-@NI7e}8ySbD=oM(C%qEF@D~> zg&5gO4Sv#EpZbpaH;p^=f79MT3>`uCF3$%SEDOm=$e{q*pP>NQzkxWBe}d16pYrwR z8fYE>7^8s#ApI6UybSig<3A^?&U-lizgEHMr&W;nx3EefZ~!r5dk4d(<Cwi2ysg%f53B^jP@Sb~i|J_n*)xBZa#)M8>!8wi%)pigOkhZI28PibZ)3xs@p z+T>XPji2((C1Xo+IBnO)nikRq+w!&vuN=`nzlnwlo1kM8!m(gKXKqcy0bv zy#wq&cm12We@B22$TMe$fSXJH{RH1Ap6d ze|l!N+RqH)PQ0n@-u(1z8O~mgp8cPV;Dcax37K6 zf5gx5*SYb*nv5+mBbrFGoMVI?pxdgIql>$g{WmjyL(j zzbQ7ooOlazL1sP)Zm;Y)v~RcC-G6?&-7dC0gBAMrlob1TZn5>D9az^6*>fD)K7dxU zS+Uvi`PIeJ#m~>)!Uw}FHaWE(P7mK7+YWheyW~A_Z^GMWZ_Q2$#Ix&vl1XTs``&`} z*`I#0-KlpUAiAF!?DvyH!1OcYz_EgWFW;Uo9ozlV+CNOUXQPV7m5kaEkAKQqXNF9z z>m=Blg!UcbeSdo9csKUMa$s%o%Ch_FO(@;O9j4wAQ2gxeuP=wK_O8MHHT(TG{{N^u zYPJ879jUM$N|O6NEQ$E}MRmoCDs)N4Pr>?&9oPt4VQuXUL}`KnIz9ISJF~(G5dE{a z@5wBbb^BybfgGatwi|Xk&wt+brL(*v_RVdm-yX;gj$FR|IE&U-3~4GvA3ZD_&nN!A zRlsvkjOTohYG^jgAl&nP>oE=B)DAtLQ#P`WG$`~p_R}Gpc$agnzjm@v@l_{F>t}wi zLHoJIl6x4N^0h31M37!CuY<=xKEiv?nj$kjIm``Ujyv*RM-L%!!+)T7?99=yk4J6T z@8yqLW`O_ly!kQkZqF}_VYWJbdB?NaEFhuaymw4E>*MaI)9v?rW_w@`;rN?oyVdFS zy2Ezc9CiRUGY?ad4n(^)sJ?6Y^RuB{Yme*f+PFg*4+VtF(3&rR$@aRP{$SkiO6DOBmxrQx%vL

SK6`69j;JYIUR0=2OnvL!V~d#Ws+*pBeh6D-;b~L1JS2gA<6c{SMSM$tzQTO9TJvg zITs}GoF#%$+J6C=6NoWo&2TZ6Z~snrK1&1AKBt!dWx0^Gpkg_Gq`PG=qzIr5&q4H` z6A(lKt>&<|6W?ASh?k)cv|rZi%JZCkOS-*qfWu{=Xu!omhN_tQ<-5w;18IHv=uU}$ zY6bb$KfV&3-XH0mL6I*%)^QVLD$m}!$WDaE@7!7j^nX~x+cJhu2JHmF+tnaNLjQRxGJ2u5^Qj~cb+~9Iu zB3!KR&1}4gBzr<>?33qz2^Q9bTzX4?0*z1iuHNtM$6u$mN466`0v89?&z>s9tAR{B ze|q4-TYnPHz7!Z}aBkr<@0H|Nln2Ex(1#1* z==6QmSU&yb@x(1}weKz6De$+w>)^_BsJaCHBR1oWFAlwX7xsCY?WLUKy>|l;m5hxT{J4P2jW7Z1056iPw)Iu<=>B-*-hfb$yOduE zzl~Ta@rgSja)}DX*-TS4|HHw&mzG zKD8dse0Ygu9|DDD|24U~MY{)Z>hdvxHUfV#S)%mwUk3rg5s3k2`>$qa^jCOPl)#i7 zqHy&Tx&S-yt%b+ra=xIRssnp#d?5EByq1BLMDN<78a4}Xgwv_vBrP5Cf0ci?+L5cdNS741+?#HF=*?>RRf z+`_kTvw!ehYiccUo0a^)xgpoSWlvE3#Fqc;?Ula_!V7X^XRb{Nwk}}7Aw$)(x5x05 zR&`;9r#nECjetJ#qf@enOvC}ah8KTuNniPvyYGA{-}#i<(GB3d+9-g2bSKeYWU6Ls zbi%8BM$ssAfZXOA3&1nlf{Kc1fzn@iwTv~d78ImT&en3Z9FmDWkHqW}Mn~nI6L+x$ z?EM<<8cXHK$F_@i0qheya}V?jt@{J|KzshDs>geKZd3Iu)mG-UgN5e6^wNKg%XmAQ zL2}D3p)~A~T}3Hr-jM`RTFr5*9TM_x_PoMGT+L5qC1qo()di6mB-opDPbxPe3gI^; zBf?H+%aGwr%{x#%qPK)JRAs{+UY=^UgyX${0~wEAev|xS2k>&Xezu4q&yUSF&HM%QTp4 z!F9G^ybB&Pz{lBlRKZ-{mFuC^{879kT#8Tw$UqVr*flSRPFwSWKrGC;PFi$LCqv7LduRFZ^5WNW zIf9}S!xdiK)LpvS)PzWxM_JP&_ttVJWV&xnz8nK*5g4M1#9@C;ZlT@Jj(2S(>bCO5 zunrY~y9|BmrJ1I3^%QsxNxW|PS|F}{ zz`QL;0iCo&lG(U_G|0Y)G|`!2X!a#ff`Md^>+MX1+H!U>^WX?wnO~1j9Yr!?M)`syY1Qw$o|sCV4I3( zeKPZWW@3M&-Zxd$qs%Zl1MabEe}trR_l$~__P)1#H)|#q>`92;1GeSV>W=UBPj+}4 zz4)k`Sk=z4Hyj-NY9r9Sy}aZ)F?Mm#zUpJ2l{k5Ce)bPZ%zx?Ou_tQj02mYN0+MfN zANn9hyEpXu4NzV$r#iZZ*e-#x40#CQAku3my(E7f^;P03SxdpsoD;du{1=vo|&xYK_wgAm;|ME-8YS@Kpi+N+dfp-Uo}{@3Ktwr*T627#9bTSlq9f{oFHEGq%ST;AMm-}NiDp0Uq*mxy zw%>o${Dy4e68?;6Q=7%uH~2z4as!aP6GKfU{&H%CzWspUFC8nMybNqEr(%%Z%<=B^ zDIn~2t~@Hz!PeaA_KSHaI=R?;OPj$FZK%`QH{gNsI2cV z1cPH3xnn0Lk?O5>;vQHInz2qmFq{&8jnTgBwY}#!d%-8I6N~zN>zX*Hb}*-2ih2v5 zFjp*zdmJt9&Rm)|AhfckL*X+{%wCr zU3>9Wtw&7z%YZ#nGTWiG%nQ$>!i(pJ7v#64?UQ&gJ-IYMt9UITChL86a;7I$WIEA1 z4k$T9o!kfNo=TkqsTPM`3c-@y>^c`_W@!G-i)kCr>J6z1AgrqD03Y2iF5C?$S=?SO zwI%%Qyxcg8PtbVc%7a`!&aXWOf2n^z26c@3;NclWC2pW2fJDv$DA(U2E7BApm<^n& zg=W@-MEjp%PZb6_bEf#hbBGlXy|ariloOXepP8v#drAzJ2;t;0MvU`Nr(mTk1~kVH zd+62k>@DJH&z)Y7g=H&&gw24ST%msD6IkhVFMzK!_zcskr$y}22mbL#cNsIV%Mrjk zxj4xq_|Kf2^$L76vd+<}&;j-bK-XhLvocGplKCdivlTukc_;)Yci>w}kn@&^@v z4_3JJEeC`rz)&Rwr65X1y}Y%i-hDMxfjC1w*8$hQXH8K$t-N0e1bg&#&h#{~c}#mG zE|yJCqR!O-)te1i9=;|{{T(3{&6 zPNvV^;zm^J$rtpY>?sEQPLLtoU7$kt%0rLEDRn7PdMjeTBRF)HOEAj!qZ_Ny%6fhB z{3%oIm*e8{)}DnInArnh+(S>(GL;_11K)j7G>fpqyHAJY&Yo}sQ@8W-+769>pNUI+ zwbt*7nj^GNO1in$SxI-$I4$YsI_D+dUgyN5`)Hk+bO*gtlkTB;ZdjLkCr8j%^X#ym z)oGN^ScOVimpTWP^{jqWSwG#w%37cMWC3r}Q|kfEy_dEw$!7a~)b5u(x0m|M;%^`= z=5X{I>m%G%?R&ked9UZhi*?+8?kw~yI}uwVP{+v(GS3&_TO?G;^ZRC(7IagJ|ON)A3SF+7uC-_FCU?&IZhHZkNnuyU=i8=AC~h- znGozbj(1O{&)!lULkSTstQ**nUo1beiNk=*B7RLROor_mbDT;a7V4mX;$hMP^bOg6 zjDIL~gvp}BcK4hcG!>prSe%TG=TW?*l$I}`ghxj&H*zf(s8PzP6YM#oxPxT?Y+UY? zpnYh2x-ogj=s>WRkUSjuXmVTXmVp3-zH^|_j^2!DztCtK>D$Usn(YOrCm@+FW%Gcr zbuz~-B~xVP@bZ-qk$Ufc@D0CQa16)Wb8+^>a4!8Mx?ZMVHnS zcj7FkSjy)T^=`_ESEe>ATHz$bEjXOsIH zJ(1{Hf|8&%`fv>B?7$+>Bwl$O%#(mb8A)(eT-_rWPVFEd(^VmViAFnujXYkuRh`2R zs0#7&T+}Zg zgOKpM?wF?jx$(nR=&0YS?+-Za&)%xq{fxN|rsT|Z9!pvMsr3b&!{?Se#Y7)p$Y(#i zFBzN>7PRF_i%P^^u*nyY9iwiP6!+XIbyl(_8t$Z5WDbOzo)A#=dCC;4pToIYO7Q~f z+DK8tSE;i)aY~#*bGTf%>!3!wmSwxp{#cOcsR%Yp2n8Enj-K}i)Rj=Dp)9wPs4cVF z>0p;}_6HRb6AYy=9L&8-49f)(8YFX&`KOnd_6I_L&)!}x;n4bz$jY<_$T8@0Y4_xP z?2N0a#d&XG(*q6q*k1$S)Q}Nk8(9ZD#(!^pRc;N|w)P3c3M#AyLFFop3$~G;XH&rgKD+j`i zstcNSplWxTd?HRVTC4ZD=R96w^fC%dq&f_j$7nx?eXIci)65-D+!}o&dZ<79AyvZz zl>qf$EFEe5tP}uLg4OO${UK}jW`U4E)N|&!P_a8Fe_iUya~VovZgqRJfW%*{6^Fr- zx!MTF7*4q25EJPmS9^dxU;0+n8)M)3a&opJGUtnxH{{fs_)-OwWQYs$8+y?wqR}NC zqp-b`DJFcK*<@AVQOUgWZhj1HsSZjx0z7s6EAI>88J|~!;%NS``r&{eDlwY4TpmG(mi{o#?ibNoAS7iCh6iDXHh25>vvqWM@Dkd+$s#9iR&emf0Cc%j(zs_-!K0C!@r+a?9XiN(DCBm zPleI-s?PLYrM;_83kZq;{`ceRec>j3_SO&o{iMd!^b*D1*PrX)i{78L)=aO>n%ji; z4V_e^XUKHS3$Id@Po`H+=+x_!7j*S{<=!S*XGHQMsdVCp?zf-JEY~ZE8 zD2=?_^q;l!>Sp`>`Qj?>->5FY6s5MJBg*Y$+#3pZ#Pd^mf2u#}sSfdU>Rb_@U7pp& zHtuKv$COhGhAmZo*ux;0#)P`zu$0#o7e_d{xMHV+DnKn45LI=E2)iu!69zn`m-+bz zB!B1U^lxUasx^eR(OA}h=@aLXyI$6KyK!=3xhJJbz|@`hu4(8yjqj~HJyr@?ddr~3 z7!i%2f7hh?fx94c4~uF9Bt-hCdQKkf0OR5!#cbsbVAFH%Rs(=Y%%@U1#>i6R9?HZ? zp{uX>^y4=3iTmEZ#@Y~p{W+XDpDE3M4u9wOt+^%2E+ZHN24JNMgj#h$hjX9iQGB*R zzg;u-3tj|DPi{jI)D9n!iuj?Ri`IDnBYQ@-$a~;J+#d{1Cv|%;#hgLw~8$ z?uoqf^9ZMh_ju_z?}){6MVHEb!mFi{Iw5Zr^)1ynl2QuM6qpJNa|D27~%7sWT_%He#9t-ZHNs+7tMY z&vShlv)H#xYpu}r*mmtuYoS@eMC*{{MWHJDkd;6x0GJchEA)(^i9; z?-s88fY%xN;LRl|*t1(|QBj43zi9ShFYNdQckKD6hnI}vV;gy@QpzmE5PwN_3*s9u z(^8AUYRTz(tVAH4>ue7m`@r(6O$KX?PfL{>ED~BPU0yja0G;_h2ISPjx%AW{tZY)1 zw#aSm$zIhd@E%q;@|4UJ)rf4j#ToyFGx{KfGN%yTE~n&y`2muL@bko*&o%o2Mffv* zMy1jJnU3gBvUh$`g&puN>VJI0!b$LUt<-}?ubfpP)xFET^NyZ)mCpP@FL1`gk0e1% za>bSKQKKD#Qc}C)cIr$3E`Mpa@Z&@tf|9Bo`|Rzz!}kWR$2TUFB^r~oBP0C9-&kt5 zxtcL8%w`mWpyM9|jhU+@C47atO)tK}sONW$P_X>8SJt(#HoB+`dw+4z940bOq`5Iu z>U}CaA38VZ)CZU4m6NunL!SF{Z11sr39v23c+lN7%x)k48TH`faL_lhdzD{82K=Zh zcfM%bj{@mlT6FH{0WPwM9RiC8DPRSLOQ%tf_al1@@(dZpNzSbW@y~oa@#A#h0US)M zg}8<;Hjfa+?iyKLM}OLsCzuW#04lQ!*=8R>ybLhk?c_F7DI$5G+o(gvrl%mJ*eJ05 z+HUpf1+r_XKK(;6+zq*$SPqfZHO6w{(1z#6wH4L8sR+btI{#t^JkOL?^H27aJ-Wpe zlP5kwImp4%WK-$4s?E<9|V><^3%@0Yohif%~v5 zC(;Guzvq!|L{-1^7$io{_6VF?bUv3gQx%%V-#-xyH7}cN4^70XMo0zRcrUMGe&I!@ zM+gpWb87Pf@|goH*sdQF8@zNM-+8|MJ7#fr_8bs87+NR9l^im-8L1zCs`1>OP95QX zekB@tdRtG6JbwfW$9lX1334wu0CxNZb&J>5qVb{xI{DY$xaV8I9pi1Eu}3kmM%>c@A=sFf=qo&PD8Yb$EsIJ z%fMrXJ>G`LH_3+L*Am`v0bUd-gcY$v5td{Xm0|Aa&VO>2RzaDPTusZU1h??#4_N9B zgE!}>XbhA#7W} zSj=VkX|+YZRw)5LRbns0Ll`$!Ow6C|qPc&8Z7md+N-dEyGh(q30eFncuO(!{%2~XDvrp$mz;R27r_S{ z=QKwS6@Fjd+W~q0AFaPGUr2}&S&2I|BU*;kQH^*Nz;rKQQ z2Y*f_Ragpkh$S@>Pl%!i=PS(9#BgbmYAK50yhXZq6i*dvS=)XVYA{#YI!txU%0C6n zZm4LB2uXY-a$AzQkbQ2ViNUP6zv(tqv&*y@@}*{PZv{#)59a>kA%Pu+<~;Ezn?td3 z+KqC0kcN*5nO@W4KN6jDRv@G$(F-zL8Gixugw*S&;4M*pb)sbMxM#CWZ5S@q9>N#i zjf($Z74FE_^V!>58Wkoc#?7 z&~1kYUQpK3c8E^Xh(uz?1I)+y?0@Z@XHP%lKk8nzun$>ScsB6Bs*c&!r&B-(nP6XJ zyyy{@D->8vhA8gNOX=3=jX`-*&U_wvKSdyqPt4R!(OCc{so_Tp|;qs`tLvc|9 zjDP#v(-RN&fQ4>V0$*Ryh@5iKS|;kl|B$K5*|in-OyPnHs=vM*?i%<%vyXlYqpm45 zfd7~0&5x}K1*4P6t)4OyP=7y3Ch~As!I#`%(()HVqsisT;XC{0_7kAfpIiPHAlgws ztvOZ6FfpZuOT`J=)*O^cK*k77M zaf5tU_n>0`V}t%ZBTetWUY{-0T)`FGg`6uf?N z^em%k*uM^v^tgjN*&em?Zc_;Xru`*~+aoyv{Xss5y7Gk(%|*gfFS6<|>4H(LIqD5_ z{#6CCHDMt|=PwcY4u5)mSpFDRKJ53AhzqM1(6HGq)=Nkf8+o%my3&~4A#aynYq|Rc|A9aD$$YkZO@9O_E{o5)L$YwZM_PJS zo;5q_#e@*F{4mdPNpsy}ZE7Ct3=C8z%LVTh@Lhl@%^OngklAsrZtZ}jRX5N@`93g0 z&j5UaR1KpW=O>4OVYyRunPkGh5iBRSXeSD932zkrMjPVSsM0i!PLEqVJ6Gkc49h2U zO50`MBQ%Uo0)Jx;h}n(0*gi8`2DFPsCGDv(U1F*j+LhU^=takTJ3(StvG(TQ2L^;^QMUIuP+0I;KQM}7T`J8JobwcmP6XKLJ9cQ8H7^E)ws{ey%9NW=b2 zL27t2TrGOdV}i|p(!3-_T!$iBr;p)GKKz|=Gi1xh*?&XYionugJp7ofYnT4b@A34i ze7K6Ra&JpT4cXGqIfD4X__WXXX13YR55`Zz|Lp99{v)00SHTH3;*{kp|HL7dpEP~5GeOn+4j^;~7K1c# z4Zsk~4Sym8PcSPWK!?b5?ybkbn9vlV2E1c{3Cx2X%8&qnC2Z;FIsFTur3@8(+&e&t^p=A8+wiA7Gbpfh z>eO%X$G;gS!x|F*X9v|yd`5aE_ykdN&ehMkfPcVn%I7#~c8(L#9EZ)$ahRS%wL?Nb zrtEf!a~tPfywlb|k_ zS$~f3G@`O1x5qro|CzAM25(zq5fLB1Sn&P?Ap!nt852M?Fi!(68>9)~n*mMK2G=F_ zy$pRgjKGsW(?KXlXJ?Bel^-KHGe-LYV54`|Ovt6V%8t)9dgcXXx<*9(FBPrMr! z1g~j40=*d6Wgn4~@F0}u+DWm{Zex@+eapgDuE!@%>ffL_R$k&0L^2N~!C6_sGl3eB>mj5pZ0+adTdAd7q9$n)vD5STo zMEHF^c+uik9+--^p3T??;Oq{+5`RkjxN(={GPpI;u&hpEd39hpiIJ&YnqWsjUSI0c zmQF_zA^j@Q59Yc>wzxGMU2y{W^&Q=Pk(N*gy~)vyRaem&ep1I57g%z9v5D;X#@)-0 z@2JM{74?xG-x!wF$xNJ^a1F;-sD;*{FP)BG_4vv{#*6tP(bJG84k>ClrhoM3*3a;8 zSk$U{(QB*sQi$Cj{^Eph@UYN#=uIe6#igf{FDC_vM4iu9h!KY}Er=ehDaE}4WHmkF z7zoKP!phL9{niv;=2j+t%}H0+Q=W%pvUAioDu!M~L&y6oXj%$>UlV*< zK4{;2sJ#N!i+=_92b+Xn_U>K*{^2I!mpy*<;8!S@%O=N@2B(?$T{%Bj&Mv^5tO`>Z zTVeJjrtmYA#^iXsC&6gOo1zr;TVH3l#4G4a9DE8ZIGWlrAtDDo+kfELpcbE+-9^Q-Z-o_fzNuYQyfE}|&;-{L)yUJCU4VUsFjYZ{@2jPj{bd+t zLQ15o7IN4t@8-rK+{uGEqZ#O5>0qi4TH{EyA0?WAw9Cb=@xPUPEMmV6c>X`<&;LYS zkRF)5&fj4^B(jGA9DnExlXV!xL>>H_7x8LtX^+n=)&V6q0N z)DL?5Dmf@XqIqw|O!u;5su-TpBO~hgOx8M*HSO!Mlu_&HsDGVcFz3ZhzbbcJj{NH4 zT+^{X=y06(Xej!F>N$fB(GcCie}*G;3mxbmK&&| zGc)b0>G{}~ysc_`J|;V~vgad62LadY`thjDZ4fiyru_M6uo1dKB;I@$`b8u@6KN+# z^x_MGB^CfOK7T|$lZlTYoiQ+;FM}nm&KRX zG}H?NT@gR*8W?gz0xXZiJtC9!;K0}DXz7NLyQ1%1dtusDkwFAtCocguE9XfDI?TSN zh)E-)WgOgkUI2)4N$jk+xmj*RMw_rPSR;W|SC#s*V+%?>6Il zSK@nDJe}qKcb`sIcK<>TH}+qJs~Jan1HNYC0TXtZprf8OqL=&(2qk}CuX#nF4JdKY z*qBwYKiXOao3aY_OU(AoTLmj@^gvgKt1@@3avj#+q}3kbqMaH@B%3PuRBKa}inui? z;kF96?@s}zIu{`&6b;g-d+_wtZ%vfgD28Td;Hwgzo#|K_qMd1-4%0Tp)ncT17h}y- zQ6DEV8H)667;%kR15kh2Ht2|br3(7Cj>t?Q&?$<67X+H8zKIqf^7qzJD#{jWb}+Ua zBP?*K!?K=nocUPYu0n)(7BW$kc>ck^T7Y=!g4~T%IBK9OMS*8}>P3Rfi3HQL>+D7e z{Qd;m0P+8uw+vsGG(HSM+PMF3wkvGQlE&v*i6EgvU1hr9+zx-r^D1a2RcQCQ9(^!s zYwOXAP8ZGRR9K@PeIP07T}O}Jv#+)bN^an) zq9NWh_%KbCe@a5}VNKq|w!%0VpG~8!c}EylR=%@50j=y@2GdGEkI4STYvYn@jN;J| zXKXFLHGLHr%K(4=x_+dMLf`r)h4s<6VR^Y2*!bH?G-#v@u%l#lIT-dP6XNiaw#M@) zG*JVTD!@d;7J=E6HR7caM}Gba;Qs@@h=8JBybAEE3^IP@%fuhJg6G!{bEW8{G()6b z0_m$w6co$Fd_etGg4Umm=oVz|_sa3IF{bkI(ko7R_2++Ew%ABW|wa~?ZFysFB{K&AR8VT zLR<;Yj$drXAGxqC@t;v3*uS1ohJ}V!8ppVmFLm>Y9M-f(SGvSar;FIoCT_}rR#DAf zJxM^#I7WY^KBeqd$UR`{TnuLWug@3uD|6Hq2{sk6Ry{vJeXOPBXImH?PNODt4m^b@>M)E$n)?KWDk21 z-8p~V0>>_)QW>Ro2R(F|foo}ql-e0-c+9*k9$g(OT!j)VQKKU2OYRV(O_9+~q-e3I zNn2S6DkZ{9#}$O2p(w0egCGwG-goxYa!x(GwU+Zpni!P%VKVyc32Wu#n#Oe6LqmYs z1{xg;B!iKV7&Cu>2{h0}oR_I^wOq9(@JwBzs}q_&2k`Qu z?k~n9p3Ru^>2}cvYf9j;Mtyo-@9g~Lx1|@pNdPmZ{CJ>E)G}_DbIXMvm~#_rY`ioM zkBl?lc6W_E<7Y3phYq{OqwUA6s;-kFGd%0$BhMrQ3u5lfhzIUioja# z&C-F-QTJ&4WKAjf1Nkfx*z?0iVDEph^3dF)E1{@})?XWgml18U`a9Ii%ZhPQq*vp4 zml^M=>mgra{3EWlOMi)09R2h{R4ylTu>SNVa~d#&4Aq7ZX6jkV5>jHdsjbczEAhqo zD$`g=tzDh3Oko77uzX!ZP-e(l#vnRESq_>45=LrUhKc~v1M1M)NNs;8P3eEMHnnbU z@U3$9yHW1uc6JpNFCVHrA6+BrUY*&LdEZtt|0-=g@?XSHs|++%b)D2Fan%EfqSr)2To+4C!-r9&)6=i9F0pw@IKJ3wlxfP$OmJot zW~NLBZfa_`Wu_(uzYNMM;LG!J7QpXU10UDBc9+=`2sVF{aNo9qW6w|fOmx;^Bxut- zsvQs!dMNMa?XHEsv5`Q$$(u3~j3iEiwTuK9!}K!^rgbp(z(Cv^4Ec>%3w#p#Hn}5A z>3+j!!kAv1XhtW>XxUeb&ED$kzX^SPippLa77R7R(%XYbQC}GJCPkrA!r3a}*RO;h zNzzCB8I*tUBej?BpF|0-u5r|;5?)=7Xsd+ZD&eS-VOUT!*4fa{5u&8|b3_C}DTLY|daSBV6;$b{f~%p5uH>!M z`r5QvXE>5QKnl98K|Qlh2OYKb_E@$#hfUhA;MBtmXz?VIgHfn#i{Mone;H8wisk_2_LwV`0Q^|5UXvY;G zndMS)(u$T#F%fUfa@k~f6Gu0-2Q?Ykq%=59mn2HSe8cA7nk&`j%8cEQ?-{fC9jk4A zAx#S?LiyIxw+Tz%pE%rRv<DhR5;Wp!KxXsqmx3%m44U&-L3qpp171|JR6 z@z&t;=Qj96nhlm1KV|f(VtW5xj6Rk1_8SO-(Kq^xRCV@*;E$e?(PyL`f|QsY%x29F za$GlKb{KBd?4V^t$&iAA)}E5tLEC@0nGi~|bfRU@S%FSQDlhr>lDx@fVzW?W z9;0kD9)pyGFSo8ZbE3$SCMKi0vhvrLlk3aKHRNMmgWy*JfT;$=-k9sCwvEs#wtDHIF+(MbYC-?g>id|BMi1i61-zm}}ouHvs!VyP7r zll>>(i}eriJ&~WBj$o41xw!Jeq}WCF>KXM#N{$tE z%%gUnYL-zD$2+Q{Ut3lzRIkBhOo^Sy{45q%MEbW~LsMXRl0IZ+TVeoTv8b*9wQEqg zrz)G$3FG>v#%X`U`u8>Zl|3mP{K4rdD&GeWgTGDDyGgb*K}}hXbK@RvixAdkyM=YE zq>BG;^y=!Ht>_mcaYCxV$KW2H1Bb~x#dIBU;`#pg*Z=%MH}hY{yU%|h#r~_gS+c%P zVpk`rzfUZ@EM45|W6wW<0WQeYx9)S;705m^hN)6Ot37{bHe&9m1h3l3MQNgF+(5Ca zd7?y@`R&;K554g3AC|EyK$x|%Adgk6;?rlAepIdXsW>KifEL8DfjGhNrfmLZTjDEK zODtiCZqlWli4hCmn=WBBncLi+qbsj(-vRHsBhh6WJrtwAg9Vw`Gc5I!z4fVkukoD9 z1Na@gq+fp|9@fm&cq`a^zfSWRd29-#3%g2XvO}q#`Pv9EM|L|qiS)zZJEonOwT%)W z{>g`CC^Ak$Be?aJu;9~0K@#65n+5kfnc88wepw(8#s@${tu2y%6Yf_&082ZQ z?aw_ba1{2jvQ%2z?}@!p^t_%#?mn_iEzP}fs=jglgl<@?y>&{TQpIgIWpzHvFc@ve z>mYwzPHpcs-lzMPpD>D3;>sj+I{Ie3`^1Y@yPGYdHMEX^59zs`)#63vJ0@Fz#PFi& zn^*B5n(B}$4ez`)`{!*v^uAvYy+(cXbdFoIetH@_U*)T(1}0{`WXY0#=FTce$RgEb!0mXc4u!d;!E-hP%cU+(5Tkh#vp1a~pZex~b zQ{vlE%kmtddJVpBC5F7Mg}AEgTZB+8|F<$Ts=^6wYed}|QMHVyDJy2VE%p1fqdsYK zrYZ5N+nO`KIdi5d)AM{abEYY=m2ZE|nN6BA>sqnDX>+F9Q2zAInVr>AjZ{2{ot2Y~ zY|WWlbLQ5ZDf|7;V9wlRdXgrsnS<{#J;~rto1SE_O;5s~oLqggwQLD2TkvYWxBTgU z0CPv3T~cIZF!#S=ZuUkHDNi$E`3 z$*|3`m6*e!cD53;==hOf_X(sc>8v+h$t=%hzn8ovy|yTohX#4d@136L-dWW^If#9h zuqLxPkO+50HY678HfEsgG?}rZfb%t2DmkSaU*bu&Hp_-=mWAy@Ut?5L|AZ4H@~ClGDBOfmC48!|iU zq7&bMAyaLMZP<|6Rhvz>hRm%Yb8E=l8ZvY6ekXC6!t&^unZHF#X0KAf(f4G@?8_2S z{Mjs-1r5;Fq*=+N**E`eCe41kqDixFJ|&Z8Pdn&sMUy7r=?R%Md*gpinKaqD*J{$# zG6$Wwcfg*Az-ZYQxg`}CKdfGIK!xTY8o54(v)%8|OsQpk<1G{)?Bprq&5*! zQEDGg02+9r{4aU1gGhl2Z2L2{YkY_`Qk=oxS$?Eq#Gx_`;dR7*WB)SAT{JXRx$6ua zH;jkIZv+04ESu*3+CG1Vr-!RCQL1S?)uZJvKHYk7U3k;S6EpHfuH9f$=VA5oWvuD3O1@rvF9*qD%;MvLG(> zzkWC(G*>EfIDvNeJsP$b1n#qInC^^gPX9U!Y258IWWZ1yDufQkG^Q zPcvesmfP$ZutKCB6s#S-s&k*rVAtG|#VuX9q?|_tRx}Zg`f2}!&cL=HgMRoHK|%G1 z(l#v`nvYC5>W6>A&<=hLpBbSd+Nee<8lA|8UCHo?=U-s_ypFyuH-7Sgj@;?dY$h0r zBtMi7w)4Z&v7{D3S&J#PWEw47>JJiQ>JI#b>Rqngr3V|BO&E>okXabRL8)fJPEmB@ zJJG%V1Jlh48~Le5AaML(lpCQ7dzjt13{}R-kqaA~qq%>m;r~plZ1kHln|Ws=HuE?I z@^7F2Sz%N}x)9@%8YzM`MChuyitI$4)G{g!{ASJ7O!8*AwBfl?lX9Bfz*b7zxeSL_O3K|JeKD=k9Y_3S=2+VU;*=>xrbI=bZ385Ryu=REveBUPeLklL*?zzNC(mE zb~xU|a#q@osX(8~UT9>?XnZeFf3VVC zP)$Pvo1qIxvm2qfRKJdcX;tm?48lZ_qslx-3MV;fjd&O1hyfdqHhcoH`H3 z2H=$XTk67D{;X;ON|hE(6Uq`fzZ#Uyu?Klxa$R^zVbOv^?hCw{*!nFw!FMso1?D#& z_Ihjff$y49N4yfhad-#Ve(Z^{NIAm~`&Hb=Oam(V9dr#HueW4R?6O}c8ld1a%dO9`G_xDa3%mSA-sN}RZpsNJ?Zi?pGk;^T z01;yp@Q_MDLL+_^bj`|PLUm#RbeDg{xWj>vI}9|UX0i($jQ9dam4Y3#YkJjTlk13z z0QONWDguaQ{ow)H#c1IAs|x;b{e_scO98>PRSW#}mIBfs;s|{0;EW9T>m?q!LP0|N z8nO)se^4tlruh(&3*rESyCYYTe{#&}#v&27APJb2GKTdBeI6n*G%JOO48(tww6P$8 zew9pi8OQ|YyaLV}2@(LIWU_>Td6a<9CrLcdll)Zo9(&US>q-~4k<48&`c}`_MX_O0 z?-cs6Bg@TY%G~U2KL~}+_6y4oqgH7@`*_HXWXOO3DyCJ&EF+_B#;;nA@0woS3U})o zF6z;5j54D+a_+;4e={fBTswa~f97w&i?)J!y}xmXPqs(3T`W?JWi=;H21nCQp2ASk z_2W}6N@?M<(-b~CE8z3Vxt>T>d}TOYo9jt`o7-&tt|wB(UKs|TRBkhsPlRaEo6Bvc z;{957B?0uCD>0?wv^Ak0Y_z`AU|U~`PQFdcwoS{nP0L1qdD>~&Mv{L7_~iynh2e74 zu40;q(lAxe!nCmrWuvxsttGh@Qnr2*w;HXsCiOzlN$yj{G}CN`vVy`e^N?R9Lzx+A z4!#%Dq*R|hYRlwDq2;aHE3;0=8@M~32T8B+#?uA62 zd}|=`u`BSjYPDGUtQLO@5bKa$VgpH|>M&tlQ*U-ZuHxy6kF$Chcn5TsHw4(T=7uNB;}$RhMrDhE(tj6NzPR^kxqIp z2Cyte7t7xS4fGRrm8I&6lXaD)>xvR~0RXy%quy1_>LjR*^`w83fziEq3JJl|nY5m_ zUsOaoCn>GcWYWbnni%Sdp_7-7O8Vr?P?fO%p4C>`;+U5>x-c0jn${qIPTyh2) ziLy59k~0`?U2=cc?vgXm$OQHEv%w71UMRZRV5&?xEXhS=UF&(fG?CurDFC1tqvoMdzAx> zpI%AAq4XhM!8k5O6nZ=jq67rvr<;I4;yu7sUCE8QYv6sfYkara1(ad-xE9`?m}wDLD)NEhY9}dv4v3=l0wu)|4Ad?jv6!wn43hdlMP1*#A$^Z7cE; z%4%4O;-o-~6p4?WK22vr<*9ye3|rXi6{`E{i;jOnk#W#&=bM#N>CYs5Z_n*8DN8%f zyF(YKwJpqIB%<0b3J=UD6#eWv1A*9F^sFmBXyP{e*5pfuet&JZ`et|7hSA%tQQvH{ zPlI6_(4m;DhJ%(q@k+9#3Z1i5O8aA}Q=c8*=Z<0B&f~8MTE@RV2B>39!tttKH7Xo;&!$YDE-q1 z{G*dhOnkcQq)QFFr9UCGBY=^FQz7WweS&`udP&>GhUXB7zq}LG*hgJlFSKWmM;PS< zoo1F3U>UaH-i9?8DKOYl(M6ASfQ?;2(vxO; zzmZK6QEa_Qvc0q2Jv`m_b}G~?`cD?8p}!1JU`}XZ~mTsA9B8u?>M(~*q!zHyhfbS+)YBb)n3CcxZuvYRP`wO`J zhd^2Vp{*a&L`Yx?&^Fake{%NHeo-WT?(_EwF1aci{Hj|&^Wf!}@UVM6#m>EOGx1yX zLVjAj@(X2e0T8P3QFYk(qRw`X+T(YW)e~b<_ik{VJJ+P9vy~oF=N5*={8a)6t2$TU zE|e5w5GWXuqk&kUnMk>E)-u|06o}!h3#>4(-Ft__dBTQp}*ifEJOeEM?qo z)8a^`BqtsorqgTvNe4ry;npIxJ#^hazm1Ee2v9=aD1Q(8M(Byz#XsD-x)@|48xR0a z{RQVNY5B~xyvuR#sgrTI>}Ld@7{YgeC+9=R{MVp64NES}UI7ejE=EW~jW5jGo;bDw zx;i$$9Oo{z`uLC1K317?^2Hip&9cKmMlVp+Yllv!k=$V?{O+l{@^rCZ+uriUD~dy= z8<_XBP2jB!^^FDZ*n!rYoh^jtPPd$+c5N!@Ly1IGX!0ZB z@%-?~bx+`To>Qeg^GFN!cTXm#Xp9%^BM8QO4JB}$8FI*aj?M%)bH)!Uor9QJps$`d zev@TV?t6yHmMI;@1Z(42zSCIfLi11eq`rQO@Q2=}y{~MRQ(_biV)SicEM{o?lyQz_ zG)2cE`KIngSu;?Ac-gUtY~>a;+G$8Z(i`_Py@uoUGsf_U{nT!ooa_3{DKkrv?le<`iR^AoG zy=!YDct$Ry(`gB+6=P2QF4H|4spwR&VsVAT3RP7sLuuZ`=WiT{vfEfvj7!*hskhIO zDdi35uMwxOoT=GMD=Op40V*N(NLBtIk9zoEDSwxVo)2sn{gA$QX2hOuW64Ff$rS2P zH7A0Rwa?LEYL4sAQ*?R%iFJ^n9*)|X_iYXG8k?p+WY_Cw7lO=H79MT?i;YcTGpRwS z674tQ`W8Abo``REhrjfsX}={=Trbo0ck&iK7SApYIOBc8kC#N#Mgp#VSq!V}=vlD) z2H~tuf^j=LI7+V}q|RYsFn`=!r&&d_0M8qQd~maX-TcmGE6A%N^co zX#ajU^?{r?-11XRU}zAoS`v{NN(AFm7%RN>*blBwCx- zb^@{B9!~=+q-A`u7%p+e@y!5Ms1n^xTnKaXHQYZQ*R#=Ib!l8PKIX>yR=%LvyT8w# z=L}-x+`|x6LX{LfKG;!!TNX3YYEKJ8%$d}4m(CSya@wA86f+wHTmq&f`Gpee5O(vO z`hCeiwq-4+fIJ?|dzNhW_COkwz-7E$8^aljr$+?^>i(nVArRXF5(qiN}*4DK4C-Y-6x453B%<=oa-P^Kb>Z2U(DB6Zsjip0kp`upV$1`HXyfGmzB7h4-i#q znnbD$UY6lXb;=IB!@QeE@ojCQf%sGFcm{D=Ws@~-ZmD0D+i7!y5{+s zOx;ZTaw_@~XKpez5}*mmhSwF_@fn$7h7`BR%`PpcRmpTyFwYG5bYDDaAUtVy zX?C2mri^Dz@rL?M3&4fn_r&LzGYcSmX6k_da!BF#z9jdcY|B4k2$e61AXK^rVl_)a zr3U#UbUWm3Jdoy(4U6Bu*-D`(znlDX%=MSk`BBo9O~$olflSWKM`Tr?ln6N@Q4Zqb z1&7pB%#2dn4t{=<`%5dLW+$727c==*i3LO4Lhb{C^CO<*EKJ71NIH$TKWbAP0N(i2 z=ff9O*6A%JeS|pe9c8Tlj%O0e8i{!l@U8C+_Gd9vi|DIm#9Nk>XQln6I{x-N zyIgxV*GuTi5#T*=w7mIY3HC-QEkhtFG;Sz=CqQolRvwIr3xX`Y z_Z{n*OcI*hT9zC&-qs3#+eg#G2wfrEQB*#iGi|DW2tUO>Z!1~~(v0(N;H`f<)%tb$ z)9C!8;pd?pDGiO}tk4_MZu|ac&ejA0)8o@8ZlayngEueB&qfl8R zFY3K4%7{ogbMtU2E7z zN$F0M(|x$_Smog^8@0Tjy<)JbH9D+85;u*ji>1M!xRdJO*f8wk6zB@leijqdJEhTO zbWG(>Wq)GWV|?)Vxf7o0)|Xq(yDwe*G3(q&l*rS@mf5GZ?dVJtUJXXyX!VtfoJj6C zeNM)O==by;YUZ#7t#6k7?Drp)e?leR!jG8L>=}!iANfkvP%58x)?6?0ylFL*5zo_z z-froP(o~>l%k`s%P-<0H{(RTyfmm1mGgozCDuOHPQ4ksTci(!P{N9*u zWszTVHXm3EzafRUY049mvV(QT7>q$$56AZx)A0K+^FulPB(KB@VDtbR?IL!n8E@oT zqwFXC+>kT1n`3O50c*^A7lHYJ5@ky$Kwj@+`9}rMa*Qjw{CMgw9MO6g-8QRCHpI(H zlNVaao3Fev1PLSj_a1xkV=(~FpMk^a@5=%f;Z2ucC&=Ko)YycEAn?L^3-$fqLU7Y4 zG`xV>uv&VJ*e%ei6z#l+Nxz18FKTD2z+w^CNA1<{n{@W$nujXV%bBOAZefoCQfKM__Gk}IG8z?mhw?7s~H9-@p{i>z5e5!KgasKZ`QXpAd4 z0A4C1p|eSN48$&bVT3|BHPZW$Gb==B2M`<=5)GxC=Wo_Bz(B7}8h=M`SdQy$)t8&? zUO#+m0v}Lkt5mTdH6X8@!;8t?_q{MMeJVD|DBi|@*mlpHdQ7B2E+*EX%z|q;7CfMBDCD#=wLF=bhq?(;HWI>C{T>${$&# zr|@UC92BJy@RblK=q5^`3pg(jjgQsp7?%gK!YVXFs9D}5``(T5(Hb3>pXnIAG)%TL zJI+UbpTy`jlvjwI6yRVp%KwhFcp+9+x&DI6N06L{qFwWMA`43H4f(WzCpypzZynUO zuJs`^z!t0B{#8|-Ozyq{6efi^+)z^;(v>L!I4(i0Nf*t%t9l4Xv1+t3S~ z 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 J9k|b%{|`oUUN`^%

OXuhA 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 z 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%0ATxT3b~{So&JWEc*~fVC%>rJ>%$ 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