@ircam/comote-helpers 0.3.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/.babelrc +5 -0
  2. package/.github/workflows/main.yml +3 -3
  3. package/.history/.gitignore_20250415160643 +6 -0
  4. package/.history/.gitignore_20250415160723 +6 -0
  5. package/.history/examples/simple-webview/package-lock_20250415130242.json +5109 -0
  6. package/.history/examples/simple-webview/package-lock_20250416103557.json +5109 -0
  7. package/.history/examples/simple-webview/package_20250415130704.json +26 -0
  8. package/.history/examples/simple-webview/package_20250415184837.json +26 -0
  9. package/.history/examples/simple-webview/package_20250415190300.json +23 -0
  10. package/.history/examples/simple-webview/src/server_20250415105733.js +20 -0
  11. package/.history/examples/simple-webview/src/server_20250415184604.js +20 -0
  12. package/.history/examples/soundworks/package_20250415132431.json +35 -0
  13. package/.history/examples/soundworks/package_20250416105956.json +35 -0
  14. package/.history/max/CoMote/examples/simple-webview/package_20250415184836.json +26 -0
  15. package/.history/max/CoMote/examples/simple-webview/package_20250415185949.json +23 -0
  16. package/.history/max/CoMote/examples/simple-webview/package_20250415185950.json +23 -0
  17. package/.history/max/CoMote/package-info_20241018173608.json +41 -0
  18. package/.history/max/CoMote/package-info_20250416105743.json +27 -0
  19. package/.history/max/CoMote/package-info_20250416105826.json +27 -0
  20. package/.history/max/CoMote/source/comote-connect/package_20250415132759.json +19 -0
  21. package/.history/max/CoMote/source/comote-connect/package_20250416110158.json +19 -0
  22. package/.history/max/CoMote/source/comote-connect/server_20250414175059.js +193 -0
  23. package/.history/max/CoMote/source/comote-connect/server_20250415180549.js +193 -0
  24. package/.history/package_20250415143437.json +26 -0
  25. package/.history/package_20250416105907.json +26 -0
  26. package/LICENSE +2 -2
  27. package/examples/simple-webview/README.md +10 -0
  28. package/examples/simple-webview/build/comote-simple-webview-server.js +44 -0
  29. package/examples/simple-webview/package-lock.json +5109 -0
  30. package/examples/simple-webview/package.json +23 -0
  31. package/examples/simple-webview/public/favicon.ico +0 -0
  32. package/examples/simple-webview/public/index.html +13 -0
  33. package/examples/simple-webview/public/index.mjs +3623 -0
  34. package/examples/simple-webview/public/styles.css +99 -0
  35. package/examples/simple-webview/src/client.js +35 -0
  36. package/examples/simple-webview/src/server.js +20 -0
  37. package/examples/soundworks/.build/clients/components/sw-audit.js +64 -0
  38. package/examples/soundworks/.build/clients/components/sw-audit.js.map +1 -0
  39. package/examples/soundworks/.build/clients/components/sw-credits.js +73 -0
  40. package/examples/soundworks/.build/clients/components/sw-credits.js.map +1 -0
  41. package/examples/soundworks/.build/clients/player/.editorbackup/PlayerExperience.js~ +131 -0
  42. package/examples/soundworks/.build/clients/player/index.js +116 -0
  43. package/examples/soundworks/.build/clients/player/index.js.map +1 -0
  44. package/examples/soundworks/.build/clients/styles/app.scss +79 -0
  45. package/examples/soundworks/.build/clients/styles/normalize.scss +359 -0
  46. package/examples/soundworks/.build/clients/webview/index.js +72 -0
  47. package/examples/soundworks/.build/clients/webview/index.js.map +1 -0
  48. package/examples/soundworks/.build/public/css/app.css +76 -0
  49. package/examples/soundworks/.build/public/css/app.css.map +1 -0
  50. package/examples/soundworks/.build/public/css/normalize.css +321 -0
  51. package/examples/soundworks/.build/public/css/normalize.css.map +1 -0
  52. package/examples/soundworks/.build/public/player.js +98098 -0
  53. package/examples/soundworks/.build/public/player.js.map +1 -0
  54. package/examples/soundworks/.build/public/webview.js +50725 -0
  55. package/examples/soundworks/.build/public/webview.js.map +1 -0
  56. package/examples/soundworks/.build/server/index.js +57 -0
  57. package/examples/soundworks/.build/server/index.js.map +1 -0
  58. package/examples/soundworks/.build/server/schemas/.gitkeep +1 -0
  59. package/examples/soundworks/.build/server/schemas/global.js +19 -0
  60. package/examples/soundworks/.build/server/schemas/global.js.map +1 -0
  61. package/examples/soundworks/.build/server/tmpl/default.tmpl +27 -0
  62. package/examples/soundworks/.build/utils/catch-unhandled-errors.js +9 -0
  63. package/examples/soundworks/.build/utils/catch-unhandled-errors.js.map +1 -0
  64. package/examples/soundworks/.editorconfig +12 -0
  65. package/examples/soundworks/.eslintrc +3 -0
  66. package/examples/soundworks/.soundworks +7 -0
  67. package/examples/soundworks/.vendors/public/webcomponentsjs/CHANGELOG.md +76 -0
  68. package/examples/soundworks/.vendors/public/webcomponentsjs/LICENSE.md +19 -0
  69. package/examples/soundworks/.vendors/public/webcomponentsjs/README.md +259 -0
  70. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-ce.js +63 -0
  71. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-ce.js.map +1 -0
  72. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-pf_dom.js +62 -0
  73. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-pf_dom.js.map +1 -0
  74. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-pf_js.js +95 -0
  75. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-pf_js.js.map +1 -0
  76. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +374 -0
  77. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +1 -0
  78. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-sd-ce.js +240 -0
  79. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +1 -0
  80. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-sd.js +196 -0
  81. package/examples/soundworks/.vendors/public/webcomponentsjs/bundles/webcomponents-sd.js.map +1 -0
  82. package/examples/soundworks/.vendors/public/webcomponentsjs/custom-elements-es5-adapter.js +15 -0
  83. package/examples/soundworks/.vendors/public/webcomponentsjs/package.json +51 -0
  84. package/examples/soundworks/.vendors/public/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +16 -0
  85. package/examples/soundworks/.vendors/public/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +55 -0
  86. package/examples/soundworks/.vendors/public/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +17 -0
  87. package/examples/soundworks/.vendors/public/webcomponentsjs/src/entrypoints/webcomponents-pf_dom-index.js +19 -0
  88. package/examples/soundworks/.vendors/public/webcomponentsjs/src/entrypoints/webcomponents-pf_js-index.js +13 -0
  89. package/examples/soundworks/.vendors/public/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +19 -0
  90. package/examples/soundworks/.vendors/public/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +25 -0
  91. package/examples/soundworks/.vendors/public/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +18 -0
  92. package/examples/soundworks/.vendors/public/webcomponentsjs/src/flag-parser.js +69 -0
  93. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/baseuri.js +28 -0
  94. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/child-node/after.js +47 -0
  95. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/child-node/before.js +40 -0
  96. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/child-node/index.js +14 -0
  97. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/child-node/remove.js +37 -0
  98. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/child-node/replace-with.js +42 -0
  99. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/custom-event.js +79 -0
  100. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/es6-misc.js +38 -0
  101. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/event-listener-options.js +122 -0
  102. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/get-attribute-names.js +27 -0
  103. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/matches.js +21 -0
  104. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/parent-node/append.js +31 -0
  105. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/parent-node/index.js +13 -0
  106. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/parent-node/prepend.js +42 -0
  107. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/parent-node/replace-children.js +45 -0
  108. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/promise.js +50 -0
  109. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/svg-element-class-list.js +28 -0
  110. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/symbol.js +64 -0
  111. package/examples/soundworks/.vendors/public/webcomponentsjs/src/platform/toggle-attribute.js +39 -0
  112. package/examples/soundworks/.vendors/public/webcomponentsjs/src/unresolved.js +32 -0
  113. package/examples/soundworks/.vendors/public/webcomponentsjs/webcomponents-bundle.d.ts +175 -0
  114. package/examples/soundworks/.vendors/public/webcomponentsjs/webcomponents-bundle.js +384 -0
  115. package/examples/soundworks/.vendors/public/webcomponentsjs/webcomponents-bundle.js.map +1 -0
  116. package/examples/soundworks/.vendors/public/webcomponentsjs/webcomponents-loader.js +238 -0
  117. package/examples/soundworks/LICENSE +28 -0
  118. package/examples/soundworks/README.md +26 -0
  119. package/examples/soundworks/config/application.yaml +8 -0
  120. package/examples/soundworks/config/env-default.yaml +12 -0
  121. package/examples/soundworks/package.json +35 -0
  122. package/examples/soundworks/public/favicon.ico +0 -0
  123. package/examples/soundworks/public/images/loader.gif +0 -0
  124. package/examples/soundworks/src/clients/components/sw-audit.js +78 -0
  125. package/examples/soundworks/src/clients/components/sw-credits.js +80 -0
  126. package/examples/soundworks/src/clients/player/.editorbackup/PlayerExperience.js~ +131 -0
  127. package/examples/soundworks/src/clients/player/index.js +118 -0
  128. package/examples/soundworks/src/clients/styles/app.scss +79 -0
  129. package/examples/soundworks/src/clients/styles/normalize.scss +359 -0
  130. package/examples/soundworks/src/clients/webview/index.js +78 -0
  131. package/examples/soundworks/src/server/index.js +62 -0
  132. package/examples/soundworks/src/server/schemas/.gitkeep +1 -0
  133. package/examples/soundworks/src/server/schemas/global.js +18 -0
  134. package/examples/soundworks/src/server/tmpl/default.tmpl +27 -0
  135. package/examples/soundworks/src/utils/catch-unhandled-errors.js +9 -0
  136. package/index.html +51 -0
  137. package/max/CoMote/docs/sw.shared-state.maxref.xml +95 -0
  138. package/max/CoMote/examples/simple-webview/README.md +10 -0
  139. package/max/CoMote/examples/simple-webview/build/comote-simple-webview-server.js +44 -0
  140. package/max/CoMote/examples/simple-webview/comote-simple-webview-server.maxpat +186 -0
  141. package/max/CoMote/examples/simple-webview/package-lock.json +5109 -0
  142. package/max/CoMote/examples/simple-webview/package.json +23 -0
  143. package/max/CoMote/examples/simple-webview/public/favicon.ico +0 -0
  144. package/max/CoMote/examples/simple-webview/public/index.html +13 -0
  145. package/max/CoMote/examples/simple-webview/public/index.mjs +3623 -0
  146. package/max/CoMote/examples/simple-webview/public/styles.css +99 -0
  147. package/max/CoMote/examples/simple-webview/src/client.js +35 -0
  148. package/max/CoMote/examples/simple-webview/src/server.js +20 -0
  149. package/max/CoMote/examples/soundworks/.editorconfig +12 -0
  150. package/max/CoMote/examples/soundworks/.eslintrc +3 -0
  151. package/max/CoMote/examples/soundworks/.soundworks +7 -0
  152. package/max/CoMote/examples/soundworks/LICENSE +28 -0
  153. package/max/CoMote/examples/soundworks/README.md +26 -0
  154. package/max/CoMote/examples/soundworks/config/application.yaml +8 -0
  155. package/max/CoMote/examples/soundworks/config/env-default.yaml +12 -0
  156. package/max/CoMote/examples/soundworks/package.json +35 -0
  157. package/max/CoMote/examples/soundworks/public/favicon.ico +0 -0
  158. package/max/CoMote/examples/soundworks/public/images/loader.gif +0 -0
  159. package/max/CoMote/examples/soundworks/src/clients/components/sw-audit.js +78 -0
  160. package/max/CoMote/examples/soundworks/src/clients/components/sw-credits.js +80 -0
  161. package/max/CoMote/examples/soundworks/src/clients/player/.editorbackup/PlayerExperience.js~ +131 -0
  162. package/max/CoMote/examples/soundworks/src/clients/player/index.js +118 -0
  163. package/max/CoMote/examples/soundworks/src/clients/styles/app.scss +79 -0
  164. package/max/CoMote/examples/soundworks/src/clients/styles/normalize.scss +359 -0
  165. package/max/CoMote/examples/soundworks/src/clients/webview/index.js +78 -0
  166. package/max/CoMote/examples/soundworks/src/server/index.js +62 -0
  167. package/max/CoMote/examples/soundworks/src/server/schemas/.gitkeep +1 -0
  168. package/max/CoMote/examples/soundworks/src/server/schemas/global.js +18 -0
  169. package/max/CoMote/examples/soundworks/src/server/tmpl/default.tmpl +27 -0
  170. package/max/CoMote/examples/soundworks/src/utils/catch-unhandled-errors.js +9 -0
  171. package/max/CoMote/extras/CoMote.maxpat +1994 -0
  172. package/max/CoMote/help/comote_osc_receive.maxhelp +946 -0
  173. package/max/CoMote/icon.png +0 -0
  174. package/max/CoMote/init/objectmappings.txt +2 -0
  175. package/max/CoMote/media/comote-screenshot.png +0 -0
  176. package/max/CoMote/package-info.json +27 -0
  177. package/max/CoMote/patchers/comote-connect/comote-connect-public/comote-connect-client.mjs +2821 -0
  178. package/max/CoMote/patchers/comote-connect/comote-connect-public/favicon.ico +0 -0
  179. package/max/CoMote/patchers/comote-connect/comote-connect-public/index.html +22 -0
  180. package/max/CoMote/patchers/comote-connect/comote-connect-server.js +24775 -0
  181. package/max/CoMote/patchers/comote-connect/comote-connect.maxpat +1048 -0
  182. package/max/CoMote/patchers/comote-connect/package.json +4 -0
  183. package/max/CoMote/patchers/comote_format_from_comote_v2.maxpat +613 -0
  184. package/max/CoMote/patchers/comote_format_from_v3.maxpat +443 -0
  185. package/max/CoMote/patchers/comote_format_gyro_v2_to_v3.maxpat +240 -0
  186. package/max/CoMote/patchers/comote_format_gyro_v3_to_v2.maxpat +240 -0
  187. package/max/CoMote/patchers/comote_format_heading_v2_to_v3.maxpat +171 -0
  188. package/max/CoMote/patchers/comote_osc_receive.maxpat +440 -0
  189. package/max/CoMote/patchers/comote_osc_to_list.maxpat +161 -0
  190. package/max/CoMote/readme.md +22 -0
  191. package/max/CoMote/source/comote-connect/client.js +104 -0
  192. package/max/CoMote/source/comote-connect/package-lock.json +591 -0
  193. package/max/CoMote/source/comote-connect/package.json +19 -0
  194. package/max/CoMote/source/comote-connect/server.js +193 -0
  195. package/max-update.bash +44 -0
  196. package/package.json +10 -29
  197. package/src/.editorbackup/network-infos.js~ +60 -0
  198. package/src/.editorbackup/wifi-infos.js~ +33 -0
  199. package/src/network-infos.js +67 -0
  200. package/{qrcode.js → src/qrcode.js} +26 -40
  201. package/{server.js → src/server.js} +45 -69
  202. package/src/wifi-infos.js +33 -0
  203. package/README.md +0 -160
  204. package/wifi-infos.js +0 -41
@@ -0,0 +1,946 @@
1
+ {
2
+ "patcher" : {
3
+ "fileversion" : 1,
4
+ "appversion" : {
5
+ "major" : 9,
6
+ "minor" : 0,
7
+ "revision" : 5,
8
+ "architecture" : "x64",
9
+ "modernui" : 1
10
+ }
11
+ ,
12
+ "classnamespace" : "box",
13
+ "rect" : [ 59.0, 106.0, 1230.0, 669.0 ],
14
+ "gridsize" : [ 15.0, 15.0 ],
15
+ "boxes" : [ {
16
+ "box" : {
17
+ "color" : [ 0.960784, 0.827451, 0.156863, 1.0 ],
18
+ "id" : "obj-19",
19
+ "maxclass" : "newobj",
20
+ "numinlets" : 1,
21
+ "numoutlets" : 1,
22
+ "outlettype" : [ "" ],
23
+ "patching_rect" : [ 37.0, 63.0, 70.0, 22.0 ],
24
+ "text" : "loadmess 1"
25
+ }
26
+
27
+ }
28
+ , {
29
+ "box" : {
30
+ "id" : "obj-18",
31
+ "maxclass" : "number",
32
+ "numinlets" : 1,
33
+ "numoutlets" : 2,
34
+ "outlettype" : [ "", "bang" ],
35
+ "parameter_enable" : 0,
36
+ "patching_rect" : [ 241.0, 63.0, 50.0, 22.0 ]
37
+ }
38
+
39
+ }
40
+ , {
41
+ "box" : {
42
+ "color" : [ 0.960784, 0.827451, 0.156863, 1.0 ],
43
+ "id" : "obj-17",
44
+ "maxclass" : "newobj",
45
+ "numinlets" : 1,
46
+ "numoutlets" : 1,
47
+ "outlettype" : [ "" ],
48
+ "patching_rect" : [ 241.0, 33.0, 90.0, 22.0 ],
49
+ "text" : "loadmess 8902"
50
+ }
51
+
52
+ }
53
+ , {
54
+ "box" : {
55
+ "color" : [ 0.960784, 0.827451, 0.156863, 1.0 ],
56
+ "id" : "obj-16",
57
+ "maxclass" : "newobj",
58
+ "numinlets" : 1,
59
+ "numoutlets" : 1,
60
+ "outlettype" : [ "" ],
61
+ "patching_rect" : [ 161.0, 33.0, 70.0, 22.0 ],
62
+ "text" : "loadmess 0"
63
+ }
64
+
65
+ }
66
+ , {
67
+ "box" : {
68
+ "id" : "obj-12",
69
+ "maxclass" : "number",
70
+ "numinlets" : 1,
71
+ "numoutlets" : 2,
72
+ "outlettype" : [ "", "bang" ],
73
+ "parameter_enable" : 0,
74
+ "patching_rect" : [ 161.0, 63.0, 50.0, 22.0 ]
75
+ }
76
+
77
+ }
78
+ , {
79
+ "box" : {
80
+ "id" : "obj-4",
81
+ "maxclass" : "newobj",
82
+ "numinlets" : 1,
83
+ "numoutlets" : 1,
84
+ "outlettype" : [ "" ],
85
+ "patching_rect" : [ 241.0, 94.0, 77.0, 22.0 ],
86
+ "text" : "prepend port"
87
+ }
88
+
89
+ }
90
+ , {
91
+ "box" : {
92
+ "id" : "obj-1",
93
+ "maxclass" : "newobj",
94
+ "numinlets" : 1,
95
+ "numoutlets" : 1,
96
+ "outlettype" : [ "" ],
97
+ "patching_rect" : [ 161.0, 94.0, 65.0, 22.0 ],
98
+ "text" : "prepend id"
99
+ }
100
+
101
+ }
102
+ , {
103
+ "box" : {
104
+ "id" : "obj-32",
105
+ "maxclass" : "newobj",
106
+ "numinlets" : 1,
107
+ "numoutlets" : 1,
108
+ "outlettype" : [ "" ],
109
+ "patching_rect" : [ 161.0, 144.0, 119.0, 22.0 ],
110
+ "text" : "comote_osc_receive"
111
+ }
112
+
113
+ }
114
+ , {
115
+ "box" : {
116
+ "color" : [ 0.900537, 0.724439, 0.391741, 1.0 ],
117
+ "id" : "obj-13",
118
+ "maxclass" : "newobj",
119
+ "numinlets" : 2,
120
+ "numoutlets" : 1,
121
+ "outlettype" : [ "" ],
122
+ "patching_rect" : [ 812.0, 273.0, 47.0, 22.0 ],
123
+ "text" : "qlim 40"
124
+ }
125
+
126
+ }
127
+ , {
128
+ "box" : {
129
+ "color" : [ 0.900537, 0.724439, 0.391741, 1.0 ],
130
+ "id" : "obj-11",
131
+ "maxclass" : "newobj",
132
+ "numinlets" : 2,
133
+ "numoutlets" : 1,
134
+ "outlettype" : [ "" ],
135
+ "patching_rect" : [ 714.0, 273.0, 47.0, 22.0 ],
136
+ "text" : "qlim 40"
137
+ }
138
+
139
+ }
140
+ , {
141
+ "box" : {
142
+ "color" : [ 0.900537, 0.724439, 0.391741, 1.0 ],
143
+ "id" : "obj-10",
144
+ "maxclass" : "newobj",
145
+ "numinlets" : 2,
146
+ "numoutlets" : 1,
147
+ "outlettype" : [ "" ],
148
+ "patching_rect" : [ 599.0, 273.0, 47.0, 22.0 ],
149
+ "text" : "qlim 40"
150
+ }
151
+
152
+ }
153
+ , {
154
+ "box" : {
155
+ "color" : [ 0.900537, 0.724439, 0.391741, 1.0 ],
156
+ "id" : "obj-9",
157
+ "maxclass" : "newobj",
158
+ "numinlets" : 2,
159
+ "numoutlets" : 1,
160
+ "outlettype" : [ "" ],
161
+ "patching_rect" : [ 487.0, 273.0, 47.0, 22.0 ],
162
+ "text" : "qlim 40"
163
+ }
164
+
165
+ }
166
+ , {
167
+ "box" : {
168
+ "color" : [ 0.900537, 0.724439, 0.391741, 1.0 ],
169
+ "id" : "obj-154",
170
+ "maxclass" : "newobj",
171
+ "numinlets" : 2,
172
+ "numoutlets" : 1,
173
+ "outlettype" : [ "" ],
174
+ "patching_rect" : [ 389.0, 273.0, 47.0, 22.0 ],
175
+ "text" : "qlim 40"
176
+ }
177
+
178
+ }
179
+ , {
180
+ "box" : {
181
+ "id" : "obj-7",
182
+ "maxclass" : "comment",
183
+ "numinlets" : 1,
184
+ "numoutlets" : 0,
185
+ "patching_rect" : [ 501.0, 390.0, 44.0, 20.0 ],
186
+ "text" : "gravity"
187
+ }
188
+
189
+ }
190
+ , {
191
+ "box" : {
192
+ "id" : "obj-8",
193
+ "maxclass" : "multislider",
194
+ "numinlets" : 1,
195
+ "numoutlets" : 2,
196
+ "outlettype" : [ "", "" ],
197
+ "parameter_enable" : 0,
198
+ "patching_rect" : [ 487.0, 413.0, 72.0, 138.0 ],
199
+ "setminmax" : [ -10.0, 10.0 ],
200
+ "setstyle" : 1,
201
+ "signed" : 1,
202
+ "size" : 3
203
+ }
204
+
205
+ }
206
+ , {
207
+ "box" : {
208
+ "id" : "obj-2",
209
+ "maxclass" : "comment",
210
+ "numinlets" : 1,
211
+ "numoutlets" : 0,
212
+ "patching_rect" : [ 1062.0, 389.0, 45.0, 20.0 ],
213
+ "text" : "other"
214
+ }
215
+
216
+ }
217
+ , {
218
+ "box" : {
219
+ "id" : "obj-3",
220
+ "maxclass" : "newobj",
221
+ "numinlets" : 1,
222
+ "numoutlets" : 1,
223
+ "outlettype" : [ "" ],
224
+ "patching_rect" : [ 1044.0, 411.0, 72.0, 22.0 ],
225
+ "text" : "prepend set"
226
+ }
227
+
228
+ }
229
+ , {
230
+ "box" : {
231
+ "id" : "obj-6",
232
+ "maxclass" : "textedit",
233
+ "numinlets" : 1,
234
+ "numoutlets" : 4,
235
+ "outlettype" : [ "", "int", "", "" ],
236
+ "parameter_enable" : 0,
237
+ "patching_rect" : [ 1044.0, 457.0, 100.0, 50.0 ]
238
+ }
239
+
240
+ }
241
+ , {
242
+ "box" : {
243
+ "id" : "obj-242",
244
+ "maxclass" : "comment",
245
+ "numinlets" : 1,
246
+ "numoutlets" : 0,
247
+ "patching_rect" : [ 30.0, 390.0, 29.0, 20.0 ],
248
+ "text" : "freq"
249
+ }
250
+
251
+ }
252
+ , {
253
+ "box" : {
254
+ "id" : "obj-243",
255
+ "maxclass" : "multislider",
256
+ "numinlets" : 1,
257
+ "numoutlets" : 2,
258
+ "outlettype" : [ "", "" ],
259
+ "parameter_enable" : 0,
260
+ "patching_rect" : [ 24.0, 448.0, 50.0, 103.0 ],
261
+ "setminmax" : [ 0.0, 200.0 ],
262
+ "setstyle" : 3,
263
+ "signed" : 1
264
+ }
265
+
266
+ }
267
+ , {
268
+ "box" : {
269
+ "format" : 6,
270
+ "id" : "obj-244",
271
+ "maxclass" : "flonum",
272
+ "numinlets" : 1,
273
+ "numoutlets" : 2,
274
+ "outlettype" : [ "", "bang" ],
275
+ "parameter_enable" : 0,
276
+ "patching_rect" : [ 24.0, 412.0, 50.0, 22.0 ]
277
+ }
278
+
279
+ }
280
+ , {
281
+ "box" : {
282
+ "id" : "obj-241",
283
+ "maxclass" : "newobj",
284
+ "numinlets" : 2,
285
+ "numoutlets" : 1,
286
+ "outlettype" : [ "float" ],
287
+ "patching_rect" : [ 15.0, 358.0, 49.0, 22.0 ],
288
+ "text" : "!/ 1000."
289
+ }
290
+
291
+ }
292
+ , {
293
+ "box" : {
294
+ "id" : "obj-238",
295
+ "maxclass" : "multislider",
296
+ "numinlets" : 1,
297
+ "numoutlets" : 2,
298
+ "outlettype" : [ "", "" ],
299
+ "parameter_enable" : 0,
300
+ "patching_rect" : [ 94.0, 448.0, 50.0, 103.0 ],
301
+ "setminmax" : [ 0.0, 30.0 ],
302
+ "setstyle" : 3,
303
+ "signed" : 1
304
+ }
305
+
306
+ }
307
+ , {
308
+ "box" : {
309
+ "id" : "obj-239",
310
+ "maxclass" : "comment",
311
+ "numinlets" : 1,
312
+ "numoutlets" : 0,
313
+ "patching_rect" : [ 94.0, 390.0, 47.0, 20.0 ],
314
+ "text" : "interval"
315
+ }
316
+
317
+ }
318
+ , {
319
+ "box" : {
320
+ "format" : 6,
321
+ "id" : "obj-240",
322
+ "maxclass" : "flonum",
323
+ "numinlets" : 1,
324
+ "numoutlets" : 2,
325
+ "outlettype" : [ "", "bang" ],
326
+ "parameter_enable" : 0,
327
+ "patching_rect" : [ 94.0, 412.0, 50.0, 22.0 ]
328
+ }
329
+
330
+ }
331
+ , {
332
+ "box" : {
333
+ "id" : "obj-237",
334
+ "maxclass" : "newobj",
335
+ "numinlets" : 1,
336
+ "numoutlets" : 2,
337
+ "outlettype" : [ "float", "float" ],
338
+ "patching_rect" : [ 84.0, 319.0, 29.5, 22.0 ],
339
+ "text" : "t f f"
340
+ }
341
+
342
+ }
343
+ , {
344
+ "box" : {
345
+ "id" : "obj-236",
346
+ "maxclass" : "newobj",
347
+ "numinlets" : 2,
348
+ "numoutlets" : 1,
349
+ "outlettype" : [ "float" ],
350
+ "patching_rect" : [ 84.0, 353.0, 29.5, 22.0 ],
351
+ "text" : "- 0."
352
+ }
353
+
354
+ }
355
+ , {
356
+ "box" : {
357
+ "id" : "obj-232",
358
+ "maxclass" : "comment",
359
+ "numinlets" : 1,
360
+ "numoutlets" : 0,
361
+ "patching_rect" : [ 927.5, 385.0, 45.0, 20.0 ],
362
+ "text" : "control"
363
+ }
364
+
365
+ }
366
+ , {
367
+ "box" : {
368
+ "id" : "obj-228",
369
+ "maxclass" : "newobj",
370
+ "numinlets" : 1,
371
+ "numoutlets" : 1,
372
+ "outlettype" : [ "" ],
373
+ "patching_rect" : [ 914.0, 411.0, 72.0, 22.0 ],
374
+ "text" : "prepend set"
375
+ }
376
+
377
+ }
378
+ , {
379
+ "box" : {
380
+ "id" : "obj-227",
381
+ "maxclass" : "textedit",
382
+ "numinlets" : 1,
383
+ "numoutlets" : 4,
384
+ "outlettype" : [ "", "int", "", "" ],
385
+ "parameter_enable" : 0,
386
+ "patching_rect" : [ 914.0, 457.0, 100.0, 50.0 ],
387
+ "text" : "buttonB 0"
388
+ }
389
+
390
+ }
391
+ , {
392
+ "box" : {
393
+ "id" : "obj-226",
394
+ "maxclass" : "comment",
395
+ "numinlets" : 1,
396
+ "numoutlets" : 0,
397
+ "patching_rect" : [ 856.0, 390.0, 35.0, 20.0 ],
398
+ "text" : "head"
399
+ }
400
+
401
+ }
402
+ , {
403
+ "box" : {
404
+ "id" : "obj-225",
405
+ "maxclass" : "comment",
406
+ "numinlets" : 1,
407
+ "numoutlets" : 0,
408
+ "patching_rect" : [ 760.0, 390.0, 32.0, 20.0 ],
409
+ "text" : "mag"
410
+ }
411
+
412
+ }
413
+ , {
414
+ "box" : {
415
+ "id" : "obj-224",
416
+ "maxclass" : "comment",
417
+ "numinlets" : 1,
418
+ "numoutlets" : 0,
419
+ "patching_rect" : [ 622.0, 390.0, 32.0, 20.0 ],
420
+ "text" : "gyro"
421
+ }
422
+
423
+ }
424
+ , {
425
+ "box" : {
426
+ "id" : "obj-223",
427
+ "maxclass" : "comment",
428
+ "numinlets" : 1,
429
+ "numoutlets" : 0,
430
+ "patching_rect" : [ 416.0, 390.0, 27.0, 20.0 ],
431
+ "text" : "acc"
432
+ }
433
+
434
+ }
435
+ , {
436
+ "box" : {
437
+ "id" : "obj-222",
438
+ "maxclass" : "multislider",
439
+ "numinlets" : 1,
440
+ "numoutlets" : 2,
441
+ "outlettype" : [ "", "" ],
442
+ "parameter_enable" : 0,
443
+ "patching_rect" : [ 285.0, 448.0, 50.0, 103.0 ],
444
+ "setminmax" : [ 0.0, 30.0 ],
445
+ "setstyle" : 3,
446
+ "signed" : 1
447
+ }
448
+
449
+ }
450
+ , {
451
+ "box" : {
452
+ "id" : "obj-221",
453
+ "maxclass" : "comment",
454
+ "numinlets" : 1,
455
+ "numoutlets" : 0,
456
+ "patching_rect" : [ 285.0, 390.0, 47.0, 20.0 ],
457
+ "text" : "interval"
458
+ }
459
+
460
+ }
461
+ , {
462
+ "box" : {
463
+ "id" : "obj-220",
464
+ "maxclass" : "comment",
465
+ "numinlets" : 1,
466
+ "numoutlets" : 0,
467
+ "patching_rect" : [ 205.0, 390.0, 29.0, 20.0 ],
468
+ "text" : "freq"
469
+ }
470
+
471
+ }
472
+ , {
473
+ "box" : {
474
+ "id" : "obj-219",
475
+ "maxclass" : "comment",
476
+ "numinlets" : 1,
477
+ "numoutlets" : 0,
478
+ "patching_rect" : [ 89.0, 263.0, 64.0, 20.0 ],
479
+ "text" : "timestamp"
480
+ }
481
+
482
+ }
483
+ , {
484
+ "box" : {
485
+ "id" : "obj-218",
486
+ "maxclass" : "multislider",
487
+ "numinlets" : 1,
488
+ "numoutlets" : 2,
489
+ "outlettype" : [ "", "" ],
490
+ "parameter_enable" : 0,
491
+ "patching_rect" : [ 205.0, 448.0, 50.0, 103.0 ],
492
+ "setminmax" : [ 0.0, 200.0 ],
493
+ "setstyle" : 3,
494
+ "signed" : 1
495
+ }
496
+
497
+ }
498
+ , {
499
+ "box" : {
500
+ "format" : 6,
501
+ "id" : "obj-217",
502
+ "maxclass" : "flonum",
503
+ "numinlets" : 1,
504
+ "numoutlets" : 2,
505
+ "outlettype" : [ "", "bang" ],
506
+ "parameter_enable" : 0,
507
+ "patching_rect" : [ 285.0, 412.0, 50.0, 22.0 ]
508
+ }
509
+
510
+ }
511
+ , {
512
+ "box" : {
513
+ "format" : 6,
514
+ "id" : "obj-216",
515
+ "maxclass" : "flonum",
516
+ "numinlets" : 1,
517
+ "numoutlets" : 2,
518
+ "outlettype" : [ "", "bang" ],
519
+ "parameter_enable" : 0,
520
+ "patching_rect" : [ 205.0, 412.0, 50.0, 22.0 ]
521
+ }
522
+
523
+ }
524
+ , {
525
+ "box" : {
526
+ "id" : "obj-214",
527
+ "maxclass" : "number",
528
+ "numinlets" : 1,
529
+ "numoutlets" : 2,
530
+ "outlettype" : [ "", "bang" ],
531
+ "parameter_enable" : 0,
532
+ "patching_rect" : [ 84.0, 285.0, 70.0, 22.0 ]
533
+ }
534
+
535
+ }
536
+ , {
537
+ "box" : {
538
+ "id" : "obj-210",
539
+ "maxclass" : "toggle",
540
+ "numinlets" : 1,
541
+ "numoutlets" : 1,
542
+ "outlettype" : [ "int" ],
543
+ "parameter_enable" : 0,
544
+ "patching_rect" : [ 37.0, 94.0, 60.0, 60.0 ]
545
+ }
546
+
547
+ }
548
+ , {
549
+ "box" : {
550
+ "id" : "obj-208",
551
+ "maxclass" : "newobj",
552
+ "numinlets" : 2,
553
+ "numoutlets" : 1,
554
+ "outlettype" : [ "" ],
555
+ "patching_rect" : [ 148.0, 184.0, 32.0, 22.0 ],
556
+ "text" : "gate"
557
+ }
558
+
559
+ }
560
+ , {
561
+ "box" : {
562
+ "id" : "obj-205",
563
+ "maxclass" : "multislider",
564
+ "numinlets" : 1,
565
+ "numoutlets" : 2,
566
+ "outlettype" : [ "", "" ],
567
+ "parameter_enable" : 0,
568
+ "patching_rect" : [ 812.0, 413.0, 72.0, 138.0 ],
569
+ "setminmax" : [ 0.0, 360.0 ],
570
+ "setstyle" : 1,
571
+ "signed" : 1,
572
+ "size" : 3
573
+ }
574
+
575
+ }
576
+ , {
577
+ "box" : {
578
+ "id" : "obj-202",
579
+ "maxclass" : "multislider",
580
+ "numinlets" : 1,
581
+ "numoutlets" : 2,
582
+ "outlettype" : [ "", "" ],
583
+ "parameter_enable" : 0,
584
+ "patching_rect" : [ 714.0, 413.0, 72.0, 138.0 ],
585
+ "setminmax" : [ -30.0, 30.0 ],
586
+ "setstyle" : 1,
587
+ "signed" : 1,
588
+ "size" : 3
589
+ }
590
+
591
+ }
592
+ , {
593
+ "box" : {
594
+ "id" : "obj-182",
595
+ "maxclass" : "multislider",
596
+ "numinlets" : 1,
597
+ "numoutlets" : 2,
598
+ "outlettype" : [ "", "" ],
599
+ "parameter_enable" : 0,
600
+ "patching_rect" : [ 599.0, 413.0, 72.0, 138.0 ],
601
+ "setminmax" : [ -10.0, 10.0 ],
602
+ "setstyle" : 1,
603
+ "signed" : 1,
604
+ "size" : 3
605
+ }
606
+
607
+ }
608
+ , {
609
+ "box" : {
610
+ "id" : "obj-181",
611
+ "maxclass" : "multislider",
612
+ "numinlets" : 1,
613
+ "numoutlets" : 2,
614
+ "outlettype" : [ "", "" ],
615
+ "parameter_enable" : 0,
616
+ "patching_rect" : [ 389.0, 413.0, 72.0, 138.0 ],
617
+ "setminmax" : [ -10.0, 10.0 ],
618
+ "setstyle" : 1,
619
+ "signed" : 1,
620
+ "size" : 3
621
+ }
622
+
623
+ }
624
+ , {
625
+ "box" : {
626
+ "id" : "obj-180",
627
+ "maxclass" : "newobj",
628
+ "numinlets" : 10,
629
+ "numoutlets" : 10,
630
+ "outlettype" : [ "", "", "", "", "", "", "", "", "", "" ],
631
+ "patching_rect" : [ 148.0, 220.0, 850.0, 22.0 ],
632
+ "text" : "route timestamp frequency interval accelerometer gravity gyroscope magnetometer heading control"
633
+ }
634
+
635
+ }
636
+ ],
637
+ "lines" : [ {
638
+ "patchline" : {
639
+ "destination" : [ "obj-32", 0 ],
640
+ "source" : [ "obj-1", 0 ]
641
+ }
642
+
643
+ }
644
+ , {
645
+ "patchline" : {
646
+ "destination" : [ "obj-182", 0 ],
647
+ "source" : [ "obj-10", 0 ]
648
+ }
649
+
650
+ }
651
+ , {
652
+ "patchline" : {
653
+ "destination" : [ "obj-202", 0 ],
654
+ "source" : [ "obj-11", 0 ]
655
+ }
656
+
657
+ }
658
+ , {
659
+ "patchline" : {
660
+ "destination" : [ "obj-1", 0 ],
661
+ "source" : [ "obj-12", 0 ]
662
+ }
663
+
664
+ }
665
+ , {
666
+ "patchline" : {
667
+ "destination" : [ "obj-205", 0 ],
668
+ "source" : [ "obj-13", 0 ]
669
+ }
670
+
671
+ }
672
+ , {
673
+ "patchline" : {
674
+ "destination" : [ "obj-181", 0 ],
675
+ "source" : [ "obj-154", 0 ]
676
+ }
677
+
678
+ }
679
+ , {
680
+ "patchline" : {
681
+ "destination" : [ "obj-12", 0 ],
682
+ "source" : [ "obj-16", 0 ]
683
+ }
684
+
685
+ }
686
+ , {
687
+ "patchline" : {
688
+ "destination" : [ "obj-18", 0 ],
689
+ "source" : [ "obj-17", 0 ]
690
+ }
691
+
692
+ }
693
+ , {
694
+ "patchline" : {
695
+ "destination" : [ "obj-4", 0 ],
696
+ "source" : [ "obj-18", 0 ]
697
+ }
698
+
699
+ }
700
+ , {
701
+ "patchline" : {
702
+ "destination" : [ "obj-10", 0 ],
703
+ "source" : [ "obj-180", 5 ]
704
+ }
705
+
706
+ }
707
+ , {
708
+ "patchline" : {
709
+ "destination" : [ "obj-11", 0 ],
710
+ "source" : [ "obj-180", 6 ]
711
+ }
712
+
713
+ }
714
+ , {
715
+ "patchline" : {
716
+ "destination" : [ "obj-13", 0 ],
717
+ "source" : [ "obj-180", 7 ]
718
+ }
719
+
720
+ }
721
+ , {
722
+ "patchline" : {
723
+ "destination" : [ "obj-154", 0 ],
724
+ "source" : [ "obj-180", 3 ]
725
+ }
726
+
727
+ }
728
+ , {
729
+ "patchline" : {
730
+ "destination" : [ "obj-214", 0 ],
731
+ "source" : [ "obj-180", 0 ]
732
+ }
733
+
734
+ }
735
+ , {
736
+ "patchline" : {
737
+ "destination" : [ "obj-216", 0 ],
738
+ "source" : [ "obj-180", 1 ]
739
+ }
740
+
741
+ }
742
+ , {
743
+ "patchline" : {
744
+ "destination" : [ "obj-217", 0 ],
745
+ "source" : [ "obj-180", 2 ]
746
+ }
747
+
748
+ }
749
+ , {
750
+ "patchline" : {
751
+ "destination" : [ "obj-228", 0 ],
752
+ "source" : [ "obj-180", 8 ]
753
+ }
754
+
755
+ }
756
+ , {
757
+ "patchline" : {
758
+ "destination" : [ "obj-3", 0 ],
759
+ "source" : [ "obj-180", 9 ]
760
+ }
761
+
762
+ }
763
+ , {
764
+ "patchline" : {
765
+ "destination" : [ "obj-9", 0 ],
766
+ "source" : [ "obj-180", 4 ]
767
+ }
768
+
769
+ }
770
+ , {
771
+ "patchline" : {
772
+ "destination" : [ "obj-210", 0 ],
773
+ "source" : [ "obj-19", 0 ]
774
+ }
775
+
776
+ }
777
+ , {
778
+ "patchline" : {
779
+ "destination" : [ "obj-180", 0 ],
780
+ "source" : [ "obj-208", 0 ]
781
+ }
782
+
783
+ }
784
+ , {
785
+ "patchline" : {
786
+ "destination" : [ "obj-208", 0 ],
787
+ "source" : [ "obj-210", 0 ]
788
+ }
789
+
790
+ }
791
+ , {
792
+ "patchline" : {
793
+ "destination" : [ "obj-237", 0 ],
794
+ "source" : [ "obj-214", 0 ]
795
+ }
796
+
797
+ }
798
+ , {
799
+ "patchline" : {
800
+ "destination" : [ "obj-218", 0 ],
801
+ "source" : [ "obj-216", 0 ]
802
+ }
803
+
804
+ }
805
+ , {
806
+ "patchline" : {
807
+ "destination" : [ "obj-222", 0 ],
808
+ "source" : [ "obj-217", 0 ]
809
+ }
810
+
811
+ }
812
+ , {
813
+ "patchline" : {
814
+ "destination" : [ "obj-227", 0 ],
815
+ "source" : [ "obj-228", 0 ]
816
+ }
817
+
818
+ }
819
+ , {
820
+ "patchline" : {
821
+ "destination" : [ "obj-240", 0 ],
822
+ "order" : 0,
823
+ "source" : [ "obj-236", 0 ]
824
+ }
825
+
826
+ }
827
+ , {
828
+ "patchline" : {
829
+ "destination" : [ "obj-241", 0 ],
830
+ "order" : 1,
831
+ "source" : [ "obj-236", 0 ]
832
+ }
833
+
834
+ }
835
+ , {
836
+ "patchline" : {
837
+ "destination" : [ "obj-236", 0 ],
838
+ "source" : [ "obj-237", 1 ]
839
+ }
840
+
841
+ }
842
+ , {
843
+ "patchline" : {
844
+ "destination" : [ "obj-236", 1 ],
845
+ "source" : [ "obj-237", 0 ]
846
+ }
847
+
848
+ }
849
+ , {
850
+ "patchline" : {
851
+ "destination" : [ "obj-238", 0 ],
852
+ "source" : [ "obj-240", 0 ]
853
+ }
854
+
855
+ }
856
+ , {
857
+ "patchline" : {
858
+ "destination" : [ "obj-244", 0 ],
859
+ "source" : [ "obj-241", 0 ]
860
+ }
861
+
862
+ }
863
+ , {
864
+ "patchline" : {
865
+ "destination" : [ "obj-243", 0 ],
866
+ "source" : [ "obj-244", 0 ]
867
+ }
868
+
869
+ }
870
+ , {
871
+ "patchline" : {
872
+ "destination" : [ "obj-6", 0 ],
873
+ "source" : [ "obj-3", 0 ]
874
+ }
875
+
876
+ }
877
+ , {
878
+ "patchline" : {
879
+ "destination" : [ "obj-208", 1 ],
880
+ "source" : [ "obj-32", 0 ]
881
+ }
882
+
883
+ }
884
+ , {
885
+ "patchline" : {
886
+ "destination" : [ "obj-32", 0 ],
887
+ "source" : [ "obj-4", 0 ]
888
+ }
889
+
890
+ }
891
+ , {
892
+ "patchline" : {
893
+ "destination" : [ "obj-8", 0 ],
894
+ "source" : [ "obj-9", 0 ]
895
+ }
896
+
897
+ }
898
+ ],
899
+ "originid" : "pat-4716",
900
+ "dependency_cache" : [ {
901
+ "name" : "comote_format_from_comote_v2.maxpat",
902
+ "bootpath" : "~/Documents/src/ircam-ismm/comote-helpers/max/CoMote/patchers",
903
+ "patcherrelativepath" : "../patchers",
904
+ "type" : "JSON",
905
+ "implicit" : 1
906
+ }
907
+ , {
908
+ "name" : "comote_format_from_v3.maxpat",
909
+ "bootpath" : "~/Documents/src/ircam-ismm/comote-helpers/max/CoMote/patchers",
910
+ "patcherrelativepath" : "../patchers",
911
+ "type" : "JSON",
912
+ "implicit" : 1
913
+ }
914
+ , {
915
+ "name" : "comote_format_gyro_v2_to_v3.maxpat",
916
+ "bootpath" : "~/Documents/src/ircam-ismm/comote-helpers/max/CoMote/patchers",
917
+ "patcherrelativepath" : "../patchers",
918
+ "type" : "JSON",
919
+ "implicit" : 1
920
+ }
921
+ , {
922
+ "name" : "comote_format_heading_v2_to_v3.maxpat",
923
+ "bootpath" : "~/Documents/src/ircam-ismm/comote-helpers/max/CoMote/patchers",
924
+ "patcherrelativepath" : "../patchers",
925
+ "type" : "JSON",
926
+ "implicit" : 1
927
+ }
928
+ , {
929
+ "name" : "comote_osc_receive.maxpat",
930
+ "bootpath" : "~/Documents/src/ircam-ismm/comote-helpers/max/CoMote/patchers",
931
+ "patcherrelativepath" : "../patchers",
932
+ "type" : "JSON",
933
+ "implicit" : 1
934
+ }
935
+ , {
936
+ "name" : "comote_osc_to_list.maxpat",
937
+ "bootpath" : "~/Documents/src/ircam-ismm/comote-helpers/max/CoMote/patchers",
938
+ "patcherrelativepath" : "../patchers",
939
+ "type" : "JSON",
940
+ "implicit" : 1
941
+ }
942
+ ],
943
+ "autosave" : 0
944
+ }
945
+
946
+ }