runtimepy 5.14.2__py3-none-any.whl → 5.15.1__py3-none-any.whl

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 (99) hide show
  1. runtimepy/__init__.py +2 -2
  2. runtimepy/channel/__init__.py +1 -4
  3. runtimepy/channel/environment/__init__.py +93 -2
  4. runtimepy/channel/environment/create.py +16 -1
  5. runtimepy/channel/environment/sample.py +10 -2
  6. runtimepy/channel/registry.py +2 -3
  7. runtimepy/codec/protocol/base.py +34 -14
  8. runtimepy/codec/protocol/json.py +5 -3
  9. runtimepy/codec/system/__init__.py +6 -2
  10. runtimepy/control/source.py +1 -1
  11. runtimepy/data/404.md +16 -0
  12. runtimepy/data/base.yaml +3 -0
  13. runtimepy/data/css/bootstrap_extra.css +59 -44
  14. runtimepy/data/css/main.css +23 -4
  15. runtimepy/data/dummy_load.yaml +5 -2
  16. runtimepy/data/factories.yaml +1 -0
  17. runtimepy/data/js/classes/App.js +54 -2
  18. runtimepy/data/js/classes/ChannelTable.js +6 -8
  19. runtimepy/data/js/classes/Plot.js +9 -4
  20. runtimepy/data/js/classes/TabFilter.js +47 -9
  21. runtimepy/data/js/classes/TabInterface.js +106 -11
  22. runtimepy/data/js/classes/WindowHashManager.js +30 -15
  23. runtimepy/data/js/init.js +18 -1
  24. runtimepy/data/js/markdown_page.js +10 -0
  25. runtimepy/data/js/sample.js +1 -0
  26. runtimepy/data/schemas/BitFields.yaml +9 -0
  27. runtimepy/data/schemas/RuntimeEnum.yaml +6 -0
  28. runtimepy/data/schemas/StructConfig.yaml +9 -1
  29. runtimepy/data/static/css/bootstrap-icons.min.css +4 -3
  30. runtimepy/data/static/css/bootstrap.min.css +3 -4
  31. runtimepy/data/static/css/fonts/bootstrap-icons.woff +0 -0
  32. runtimepy/data/static/css/fonts/bootstrap-icons.woff2 +0 -0
  33. runtimepy/data/static/js/bootstrap.bundle.min.js +5 -4
  34. runtimepy/data/static/js/webglplot.umd.min.js +2 -1
  35. runtimepy/data/static/svg/outline-dark.svg +22 -0
  36. runtimepy/data/static/svg/outline-light.svg +22 -0
  37. runtimepy/enum/__init__.py +13 -1
  38. runtimepy/enum/registry.py +13 -1
  39. runtimepy/message/__init__.py +3 -3
  40. runtimepy/mixins/logging.py +6 -1
  41. runtimepy/net/__init__.py +0 -2
  42. runtimepy/net/arbiter/info.py +36 -4
  43. runtimepy/net/arbiter/struct/__init__.py +3 -2
  44. runtimepy/net/connection.py +6 -7
  45. runtimepy/net/html/__init__.py +29 -11
  46. runtimepy/net/html/bootstrap/__init__.py +2 -2
  47. runtimepy/net/html/bootstrap/elements.py +44 -24
  48. runtimepy/net/html/bootstrap/tabs.py +18 -11
  49. runtimepy/net/http/__init__.py +3 -3
  50. runtimepy/net/http/request_target.py +3 -3
  51. runtimepy/net/mixin.py +4 -2
  52. runtimepy/net/server/__init__.py +16 -9
  53. runtimepy/net/server/app/__init__.py +1 -0
  54. runtimepy/net/server/app/create.py +3 -3
  55. runtimepy/net/server/app/env/__init__.py +30 -4
  56. runtimepy/net/server/app/env/settings.py +4 -7
  57. runtimepy/net/server/app/env/tab/base.py +2 -1
  58. runtimepy/net/server/app/env/tab/controls.py +141 -27
  59. runtimepy/net/server/app/env/tab/html.py +68 -26
  60. runtimepy/net/server/app/env/widgets.py +115 -61
  61. runtimepy/net/server/app/landing_page.py +1 -1
  62. runtimepy/net/server/app/tab.py +12 -3
  63. runtimepy/net/server/html.py +2 -2
  64. runtimepy/net/server/json.py +1 -1
  65. runtimepy/net/server/markdown.py +29 -12
  66. runtimepy/net/server/mux.py +29 -0
  67. runtimepy/net/stream/__init__.py +6 -5
  68. runtimepy/net/stream/base.py +4 -2
  69. runtimepy/net/tcp/connection.py +5 -3
  70. runtimepy/net/tcp/http/__init__.py +10 -9
  71. runtimepy/net/tcp/protocol.py +2 -2
  72. runtimepy/net/tcp/scpi/__init__.py +5 -2
  73. runtimepy/net/tcp/telnet/__init__.py +2 -1
  74. runtimepy/net/udp/connection.py +10 -6
  75. runtimepy/net/udp/protocol.py +5 -6
  76. runtimepy/net/udp/queue.py +5 -2
  77. runtimepy/net/udp/tftp/base.py +2 -1
  78. runtimepy/net/websocket/connection.py +58 -9
  79. runtimepy/primitives/array/__init__.py +7 -5
  80. runtimepy/primitives/base.py +3 -2
  81. runtimepy/primitives/field/__init__.py +35 -2
  82. runtimepy/primitives/field/fields.py +11 -2
  83. runtimepy/primitives/field/manager/base.py +19 -2
  84. runtimepy/primitives/serializable/base.py +5 -2
  85. runtimepy/primitives/serializable/fixed.py +5 -2
  86. runtimepy/primitives/serializable/prefixed.py +4 -1
  87. runtimepy/primitives/types/base.py +4 -1
  88. runtimepy/primitives/types/bounds.py +10 -4
  89. runtimepy/registry/__init__.py +20 -0
  90. runtimepy/registry/name.py +6 -0
  91. runtimepy/requirements.txt +2 -2
  92. runtimepy/ui/controls.py +20 -1
  93. {runtimepy-5.14.2.dist-info → runtimepy-5.15.1.dist-info}/METADATA +6 -6
  94. {runtimepy-5.14.2.dist-info → runtimepy-5.15.1.dist-info}/RECORD +98 -94
  95. {runtimepy-5.14.2.dist-info → runtimepy-5.15.1.dist-info}/WHEEL +1 -1
  96. runtimepy/data/404.html +0 -7
  97. {runtimepy-5.14.2.dist-info → runtimepy-5.15.1.dist-info}/entry_points.txt +0 -0
  98. {runtimepy-5.14.2.dist-info → runtimepy-5.15.1.dist-info}/licenses/LICENSE +0 -0
  99. {runtimepy-5.14.2.dist-info → runtimepy-5.15.1.dist-info}/top_level.txt +0 -0
@@ -1,21 +1,21 @@
1
- runtimepy/__init__.py,sha256=mXM-PK0XW-WTNeNncfVfDdlF2hhVzUyeG01xGugXoAw,391
1
+ runtimepy/__init__.py,sha256=fFFYCw5EFe16Vfqrut6lO_EODvjbdb7fbzjzBldFfq4,391
2
2
  runtimepy/__main__.py,sha256=IKioH2xOtsXwrwb9zABDQEJvuAX--Lnh84TeSz0XSs0,332
3
3
  runtimepy/app.py,sha256=Er1ZKKrG9U0FV0gQg_GYF9xDb89HgYnVzS5SjxGa2Tg,970
4
4
  runtimepy/dev_requirements.txt,sha256=VZhW6bJ5YbwaoN4d_XxZFuN5BbDLaG7ngKrGnugVPRw,245
5
5
  runtimepy/entry.py,sha256=fy9irGEgyFAsu868bOymHX8I3CkkrMNThUWAm-4chiM,1930
6
6
  runtimepy/mapping.py,sha256=VQK1vzmQVvYYKI85_II37-hIEbvgL3PzNy-WI6TTo80,5091
7
7
  runtimepy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- runtimepy/requirements.txt,sha256=F4rTeIfG1iYsWFG6szk162sOlN-71HpKtXuqBjIGFFs,125
8
+ runtimepy/requirements.txt,sha256=vhbL-1vCt_sD7ZrLXZT-TX5WMQVC0hJMb_KMyUjDc9E,124
9
9
  runtimepy/schemas.py,sha256=zTgxPm9DHZ0R_bmmOjNQMTXdtM_Hb1bE-Fog40jDCgg,839
10
10
  runtimepy/util.py,sha256=ZHSucNi-gbrcajoCv2dNjQs48dJPC3mTM_wZHx7AW1U,1719
11
- runtimepy/channel/__init__.py,sha256=pf0RJ5g37_FVV8xoUNgzFGuIfbZEYSBA_cQlJSDTPDo,4774
12
- runtimepy/channel/registry.py,sha256=nk36qM_Bf6qK6AFR0plaZHR1PU7b4LZqbQ0feJqk4lc,4784
13
- runtimepy/channel/environment/__init__.py,sha256=0Jj8g7Y4bdDvmWtzpegB9D4milGPhsZokoYxmps5zgU,1612
11
+ runtimepy/channel/__init__.py,sha256=bI1mfHmjUGrYcwePip2ddbMaGSkyQXQVfESL5dqXRdU,4716
12
+ runtimepy/channel/registry.py,sha256=AiRhSSnNbWCxwC-m8vP2fRaN1cfm5JjvlphQzkETf9w,4742
13
+ runtimepy/channel/environment/__init__.py,sha256=Mmq4S4NCX9pKSH7XEmD04zm0YcRhrTc8mGb25dTULgw,5333
14
14
  runtimepy/channel/environment/array.py,sha256=f9cWaYsRXUw8qE629h6jQxbYKDpOwC2GLBo4QaMa1JM,3748
15
15
  runtimepy/channel/environment/base.py,sha256=uCQKCH6wNrKqYSX2PMDAbIFoCZh68Xt-Cr_daGG7eeI,14356
16
- runtimepy/channel/environment/create.py,sha256=DHjoNmzZsARjfB_CfutXQ1PDdxPETi6yQoRMhM0FbwA,5319
16
+ runtimepy/channel/environment/create.py,sha256=UVO_R5rM6xLjpAh3j3wwix-0V3uJMAno2tbBIV4boo8,5868
17
17
  runtimepy/channel/environment/file.py,sha256=PV05KZ3-CvftbKUM8acQmawOMeGGCcMrEESEBuymykg,6949
18
- runtimepy/channel/environment/sample.py,sha256=c__4ZKs1ERoQNbBOimIqjdYbyb4KGgVFk6Ar606Luh4,5108
18
+ runtimepy/channel/environment/sample.py,sha256=6926v0ZssvfeWX_C8MSbUfYjE4sr3jt0CLVSJ_2Cl3U,5316
19
19
  runtimepy/channel/environment/telemetry.py,sha256=3A7Xcp-4eHJWz_oR1SnI6rsl4o8wiSUaiMHrnK1IaQ8,5338
20
20
  runtimepy/channel/environment/command/__init__.py,sha256=mymqk5roA-7evUovXlD2dmWaprSzrPb_3ae6bA9oEZ0,8162
21
21
  runtimepy/channel/environment/command/parser.py,sha256=cMOsEsXnfFlATiWTNSxlgvc_XoICsJlcZigFJlQ47tk,1804
@@ -25,10 +25,10 @@ runtimepy/channel/event/__init__.py,sha256=9LCSNa1Iiwr6Q6JkwQGELDQ7rWfU_xjAMh6qM
25
25
  runtimepy/channel/event/header.py,sha256=eDRZgzzM5HZQ8QtV4DjyAsrAhEZyM7IfwqK6WB5ACEw,868
26
26
  runtimepy/codec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  runtimepy/codec/protocol/__init__.py,sha256=0mdPIb5mpkqofClqW23kslsgc3V_aSKJ1RmjEHmKfeI,1673
28
- runtimepy/codec/protocol/base.py,sha256=8pt8va16zHcHIgFTyhfx6tgDcsQxbqL93CfSgq0ZTBY,11796
29
- runtimepy/codec/protocol/json.py,sha256=pDEpHYFNYjiU2whvQemdZmH9Igx7aLEYCoS_Xpnqdcs,4483
28
+ runtimepy/codec/protocol/base.py,sha256=kxnFcS-6P75jyK4Vs2H9dIls_PCVnvrbiM9zU6EBroE,12532
29
+ runtimepy/codec/protocol/json.py,sha256=utBq0kBHJifTklHvSGWNxR6jXb_F3Lzp_qU1Fshsfks,4530
30
30
  runtimepy/codec/protocol/receiver.py,sha256=RGfpTNiFB_ZtDXtnMYSQ6oO3HiIJKcwCSwoIgvtMsbY,4085
31
- runtimepy/codec/system/__init__.py,sha256=fIOUo7QhwI81YAIz9myeSo1oo94De41sK5HKJ-sAdfY,7959
31
+ runtimepy/codec/system/__init__.py,sha256=CAdHddEvqbh-Uy-l_9yc0O5VAfuqYvElnuQ4qRG8Y-A,8101
32
32
  runtimepy/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  runtimepy/commands/all.py,sha256=eAn52vuAgOh0jr93LROfbTjSPuJILGFRCPB9UeS3Q1c,1537
34
34
  runtimepy/commands/arbiter.py,sha256=9xcKnI1Sogmmv8J6FnjuY3zIEgSacmD7pZgAStuWTcc,1616
@@ -39,47 +39,48 @@ runtimepy/commands/task.py,sha256=6xRVlRwpEZVhrcY18sQcfdWEOxeQZLeOF-6UrUURtO4,14
39
39
  runtimepy/commands/tftp.py,sha256=gxkPryKB0ZEZeOPosHM-GSoWIItpWZBu5S6tW42bfK8,2410
40
40
  runtimepy/commands/tui.py,sha256=9hWA3_YATibUUDTVQr7UnKzPTDVJ7WxWKTYYQpLoyrE,1869
41
41
  runtimepy/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
- runtimepy/control/source.py,sha256=nW3Q2D-LcekII7K5XKbxXCcR-9jYQyvv0UypeNy1Dnw,1695
42
+ runtimepy/control/source.py,sha256=2snCxm8N4rWBkEFsE0dKSqdf4vXP9AkctN6zN8h3i8M,1729
43
43
  runtimepy/control/step.py,sha256=2LdZTpMHLwHLdpPVinpC2qByTs5I5LTDt-xONn_6Fc8,5491
44
44
  runtimepy/control/env/__init__.py,sha256=RHJqysY7Pv4VDs2SGk0X-qc5xp_SrQ_oxb5Deug8HEM,1339
45
- runtimepy/data/404.html,sha256=c_cIqG5BxcKw7pDHcgAAPeOdQq1JRAWIBZ331tG9LKw,5673
46
- runtimepy/data/base.yaml,sha256=WGy2nPiRZk5_wBU7BlWaFfCnzRprJBp-m8onOPUoLAo,399
45
+ runtimepy/data/404.md,sha256=_yzjvp2GeMc5OBvZX2zDbX-Ns6T7HCO9esRbS5PmkXU,397
46
+ runtimepy/data/base.yaml,sha256=PEsvcMV1qFb1Gr6Cx2SgmR6ScfPyuu3yTdnvSBTVSdA,453
47
47
  runtimepy/data/browser.yaml,sha256=oc5KEV1C1uAJ4MkhNo4hyVVfJtZvHelRNqzNvD313Ow,79
48
- runtimepy/data/dummy_load.yaml,sha256=PfKRXXgZnENRMSd68eznSMTV8xanVH5JY4FmoZRPFGY,1985
49
- runtimepy/data/factories.yaml,sha256=esuoouMre8w7siZfBoZKqC-5myghJ_WwOOCDIq135zg,1899
48
+ runtimepy/data/dummy_load.yaml,sha256=oAuccgvM3lDoN5RZBo4UECiegxzOgpllBfXXwZ5odCw,2071
49
+ runtimepy/data/factories.yaml,sha256=CdpnjK2glj8HewI2tFSNvCSUdcNPeVD_tFbGy2QBSQg,1952
50
50
  runtimepy/data/favicon.ico,sha256=boxAGaHbUjMFrOO2TZpsO0nIRC-LUgwHVQYOiG1YQnM,362870
51
51
  runtimepy/data/sample_telemetry.yaml,sha256=OpdFurkvtWJGaNl9LMlU2rKo15AaVVr-U_hoZfsbp-Y,695
52
52
  runtimepy/data/server.yaml,sha256=wS_Ceiu2TpkfPurpqoYoPlgzc9DAWtUd24MW7t-S5rU,97
53
53
  runtimepy/data/server_base.yaml,sha256=Fiqz9C_ikxtYYFO8q17XzgaY5b3H9RuyqJr-QoTk-qg,524
54
54
  runtimepy/data/server_dev.yaml,sha256=nQsPh7LuQig3pzHfdg_aD3yOUiCj1sKKfI-WwW3hXmQ,523
55
55
  runtimepy/data/tftp_server.yaml,sha256=-bFOWJSagI-fEQQcT8k7eDMJVfSPm2XAxLVG3dqUTa4,204
56
- runtimepy/data/css/bootstrap_extra.css,sha256=kJLOp8j-vRxnWzQOf_eOz4kL8Mbrwxuwk3YNh90HgWM,1907
56
+ runtimepy/data/css/bootstrap_extra.css,sha256=hQV_f0DXboYPlsuI7PahFT11g5xjVw6nqp1DACOKWns,2934
57
57
  runtimepy/data/css/font.css,sha256=Pe82E66rNi-cwlQ-_1GHAuhPGu5L4x5KqgV0dbDe51w,977
58
- runtimepy/data/css/main.css,sha256=6xYQRA6QLDC8-k_-AUT1mA9bVHGidttfmMbgwg5ck3g,708
58
+ runtimepy/data/css/main.css,sha256=SuSNaXXd3iT53bbp7bsCxPJGZtkC0cNZeCeEpvjIEhU,1215
59
59
  runtimepy/data/js/DataConnection.js,sha256=DnX8FMehjJXqmI62UMYXSvl_XdfQMzq3XUDFbLu2GgI,98
60
60
  runtimepy/data/js/JsonConnection.js,sha256=rclZrbmWc_zSs6I_JhOgxnVPFIyPMo5WdjAe8alyZ3o,2729
61
61
  runtimepy/data/js/audio.js,sha256=bLkBqbeHMiGGidfL3iXjmVoF9seK-ZeZ3kwgOrcpgk4,1092
62
62
  runtimepy/data/js/events.js,sha256=rgz3Q_8J6sfU_7Sa7fG1mZD0pQ4S3vwN2mqcvQfePkM,554
63
- runtimepy/data/js/init.js,sha256=IeFqfab7CM2-Z4fIbyGaUD4M2orUT8uLwcVlleQqXzg,1522
63
+ runtimepy/data/js/init.js,sha256=6RhwGRl_DBjMpztms2JOQiQlvdizcLeaiETNEh31KyU,1992
64
64
  runtimepy/data/js/main.js,sha256=nYIQ6O76EWqlzwX7oEwPXqC-LCUFCZYDADK9QbYRDKk,404
65
- runtimepy/data/js/markdown_page.js,sha256=7PNELE79WB3YU_rGq_0v-uDB7kyYtn5U8zpBeBiVHqg,678
65
+ runtimepy/data/js/markdown_page.js,sha256=R7Z2CwCk0dXED_4lwvDMXRNNB9ki9RvfwEKLPSwNWec,982
66
+ runtimepy/data/js/sample.js,sha256=Q8UhPKNNrkQ7yFd5p1xqWNerVJ-s8WHJSAYn2ohUkNE,49
66
67
  runtimepy/data/js/util.js,sha256=Xc8pHUiFDBDvIqTamWrCYUOpF7iR9VNvPDCSCQAfLDA,1424
67
68
  runtimepy/data/js/worker.js,sha256=V9deGAynjvUr1D-WGi3wUW8rxoaNLvBvayMoLFZk3w0,2444
68
- runtimepy/data/js/classes/App.js,sha256=nnY42Q3tlNzf8JZtuGKyxJZLLNMfResdww8svOQMC3U,3402
69
- runtimepy/data/js/classes/ChannelTable.js,sha256=V9g4_6N1i7ci7FkhP9eBd9ENbkSBusO5AvWuIEHUKk8,2634
69
+ runtimepy/data/js/classes/App.js,sha256=t3XVC7zSi8L_sMJ4KP-lyWyuD4cysCKkptN-lgjewN8,5159
70
+ runtimepy/data/js/classes/ChannelTable.js,sha256=v6CqDdJrxhbDZcp9c1k7a9cy1uIHfb_LsTmCfY8lvPM,2593
70
71
  runtimepy/data/js/classes/DataConnection.js,sha256=DnX8FMehjJXqmI62UMYXSvl_XdfQMzq3XUDFbLu2GgI,98
71
72
  runtimepy/data/js/classes/JsonConnection.js,sha256=vgQ3bGvVU5dNXn_uwvH7HjOQm0PwUSx0239Vfi7h1vE,2858
72
73
  runtimepy/data/js/classes/OverlayManager.js,sha256=-eH8NtJi8doBUB2Czqand4cWuQlddo1p1wVUfjVx9w0,3362
73
- runtimepy/data/js/classes/Plot.js,sha256=44DUxvmOe2cqKRjrk91Abo-myxWWFAFUDsZb05F4rrA,1979
74
+ runtimepy/data/js/classes/Plot.js,sha256=HzFS_w97KSRpJ_UElIGJGNYnSSdOJ2Ihhbx-00xvT64,2113
74
75
  runtimepy/data/js/classes/PlotDrawer.js,sha256=Wkjoh3oNux8NsVDXUHy1nKOxmtGwbLNKXG9zowi4QUk,5017
75
76
  runtimepy/data/js/classes/PlotManager.js,sha256=hFDSeTFd7UKjDkZRlh7rQhSbdIbbPA_6cTCR4D-Bgnc,4928
76
77
  runtimepy/data/js/classes/PlotModalManager.js,sha256=lEbACLC5VzV-aSAb7G-WacmLLf_IRx7-pNJs9lL8bvY,928
77
78
  runtimepy/data/js/classes/PointBuffer.js,sha256=iVtq_q5gBaV9IVX55pHVjQdMJ4phJ6QTdAiM7EZrLRA,5061
78
79
  runtimepy/data/js/classes/PointManager.js,sha256=0lr2AReLdDNrY47UuOjjCRDPMiSRsOVggFHDPf8V-6Y,460
79
- runtimepy/data/js/classes/TabFilter.js,sha256=FygFFmWa1IRQ0DZlrOscdrkz6W3VkG87nHSud56kCzI,1185
80
- runtimepy/data/js/classes/TabInterface.js,sha256=i-dM_FpRsp_hJEh6CdtSY8hiTS6-KZx5dkOYXD_crh0,12084
80
+ runtimepy/data/js/classes/TabFilter.js,sha256=xajU1ZzVI0jFGhaHkKFX4-d2n2KlxiTC4it3N53-KxM,2115
81
+ runtimepy/data/js/classes/TabInterface.js,sha256=xBBPX9UqMXvo6yguaJ5p3-Za1lLj3FAMLQk5rx4azZ8,14864
81
82
  runtimepy/data/js/classes/UnitSystem.js,sha256=ys4OMabq47k_VvJpRItm82U0IequDvx3ysRJOQzDf94,906
82
- runtimepy/data/js/classes/WindowHashManager.js,sha256=tHGhjfPJCF253L98Dh8gKlxUDY2ct0G7RudoQXXxB-E,6860
83
+ runtimepy/data/js/classes/WindowHashManager.js,sha256=aR8zs1gUq9vkStLjyQj4rssx4dujLdDcoWNs91ViV44,7461
83
84
  runtimepy/data/js/classes/WorkerInterface.js,sha256=qARPW1CUDnHnVFVE8UjqKq74QfommCLwd6nisy-ayOw,346
84
85
  runtimepy/data/js/tab/env.js,sha256=MB79l3XyXKELWRqHcTnwWHiwdiceLHl1N_s-mS33pyU,22
85
86
  runtimepy/data/js/tab/sound.js,sha256=RSKp0AXM_zGOCsUvIT-BUjIzOE7Dp5NHiQG4fy7gBgY,1388
@@ -90,7 +91,7 @@ runtimepy/data/md/PeriodicTask.md,sha256=yzKxrBAvzJwS4-ZUUlrH3J_LEHDfnkDR3ClhYFX
90
91
  runtimepy/data/md/RuntimeStruct.md,sha256=Mu6fYUk2GYfGYQPFUZkXvTYkj2WSR0T_gKJXh0vRT-w,126
91
92
  runtimepy/data/md/RuntimepyPeer.md,sha256=ayjL1V5KXRBEixG0vfxIajY2Dt_H5SYaZGSscXHSL4E,34
92
93
  runtimepy/data/md/SinusoidTask.md,sha256=nTGmZXFv-r9d-ZgmmIHr6SKSp-K-nzJW-B6NKhg7FQ8,739
93
- runtimepy/data/schemas/BitFields.yaml,sha256=7tSjEQNo_j458EN16AgIaC5eh0iEXCj9EbVTVc-EkB8,926
94
+ runtimepy/data/schemas/BitFields.yaml,sha256=iE_3y30CgcpxvzwoC96BDhwbu2PZC-Lqu5C7XUeZ1go,1086
94
95
  runtimepy/data/schemas/Channel.yaml,sha256=9OQ3mOtPOlcWugvObpWKoAdFW0WvR9mSEzfdDYNf3fc,471
95
96
  runtimepy/data/schemas/ChannelCommand.yaml,sha256=h7-n5WjNwWgteZ8U5YpaBRncR_Uiqaa_wVfuTWQFrTY,257
96
97
  runtimepy/data/schemas/ChannelRegistry.yaml,sha256=f51YngVC8zDM3HwRMicKBOyoqjJ9EWsx3GWD0EkHCZk,136
@@ -99,9 +100,9 @@ runtimepy/data/schemas/ConnectionArbiterConfig.yaml,sha256=WorY7ttxvQA78TYuFoNHw
99
100
  runtimepy/data/schemas/EnumRegistry.yaml,sha256=BfLzEEUsHj6Fg_0JyGmgbNJ7F-auuLs5tAhJjSc86uU,145
100
101
  runtimepy/data/schemas/FindFile.yaml,sha256=dSPCDQy4FQZLMgOjtbR0-o2sZECvN_tvGa3LXNd1-wc,934
101
102
  runtimepy/data/schemas/PeerProcessConfig.yaml,sha256=RNVGG1NV9-Goa7aLE0ah7QNwKOTEoJj6EZDXTW-TALM,190
102
- runtimepy/data/schemas/RuntimeEnum.yaml,sha256=dN5bl-lOB3JON02aP1fdwAEP7BhadG1wo_oX6rn5d80,430
103
+ runtimepy/data/schemas/RuntimeEnum.yaml,sha256=P3SqlxJ7d_tbZlHZBZy2cCcnOASP8APwYKzAwITd7Kg,518
103
104
  runtimepy/data/schemas/ServerConnectionConfig.yaml,sha256=IqQUQB09xte4zGmM6Qi0-LTm5McDkoi2tehYspoNUXM,100
104
- runtimepy/data/schemas/StructConfig.yaml,sha256=3ifuvRIVzS4AzYu0c9k6TdmLs0PG5y8u25aRphTrxg0,73
105
+ runtimepy/data/schemas/StructConfig.yaml,sha256=KXcHMYsM5JgsIlHhfXW8tLx5GuekS6m5jsgPCm-_tZ4,175
105
106
  runtimepy/data/schemas/TaskConfig.yaml,sha256=upEfToPllsqEcDoJf9D3rbvXk08nc0slmlUSMyCOYcQ,247
106
107
  runtimepy/data/schemas/channel_controls.yaml,sha256=pctqV_fVjRpiKdaPqET7yyoGVYQuUtOYc1FLQUdfVJc,546
107
108
  runtimepy/data/schemas/has_config.yaml,sha256=SMuJ9tNWw06tsgDasz4myO9SSmMZGep9xBfJ89GJnqA,80
@@ -109,12 +110,12 @@ runtimepy/data/schemas/has_factory.yaml,sha256=Rsqrxv3HEBUGxPcW6CN7QczA96iBSgtm0
109
110
  runtimepy/data/schemas/has_markdown.yaml,sha256=LbnEQRYdk5KR_GgORmIOiKjRg-HF8wjhA6Dm6pSm66I,45
110
111
  runtimepy/data/schemas/has_name.yaml,sha256=I5YkXxQRYz-1-49CLyr_NA2zVqyRVQCAsb-icTaxF4s,59
111
112
  runtimepy/data/schemas/has_request_flag.yaml,sha256=S8ly8g-FkrCVNEizbXPqicg_hpGvtH7WRsHZAA4uhjc,66
112
- runtimepy/data/static/css/bootstrap-icons.min.css,sha256=EoLzUdj3UdQWT2RcOpAC-rcW7Pn9hIb6bormR_DJWeE,85889
113
- runtimepy/data/static/css/bootstrap.min.css,sha256=PI8n5gCcz9cQqQXm3PEtDuPG8qx9oFsFctPg0S5zb8g,232803
114
- runtimepy/data/static/css/fonts/bootstrap-icons.woff,sha256=ux3pibg5cPb05U3hzZdMXLpVtzWC2l4bIlptDt8ClIM,176032
115
- runtimepy/data/static/css/fonts/bootstrap-icons.woff2,sha256=R2rfQrQDJQmPz6izarPnaRhrtPbOaiSXU-LhqcIr-Z4,130396
116
- runtimepy/data/static/js/bootstrap.bundle.min.js,sha256=CDOy6cOibCWEdsRiZuaHf8dSGGJRYuBGC-mjoJimHGw,80721
117
- runtimepy/data/static/js/webglplot.umd.min.js,sha256=R78x6mj8eMDf09Q1xeQRb63ZbVig-54VKpe1zjpmIRc,10807
113
+ runtimepy/data/static/css/bootstrap-icons.min.css,sha256=YWcTOU0uDzjc0ziOtRfrECKA-JAeU4SYUgIHmPwkqSk,87029
114
+ runtimepy/data/static/css/bootstrap.min.css,sha256=x7AwauKmt5DrGTlkPvW6439HiL-5Pjd1doeExMdCx3M,231973
115
+ runtimepy/data/static/css/fonts/bootstrap-icons.woff,sha256=9VUTt7WRy4SjuH_w406iTUgx1v7cIuVLkRymS1tUShU,180288
116
+ runtimepy/data/static/css/fonts/bootstrap-icons.woff2,sha256=bHVxA2ShylYEJncW9tKJl7JjGf2weM8R4LQqtm_y6mE,134044
117
+ runtimepy/data/static/js/bootstrap.bundle.min.js,sha256=OkQS-zjT3lXs3cjNMNQzk7C00p5lo02sP89V_4ah8Fg,80737
118
+ runtimepy/data/static/js/webglplot.umd.min.js,sha256=lkdF3_R9IgBmRitm8ja0WVoUHt8_CcWozGAzGoTCmFQ,10755
118
119
  runtimepy/data/static/png/chip-circle-bootstrap/1024x1024.png,sha256=zdMu3zKfi48pTrz3YOm0qZ1CIH5S3J2DvRdAwCMjI_E,46645
119
120
  runtimepy/data/static/png/chip-circle-bootstrap/128x128.png,sha256=bRq27gggpN7B6p7PyGyNOemt1c-T4m6h6TotUtZ_FlE,4937
120
121
  runtimepy/data/static/png/chip-circle-bootstrap/16x16.png,sha256=MbOq2JqEflTHIAf8jLxDkeF1DXHb1ioKYjDSnzKMs9c,661
@@ -125,6 +126,8 @@ runtimepy/data/static/png/chip-circle-bootstrap/32x32.png,sha256=QyCcPzmrgo1oU5O
125
126
  runtimepy/data/static/png/chip-circle-bootstrap/512x512.png,sha256=m6THSc68Y-RCxTXZ8PQd9quoKm65lE5uvH1BOb98xgg,21858
126
127
  runtimepy/data/static/png/chip-circle-bootstrap/64x64.png,sha256=Hef55zUatdD27jU4EUbnbgcxge-pHNNJs-_HVpt1oMw,2622
127
128
  runtimepy/data/static/svg/chip-circle-bootstrap.svg,sha256=uwo45eymlKmV3AOQ217Etarjb0UBzJJNFLa8JgQx86Y,3124
129
+ runtimepy/data/static/svg/outline-dark.svg,sha256=TIWpJVoDBhydwSCo-MINWP1b8ohqXmhR_OPP3og1DF4,5490
130
+ runtimepy/data/static/svg/outline-light.svg,sha256=n1BnY2VcIoFReVj6czO3WcZ0SdKviFKyfUFcJcLIojA,5490
128
131
  runtimepy/data/static/woff2/CascadiaCode-Bold.woff2,sha256=vnrwH_YbbVnq0_aedSECg-eieky43TOK3MxtCWIc_Ug,154520
129
132
  runtimepy/data/static/woff2/CascadiaCode-BoldItalic.woff2,sha256=OOWBMRXRJJKxEfEIlKKnT-tFqoZKqGw5hMa69t-gp1c,113236
130
133
  runtimepy/data/static/woff2/CascadiaCode-Italic.woff2,sha256=RbBc8ehMSl_ixGWnEe7zn841xDsyxdDJTo3rkYY-bf8,111628
@@ -134,10 +137,10 @@ runtimepy/data/static/woff2/CascadiaMono-BoldItalic.woff2,sha256=CwE1OsdCYTPqdWx
134
137
  runtimepy/data/static/woff2/CascadiaMono-Italic.woff2,sha256=S31PimDgq0GV7XMRV-YXeBA9gC54Wz9ukdAzw1nrc8g,104768
135
138
  runtimepy/data/static/woff2/CascadiaMono-Regular.woff2,sha256=hHPAFO0U10TCKBw-UofHN2BLjax9qNClzN9oWGKkQx0,143936
136
139
  runtimepy/data/static/woff2/README.md,sha256=flHwSRmDxd6OnWhzxmnXzwio1Mong5tB4d8VgieWCOs,289
137
- runtimepy/enum/__init__.py,sha256=WIBMOaogauR1u7mK-I4Z5BZUoWANU7alIlrz82QdCmY,5820
138
- runtimepy/enum/registry.py,sha256=b_oW8l-yNXvrVGfwQ2kKs2bqBk5pT48WBc2vXUTkJks,2861
140
+ runtimepy/enum/__init__.py,sha256=m44Mvgwrtm1iOoM16Q_TJIr84Zndqb0l0m6S1C4kEAg,6186
141
+ runtimepy/enum/registry.py,sha256=Pu-q4s_Mt1EWqizhc4Qzx5a9dMEI2Zgb3_ZwQH1HW9A,3270
139
142
  runtimepy/enum/types.py,sha256=uQYGvaAJVm5tUdwxn_SLHkTZHJpEf7364rTSL27necA,1027
140
- runtimepy/message/__init__.py,sha256=X5PZqSPGhNT4MruaiQjN4MwJHhy8gV9W32QXyxgS9-E,3004
143
+ runtimepy/message/__init__.py,sha256=HtEvU2P6r3_4Z6SpL7LUqLeobIYLkJVgeQZiNb3E3D4,3039
141
144
  runtimepy/message/handlers.py,sha256=He9NC7MCkaV2clKc8dTSZ_T8N2l3ATjaTFzBr9n1T34,3775
142
145
  runtimepy/message/interface.py,sha256=vg25Uhp7wrDFH6v2iRKUBwnCBpjc3JAFjwdu3KArrLo,11285
143
146
  runtimepy/message/types.py,sha256=vajDWKW32LjzsfH-eVCCxZTWVctj4_-tjanhnmCqUis,821
@@ -150,22 +153,22 @@ runtimepy/mixins/async_command.py,sha256=xZNTiRo_Kd_aJboLuFOkQyMo2Exn8ENyY483zdw
150
153
  runtimepy/mixins/enum.py,sha256=IRQR7HD8J0uoxahNqb-2LIVokFn1L2-v9I5HNFw9W3s,719
151
154
  runtimepy/mixins/environment.py,sha256=9dCy7nL1bwZY1p-ez8zy9Jf_6zhljSESnK9F9wtRdl8,3955
152
155
  runtimepy/mixins/finalize.py,sha256=pTziopAWXpyRy0I8UZZv8Q4abXvnH3RrQ_dt3Rh6xlA,1600
153
- runtimepy/mixins/logging.py,sha256=Z5zTIImkkwK0BVhm-4hEP6dzq_8pRkC9wYBCkRskmlc,3735
156
+ runtimepy/mixins/logging.py,sha256=il6w0hkJSCiMyN-V6cblefvaiEOid6SOnpcFtk80NwU,3869
154
157
  runtimepy/mixins/psutil.py,sha256=RlaEuyQ0-TynQxYW85vFuPiQ-29T2mIrsdaDlpSJq1s,1293
155
158
  runtimepy/mixins/regex.py,sha256=kpCj4iL1akzt_KPPiMP-bTbuLBHOpkUrwbCTRe8HSUk,1061
156
159
  runtimepy/mixins/trig.py,sha256=vkDd9Rh8080gvH5OHkSYmjImVgM_ZZ7RzMxsczKx5N4,2480
157
- runtimepy/net/__init__.py,sha256=leveti9T8P1WAg3M5N7yT_JrUZRCXwZQ8mRsxel-KP4,830
160
+ runtimepy/net/__init__.py,sha256=HQaWGxnEH49JSPX2Q_N5QNSV0Wd_x0zZQJa1SV1EC_M,790
158
161
  runtimepy/net/backoff.py,sha256=IVloxQd-gEK62gFAlU2aOwgTEXhsNUTBfS16eiOqKG8,1080
159
- runtimepy/net/connection.py,sha256=c504S2gK5dsFdQu3pZ6zgRVgJEdP-tzxmFdX33MoUtg,12870
162
+ runtimepy/net/connection.py,sha256=GZ9rZP7wgUUYWmyL4FGbJzhqb1uNWCQAsNbXSGzoHAw,12872
160
163
  runtimepy/net/manager.py,sha256=-M-ZSB9izay6HK1ytTayAYnSHYAz34dcwxaiNhC4lWg,4264
161
- runtimepy/net/mixin.py,sha256=5UlFK4lRrJ2O0nEUuScGbkYd4-El-RruFt_UcQR0aic,3039
164
+ runtimepy/net/mixin.py,sha256=0NTKeuaoUNm7--GzA7rxU3gb1rrGGhu1vNj6mek4dDA,3022
162
165
  runtimepy/net/mtu.py,sha256=XnLXAFMsDxK1Lj5v_zgWaBrC3lNqf81DkbDc6hpMdmI,3495
163
166
  runtimepy/net/ssl.py,sha256=dj9uECPKDT5k-5vlR5I3Z7Go3WWZhbaJ9nb0rC3kJvg,854
164
167
  runtimepy/net/util.py,sha256=XTQQ-Ql_ImhVd1_O8nSeDX9MY8xJwRBggvliSLCrsc8,5913
165
168
  runtimepy/net/apps/__init__.py,sha256=vjo7e19QXtJwe6V6B-QGvYiJveYobnYIfpkKZrnS17w,710
166
169
  runtimepy/net/arbiter/__init__.py,sha256=ptKF995rYKvkm4Mya92vA5QEDqcFq5NRD0IYGqZ6_do,740
167
170
  runtimepy/net/arbiter/base.py,sha256=q9mQ3vjVjlzjGrDcTq8gengsEV2AnCUx8IK_40h6uxg,15011
168
- runtimepy/net/arbiter/info.py,sha256=aMo4LvRAO7_4x1ff13yZCiI5qOUdzAk1yZZAbrQIOAc,9734
171
+ runtimepy/net/arbiter/info.py,sha256=QcBB1LQELXPs-Ud-GVq3aDBL4mpSMDcjjLtuKgojiU8,10962
169
172
  runtimepy/net/arbiter/result.py,sha256=PHZo5qj4SI08ZeWPFk_8OZ1umI6L0dp5nJpjjS8QUpM,2871
170
173
  runtimepy/net/arbiter/task.py,sha256=APcc5QioAG8uueIzxJU-vktIn8Ys3yJd_CFlRWb6Ieo,795
171
174
  runtimepy/net/arbiter/udp.py,sha256=-ecHJs-utcsiTfr5wSb73hUUuYFBeRVT_D1znYp5q6A,893
@@ -179,76 +182,77 @@ runtimepy/net/arbiter/factory/task.py,sha256=YLRv55dnDBqHRJIMYgO9_uHi0AW-8hwa0n3
179
182
  runtimepy/net/arbiter/housekeeping/__init__.py,sha256=-6P2x_qSWp1juml0wKZGJ343c-atrbp8YkDRWn162UA,3622
180
183
  runtimepy/net/arbiter/imports/__init__.py,sha256=W7-kkM4B_zDU42Fyh0PmZL56JslS_0_qzvpzUhN6aDU,5041
181
184
  runtimepy/net/arbiter/imports/util.py,sha256=d4_HnWphrkiHQkyYr8YJKvSSTXoMf3Bct_7jg_CS9eA,1086
182
- runtimepy/net/arbiter/struct/__init__.py,sha256=Vr38dp2X0PZOrAbjKsZ9xZdQ1j3z92s4QuvRtYYVuNI,5990
185
+ runtimepy/net/arbiter/struct/__init__.py,sha256=HaLykBdZkaJI5HdXBKcc_YsWmbKVtuZnEDkQJKh8NYQ,6044
183
186
  runtimepy/net/arbiter/tcp/__init__.py,sha256=djNm8il_9aLNpGsYResJlFmyIqx9XNLqVay-mYnn8vc,1530
184
187
  runtimepy/net/arbiter/tcp/json.py,sha256=W9a_OwBPmIoB2XZf4iuAIWQhMg2qA9xejBhGBdNCPnI,742
185
188
  runtimepy/net/factories/__init__.py,sha256=rPdBVpgzzQYF61w6efQrEre71yMPHd6kanBpMdOX-3c,4672
186
- runtimepy/net/html/__init__.py,sha256=mlr7J7gBr9EwwKq4iMbq3QYKxie16AQDKa92_sUB2xM,5108
189
+ runtimepy/net/html/__init__.py,sha256=8EuXyA4MODbIH5AG05pMhYUqjU-dw6qO6oQi9rckyuk,5666
187
190
  runtimepy/net/html/arbiter.py,sha256=SkZZm-CmyCxbAcWZbvCLH-RwFUJPvrvR5yWysVVuvCM,951
188
- runtimepy/net/html/bootstrap/__init__.py,sha256=F_gp2_YMTi4tKEwRIPQGwoarKWCwltd9HnvqAqCH2Hc,2429
189
- runtimepy/net/html/bootstrap/elements.py,sha256=NBdjg0_1LTxoyJrNQNw-2v8AWaiW2S1poJcDo4P6GWE,5355
190
- runtimepy/net/html/bootstrap/tabs.py,sha256=7-0lJOD9SALmsViUYGJAXF0PTSqtffc4mpoFwmYcnXE,3842
191
- runtimepy/net/http/__init__.py,sha256=4TjFp_ajAVcOEvwtjlF6mG-9EbEePqFZht-QpWIKVBo,1802
191
+ runtimepy/net/html/bootstrap/__init__.py,sha256=tiFtVPz2TZStwBqST4G8xc7woSc68rRJy1tx3n1GaJw,2429
192
+ runtimepy/net/html/bootstrap/elements.py,sha256=PsVDdExIZqPyTEowe-ViBzAWDxBNh9YbjTwHG7uZjWc,5832
193
+ runtimepy/net/html/bootstrap/tabs.py,sha256=Qtwcojlz5eCjkvFtM7qzrOc4TpLwoAxDAsFiSFEAmWA,4049
194
+ runtimepy/net/http/__init__.py,sha256=cMKNPyYZpdT03OR-HNfwzZbaKGchzlGIrK712daRK40,1829
192
195
  runtimepy/net/http/common.py,sha256=vpoO6XwRmrZmTkCu9bkI0HnyaD8MWTpV7ADesCNrfRE,2237
193
196
  runtimepy/net/http/header.py,sha256=AECSdvhBA9_5Pg3UdwMzsmBpcqgsiPj41xnIGPm5g5E,2296
194
- runtimepy/net/http/request_target.py,sha256=EE1aI5VSARw1h93jyZvP56ir5O5fjd6orYK-1FM4JNk,1550
197
+ runtimepy/net/http/request_target.py,sha256=EfcOozUeXqOuQaMXH9cErfJqUkG0A5v9HEK4tCorSf4,1543
195
198
  runtimepy/net/http/response.py,sha256=fD0R_BUgmNwdwKQtXvYfTYM7DyJlwsGmlNVi5HkCOhU,3409
196
199
  runtimepy/net/http/state.py,sha256=qCMN8aWfCRfU9XP-cIhSOo2RqfljTjbQRCflfcy2bfY,1626
197
200
  runtimepy/net/http/version.py,sha256=mp6rgIM7-VUVKLCA0Uw96CmBkL0ET860lDVVEewpZ7w,1098
198
- runtimepy/net/server/__init__.py,sha256=prEf7pNhM7t9xP7_ZM0uzESUomlZuqDtDlE34MnyCb0,11431
199
- runtimepy/net/server/html.py,sha256=TZ2ZSPTxgA6KAKS26tNrSUpxFUrdk92K5zP2ybcSYqs,1892
200
- runtimepy/net/server/json.py,sha256=a7vM5yfq2er4DexzFqEMnxoMGDeuywKkVH4-uNJBAik,2522
201
- runtimepy/net/server/markdown.py,sha256=3kLQR3fsGFU8dUiDuMbUiLv7XKx9s4zXy9SZsJDDc9Y,1507
202
- runtimepy/net/server/app/__init__.py,sha256=_Hmbhu2TvO1aUrxfExbOi5qW9LNVTti8-ndwLpYrhjA,3089
201
+ runtimepy/net/server/__init__.py,sha256=5KalIcOWv8lYm8747pq2rzGwpLz713XdHuQIKbWJsXc,11649
202
+ runtimepy/net/server/html.py,sha256=OB2K37kA7MHtcKqp0pZE1q_XgiyvfooigzS0-OQFCCM,1900
203
+ runtimepy/net/server/json.py,sha256=AaMPw-G-7xX67mf1LvQAipNdwrnmbLDunVlkWf6iOz0,2526
204
+ runtimepy/net/server/markdown.py,sha256=UIJ9R9WM5XodPs8WEevFNJ3LX9tMevhUe8QKKdeY4ak,2143
205
+ runtimepy/net/server/mux.py,sha256=ejET7NpJzzJjkVwR8laSuZYR79DOT3XazmAIm6rENSE,598
206
+ runtimepy/net/server/app/__init__.py,sha256=0eCcqYvmby_wQTGqAiGbGM5LCxKM2qpjuIT0gLHsoDU,3157
203
207
  runtimepy/net/server/app/base.py,sha256=46aOqZwRss_nh_WfEH1cMJ9GUVoLJjERd7cTRFu6mXE,1878
204
- runtimepy/net/server/app/create.py,sha256=eRT8qxubht5A7149Xol3Z8rkdYd_pjNLqrlyMnXk-Zg,2660
208
+ runtimepy/net/server/app/create.py,sha256=1Z6YUUBempk8lCIuZG_RE0qlHau-E152_Utf4z6bz_k,2672
205
209
  runtimepy/net/server/app/elements.py,sha256=KJt9vWqkfvniJMiLOJN467JjPPrEqJYZXmDuY1JoY1g,455
206
210
  runtimepy/net/server/app/files.py,sha256=9EiGA5aYczJN6BJifAIZ8e3wBbIGCekVLCu0D54ZAFc,968
207
- runtimepy/net/server/app/landing_page.py,sha256=nO7uIO30Sw3R41qH8I1q9RWk1RFLDy8JhlrkA3avTQQ,870
211
+ runtimepy/net/server/app/landing_page.py,sha256=9TXpL0ITYWCxw9Potq71ZOwLlIlMegcK6WHyD5INgWY,874
208
212
  runtimepy/net/server/app/placeholder.py,sha256=OuiMNvLEK0pI2N3oIqvPRaperoJkDg-fBds9HHfuosg,1664
209
213
  runtimepy/net/server/app/pyodide.py,sha256=dGJ4u78eYQLU9RQbZEWgzv-7jVIwblS6VopibG82tA4,478
210
214
  runtimepy/net/server/app/sound.py,sha256=qG2k00nWRPAmI5_4L_LMs10nsCTBKaAzIp80embgua8,837
211
- runtimepy/net/server/app/tab.py,sha256=gRiaUJdB3V9hIKI5MksW7spNChfMtEMDFWCTP1ERrZ4,2272
212
- runtimepy/net/server/app/env/__init__.py,sha256=_FcgefASOwifwT0m5opg8jQbpZAVoedhNxWw0v1VB1k,4147
215
+ runtimepy/net/server/app/tab.py,sha256=N4NYvxeo0fllb404aCHn7YKhlY6ZnG6G4HBiMS17qQY,2510
216
+ runtimepy/net/server/app/env/__init__.py,sha256=vgiPIYkitx0aqtmgG_nkOehDM7vrQJHYkhRsGCP8pU8,4877
213
217
  runtimepy/net/server/app/env/modal.py,sha256=HTipCYgQaAUtsmlBjXKfhAM5JyhLqoIIwEwsPnKhrG8,1740
214
- runtimepy/net/server/app/env/settings.py,sha256=DboR8vXrdGeB_ehP9USvnyUtzgo4JR5CyYV9AGLYHGI,1720
215
- runtimepy/net/server/app/env/widgets.py,sha256=XT39-9zJ-5-XhY-PWHmWAU4JMqY8I4syk1fYUYv2OzM,5413
218
+ runtimepy/net/server/app/env/settings.py,sha256=m87hHAapuNq0xKzDNSNTwG8D2Cb3QFSVrziszf8iVHs,1631
219
+ runtimepy/net/server/app/env/widgets.py,sha256=sDfJYBVIXZuly4Rvch597Y-LTT6t3obxc60oejqGv7g,7104
216
220
  runtimepy/net/server/app/env/tab/__init__.py,sha256=stTVKyHljLQWnnhxkWPwa7bLdZtjhiMFbiVFgbiYaFI,647
217
- runtimepy/net/server/app/env/tab/base.py,sha256=QBTBBvsdihbzK5MqrJBf6K5N61b3i8Ms0P6Xq_h1mbs,1171
218
- runtimepy/net/server/app/env/tab/controls.py,sha256=bifFMvshDNsar3UiqeXOCYi71JGFRlMnyixKXrdLAEI,4728
219
- runtimepy/net/server/app/env/tab/html.py,sha256=2Vgd50FubFlm24G5mECFrTi0YWYz3KIpcEq9mKtI5dk,7197
221
+ runtimepy/net/server/app/env/tab/base.py,sha256=mljE6n56HUwcWO1lrjj5PR7qh5dvY8CZYMwDcrV-yVk,1199
222
+ runtimepy/net/server/app/env/tab/controls.py,sha256=11TidvphKyvLCgdW8Sjiyd6BpX4-ybGZPEhrn-hzkuU,8263
223
+ runtimepy/net/server/app/env/tab/html.py,sha256=MbEQzxEPNcMCntGGm2qWli6ND_Ina46CEVzt7HF2yBg,8210
220
224
  runtimepy/net/server/app/env/tab/message.py,sha256=-J8wBo1KH0XoBi9VcUvl9LXZCaoFAmvFyMf_YFJVF6Q,3945
221
225
  runtimepy/net/server/struct/__init__.py,sha256=Zy37r6RLFu-XFr9vsanSq80BJdS6Dxr7zmPzQbb7xdw,1799
222
226
  runtimepy/net/server/websocket/__init__.py,sha256=KISuFUUQwNn6BXo8BOMuMOXyoVqE7Jw94ZQiSCQuRQE,5279
223
227
  runtimepy/net/server/websocket/state.py,sha256=tClzw_3pOV9fzsiqnmss0FUsZZPhInL2CnDi_jyrayI,2291
224
- runtimepy/net/stream/__init__.py,sha256=1PNossiE4S9wtPYoiHVsTeAMJFGtiak5vbsoIkVGfZs,2374
225
- runtimepy/net/stream/base.py,sha256=Dg4vcR0n9y2122AyJ-9W-jkEhNla_EHO-DqJJPfGD4k,1977
228
+ runtimepy/net/stream/__init__.py,sha256=B4NipXGwA2AQ5UJ8YVJqqOg_X_Cm7p2nfIbIXJMiGBI,2359
229
+ runtimepy/net/stream/base.py,sha256=lL2-t-T2ldfUJHuFIf8X4_WdXlsVZOue7w_FOLHtmQY,1987
226
230
  runtimepy/net/stream/string.py,sha256=61mgserU3p6j5gAcK0oe0aKqL6vDh7NtgJvbPoiAUPM,784
227
231
  runtimepy/net/stream/json/__init__.py,sha256=h--C_9moW92TC_e097FRRXcg8GJ6VVbMLXl1cICknys,2508
228
232
  runtimepy/net/tcp/__init__.py,sha256=OOWohegpoioSTf8M7uDf-4EV1IDungz7-U19L_2yW4I,250
229
- runtimepy/net/tcp/connection.py,sha256=sYWj2aDiAHQf70zfRJM24cHraFd_TuzTD4fRWeSQZXE,8811
233
+ runtimepy/net/tcp/connection.py,sha256=FL9SlODVAehECYgF9eKk8sbDMmTMBGlsGJlGaMncQh4,8793
230
234
  runtimepy/net/tcp/create.py,sha256=zZsRs5KYpO3bNGh-DwEOEzjUDE4ixj-UBHYgZ0GvC7c,2013
231
- runtimepy/net/tcp/protocol.py,sha256=vEnIX3gUX2nrw9ofT_e4KYU4VY2k4WP0WuOi4eE_OOQ,1444
232
- runtimepy/net/tcp/http/__init__.py,sha256=-ODo-dJcyD-NZnRIFoWT9JdQnDaP_cXJ9IViwXIQe24,6301
233
- runtimepy/net/tcp/scpi/__init__.py,sha256=aWCWQfdeyfoU9bpOnOtyIQbT1swl4ergXLFn5kXAH28,2105
234
- runtimepy/net/tcp/telnet/__init__.py,sha256=96eJFb301I3H2ivDtGMQtDDw09Xm5NRvM9VEC-wjt8c,4768
235
+ runtimepy/net/tcp/protocol.py,sha256=vT4HOH-WLrM0j4kUpQA_ZZOwA-kJPMP9M40ptuL84_0,1412
236
+ runtimepy/net/tcp/http/__init__.py,sha256=0nEB6KFqV9GxMwFKqKIswA0wihHfbLP5UD-r5ulgTj0,6391
237
+ runtimepy/net/tcp/scpi/__init__.py,sha256=FcNouVQh0A27-x16lzTbt7vZfWs4bRU9uZqbeVjDfiU,2173
238
+ runtimepy/net/tcp/telnet/__init__.py,sha256=2pGaG-IlZA29BM6QAvI4q9w484fgvypX4fOIioDem94,4814
235
239
  runtimepy/net/tcp/telnet/codes.py,sha256=1-yyRe-Kz_W7d6B0P3iT1AaSNR3_Twmn-MUjKCJJknY,3518
236
240
  runtimepy/net/tcp/telnet/np_05b.py,sha256=ikp9txHBvbRps6x7C1FsEf9i6vmUtGvei4Nukc_gypI,7887
237
241
  runtimepy/net/udp/__init__.py,sha256=VSgle6cO2RXfwaei66wMIJ4zSB4gzpoadSSbmLfCzBw,357
238
- runtimepy/net/udp/connection.py,sha256=Hv963vT9tnglpZOx4KUFuoYTBPr2rltYQWDNV3mhYpE,8018
242
+ runtimepy/net/udp/connection.py,sha256=n3fS3zVx24TP2Qx8rXkTCHlvJZV-Iq4QzXsQ3PJtmoY,8047
239
243
  runtimepy/net/udp/create.py,sha256=84YDfJbNBlN0ZwbNpvh6Dl7ZPecbZfmpjMNRRWcvJDk,2005
240
- runtimepy/net/udp/protocol.py,sha256=A4SRHf0CgcL2zDs1nAsGDqz0RxKBy1soS8wtNdS5S0I,1492
241
- runtimepy/net/udp/queue.py,sha256=DF-YscxQcGbGCYQLz_l_BMaSRfraZOhRwieTEdXLMds,637
244
+ runtimepy/net/udp/protocol.py,sha256=zx_756bqg-Ylqcufw6B0HQdJLhFIKfTtriCtbQUiCEg,1424
245
+ runtimepy/net/udp/queue.py,sha256=giSXovXeZwEyOOTb0pP0Q1Ffkc51QyWK0EsthXX0xjQ,706
242
246
  runtimepy/net/udp/tftp/__init__.py,sha256=lR8_bFo8ECHMQygWsmbnNpsLqmwu6818k-cjKRE57yk,8983
243
- runtimepy/net/udp/tftp/base.py,sha256=vpvjitZSD8R4Ggb21eIMNIsm54VkLBbBrTgMo65gn2o,11331
247
+ runtimepy/net/udp/tftp/base.py,sha256=cUEkRfzhi4eEQ3pxUsRsYl2_UlAQOjBkOixzVkaIG14,11377
244
248
  runtimepy/net/udp/tftp/endpoint.py,sha256=so60LdPTG66N5tdhHhiX7j_TBHvNOTi4JIgLcg2MAm0,10890
245
249
  runtimepy/net/udp/tftp/enums.py,sha256=06juMd__pJZsyL8zO8p3hRucnOratt1qtz9zcxzMg4s,1579
246
250
  runtimepy/net/udp/tftp/io.py,sha256=w6cnUt-T-Ma6Vg8BWoRbsNnIWUv0HTY4am6bcLWxNJs,803
247
251
  runtimepy/net/websocket/__init__.py,sha256=YjSmoxiigmsI_hcQw6nueX7bxhrRGerEERnPvgLVEVA,313
248
- runtimepy/net/websocket/connection.py,sha256=BMR58bLpHuulCdbLGnmMdFJOF53wVxYcUe52WbdzKEM,9025
252
+ runtimepy/net/websocket/connection.py,sha256=THrqy_WmwFuiNkojQ6pTUhBTJdokvWbH-3DsB96zCLU,10370
249
253
  runtimepy/noise/__init__.py,sha256=EJM7h3t_z74wwrn6FAFQwYE2yUcOZQ1K1IQqOb8Z0AI,384
250
254
  runtimepy/primitives/__init__.py,sha256=g5IK6e_UZuGhj9QNYoCn5TbhNatWX0nEYUs-JzsOizQ,2618
251
- runtimepy/primitives/base.py,sha256=5bMNHA9LA10qg8Qpg1YDjkfRZK0XWyaQsTNkNzaR9Es,9285
255
+ runtimepy/primitives/base.py,sha256=6N_mfTuv0RJJYofSQQ858vJfgcTvjjvfXeebMw_1bw8,9339
252
256
  runtimepy/primitives/bool.py,sha256=lATPgb1e62rjLn5XlJX8lP3tVYR3DlxV8RT9HpOMdT0,1640
253
257
  runtimepy/primitives/byte_order.py,sha256=J2Pg3gXg8Lmu_uU2mduNJt3mnP_enwDI4Y-X8kWAUP0,1456
254
258
  runtimepy/primitives/evaluation.py,sha256=0N7mT8uoiJaY-coF2PeEXU2WO-FmbyN2Io9_EaghO9Q,4657
@@ -256,26 +260,26 @@ runtimepy/primitives/float.py,sha256=6vzNKnnLzzM4vP10V4E0PHZQH6vTvIl34pId1oFtlqc
256
260
  runtimepy/primitives/int.py,sha256=Ia2vtzXXfBb8fj1mgwu_PFpblrL2qzsN4Qwjvk5NhT4,3618
257
261
  runtimepy/primitives/scaling.py,sha256=Vtxp2CSBahqPp4i2-IS4wjbcC023xwf-dqZMbYWf3V4,1144
258
262
  runtimepy/primitives/string.py,sha256=ic5VKhXCSIwEOUfqIb1VUpZPwjdAcBul-cLLIihVkQI,2532
259
- runtimepy/primitives/array/__init__.py,sha256=ZVJt4810hTFYMdolY_R75lRRHHaNKxZ4comBvuK_69E,8956
260
- runtimepy/primitives/field/__init__.py,sha256=iHZSQBozMpfiv_5KE_GIX1FAvDB9unUO0xmWZHiA_Jk,4491
261
- runtimepy/primitives/field/fields.py,sha256=c7J8BHAmOoJmRZQzYWKzYtsB_DnWwvRiKd0oj0HpyD0,7668
263
+ runtimepy/primitives/array/__init__.py,sha256=Wbhi0-frR72Yq1g0sZG2-kRpWX4uEvbEaOp8LCiKojI,8975
264
+ runtimepy/primitives/field/__init__.py,sha256=0xsbD95msOogDhoBLY-9hMM0AHVjVpCl26qfToKlJ54,5426
265
+ runtimepy/primitives/field/fields.py,sha256=Iq5FJihEVKDqFEsIgrLL8YtkyJhfxk4scAr5n0WtLG4,7967
262
266
  runtimepy/primitives/field/manager/__init__.py,sha256=BCRi6-_5OOJ8kz78JHkiLp8cZ71KA1uiF2zq5FFe9js,2586
263
- runtimepy/primitives/field/manager/base.py,sha256=lXEdRm4TlH8TYm_YQ8UH33RhDfH0OhUnwMx1Kc1I_ys,7066
267
+ runtimepy/primitives/field/manager/base.py,sha256=MKmm882Gr8gQcbycPoMQuQafBXsI7AjZEdqmc7ALu-Y,7568
264
268
  runtimepy/primitives/serializable/__init__.py,sha256=R9_derxnK1OCaYyqBZA4CCjPkXCBw6InkE8-3Zy75Uk,399
265
- runtimepy/primitives/serializable/base.py,sha256=EIj7Ao0sZaXCXgZari35kimjkr3SzFWGy3rNjxgsv1E,5727
266
- runtimepy/primitives/serializable/fixed.py,sha256=rhr6uVbo0Lvazk4fLI7iei-vVNEwP1J8-LoUjW1NaMI,1077
269
+ runtimepy/primitives/serializable/base.py,sha256=tcLC6l0cJfSFZc9MeREv_3BzpW9EJnEEaDDRbQ-qBgo,5795
270
+ runtimepy/primitives/serializable/fixed.py,sha256=gg86rultzHLW4qpYg8Z8hm06set7xmgcm50mTZixMPQ,1145
267
271
  runtimepy/primitives/serializable/framer.py,sha256=rsoGQz6vD7v_EMu67aqxVqbvmbs6hjytXZ8dHLBM0SQ,1815
268
- runtimepy/primitives/serializable/prefixed.py,sha256=oQXW0pGRovKolheL5ZL2m9aNVMCtKTAi5OlC9KW0iKI,2855
272
+ runtimepy/primitives/serializable/prefixed.py,sha256=brERtFPV1UsO6p5D6Da_5kRy8MITQ_3cCDUeu8LfnaM,2916
269
273
  runtimepy/primitives/types/__init__.py,sha256=AcjLKotJ3A-9jNgThca1dBKsGKENPUGPiJAb6aauTpA,1876
270
- runtimepy/primitives/types/base.py,sha256=rR1JkExMV2FJmvU-WfgnikG-UtFfsXGs_eBCIV6II1A,4879
274
+ runtimepy/primitives/types/base.py,sha256=B37oV2tguZcPpygripAnNf1PFAA55NFlkZC0i7aKTIc,4940
271
275
  runtimepy/primitives/types/bool.py,sha256=J0SYdp-9eIRs337d9qnw2f7IXTPQj_F21ugMIJ8-Hy4,547
272
- runtimepy/primitives/types/bounds.py,sha256=Hc2GWu4qJMEAF8IiDWFA_6VCNUtrNf5RmiEbSJ76dJI,1145
276
+ runtimepy/primitives/types/bounds.py,sha256=rBwcdHvMxZG5ikirTwfVnXIVKJ1mx3cM01XCprzXOZM,1349
273
277
  runtimepy/primitives/types/float.py,sha256=yjiU1AGzekY8PjDcLNdoXMGDsdP5aDYWjLb3_RntRpA,1388
274
278
  runtimepy/primitives/types/int.py,sha256=Gjro7RgPL1girVVXhvDErvRwxlfHclMr7tZEFYj-Uj4,3807
275
- runtimepy/registry/__init__.py,sha256=NpMxvdmjRtE3jCCOuYU_CPpYWqCZ5byXWhJNTB6jZUk,3425
279
+ runtimepy/registry/__init__.py,sha256=MDgJjHYVpG4FTByc9nws2pDR3lSa24iuB9NUXaF7ckM,4152
276
280
  runtimepy/registry/bool.py,sha256=ri56paLqwIOUo9JkSpwvrWmed9lHA851gke-0m8vGew,735
277
281
  runtimepy/registry/item.py,sha256=HPqxmzuK8aOc1siHzYScgxYxSMZ4RVTmnsRW2oNcW34,852
278
- runtimepy/registry/name.py,sha256=uhxmijwUT7x59NUYV4hJSe7VcnAbLDUSAPaKhR6K-N0,1749
282
+ runtimepy/registry/name.py,sha256=TkNm7kff_Id6p_b9jr8YTi1UN1xCNzwk38IEomE7o5Q,1915
279
283
  runtimepy/sample/__init__.py,sha256=N7P6hnCLF9NwnkZA1h3LzS2C334SAO48Fu8adHxWGLU,56
280
284
  runtimepy/sample/peer.py,sha256=uNlIPAv1-wjGUWdR0AM3L9NUMjnIMJBqQ9ZsHdTLx3Q,1688
281
285
  runtimepy/sample/program.py,sha256=AFqinsnsjzatgJXePAO4yXYerxmzN7ajtDmJPwWigYc,2428
@@ -301,10 +305,10 @@ runtimepy/tui/mock.py,sha256=Vn0XK2OQ_ukSSHeS8xkzFfJPsmAplRiu7vIwb2SnUHI,1874
301
305
  runtimepy/tui/task.py,sha256=nUZo9fuOC-k1Wpqdzkv9v1tQirCI28fZVgcC13Ijvus,1093
302
306
  runtimepy/tui/channels/__init__.py,sha256=evDaiIn-YS9uGhdo8ZGtP9VK1ek6sr_P1nJ9JuSET0o,4536
303
307
  runtimepy/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
304
- runtimepy/ui/controls.py,sha256=yvT7h3thbYaitsakcIAJ90EwKzJ4b-jnc6p3UuVf_XE,1241
305
- runtimepy-5.14.2.dist-info/licenses/LICENSE,sha256=yKBRwbO-cOPBrlpsZmJkkSa33DfY31aE8t7lZ0DwlUo,1071
306
- runtimepy-5.14.2.dist-info/METADATA,sha256=X_vqvOJe5dbwhTksgXV9TRN9hJLZkLQ9DXUiJ2MO7po,9269
307
- runtimepy-5.14.2.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
308
- runtimepy-5.14.2.dist-info/entry_points.txt,sha256=-btVBkYv7ybcopqZ_pRky-bEzu3vhbaG3W3Z7ERBiFE,51
309
- runtimepy-5.14.2.dist-info/top_level.txt,sha256=0jPmh6yqHyyJJDwEID-LpQly-9kQ3WRMjH7Lix8peLg,10
310
- runtimepy-5.14.2.dist-info/RECORD,,
308
+ runtimepy/ui/controls.py,sha256=L55Af-4vGq6ZHewdoA7C_mAYq35WXl8NzOdcsmQIo7M,1868
309
+ runtimepy-5.15.1.dist-info/licenses/LICENSE,sha256=yKBRwbO-cOPBrlpsZmJkkSa33DfY31aE8t7lZ0DwlUo,1071
310
+ runtimepy-5.15.1.dist-info/METADATA,sha256=3j48z5hnAIZFf5Nf3sQNIHAmDou7FrpFtm9YAwy6MD8,9268
311
+ runtimepy-5.15.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
312
+ runtimepy-5.15.1.dist-info/entry_points.txt,sha256=-btVBkYv7ybcopqZ_pRky-bEzu3vhbaG3W3Z7ERBiFE,51
313
+ runtimepy-5.15.1.dist-info/top_level.txt,sha256=0jPmh6yqHyyJJDwEID-LpQly-9kQ3WRMjH7Lix8peLg,10
314
+ runtimepy-5.15.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.4.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
runtimepy/data/404.html DELETED
@@ -1,7 +0,0 @@
1
- <!doctype html><html lang=en><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>Libre Embedded - Home
2
- </title><meta http-equiv=Cache-Control content="public"><link rel=icon href=/favicon.ico><meta name=description content="Libre Embedded Engineering Technologies LLC is an engineering consultancy and product development company. This page was rendered from Markdown by runtimepy/5.13.3."><style>@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-Regular.woff2)}@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-Bold.woff2);font-weight:700}@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-BoldItalic.woff2);font-weight:700;font-style:italic}@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-Italic.woff2);font-style:italic}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-Regular.woff2)}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-Bold.woff2);font-weight:700}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-BoldItalic.woff2);font-weight:700;font-style:italic}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-Italic.woff2);font-style:italic}</style><link rel=stylesheet href=/static/css/bootstrap-icons.min.css></link>
3
- <link href=/static/css/bootstrap.min.css rel=stylesheet crossorigin=anonymous></link><style>html{height:100%;width:100%;position:fixed}body{height:100%;margin:0;overflow:hidden}body>:first-child{height:100%}#runtimepy{height:100%}#runtimepy-tabs{width:min-content}#runtimepy-splash{position:fixed;top:0;left:0;width:100vw;height:100vh;opacity:1}.click-plot{cursor:pointer}.stale{color:var(--bs-warning-text-emphasis)!important}.slider{min-width:8em}.toggle-value{}.window-button{border-right:var(--bs-border-width)var(--bs-border-style)var(--bs-link-hover-color)!important}:focus{outline:none}.flex-column-scroll-bodge{height:100%;flex-wrap:nowrap;overflow-y:scroll;flex-shrink:0}.scroll{overflow:scroll}.tab-content-bodge{width:100%;height:100%}.button-bodge{text-align:left}.collapsing{transition:none!important}.tab-pane.fade{transition:none!important}.modal.fade{transition:none!important}.modal-dialog{width:80%;max-width:80%}.table{margin-bottom:0;width:auto}.table-container{overflow-x:scroll;min-height:fit-content}.channel-column{overflow-y:scroll;overflow-x:hidden;flex-grow:0;flex-shrink:0;max-width:75%}.channel-value{min-width:10em}.table>tbody>tr>td{vertical-align:middle}.collapse:not(.show){display:none!important}select.form-select{width:min-content}select.form-select:hover{cursor:pointer}textarea.text-logs{min-height:10em!important;padding-top:0!important;padding-bottom:0!important;border-top:0}.vertical-divider{flex-basis:.75em;flex-grow:0;flex-shrink:0}pre{color:var(--bs-code-color)}.vertical-divider:hover{cursor:col-resize;background-color:var(--bs-highlight-bg)!important}button:hover{background-color:var(--bs-tertiary-bg)}.channel-value-input{width:6em}:root,[data-bs-theme=dark],[data-bs-theme=light]{--bs-font-sans-serif:CascadiaCode, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace:CascadiaMono, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}</style><div id=runtimepy class="d-flex bg-body align-items-start" data-bs-theme=dark><div class="bg-dark-subtle d-flex h-100 flex-column"><button type=button id=theme-button title="change theme button" class="btn btn-secondary rounded-0 font-monospace button-bodge text-nowrap has-tooltip" data-bs-title="Toggle light/dark." data-bs-placement=right>
4
- <i class="bi bi-lightbulb"></i>
5
- </button>
6
- <a href="?print=true"><button type=button id=print-button title="print-view button" class="btn btn-secondary rounded-0 font-monospace button-bodge text-nowrap has-tooltip" data-bs-title="Printer-friendly view." data-bs-placement=right>
7
- <i class="bi bi-printer"></i></button></a></div><div class="h-100 flex-grow-1 justify-content-between text-body d-flex overflow-y-auto flex-column"><div></div><div class="justify-content-between d-flex flex-row"><div></div><div class="text-body p-3 pb-0"><h1><a href=/><img alt=logo src=/static/png/chip-circle-bootstrap/128x128.png></a> Resource Not Found (404) <a href=/><img alt=logo src=/static/png/chip-circle-bootstrap/128x128.png></a></h1><p>(<a href=/>home</a>)</div><div></div></div><div></div></div></div><script>function worker_config(e){let t={},s="runtimepy_websocket",n="ws";location.protocol.includes("https")&&(s="runtimepy_secure_websocket",n+="s");let o=e.config.ports;for(let r in o){let i=o[r],a=e.config.websocket_hostname||window.location.hostname;i.name.includes(s)&&(i.name.includes("data")?t.data=`${n}://${a}:`+i.port:t.json=`${n}://${a}:`+i.port)}return t}let tabFilter=void 0;function bootstrap_init(){const t=document.querySelectorAll(".has-tooltip"),n=[...t].map(e=>new bootstrap.Tooltip(e));let e=document.getElementById("runtimepy-tabs");e&&(tabFilter=new TabFilter(e))}let lightMode=!1;function lightDarkClick(){lightMode=!lightMode,document.getElementById("runtimepy").setAttribute("data-bs-theme",lightMode?"light":"dark"),window.location.hash=lightMode?"#light-mode":""}window.onload=()=>{let e=document.getElementById("theme-button");if(e&&e.addEventListener("click",lightDarkClick),window.location.hash){let t=window.location.hash.slice(1).split(",");t.includes("light-mode")&&e.click()}bootstrap_init()}</script><script src=/static/js/bootstrap.bundle.min.js crossorigin=anonymous></script>