spacr 0.2.1__py3-none-any.whl → 0.2.21__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 (90) hide show
  1. spacr/gui.py +2 -1
  2. spacr/gui_elements.py +2 -7
  3. spacr/resources/icons/abort.png +0 -0
  4. spacr/resources/icons/classify.png +0 -0
  5. spacr/resources/icons/make_masks.png +0 -0
  6. spacr/resources/icons/mask.png +0 -0
  7. spacr/resources/icons/measure.png +0 -0
  8. spacr/resources/icons/recruitment.png +0 -0
  9. spacr/resources/icons/regression.png +0 -0
  10. spacr/resources/icons/run.png +0 -0
  11. spacr/resources/icons/umap.png +0 -0
  12. {spacr-0.2.1.dist-info → spacr-0.2.21.dist-info}/METADATA +1 -1
  13. spacr-0.2.21.dist-info/RECORD +56 -0
  14. spacr/alpha.py +0 -807
  15. spacr/annotate_app.py +0 -670
  16. spacr/annotate_app_v2.py +0 -670
  17. spacr/app_make_masks_v2.py +0 -686
  18. spacr/classify_app.py +0 -201
  19. spacr/cli.py +0 -41
  20. spacr/foldseek.py +0 -779
  21. spacr/get_alfafold_structures.py +0 -72
  22. spacr/gui_2.py +0 -157
  23. spacr/gui_annotate.py +0 -145
  24. spacr/gui_classify_app.py +0 -201
  25. spacr/gui_make_masks_app.py +0 -927
  26. spacr/gui_make_masks_app_v2.py +0 -688
  27. spacr/gui_mask_app.py +0 -249
  28. spacr/gui_measure_app.py +0 -246
  29. spacr/gui_run.py +0 -58
  30. spacr/gui_sim_app.py +0 -0
  31. spacr/gui_wrappers.py +0 -149
  32. spacr/icons/abort.png +0 -0
  33. spacr/icons/abort.svg +0 -1
  34. spacr/icons/download.png +0 -0
  35. spacr/icons/download.svg +0 -1
  36. spacr/icons/download_for_offline_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png +0 -0
  37. spacr/icons/download_for_offline_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg +0 -1
  38. spacr/icons/logo_spacr.png +0 -0
  39. spacr/icons/make_masks.png +0 -0
  40. spacr/icons/make_masks.svg +0 -1
  41. spacr/icons/map_barcodes.png +0 -0
  42. spacr/icons/map_barcodes.svg +0 -1
  43. spacr/icons/mask.png +0 -0
  44. spacr/icons/mask.svg +0 -1
  45. spacr/icons/measure.png +0 -0
  46. spacr/icons/measure.svg +0 -1
  47. spacr/icons/play_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png +0 -0
  48. spacr/icons/play_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg +0 -1
  49. spacr/icons/run.png +0 -0
  50. spacr/icons/run.svg +0 -1
  51. spacr/icons/sequencing.png +0 -0
  52. spacr/icons/sequencing.svg +0 -1
  53. spacr/icons/settings.png +0 -0
  54. spacr/icons/settings.svg +0 -1
  55. spacr/icons/settings_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png +0 -0
  56. spacr/icons/settings_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg +0 -1
  57. spacr/icons/stop_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png +0 -0
  58. spacr/icons/stop_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg +0 -1
  59. spacr/icons/theater_comedy_100dp_E8EAED_FILL0_wght100_GRAD200_opsz48.png +0 -0
  60. spacr/icons/theater_comedy_100dp_E8EAED_FILL0_wght100_GRAD200_opsz48.svg +0 -1
  61. spacr/make_masks_app.py +0 -929
  62. spacr/make_masks_app_v2.py +0 -688
  63. spacr/mask_app.py +0 -249
  64. spacr/measure_app.py +0 -246
  65. spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model +0 -0
  66. spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv +0 -23
  67. spacr/models/cp/toxo_pv_lumen.CP_model +0 -0
  68. spacr/old_code.py +0 -358
  69. spacr/resources/icons/abort.svg +0 -1
  70. spacr/resources/icons/annotate.svg +0 -1
  71. spacr/resources/icons/classify.svg +0 -1
  72. spacr/resources/icons/download.svg +0 -1
  73. spacr/resources/icons/icon.psd +0 -0
  74. spacr/resources/icons/make_masks.svg +0 -1
  75. spacr/resources/icons/map_barcodes.svg +0 -1
  76. spacr/resources/icons/mask.svg +0 -1
  77. spacr/resources/icons/measure.svg +0 -1
  78. spacr/resources/icons/run.svg +0 -1
  79. spacr/resources/icons/run_2.png +0 -0
  80. spacr/resources/icons/run_2.svg +0 -1
  81. spacr/resources/icons/sequencing.svg +0 -1
  82. spacr/resources/icons/settings.svg +0 -1
  83. spacr/resources/icons/train_cellpose.svg +0 -1
  84. spacr/test_gui.py +0 -0
  85. spacr-0.2.1.dist-info/RECORD +0 -126
  86. /spacr/resources/icons/{cellpose.png → cellpose_all.png} +0 -0
  87. {spacr-0.2.1.dist-info → spacr-0.2.21.dist-info}/LICENSE +0 -0
  88. {spacr-0.2.1.dist-info → spacr-0.2.21.dist-info}/WHEEL +0 -0
  89. {spacr-0.2.1.dist-info → spacr-0.2.21.dist-info}/entry_points.txt +0 -0
  90. {spacr-0.2.1.dist-info → spacr-0.2.21.dist-info}/top_level.txt +0 -0
spacr/gui_wrappers.py DELETED
@@ -1,149 +0,0 @@
1
- import traceback, matplotlib, spacr
2
- import matplotlib.pyplot as plt
3
- matplotlib.use('Agg')
4
-
5
- fig_queue = None
6
-
7
- def spacrFigShow_v1():
8
- """
9
- Replacement for plt.show() that queues figures instead of displaying them.
10
- """
11
- global fig_queue
12
- fig = plt.gcf()
13
- fig_queue.put(fig)
14
- plt.close(fig)
15
-
16
- def spacrFigShow(fig_queue=None):
17
- """
18
- Replacement for plt.show() that queues figures instead of displaying them.
19
- """
20
- fig = plt.gcf()
21
- if fig_queue:
22
- fig_queue.put(fig)
23
- else:
24
- fig.show()
25
- plt.close(fig)
26
-
27
- def preprocess_generate_masks_wrapper(settings, q, fig_queue):
28
- """
29
- Wraps the measure_crop function to integrate with GUI processes.
30
-
31
- Parameters:
32
- - settings: dict, The settings for the measure_crop function.
33
- - q: multiprocessing.Queue, Queue for logging messages to the GUI.
34
- - fig_queue: multiprocessing.Queue, Queue for sending figures to the GUI.
35
- """
36
-
37
- # Temporarily override plt.show
38
- original_show = plt.show
39
- plt.show = lambda: spacrFigShow(fig_queue)
40
-
41
- try:
42
- spacr.core.preprocess_generate_masks(src=settings['src'], settings=settings)
43
- except Exception as e:
44
- errorMessage = f"Error during processing: {e}"
45
- q.put(errorMessage)
46
- traceback.print_exc()
47
- finally:
48
- plt.show = original_show
49
-
50
- def measure_crop_wrapper(settings, q, fig_queue):
51
- """
52
- Wraps the measure_crop function to integrate with GUI processes.
53
-
54
- Parameters:
55
- - settings: dict, The settings for the measure_crop function.
56
- - q: multiprocessing.Queue, Queue for logging messages to the GUI.
57
- - fig_queue: multiprocessing.Queue, Queue for sending figures to the GUI.
58
- """
59
-
60
- # Temporarily override plt.show
61
- original_show = plt.show
62
- plt.show = lambda: spacrFigShow(fig_queue)
63
-
64
- try:
65
- print('start')
66
- spacr.measure.measure_crop(settings=settings)
67
- except Exception as e:
68
- errorMessage = f"Error during processing: {e}"
69
- q.put(errorMessage)
70
- traceback.print_exc()
71
- finally:
72
- plt.show = original_show
73
-
74
- def sequencing_wrapper(settings, q, fig_queue):
75
-
76
- # Temporarily override plt.show
77
- original_show = plt.show
78
- plt.show = lambda: spacrFigShow(fig_queue)
79
-
80
- try:
81
- spacr.sequencing.analyze_reads(settings=settings)
82
- except Exception as e:
83
- errorMessage = f"Error during processing: {e}"
84
- q.put(errorMessage)
85
- traceback.print_exc()
86
- finally:
87
- plt.show = original_show
88
-
89
- def umap_wrapper(settings, q, fig_queue):
90
-
91
- # Temporarily override plt.show
92
- original_show = plt.show
93
- plt.show = lambda: spacrFigShow(fig_queue)
94
-
95
- try:
96
- spacr.core.generate_image_umap(settings=settings)
97
- except Exception as e:
98
- errorMessage = f"Error during processing: {e}"
99
- q.put(errorMessage)
100
- traceback.print_exc()
101
- finally:
102
- plt.show = original_show
103
-
104
- def train_test_model_wrapper(settings, q, fig_queue):
105
- """
106
- Wraps the measure_crop function to integrate with GUI processes.
107
-
108
- Parameters:
109
- - settings: dict, The settings for the measure_crop function.
110
- - q: multiprocessing.Queue, Queue for logging messages to the GUI.
111
- - fig_queue: multiprocessing.Queue, Queue for sending figures to the GUI.
112
- """
113
-
114
- # Temporarily override plt.show
115
- original_show = plt.show
116
- plt.show = lambda: spacrFigShow(fig_queue)
117
-
118
- try:
119
- spacr.core.train_test_model(settings['src'], settings=settings)
120
- except Exception as e:
121
- errorMessage = f"Error during processing: {e}"
122
- q.put(errorMessage) # Send the error message to the GUI via the queue
123
- traceback.print_exc()
124
- finally:
125
- plt.show = original_show # Restore the original plt.show function
126
-
127
-
128
- def run_multiple_simulations_wrapper(settings, q, fig_queue):
129
- """
130
- Wraps the run_multiple_simulations function to integrate with GUI processes.
131
-
132
- Parameters:
133
- - settings: dict, The settings for the run_multiple_simulations function.
134
- - q: multiprocessing.Queue, Queue for logging messages to the GUI.
135
- - fig_queue: multiprocessing.Queue, Queue for sending figures to the GUI.
136
- """
137
-
138
- # Temporarily override plt.show
139
- original_show = plt.show
140
- plt.show = lambda: spacrFigShow(fig_queue)
141
-
142
- try:
143
- spacr.sim.run_multiple_simulations(settings=settings)
144
- except Exception as e:
145
- errorMessage = f"Error during processing: {e}"
146
- q.put(errorMessage) # Send the error message to the GUI via the queue
147
- traceback.print_exc()
148
- finally:
149
- plt.show = original_show # Restore the original plt.show function
spacr/icons/abort.png DELETED
Binary file
spacr/icons/abort.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M349.5-349.5h262v-262h-262v262ZM480.57-132q-72.94 0-135.93-27.52-62.99-27.53-110.39-74.85-47.4-47.33-74.82-110.1Q132-407.25 132-480.2q0-72.03 27.52-135.59 27.53-63.56 74.85-110.71 47.33-47.15 110.1-74.32Q407.25-828 480.2-828q72.03 0 135.59 27.39 63.57 27.39 110.72 74.35 47.14 46.96 74.31 110.39Q828-552.43 828-480.57q0 72.94-27.27 135.93-27.28 62.99-74.35 110.21-47.08 47.21-110.51 74.82Q552.43-132 480.57-132Zm-.14-22q135.07 0 230.32-95.18Q806-344.37 806-480.43q0-135.07-95-230.32Q616.01-806 480.07-806q-135.57 0-230.82 95Q154-616.01 154-480.07q0 135.57 95.18 230.82Q344.37-154 480.43-154ZM480-480Z"/></svg>
spacr/icons/download.png DELETED
Binary file
spacr/icons/download.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M306-306h348v-22H306v22Zm173-132 124-123-16-16-97 97v-214h-22v214l-96-97-16 16 123 123Zm1.3 306q-72.21 0-135.43-27.52-63.22-27.53-110.62-74.85-47.4-47.33-74.82-110.26Q132-407.57 132-479.7q0-72.21 27.52-135.93 27.53-63.72 74.85-110.87 47.33-47.15 110.26-74.32Q407.57-828 479.7-828q72.21 0 135.94 27.39 63.72 27.39 110.87 74.35 47.14 46.96 74.31 110.39Q828-552.43 828-480.3q0 72.21-27.27 135.43-27.28 63.22-74.35 110.62-47.08 47.4-110.51 74.82Q552.43-132 480.3-132Zm-.37-22q135.57 0 230.82-95.18Q806-344.37 806-479.93q0-135.57-95.18-230.82Q615.63-806 480.07-806q-135.57 0-230.82 95.18Q154-615.63 154-480.07q0 135.57 95.18 230.82Q344.37-154 479.93-154Zm.07-326Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M306-306h348v-22H306v22Zm173-132 124-123-16-16-97 97v-214h-22v214l-96-97-16 16 123 123Zm1.3 306q-72.21 0-135.43-27.52-63.22-27.53-110.62-74.85-47.4-47.33-74.82-110.26Q132-407.57 132-479.7q0-72.21 27.52-135.93 27.53-63.72 74.85-110.87 47.33-47.15 110.26-74.32Q407.57-828 479.7-828q72.21 0 135.94 27.39 63.72 27.39 110.87 74.35 47.14 46.96 74.31 110.39Q828-552.43 828-480.3q0 72.21-27.27 135.43-27.28 63.22-74.35 110.62-47.08 47.4-110.51 74.82Q552.43-132 480.3-132Zm-.37-22q135.57 0 230.82-95.18Q806-344.37 806-479.93q0-135.57-95.18-230.82Q615.63-806 480.07-806q-135.57 0-230.82 95.18Q154-615.63 154-480.07q0 135.57 95.18 230.82Q344.37-154 479.93-154Zm.07-326Z"/></svg>
Binary file
Binary file
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M747-671q12.55 0 23.78-10.51Q782-692.01 782-704.98q0-13.72-11.22-23.87Q759.55-739 747-739q-13.7 0-23.85 10.24Q713-718.52 713-704.68q0 12.68 10.15 23.18T747-671Zm-166.09 0q13.67 0 24.38-10.51Q616-692.01 616-704.98q0-13.72-10.71-23.87Q594.59-739 580.93-739q-12.81 0-22.87 10.24T548-704.68q0 12.68 9.84 23.18 9.83 10.5 23.07 10.5ZM570-535h188q-5-25-31.74-42.5-26.75-17.5-62.22-17.5-37.48 0-64.26 17.5Q573-560 570-535ZM296.79-116q-85.29 0-143.54-59.21Q95-234.42 95-318v-239h401v238.53q0 83.89-57.58 143.18Q380.84-116 296.79-116Zm-1.04-35q69.13 0 117.19-49T461-317.77V-522H130v204.23Q130-249 178.31-200q48.3 49 117.44 49ZM664-405q-28.58 0-57.79-8T561-434l2-38q20.4 14 45.33 23 24.94 9 55.67 9 68.65 0 117.33-47.33Q830-534.65 830-603.26V-810H497v189h-35v-224h403v241.53q0 82.89-58.62 140.68Q747.75-405 664-405Zm-449.23 19q13.37 0 23.3-9.59Q248-405.17 248-419q0-13.1-9.84-24.05Q228.33-454 215.09-454q-13.66 0-24.38 10.84Q180-432.32 180-419.39q0 14.09 10.7 23.74 10.7 9.65 24.07 9.65Zm164.9 0q13.07 0 23.2-9.59Q413-405.17 413-419q0-13.1-9.86-24.05Q393.28-454 380-454q-14.12 0-24.56 10.84T345-419.39q0 14.09 10.8 23.74 10.79 9.65 23.87 9.65Zm-82.71 140q37.48 0 64.26-17Q388-280 391-306H203q3 26 29.74 43 26.75 17 64.22 17Zm.04-92Zm367-286Z"/></svg>
Binary file
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M103-221v-479h71v479h-71Zm103 0v-479h69v479h-69Zm103 0v-479h34v479h-34Zm103 0v-479h68v479h-68Zm103 0v-479h103v479H515Zm137 0v-479h34v479h-34Zm103 0v-479h103v479H755Z"/></svg>
spacr/icons/mask.png DELETED
Binary file
spacr/icons/mask.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M480-309q48.46 0 84.23-29T610-414H349q9 47 45.77 76T480-309ZM301-591h129q0-27-19.08-46-19.09-19-46.5-19Q337-656 319-637.09q-18 18.92-18 46.09Zm229-1h130q0-27-18.87-45.5-18.88-18.5-46-18.5-27.83 0-46.48 18.41Q530-619.17 530-592Zm-50.2 476q-66.8 0-125.64-25.39t-103.5-70Q206-256 181-315.04 156-374.09 156-442v-402h648v402.09q0 67.91-25.2 127.04-25.21 59.12-69.5 103.5Q665-167 605.8-141.5q-59.21 25.5-126 25.5Zm-.3-35q120.5 0 205-84.59Q769-320.17 769-442v-367H191v366.78Q191-320 274.5-235.5t205 84.5Zm.5-329Z"/></svg>
spacr/icons/measure.png DELETED
Binary file
spacr/icons/measure.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="m90-271-28-22 171-275 119.14 140L512-684l85 127q-7.71 3.67-16.79 6.17-9.07 2.5-16.21 6.83l-51-75-152.11 250L239-510 90-271ZM872-63 728-206q-19 14-38.33 20-19.32 6-40.67 6-54.92 0-92.96-38.06-38.04-38.06-38.04-93t38.06-93.44q38.06-38.5 93-38.5t93.44 38.33Q781-366.33 781-311q0 23-7 43t-22 37.45L897-88l-25 25ZM648.86-215q40.08 0 68.61-28.1T746-310.86q0-40.08-28.4-68.61T649.1-408q-40.1 0-68.1 28.4-28 28.4-28 68.5t28.1 68.1q28.1 28 67.76 28ZM720-555q-11-3-20.6-3.45-9.59-.46-17.4-.55l188-299 29 22-179 281Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="m407-351 202-129-202-129v258Zm73.3 219q-72.21 0-135.43-27.52-63.22-27.53-110.62-74.85-47.4-47.33-74.82-110.26Q132-407.57 132-479.7q0-72.21 27.52-135.93 27.53-63.72 74.85-110.87 47.33-47.15 110.26-74.32Q407.57-828 479.7-828q72.21 0 135.94 27.39 63.72 27.39 110.87 74.35 47.14 46.96 74.31 110.39Q828-552.43 828-480.3q0 72.21-27.27 135.43-27.28 63.22-74.35 110.62-47.08 47.4-110.51 74.82Q552.43-132 480.3-132Zm-.37-22q135.57 0 230.82-95.18Q806-344.37 806-479.93q0-135.57-95.18-230.82Q615.63-806 480.07-806q-135.57 0-230.82 95.18Q154-615.63 154-480.07q0 135.57 95.18 230.82Q344.37-154 479.93-154Zm.07-326Z"/></svg>
spacr/icons/run.png DELETED
Binary file
spacr/icons/run.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="m407-351 202-129-202-129v258Zm73.3 219q-72.21 0-135.43-27.52-63.22-27.53-110.62-74.85-47.4-47.33-74.82-110.26Q132-407.57 132-479.7q0-72.21 27.52-135.93 27.53-63.72 74.85-110.87 47.33-47.15 110.26-74.32Q407.57-828 479.7-828q72.21 0 135.94 27.39 63.72 27.39 110.87 74.35 47.14 46.96 74.31 110.39Q828-552.43 828-480.3q0 72.21-27.27 135.43-27.28 63.22-74.35 110.62-47.08 47.4-110.51 74.82Q552.43-132 480.3-132Zm-.37-22q135.57 0 230.82-95.18Q806-344.37 806-479.93q0-135.57-95.18-230.82Q615.63-806 480.07-806q-135.57 0-230.82 95.18Q154-615.63 154-480.07q0 135.57 95.18 230.82Q344.37-154 479.93-154Zm.07-326Z"/></svg>
Binary file
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M246-80v-20q0-141.45 56.5-215.72Q359-390 455-480q-97-90-153.5-164.28Q245-718.55 245-860v-21h34.66v21q0 17 1.08 33.5Q281.83-810 286-796h388.14q2.93-14 4.4-30.5Q680-843 680-860v-21h35v21q0 141.45-57 215.72Q601-570 506-480q95 89 152 163.78 57 74.77 57 216.22v20h-34.66v-20q0-17-1.58-33.5Q677.17-150 674-164H286.86q-3.93 14-4.9 30.5Q281-117 281-100v20h-35Zm99-565h269.18q18.82-25 33.32-54t23.5-62H290q7 34.65 21.25 62.86Q325.5-669.92 345-645Zm135 141q31.34-29.33 58.17-54.67Q565-584 588-610H371q22.75 26.33 50.25 51.67Q448.76-533 480-504ZM372-350h216q-23-26-49.83-51.33Q511.34-426.67 480-457q-31.34 30.33-58.17 55.67Q395-376 372-350Zm-81 151h380q-9-34.5-23.25-62.76Q633.5-290.03 614-315H346q-18.97 24.67-33.48 53.83Q298-232 291-199Z"/></svg>
spacr/icons/settings.png DELETED
Binary file
spacr/icons/settings.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="m421.5-132-15-110.94Q383-249.5 355-265.5t-47.25-34l-101.25 46-59-105 90-66.5q-2.5-13.48-3.75-26.99-1.25-13.51-1.25-27.01 0-12 1.25-26t3.25-30l-89.5-68.5 59-102 101 44q21.5-17 47.5-32.5t50.5-22.5l16-111.5h118l15 112q26 9.5 49.25 23T649-661.5l106.5-44 58 102-94 70.54q3 14.96 4.5 27.96t1.5 24.75q0 10.75-1.75 23.84T719-426.42l93 67.92-59 105-104-47q-22.97 20.36-46.49 35.18Q579-250.5 554.5-244l-15 112h-118Zm17.74-22h80.79l15.69-111.5q29.86-8.07 54.11-21.69Q614.08-300.82 641-326l102.5 44 39.5-68.51L693-418q3.5-19 6-33.71t2.5-28.66q0-16.13-2.25-29.88T693-540l92-69-39.5-69-105 44q-19-20-49.75-39t-56.25-22.5L521.43-806H439l-11.5 110.07q-33 6.43-58.25 20.68T318-635l-102.5-43-40.5 69 90.5 65.5q-5 14-7 30.14t-2 33.83q0 17.03 1.75 31.78T264-418l-89 67 40.14 69 102.36-43q23.5 25.5 49.5 39.25T426.28-264l12.96 110Zm38.25-241q36.05 0 60.53-24.5Q562.5-444 562.5-480T538-540.5Q513.5-565 477.5-565T417-540.5Q392.5-516 392.5-480t24.5 60.5q24.5 24.5 60.49 24.5Zm3.01-85.5Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="m421.5-132-15-110.94Q383-249.5 355-265.5t-47.25-34l-101.25 46-59-105 90-66.5q-2.5-13.48-3.75-26.99-1.25-13.51-1.25-27.01 0-12 1.25-26t3.25-30l-89.5-68.5 59-102 101 44q21.5-17 47.5-32.5t50.5-22.5l16-111.5h118l15 112q26 9.5 49.25 23T649-661.5l106.5-44 58 102-94 70.54q3 14.96 4.5 27.96t1.5 24.75q0 10.75-1.75 23.84T719-426.42l93 67.92-59 105-104-47q-22.97 20.36-46.49 35.18Q579-250.5 554.5-244l-15 112h-118Zm17.74-22h80.79l15.69-111.5q29.86-8.07 54.11-21.69Q614.08-300.82 641-326l102.5 44 39.5-68.51L693-418q3.5-19 6-33.71t2.5-28.66q0-16.13-2.25-29.88T693-540l92-69-39.5-69-105 44q-19-20-49.75-39t-56.25-22.5L521.43-806H439l-11.5 110.07q-33 6.43-58.25 20.68T318-635l-102.5-43-40.5 69 90.5 65.5q-5 14-7 30.14t-2 33.83q0 17.03 1.75 31.78T264-418l-89 67 40.14 69 102.36-43q23.5 25.5 49.5 39.25T426.28-264l12.96 110Zm38.25-241q36.05 0 60.53-24.5Q562.5-444 562.5-480T538-540.5Q513.5-565 477.5-565T417-540.5Q392.5-516 392.5-480t24.5 60.5q24.5 24.5 60.49 24.5Zm3.01-85.5Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M349.5-349.5h262v-262h-262v262ZM480.57-132q-72.94 0-135.93-27.52-62.99-27.53-110.39-74.85-47.4-47.33-74.82-110.1Q132-407.25 132-480.2q0-72.03 27.52-135.59 27.53-63.56 74.85-110.71 47.33-47.15 110.1-74.32Q407.25-828 480.2-828q72.03 0 135.59 27.39 63.57 27.39 110.72 74.35 47.14 46.96 74.31 110.39Q828-552.43 828-480.57q0 72.94-27.27 135.93-27.28 62.99-74.35 110.21-47.08 47.21-110.51 74.82Q552.43-132 480.57-132Zm-.14-22q135.07 0 230.32-95.18Q806-344.37 806-480.43q0-135.07-95-230.32Q616.01-806 480.07-806q-135.57 0-230.82 95Q154-616.01 154-480.07q0 135.57 95.18 230.82Q344.37-154 480.43-154ZM480-480Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M747-671q12.55 0 23.78-10.51Q782-692.01 782-704.98q0-13.72-11.22-23.87Q759.55-739 747-739q-13.7 0-23.85 10.24Q713-718.52 713-704.68q0 12.68 10.15 23.18T747-671Zm-166.09 0q13.67 0 24.38-10.51Q616-692.01 616-704.98q0-13.72-10.71-23.87Q594.59-739 580.93-739q-12.81 0-22.87 10.24T548-704.68q0 12.68 9.84 23.18 9.83 10.5 23.07 10.5ZM570-535h188q-5-25-31.74-42.5-26.75-17.5-62.22-17.5-37.48 0-64.26 17.5Q573-560 570-535ZM296.79-116q-85.29 0-143.54-59.21Q95-234.42 95-318v-239h401v238.53q0 83.89-57.58 143.18Q380.84-116 296.79-116Zm-1.04-35q69.13 0 117.19-49T461-317.77V-522H130v204.23Q130-249 178.31-200q48.3 49 117.44 49ZM664-405q-28.58 0-57.79-8T561-434l2-38q20.4 14 45.33 23 24.94 9 55.67 9 68.65 0 117.33-47.33Q830-534.65 830-603.26V-810H497v189h-35v-224h403v241.53q0 82.89-58.62 140.68Q747.75-405 664-405Zm-449.23 19q13.37 0 23.3-9.59Q248-405.17 248-419q0-13.1-9.84-24.05Q228.33-454 215.09-454q-13.66 0-24.38 10.84Q180-432.32 180-419.39q0 14.09 10.7 23.74 10.7 9.65 24.07 9.65Zm164.9 0q13.07 0 23.2-9.59Q413-405.17 413-419q0-13.1-9.86-24.05Q393.28-454 380-454q-14.12 0-24.56 10.84T345-419.39q0 14.09 10.8 23.74 10.79 9.65 23.87 9.65Zm-82.71 140q37.48 0 64.26-17Q388-280 391-306H203q3 26 29.74 43 26.75 17 64.22 17Zm.04-92Zm367-286Z"/></svg>