{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":138032511,"defaultBranch":"master","name":"libcosim","ownerLogin":"open-simulation-platform","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-06-20T12:52:29.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/38860294?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1720540045.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"e96fa83cc78655f7fbc8c3a779086c83c2aa0df4","ref":"refs/heads/feature/update-cppreference-tags","pushedAt":"2024-07-09T15:47:25.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Update cppreference tag file to 2019-06-07 version\n\nThis is the newest version available for download from\nhttps://en.cppreference.com/w/Cppreference:Archives at the time of\nwriting.","shortMessageHtmlLink":"Update cppreference tag file to 2019-06-07 version"}},{"before":"f5967bb35b78989e875d52a6726f0ec9fcea033e","after":"371bfe72bd211d269db21cf58582503474f7846b","ref":"refs/heads/feature/756-subsim-state-export","pushedAt":"2024-07-09T15:21:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Base `serialization::node` on Boost.PropertyTree","shortMessageHtmlLink":"Base serialization::node on Boost.PropertyTree"}},{"before":"def14d7a4d3e87d36bba4f8c0101d6c9b766b4e7","after":"f5967bb35b78989e875d52a6726f0ec9fcea033e","ref":"refs/heads/feature/756-subsim-state-export","pushedAt":"2024-07-04T13:57:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Enable exporting and importing subsimulator state\n\nThis is a follow-up to #765 and the second and final step to close #756.\n\nHere, I've implemented functionality to export the internal state of\nindividual subsimulators in a generic, structured form, and to import\nthem again later.\n\nThis exported form is intended as an intermediate step before\nserialisation and disk storage. The idea was to create a type that can\nbe inspected and serialised to almost any file format we'd like.\n\nThe type is defined by `cosim::serialization::node` in\n`cosim/serialization.hpp`. It is a hierarchical, dynamic data type with\nsupport for a variety of primitive scalar types and a few aggregate\ntypes: strings, arrays of nodes, dictionaries of nodes, and binary\nblobs. (Think JSON, only with more types.)","shortMessageHtmlLink":"Enable exporting and importing subsimulator state"}},{"before":null,"after":"def14d7a4d3e87d36bba4f8c0101d6c9b766b4e7","ref":"refs/heads/feature/756-subsim-state-export","pushedAt":"2024-07-04T13:55:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Enable exporting and importing subsimulator state\n\nThis is a follow-up to #765 and the final step to close #757.\n\nHere, I've implemented functionality to export the internal state of\nindividual subsimulators in a generic, structured form, and to import\nthem again later.\n\nThis exported form is intended as an intermediate step before\nserialisation and disk storage. The idea was to create a type that can\nbe inspected and serialised to almost any file format we'd like.\n\nThe type is defined by `cosim::serialization::node` in\n`cosim/serialization.hpp`. It is a hierarchical, dynamic data type with\nsupport for a variety of primitive scalar types and a few aggregate\ntypes: strings, arrays of nodes, dictionaries of nodes, and binary\nblobs. (Think JSON, only with more types.)","shortMessageHtmlLink":"Enable exporting and importing subsimulator state"}},{"before":"b4eae505984ed7721456d62622d9d63293be1b97","after":null,"ref":"refs/heads/feature/756-state-saving","pushedAt":"2024-07-04T13:01:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"}},{"before":"6682586420b1214223e4f89a027ed809b5cb9969","after":"981236a5f6f8fabfb20ff65926d0ac76b6f16bbc","ref":"refs/heads/dev/state-persistence","pushedAt":"2024-07-04T13:01:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Enable saving and restoring subsimulator state (#765)\n\nThis is the first step towards closing #756. I've added functions\r\ncorresponding to FMI 2.0's `fmi2{Get,Set,Free}FMUstate()` throughout the\r\nvarious layers of subsimulator interfaces and implementations:\r\n\r\n* `cosim::slave` and its implementation in\r\n `cosim::fmi::v2::slave_instance`\r\n* `cosim::simulator` and its implementation in `cosim::slave_simulator`\r\n\r\nThis led me to also remove the `slave_state` and `state_guard` stuff\r\nthat was in `slave_simulator.{hpp,cpp}`. The overloading of the \"state\"\r\nterminology became confusing, and it seemed like it was a lot of code\r\nfor very little gain. (It was supposed to be a check of correct API\r\nusage, but I can't remember it ever actually catching a bug.)","shortMessageHtmlLink":"Enable saving and restoring subsimulator state (#765)"}},{"before":null,"after":"6682586420b1214223e4f89a027ed809b5cb9969","ref":"refs/heads/dev/state-persistence","pushedAt":"2024-07-01T07:10:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Clean up test FMUs (#764)\n\nThis fixes most of the issues described in #763. In particular, I have:\r\n\r\n- removed FMUs with obscure origins\r\n- removed unused FMUs (and some other unused test files)\r\n- properly specified the origin and licence for the remaining FMUs\r\n- modified tests so they only use the remaining FMUs","shortMessageHtmlLink":"Clean up test FMUs (#764)"}},{"before":"b1bb170bd572ecedd4398600e0164fa3a80ec284","after":"b4eae505984ed7721456d62622d9d63293be1b97","ref":"refs/heads/feature/756-state-saving","pushedAt":"2024-06-27T17:37:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Missed a change in proxyfmu in last commit","shortMessageHtmlLink":"Missed a change in proxyfmu in last commit"}},{"before":"7d363f48d69e2a972505197b03b700208d51d130","after":"b1bb170bd572ecedd4398600e0164fa3a80ec284","ref":"refs/heads/feature/756-state-saving","pushedAt":"2024-06-27T14:06:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Simplify state saving in slave_simulator\n\nBy simply not allowing state saving when modifiers are active (which is\nsketchy anyway), the implementation becomes much simpler.","shortMessageHtmlLink":"Simplify state saving in slave_simulator"}},{"before":"bc87812bfb6de18007ef0cfbedf6351bc28b8324","after":"7d363f48d69e2a972505197b03b700208d51d130","ref":"refs/heads/feature/756-state-saving","pushedAt":"2024-06-27T11:38:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Don't save slave_simulator::impl::variableValues\n\nIt's just a temporary buffer.","shortMessageHtmlLink":"Don't save slave_simulator::impl::variableValues"}},{"before":"3551162391b2f0eaa7092c279812dee90180527a","after":"bc87812bfb6de18007ef0cfbedf6351bc28b8324","ref":"refs/heads/feature/756-state-saving","pushedAt":"2024-06-24T09:17:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Enable saving and restoring subsimulator state\n\nThis is the first step towards closing #756. I've added functions\ncorresponding to FMI 2.0's `fmi2{Get,Set,Free}FMUstate()` throughout the\nvarious layers of subsimulator interfaces and implementations:\n\n* `cosim::slave` and its implementation in\n `cosim::fmi::v2::slave_instance`\n* `cosim::simulator` and its implementation in `cosim::slave_simulator`\n\nThis led me to also remove the `slave_state` and `state_guard` stuff\nthat was in `slave_simulator.{hpp,cpp}`. The overloading of the \"state\"\nterminology became confusing, and it seemed like it was a lot of code\nfor very little gain. (It was supposed to be a check of correct API\nusage, but I can't remember it ever actually catching a bug.)\n\nThis commit also fixes #762.","shortMessageHtmlLink":"Enable saving and restoring subsimulator state"}},{"before":"b91c5808a839838bd9c3addaa7603943cbd712d7","after":null,"ref":"refs/heads/bugfix/763-clean-up-fmus","pushedAt":"2024-06-24T09:14:01.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"}},{"before":"02ca778f0a1153484b82c5456df5a617aab0f3a0","after":"6682586420b1214223e4f89a027ed809b5cb9969","ref":"refs/heads/master","pushedAt":"2024-06-24T09:14:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Clean up test FMUs (#764)\n\nThis fixes most of the issues described in #763. In particular, I have:\r\n\r\n- removed FMUs with obscure origins\r\n- removed unused FMUs (and some other unused test files)\r\n- properly specified the origin and licence for the remaining FMUs\r\n- modified tests so they only use the remaining FMUs","shortMessageHtmlLink":"Clean up test FMUs (#764)"}},{"before":"6ee391187035ab6b6f26aff7a186c30f217d57d7","after":null,"ref":"refs/heads/bugfix/609-transfer-vars-during-init","pushedAt":"2024-06-24T08:43:55.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"}},{"before":"1b5b849a2093ce6f22c40f12cce9a1bc1258a342","after":"02ca778f0a1153484b82c5456df5a617aab0f3a0","ref":"refs/heads/master","pushedAt":"2024-06-24T08:43:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Transfer variables after initialisation (#766)\n\n`fixed_step_algorithm::initialize()` ends by calling\r\n`simulator::start_simulation()`, which, for an FMI 2.0 FMU ends up\r\ncalling `fmi2ExitInitializationMode()`. This function is not prohibited from\r\nmodifying variable values, which means that we must assume that it does.\r\nPreviously we did not, which led to issue #609, which to me looks like a\r\npretty severe correctness issue. Here, I've added `get_variables()` and\r\n`set_variables()` calls at additional points in the call sequence of a\r\n`slave_simulator()` where variable values may be needed/changed, and\r\nI've added a variable transfer at the end of\r\n`fixed_step_algorithm::initialize()`.\r\n\r\nCloses #609 and #762.","shortMessageHtmlLink":"Transfer variables after initialisation (#766)"}},{"before":null,"after":"6ee391187035ab6b6f26aff7a186c30f217d57d7","ref":"refs/heads/bugfix/609-transfer-vars-during-init","pushedAt":"2024-06-24T08:17:30.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Transfer variables after setup and initialisation\n\n`fixed_step_algorithm::initialize()` ends by calling\n`simulator::start_simulation()`, which, for an FMI 2.0 FMU ends up\ncalling `fmi2ExitInitializationMode()`. This function is not prohibited from\nmodifying variable values, which means that we must assume that it does.\nPreviously we did not, which led to issue #609, which to me looks like a\npretty severe correctness issue. Here, I've added `get_variables()` and\n`set_variables()` calls at additional points in the call sequence of a\n`slave_simulator()` where variable values may be needed/changed, and\nI've added a variable transfer at the end of\n`fixed_step_algorithm::initialize()`.\n\nCloses #609.","shortMessageHtmlLink":"Transfer variables after setup and initialisation"}},{"before":"4730815c965f292354fc5dd35c47d355acdeb253","after":"3551162391b2f0eaa7092c279812dee90180527a","ref":"refs/heads/feature/756-state-saving","pushedAt":"2024-06-22T12:52:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Enable saving and restoring subsimulator state\n\nThis is the first step towards closing #756. I've added functions\ncorresponding to FMI 2.0's `fmi2{Get,Set,Free}FMUstate()` throughout the\nvarious layers of subsimulator interfaces and implementations:\n\n* `cosim::slave` and its implementation in\n `cosim::fmi::v2::slave_instance`\n* `cosim::simulator` and its implementation in `cosim::slave_simulator`\n\nThis led me to also remove the `slave_state` and `state_guard` stuff\nthat was in `slave_simulator.{hpp,cpp}`. The overloading of the \"state\"\nterminology became confusing, and it seemed like it was a lot of code\nfor very little gain. (It was supposed to be a check of correct API\nusage, but I can't remember it ever actually catching a bug.)\n\nThis commit also fixes #762.","shortMessageHtmlLink":"Enable saving and restoring subsimulator state"}},{"before":null,"after":"b91c5808a839838bd9c3addaa7603943cbd712d7","ref":"refs/heads/bugfix/763-clean-up-fmus","pushedAt":"2024-06-17T10:29:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Clean up test FMUs\n\nThis fixes most of the issues described in #763. In particular, I have:\n\n- removed FMUs with obscure origins\n- removed unused FMUs (and some other unused test files)\n- properly specified the origin and licence for the remaining FMUs\n- modified tests so they only use the remaining FMUs","shortMessageHtmlLink":"Clean up test FMUs"}},{"before":null,"after":"4730815c965f292354fc5dd35c47d355acdeb253","ref":"refs/heads/feature/756-state-saving","pushedAt":"2024-06-16T18:26:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Enable saving and restoring subsimulator state\n\nThis is the first step towards closing #756.\n\nAlso fixes #762.","shortMessageHtmlLink":"Enable saving and restoring subsimulator state"}},{"before":"f3ed157ab6ae22962de56aa1f9056cfaf14c73e5","after":null,"ref":"refs/heads/bugfix/760-dangling-reference","pushedAt":"2024-06-13T10:34:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"}},{"before":"2168a4c84e8c28ae45e33028c20e9a80f764b22c","after":"1b5b849a2093ce6f22c40f12cce9a1bc1258a342","ref":"refs/heads/master","pushedAt":"2024-06-13T10:34:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Fix dangling reference in parse_scenario() (#761)\n\nFixes #760.","shortMessageHtmlLink":"Fix dangling reference in parse_scenario() (#761)"}},{"before":null,"after":"f3ed157ab6ae22962de56aa1f9056cfaf14c73e5","ref":"refs/heads/bugfix/760-dangling-reference","pushedAt":"2024-06-11T07:42:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kyllingstad","name":"Lars T. Kyllingstad","path":"/kyllingstad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/214562?s=80&v=4"},"commit":{"message":"Fix dangling reference in parse_scenario()\n\nFixes #760.","shortMessageHtmlLink":"Fix dangling reference in parse_scenario()"}},{"before":"af7bf1f4cd987bc9112e9ee3fec85e1d8add52fd","after":null,"ref":"refs/heads/dynamic-steps-to-monitor","pushedAt":"2024-05-08T11:44:35.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"davidhjp01","name":"David Heejong Park","path":"/davidhjp01","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88651540?s=80&v=4"}},{"before":"6993d6ef2810bd290013ab7917f4860bc43c950d","after":"2168a4c84e8c28ae45e33028c20e9a80f764b22c","ref":"refs/heads/master","pushedAt":"2024-05-08T11:44:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"davidhjp01","name":"David Heejong Park","path":"/davidhjp01","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88651540?s=80&v=4"},"commit":{"message":"Sampling period for computing the rolling average real time factor (#758)\n\n* Introduced cosim::real_time_config.step_duration_to_monitor for computing the rolling average real time factor using the specified period in second.\r\n\r\n* Local variable naming change.\r\n\r\n* Addressed comments\r\n\r\n* Additional fix\r\n\r\n* Using duration_cast","shortMessageHtmlLink":"Sampling period for computing the rolling average real time factor (#758"}},{"before":"55ce42e75ac5d5fc00dd3f577ee9c7925eda5b02","after":"af7bf1f4cd987bc9112e9ee3fec85e1d8add52fd","ref":"refs/heads/dynamic-steps-to-monitor","pushedAt":"2024-05-07T19:42:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"davidhjp01","name":"David Heejong Park","path":"/davidhjp01","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88651540?s=80&v=4"},"commit":{"message":"Using duration_cast","shortMessageHtmlLink":"Using duration_cast"}},{"before":"9801fa27d340ff0297877894620cbb848809c97d","after":"55ce42e75ac5d5fc00dd3f577ee9c7925eda5b02","ref":"refs/heads/dynamic-steps-to-monitor","pushedAt":"2024-05-07T17:44:34.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"davidhjp01","name":"David Heejong Park","path":"/davidhjp01","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88651540?s=80&v=4"},"commit":{"message":"Additional fix","shortMessageHtmlLink":"Additional fix"}},{"before":"2ff7de3fa2f1abb7b26c21b9645d5bf7c378911a","after":"9801fa27d340ff0297877894620cbb848809c97d","ref":"refs/heads/dynamic-steps-to-monitor","pushedAt":"2024-05-07T17:33:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"davidhjp01","name":"David Heejong Park","path":"/davidhjp01","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88651540?s=80&v=4"},"commit":{"message":"Additional fix","shortMessageHtmlLink":"Additional fix"}},{"before":"05c4eccf5c579a3e956230860fdf909fd48ae45d","after":"2ff7de3fa2f1abb7b26c21b9645d5bf7c378911a","ref":"refs/heads/dynamic-steps-to-monitor","pushedAt":"2024-05-07T17:29:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"davidhjp01","name":"David Heejong Park","path":"/davidhjp01","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88651540?s=80&v=4"},"commit":{"message":"Addressed comments - 02","shortMessageHtmlLink":"Addressed comments - 02"}},{"before":"d5845969f1429280a7e844f0b0a10601f508b23a","after":"05c4eccf5c579a3e956230860fdf909fd48ae45d","ref":"refs/heads/dynamic-steps-to-monitor","pushedAt":"2024-05-07T17:26:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"davidhjp01","name":"David Heejong Park","path":"/davidhjp01","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88651540?s=80&v=4"},"commit":{"message":"Additional fix","shortMessageHtmlLink":"Additional fix"}},{"before":"51e95bfe90f8af109b88fcdc1850e197db50161c","after":"d5845969f1429280a7e844f0b0a10601f508b23a","ref":"refs/heads/dynamic-steps-to-monitor","pushedAt":"2024-05-07T17:15:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"davidhjp01","name":"David Heejong Park","path":"/davidhjp01","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88651540?s=80&v=4"},"commit":{"message":"Addressed comments - 02","shortMessageHtmlLink":"Addressed comments - 02"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEeto1aAA","startCursor":null,"endCursor":null}},"title":"Activity ยท open-simulation-platform/libcosim"}