pywebexec 1.5.3__py3-none-any.whl → 1.5.5__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.
@@ -278,18 +278,70 @@ span {
278
278
  width: 16px;
279
279
  height: 16px;
280
280
  }
281
-
281
+ .font-increase {
282
+ background-image: url("/static/images/font-increase.svg");
283
+ /*background-size: contain;*/
284
+ background-repeat: no-repeat;
285
+ background-position: center;
286
+ background-size: 14px 14px;
287
+ }
288
+ .font-decrease {
289
+ background-image: url("/static/images/font-decrease.svg");
290
+ /*background-size: contain;*/
291
+ background-repeat: no-repeat;
292
+ background-position: center;
293
+ background-size: 14px 14px;
294
+ }
282
295
  .font-size-button {
283
296
  background-color: #444;
284
297
  color: #eee;
285
298
  border: none;
286
- border-radius: 5px;
299
+ border-radius: 15px;
287
300
  cursor: pointer;
288
301
  font-size: 14px;
289
- width: 45px;
302
+ width: 20px;
303
+ height: 20px;
290
304
  }
291
-
292
305
  .font-size-button:hover {
293
306
  background-color: #666;
294
307
  }
295
308
 
309
+ .pause {
310
+ background-image: url("/static/images/pause.svg");
311
+ /*background-size: contain;*/
312
+ background-repeat: no-repeat;
313
+ background-position: center;
314
+ background-size: 24px 24px;
315
+ }
316
+ .resume {
317
+ background-image: url("/static/images/resume.svg");
318
+ /*background-size: contain;*/
319
+ background-repeat: no-repeat;
320
+ background-position: center;
321
+ background-size: 24px 24px;
322
+ }
323
+
324
+ .pause-resume-button {
325
+ background-color: transparent;
326
+ border: none;
327
+ padding: 0;
328
+ width: 24px;
329
+ height: 24px;
330
+ cursor: pointer;
331
+ }
332
+
333
+
334
+ .paused-message {
335
+ display: none;
336
+ position: absolute;
337
+ top: 10px;
338
+ right: 10px;
339
+ background-color: rgba(128, 128, 128, 0.7);
340
+ color: white;
341
+ padding: 5px 10px;
342
+ border-radius: 5px;
343
+ font-size: 14px;
344
+ z-index: 10;
345
+ pointer-events: none;
346
+ }
347
+
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="#ffffff"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> <title>ic_fluent_font_decrease_24_filled</title> <desc>Created with Sketch.</desc> <g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="ic_fluent_font_decrease_24_filled" fill="#eeeeee" fill-rule="nonzero"> <path d="M12.7975385,7.39384615 L12.8658462,7.49846154 L12.9230769,7.61538462 L16.6730769,16.6153846 C16.8854941,17.1251859 16.6444167,17.7106597 16.1346154,17.9230769 C15.6612285,18.1203215 15.1225933,17.9265426 14.8779876,17.4896781 L14.8269231,17.3846154 L13.833,15 L10.166,15 L9.17307692,17.3846154 C8.97583237,17.8580023 8.45692169,18.0996835 7.97562247,17.961721 L7.86538462,17.9230769 C7.39199769,17.7258324 7.15031654,17.2069217 7.28827901,16.7256225 L7.32692308,16.6153846 L11.0769231,7.61538462 C11.3846154,6.87692308 12.3569231,6.80307692 12.7975385,7.39384615 Z M12,10.6 L11,13 L13,13 L12,10.6 Z M20.876677,3.33675137 C21.0850834,3.65037943 21.0264848,4.06361153 20.7549114,4.30838932 L20.6671042,4.37650097 L18.4160963,5.8722993 C18.1960388,6.01852788 17.9180282,6.03680645 17.6834824,5.92713502 L17.5859195,5.8722993 L15.3349116,4.37650097 C14.9899208,4.14725399 14.8960918,3.68174224 15.1253388,3.33675137 C15.3337451,3.02312331 15.7374116,2.91706708 16.0682799,3.07261274 L16.1650884,3.12717853 L18.001,4.346 L19.8369274,3.12717853 C20.1819183,2.89793155 20.6474301,2.99176051 20.876677,3.33675137 Z" id="font-dec"> </path> </g> </g> </g></svg>
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="#ffffff"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> <title>ic_fluent_font_increase_24_filled</title> <desc>Created with Sketch.</desc> <g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="ic_fluent_font_increase_24_filled" fill="#ececec" fill-rule="nonzero"> <path d="M12.8101986,4.41064097 L12.8776346,4.51935775 L12.930792,4.63445088 L18.430792,18.6390155 C18.6326793,19.1530777 18.3796114,19.7334694 17.8655491,19.9353566 C17.3882056,20.1228233 16.8536698,19.9180073 16.6181008,19.4762044 L16.569208,19.3701137 L15.245,15.999 L8.754,15.999 L7.43079205,19.3701137 C7.24332536,19.8474572 6.72949509,20.0997597 6.24546021,19.9717253 L6.13445088,19.9353566 C5.65710736,19.74789 5.4048049,19.2340597 5.53283932,18.7500248 L5.56920795,18.6390155 L11.069208,4.63445088 C11.3689581,3.8712017 12.3728054,3.7965984 12.8101986,4.41064097 Z M12,7.734 L9.539,13.999 L14.46,13.999 L12,7.734 Z M17.6834824,3.07042232 C17.8845216,2.97641824 18.1174942,2.97641824 18.3185334,3.07042232 L18.4160963,3.12525804 L20.6671042,4.62105637 L20.7549114,4.68916802 C21.0264848,4.93394581 21.0850834,5.3471779 20.876677,5.66080596 C20.6682707,5.97443402 20.2646042,6.08049026 19.9337359,5.9249446 L19.8369274,5.87037881 L18.001,4.65071759 L16.1650884,5.87037881 L16.0682799,5.9249446 C15.7374116,6.08049026 15.3337451,5.97443402 15.1253388,5.66080596 C14.9169324,5.3471779 14.975531,4.93394581 15.2471044,4.68916802 L15.3349116,4.62105637 L17.5859195,3.12525804 L17.6834824,3.07042232 Z" id="font-inc"> </path> </g> </g> </g></svg>
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22ZM8.07612 8.61732C8 8.80109 8 9.03406 8 9.5V14.5C8 14.9659 8 15.1989 8.07612 15.3827C8.17761 15.6277 8.37229 15.8224 8.61732 15.9239C8.80109 16 9.03406 16 9.5 16C9.96594 16 10.1989 16 10.3827 15.9239C10.6277 15.8224 10.8224 15.6277 10.9239 15.3827C11 15.1989 11 14.9659 11 14.5V9.5C11 9.03406 11 8.80109 10.9239 8.61732C10.8224 8.37229 10.6277 8.17761 10.3827 8.07612C10.1989 8 9.96594 8 9.5 8C9.03406 8 8.80109 8 8.61732 8.07612C8.37229 8.17761 8.17761 8.37229 8.07612 8.61732ZM13.0761 8.61732C13 8.80109 13 9.03406 13 9.5V14.5C13 14.9659 13 15.1989 13.0761 15.3827C13.1776 15.6277 13.3723 15.8224 13.6173 15.9239C13.8011 16 14.0341 16 14.5 16C14.9659 16 15.1989 16 15.3827 15.9239C15.6277 15.8224 15.8224 15.6277 15.9239 15.3827C16 15.1989 16 14.9659 16 14.5V9.5C16 9.03406 16 8.80109 15.9239 8.61732C15.8224 8.37229 15.6277 8.17761 15.3827 8.07612C15.1989 8 14.9659 8 14.5 8C14.0341 8 13.8011 8 13.6173 8.07612C13.3723 8.17761 13.1776 8.37229 13.0761 8.61732Z" fill="#404040"></path> </g></svg>
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22ZM10.6935 15.8458L15.4137 13.059C16.1954 12.5974 16.1954 11.4026 15.4137 10.941L10.6935 8.15419C9.93371 7.70561 9 8.28947 9 9.21316V14.7868C9 15.7105 9.93371 16.2944 10.6935 15.8458Z" fill="#404040"></path> </g></svg>
@@ -38,6 +38,9 @@ let fullOutput = '';
38
38
  let outputLength = 0;
39
39
  let title = null;
40
40
  let slider = null;
41
+ let isPaused = false;
42
+ const toggleButton = document.getElementById('toggleFetch');
43
+ const pausedMessage = document.getElementById('pausedMessage');
41
44
 
42
45
  function getTokenParam() {
43
46
  const urlParams = new URLSearchParams(window.location.search);
@@ -46,6 +49,7 @@ function getTokenParam() {
46
49
  const urlToken = getTokenParam();
47
50
 
48
51
  async function fetchOutput(url) {
52
+ if (isPaused) return;
49
53
  try {
50
54
  const response = await fetch(url);
51
55
  if (!response.ok) {
@@ -75,6 +79,9 @@ async function fetchOutput(url) {
75
79
  if (data.status != 'running') {
76
80
  title.innerText = `${data.status} ${title.innerText.split(' ').slice(1).join(' ')}`;
77
81
  clearInterval(outputInterval);
82
+ toggleButton.style.display = 'none';
83
+ } else {
84
+ toggleButton.style.display = 'block';
78
85
  }
79
86
  }
80
87
  } catch (error) {
@@ -106,8 +113,10 @@ async function viewOutput(command_id) {
106
113
  if (data.status === 'running') {
107
114
  fetchOutput(nextOutputLink);
108
115
  outputInterval = setInterval(() => fetchOutput(nextOutputLink), 500);
116
+ toggleButton.style.display = 'block';
109
117
  } else {
110
118
  fetchOutput(nextOutputLink);
119
+ toggleButton.style.display = 'none';
111
120
  }
112
121
  } catch (error) {
113
122
  console.log('Error viewing output:', error);
@@ -134,6 +143,30 @@ function sliderUpdateOutput() {
134
143
  document.getElementById('outputPercentage').innerText = `${percentage}%`;
135
144
  }
136
145
 
146
+ function toggleFetchOutput() {
147
+ if (isPaused) {
148
+ slider.value = 100;
149
+ document.getElementById('outputPercentage').innerText = '100%';
150
+ terminal.clear();
151
+ terminal.reset();
152
+ terminal.write(fullOutput);
153
+ fetchOutput(nextOutputLink);
154
+ outputInterval = setInterval(() => fetchOutput(nextOutputLink), 500);
155
+ toggleButton.classList.remove("resume");
156
+ pausedMessage.style.display = 'none';
157
+ } else {
158
+ clearInterval(outputInterval);
159
+ toggleButton.classList.add("resume");
160
+ pausedMessage.style.display = 'block';
161
+ const outputDiv = document.getElementById('output');
162
+ const rect = outputDiv.getBoundingClientRect();
163
+ pausedMessage.style.top = `${rect.top + 10}px`;
164
+ pausedMessage.style.right = `${window.innerWidth - rect.right + 10}px`;
165
+ }
166
+ isPaused = !isPaused;
167
+ }
168
+
169
+ toggleButton.addEventListener('click', toggleFetchOutput);
137
170
 
138
171
  window.addEventListener('resize', adjustOutputHeight);
139
172
  window.addEventListener('load', () => {
@@ -8,6 +8,7 @@ let outputLength = 0;
8
8
  const maxScrollback = 99999;
9
9
  const maxSize = 10485760; // 10MB
10
10
  let fontSize = 14;
11
+ let isPaused = false;
11
12
 
12
13
  function initTerminal()
13
14
  {
@@ -133,6 +134,7 @@ async function fetchCommands() {
133
134
  }
134
135
 
135
136
  async function fetchOutput(url) {
137
+ if (isPaused) return;
136
138
  try {
137
139
  const response = await fetch(url);
138
140
  if (!response.ok) {
@@ -159,6 +161,9 @@ async function fetchOutput(url) {
159
161
  nextOutputLink = data.links.next;
160
162
  if (data.status != 'running') {
161
163
  clearInterval(outputInterval);
164
+ toggleButton.style.display = 'none';
165
+ } else {
166
+ toggleButton.style.display = 'block';
162
167
  }
163
168
  }
164
169
  } catch (error) {
@@ -189,8 +194,10 @@ async function viewOutput(command_id) {
189
194
  if (data.status === 'running') {
190
195
  fetchOutput(nextOutputLink);
191
196
  outputInterval = setInterval(() => fetchOutput(nextOutputLink), 500);
197
+ toggleButton.style.display = 'block';
192
198
  } else {
193
199
  fetchOutput(nextOutputLink);
200
+ toggleButton.style.display = 'none';
194
201
  }
195
202
  fetchCommands(); // Refresh the command list to highlight the current command
196
203
  } catch (error) {
@@ -347,6 +354,34 @@ document.getElementById('increaseFontSize').addEventListener('click', () => {
347
354
  fitAddon.fit();
348
355
  });
349
356
 
357
+ const toggleButton = document.getElementById('toggleFetch');
358
+ const pausedMessage = document.getElementById('pausedMessage');
359
+
360
+ function toggleFetchOutput() {
361
+ if (isPaused) {
362
+ slider.value = 100;
363
+ outputPercentage.innerText = '100%';
364
+ terminal.clear();
365
+ terminal.reset();
366
+ terminal.write(fullOutput);
367
+ fetchOutput(nextOutputLink);
368
+ outputInterval = setInterval(() => fetchOutput(nextOutputLink), 500);
369
+ toggleButton.classList.remove("resume");
370
+ pausedMessage.style.display = 'none';
371
+ } else {
372
+ clearInterval(outputInterval);
373
+ toggleButton.classList.add("resume");
374
+ pausedMessage.style.display = 'block';
375
+ const outputDiv = document.getElementById('output');
376
+ const rect = outputDiv.getBoundingClientRect();
377
+ pausedMessage.style.top = `${rect.top + 10}px`;
378
+ pausedMessage.style.right = `${window.innerWidth - rect.right + 10}px`;
379
+ }
380
+ isPaused = !isPaused;
381
+ }
382
+
383
+ toggleButton.addEventListener('click', toggleFetchOutput);
384
+
350
385
  window.addEventListener('resize', adjustOutputHeight);
351
386
  window.addEventListener('load', initResizer);
352
387
 
@@ -44,11 +44,13 @@
44
44
  <div class="resizer" id="resizer"></div>
45
45
  </div>
46
46
  <div id="output" class="output"></div>
47
+ <div id="pausedMessage" class="paused-message">Paused</div>
47
48
  <div class="slider-container">
48
49
  <input type="range" id="outputSlider" min="0" max="100" value="100">
49
50
  <label for="outputSlider"><span id="outputPercentage">100%</span></label>
50
- <button id="decreaseFontSize" class="font-size-button">A&ndash;</button>
51
- <button id="increaseFontSize" class="font-size-button">A+</button>
51
+ <button id="toggleFetch" class="pause-resume-button pause"></button>
52
+ <button id="decreaseFontSize" class="font-size-button font-decrease"></button>
53
+ <button id="increaseFontSize" class="font-size-button font-increase"></button>
52
54
  </div>
53
55
  <script src="/static/js/xterm/xterm.js"></script>
54
56
  <script src="/static/js/xterm/addon-fit.js"></script>
@@ -12,11 +12,13 @@
12
12
  <div class="dimmer-text">Server not available</div>
13
13
  </div>
14
14
  <div id="output" class="output"></div>
15
+ <div id="pausedMessage" class="paused-message">Paused</div>
15
16
  <div class="slider-container">
16
17
  <input type="range" id="outputSlider" min="0" max="100" value="100">
17
18
  <label for="outputSlider"><span id="outputPercentage">100%</span></label>
18
- <button id="decreaseFontSize" class="font-size-button">A&ndash;</button>
19
- <button id="increaseFontSize" class="font-size-button">A+</button>
19
+ <button id="toggleFetch" class="pause-resume-button pause"></button>
20
+ <button id="decreaseFontSize" class="font-size-button font-decrease"></button>
21
+ <button id="increaseFontSize" class="font-size-button font-increase"></button>
20
22
  </div>
21
23
  <script src="/static/js/xterm/xterm.js"></script>
22
24
  <script src="/static/js/xterm/addon-fit.js"></script>
pywebexec/version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.5.3'
16
- __version_tuple__ = version_tuple = (1, 5, 3)
15
+ __version__ = version = '1.5.5'
16
+ __version_tuple__ = version_tuple = (1, 5, 5)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pywebexec
3
- Version: 1.5.3
3
+ Version: 1.5.5
4
4
  Summary: Simple Python HTTP Exec Server
5
5
  Home-page: https://github.com/joknarf/pywebexec
6
6
  Author: Franck Jouvanceau
@@ -1,8 +1,8 @@
1
1
  pywebexec/__init__.py,sha256=4spIsVaF8RJt8S58AG_wWoORRNkws9Iwqprj27C3ljM,99
2
2
  pywebexec/pywebexec.py,sha256=hacpB6OnS_ZN1SBmuReTUkvAuenl6czD6aD_yV8wusY,28462
3
- pywebexec/version.py,sha256=qpWMa3r-Mid4OHoz1spx5Qra38bLcIkEwP2xut7PVrA,411
3
+ pywebexec/version.py,sha256=xsDT6ryShhQQK24Bw1uqyQ-iWYEMz5nJFNa-x4pSQzY,411
4
4
  pywebexec/static/css/Consolas NF.ttf,sha256=DJEOzF0eqZ-kxu3Gs_VE8X0NJqiobBzmxWDGpdgGRxI,1313900
5
- pywebexec/static/css/style.css,sha256=oHjmcuKWG6Gv03POupZgvIREgBQMfiPZLguKKnXGf70,6000
5
+ pywebexec/static/css/style.css,sha256=OM-gJPLw0DcJwMgMXHDKc_9C87LYNu3bHssx_UtXi1Y,7273
6
6
  pywebexec/static/css/xterm.css,sha256=uo5phWaUiJgcz0DAzv46uoByLLbJLeetYosL1xf68rY,5559
7
7
  pywebexec/static/images/aborted.svg,sha256=_mP43hU5QdRLFZIknBgjx-dIXrHgQG23-QV27ApXK2A,381
8
8
  pywebexec/static/images/copy.svg,sha256=d9OwtGh5GzzZHzYcDrLfNxZYLth1Q64x7bRyYxu4Px0,622
@@ -10,23 +10,27 @@ pywebexec/static/images/copy_ok.svg,sha256=mEqUVUhSq8xaJK2msQkxRawnz_KwlCZ-tok8Q
10
10
  pywebexec/static/images/down-arrow.svg,sha256=4TclEmntMvKk_F_ADXgTpGtviYo826EDmmZiGE7HQBI,121
11
11
  pywebexec/static/images/failed.svg,sha256=ADZ7IKrUyOXtqpivnz3VcH0-Wru-I5MOi3OJAkI3hxk,1439
12
12
  pywebexec/static/images/favicon.svg,sha256=9gSN5Oak1zTWhTCyutlupPBKUxcbdoVt7dvhk8xvEug,1224
13
+ pywebexec/static/images/font-decrease.svg,sha256=89TJXQpfZ-XDJ2qC0c7cbLH-tWC-4AJQr_VOgsp06Gg,1782
14
+ pywebexec/static/images/font-increase.svg,sha256=u-EBxUzmOhKx4UH96fb4gLZ0l6Jkew1HLhcSqz7Z1ak,1869
15
+ pywebexec/static/images/pause.svg,sha256=qKDx76yirEvSeeez50zUn0i9Twdem9XLgveekALVLy4,1387
13
16
  pywebexec/static/images/popup.svg,sha256=0Bl9A_v5cBsMPn6FnOlVWlAQKgd2zqiWQbhjcL9BDzI,559
17
+ pywebexec/static/images/resume.svg,sha256=99LP1Ya2JXakRCO9kW8JMuT_4a_CannF65EiuwtvK4A,607
14
18
  pywebexec/static/images/running.gif,sha256=iYuzQGkMxrakSIwt6gPieKCImGZoSAHmU5MUNZa7cpw,25696
15
19
  pywebexec/static/images/success.svg,sha256=PJDcCSTevJh7rkfSFLtc7P0pbeh8PVQBS8DaOLQemmc,489
16
20
  pywebexec/static/js/commands.js,sha256=8JDb3Q55EJOYf2Q9Uy6qEuqAnn1oGjM0RndgQ4aOjqo,7725
17
- pywebexec/static/js/popup.js,sha256=898IdPLvdXNLE2ZoL9zpx2Ei7B4sb5ksRltfszZAsg8,5195
18
- pywebexec/static/js/script.js,sha256=mT4EVrQLxBYLSMWqEzDXfns0W0m7D3HlaivZEhkJyTc,12700
21
+ pywebexec/static/js/popup.js,sha256=WXa4zSsqsSO6Bj4QxhJ8N0ho_BhZJJFeBKTOjblhZPg,6536
22
+ pywebexec/static/js/script.js,sha256=ga1JMbRUB88MtajnW90GOqj24-Qx_ZeA16LYlY182Bk,14016
19
23
  pywebexec/static/js/xterm/LICENSE,sha256=EU1P4eXTull-_T9I80VuwnJXubB-zLzUl3xpEYj2T1M,1083
20
24
  pywebexec/static/js/xterm/addon-fit.js,sha256=va76Nwsb_ELuiNRv5gckAJAqTUstRc2TQ43amyPJcIk,1497
21
25
  pywebexec/static/js/xterm/addon-fit.js.map,sha256=zPUOkZVKfQNvj1W_fUktD5UNNu80XwqfSEWXBVxA8uY,5477
22
26
  pywebexec/static/js/xterm/xterm.js,sha256=H5kaw7Syg-v5bmCuI6AKUnZd06Lkb6b92p8aqwMvdJU,289441
23
27
  pywebexec/static/js/xterm/xterm.js.map,sha256=Y7O2Pb-fIS7Z8AC1D5s04_aiW_Jf1f4mCfN0U_OI6Zw,1118392
24
28
  pywebexec/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- pywebexec/templates/index.html,sha256=-fdhtsbqXql4b67QiLY5e501fjpSKpzhitPnsSIxWVk,2411
26
- pywebexec/templates/popup.html,sha256=BMIILNsvprcqNTfZVCL3UszgEs1-OdBtH2qWoXuzyoE,1035
27
- pywebexec-1.5.3.dist-info/LICENSE,sha256=gRJf0JPT_wsZJsUGlWPTS8Vypfl9vQ1qjp6sNbKykuA,1064
28
- pywebexec-1.5.3.dist-info/METADATA,sha256=9iF3w4VEqmN6IKp49BxIzr33n4X_AexNXT_QHUATtzk,7800
29
- pywebexec-1.5.3.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
30
- pywebexec-1.5.3.dist-info/entry_points.txt,sha256=l52GBkPCXRkmlHfEyoVauyfBdg8o-CAtC8qQpOIjJK0,55
31
- pywebexec-1.5.3.dist-info/top_level.txt,sha256=vHoHyzngrfGdm_nM7Xn_5iLmaCrf10XO1EhldgNLEQ8,10
32
- pywebexec-1.5.3.dist-info/RECORD,,
29
+ pywebexec/templates/index.html,sha256=Pe2d4wqad0e9AKrYre_oLWrSxy4_nQRJLKSklQjoE7c,2570
30
+ pywebexec/templates/popup.html,sha256=9aKqOQccdus5n4f3p2rQaOGymAg39eu7reHqmOdkrww,1194
31
+ pywebexec-1.5.5.dist-info/LICENSE,sha256=gRJf0JPT_wsZJsUGlWPTS8Vypfl9vQ1qjp6sNbKykuA,1064
32
+ pywebexec-1.5.5.dist-info/METADATA,sha256=R20M5ALNOd0jotdZTpeCpG2sd6N60kU-XI8mpfecNdI,7800
33
+ pywebexec-1.5.5.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
34
+ pywebexec-1.5.5.dist-info/entry_points.txt,sha256=l52GBkPCXRkmlHfEyoVauyfBdg8o-CAtC8qQpOIjJK0,55
35
+ pywebexec-1.5.5.dist-info/top_level.txt,sha256=vHoHyzngrfGdm_nM7Xn_5iLmaCrf10XO1EhldgNLEQ8,10
36
+ pywebexec-1.5.5.dist-info/RECORD,,