streamlit-nightly 1.32.3.dev20240324__py2.py3-none-any.whl → 1.32.3.dev20240326__py2.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.
- streamlit/elements/media.py +52 -4
- streamlit/external/langchain/streamlit_callback_handler.py +3 -1
- streamlit/runtime/caching/cache_data_api.py +3 -3
- streamlit/runtime/caching/cache_errors.py +0 -11
- streamlit/runtime/caching/cache_resource_api.py +2 -2
- streamlit/runtime/caching/cache_utils.py +1 -43
- streamlit/runtime/runtime_util.py +54 -2
- streamlit/static/asset-manifest.json +5 -5
- streamlit/static/index.html +1 -1
- streamlit/static/static/css/main.bf304093.css +1 -0
- streamlit/static/static/js/8427.44d27448.chunk.js +1 -0
- streamlit/static/static/js/{main.0b30ec74.js → main.7fde7092.js} +2 -2
- streamlit/watcher/local_sources_watcher.py +2 -1
- {streamlit_nightly-1.32.3.dev20240324.dist-info → streamlit_nightly-1.32.3.dev20240326.dist-info}/METADATA +1 -1
- {streamlit_nightly-1.32.3.dev20240324.dist-info → streamlit_nightly-1.32.3.dev20240326.dist-info}/RECORD +20 -20
- streamlit/static/static/css/main.77d1c464.css +0 -1
- streamlit/static/static/js/8427.5c2cf22b.chunk.js +0 -1
- /streamlit/static/static/js/{main.0b30ec74.js.LICENSE.txt → main.7fde7092.js.LICENSE.txt} +0 -0
- {streamlit_nightly-1.32.3.dev20240324.data → streamlit_nightly-1.32.3.dev20240326.data}/scripts/streamlit.cmd +0 -0
- {streamlit_nightly-1.32.3.dev20240324.dist-info → streamlit_nightly-1.32.3.dev20240326.dist-info}/WHEEL +0 -0
- {streamlit_nightly-1.32.3.dev20240324.dist-info → streamlit_nightly-1.32.3.dev20240326.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.32.3.dev20240324.dist-info → streamlit_nightly-1.32.3.dev20240326.dist-info}/top_level.txt +0 -0
streamlit/elements/media.py
CHANGED
@@ -16,6 +16,7 @@ from __future__ import annotations
|
|
16
16
|
|
17
17
|
import io
|
18
18
|
import re
|
19
|
+
from datetime import timedelta
|
19
20
|
from pathlib import Path
|
20
21
|
from typing import TYPE_CHECKING, Dict, Final, Union, cast
|
21
22
|
|
@@ -29,6 +30,7 @@ from streamlit.proto.Audio_pb2 import Audio as AudioProto
|
|
29
30
|
from streamlit.proto.Video_pb2 import Video as VideoProto
|
30
31
|
from streamlit.runtime import caching
|
31
32
|
from streamlit.runtime.metrics_util import gather_metrics
|
33
|
+
from streamlit.runtime.runtime_util import duration_to_seconds
|
32
34
|
|
33
35
|
if TYPE_CHECKING:
|
34
36
|
from typing import Any
|
@@ -45,6 +47,16 @@ SubtitleData: TypeAlias = Union[
|
|
45
47
|
str, Path, bytes, io.BytesIO, Dict[str, Union[str, Path, bytes, io.BytesIO]], None
|
46
48
|
]
|
47
49
|
|
50
|
+
MediaTime: TypeAlias = Union[int, float, timedelta, str]
|
51
|
+
|
52
|
+
TIMEDELTA_PARSE_ERROR_MESSAGE: Final = (
|
53
|
+
"Failed to convert '{param_name}' to a timedelta. "
|
54
|
+
"Please use a string in a format supported by "
|
55
|
+
"[Pandas Timedelta constructor]"
|
56
|
+
"(https://pandas.pydata.org/docs/reference/api/pandas.Timedelta.html), "
|
57
|
+
'e.g. `"10s"`, `"15 seconds"`, or `"1h23s"`. Got: {param_value}'
|
58
|
+
)
|
59
|
+
|
48
60
|
|
49
61
|
class MediaMixin:
|
50
62
|
@gather_metrics("audio")
|
@@ -52,10 +64,10 @@ class MediaMixin:
|
|
52
64
|
self,
|
53
65
|
data: MediaData,
|
54
66
|
format: str = "audio/wav",
|
55
|
-
start_time:
|
67
|
+
start_time: MediaTime = 0,
|
56
68
|
*,
|
57
69
|
sample_rate: int | None = None,
|
58
|
-
end_time:
|
70
|
+
end_time: MediaTime | None = None,
|
59
71
|
loop: bool = False,
|
60
72
|
) -> DeltaGenerator:
|
61
73
|
"""Display an audio player.
|
@@ -111,6 +123,8 @@ class MediaMixin:
|
|
111
123
|
height: 865px
|
112
124
|
|
113
125
|
"""
|
126
|
+
start_time, end_time = _parse_start_time_end_time(start_time, end_time)
|
127
|
+
|
114
128
|
audio_proto = AudioProto()
|
115
129
|
coordinates = self.dg._get_delta_path_str()
|
116
130
|
|
@@ -143,10 +157,10 @@ class MediaMixin:
|
|
143
157
|
self,
|
144
158
|
data: MediaData,
|
145
159
|
format: str = "video/mp4",
|
146
|
-
start_time:
|
160
|
+
start_time: MediaTime = 0,
|
147
161
|
*, # keyword-only arguments:
|
148
162
|
subtitles: SubtitleData = None,
|
149
|
-
end_time:
|
163
|
+
end_time: MediaTime | None = None,
|
150
164
|
loop: bool = False,
|
151
165
|
) -> DeltaGenerator:
|
152
166
|
"""Display a video player.
|
@@ -246,6 +260,9 @@ class MediaMixin:
|
|
246
260
|
for more information.
|
247
261
|
|
248
262
|
"""
|
263
|
+
|
264
|
+
start_time, end_time = _parse_start_time_end_time(start_time, end_time)
|
265
|
+
|
249
266
|
video_proto = VideoProto()
|
250
267
|
coordinates = self.dg._get_delta_path_str()
|
251
268
|
marshall_video(
|
@@ -461,6 +478,37 @@ def marshall_video(
|
|
461
478
|
) from original_err
|
462
479
|
|
463
480
|
|
481
|
+
def _parse_start_time_end_time(
|
482
|
+
start_time: MediaTime, end_time: MediaTime | None
|
483
|
+
) -> tuple[int, int | None]:
|
484
|
+
"""Parse start_time and end_time and return them as int."""
|
485
|
+
|
486
|
+
try:
|
487
|
+
maybe_start_time = duration_to_seconds(start_time, coerce_none_to_inf=False)
|
488
|
+
if maybe_start_time is None:
|
489
|
+
raise ValueError
|
490
|
+
start_time = int(maybe_start_time)
|
491
|
+
except (StreamlitAPIException, ValueError):
|
492
|
+
error_msg = TIMEDELTA_PARSE_ERROR_MESSAGE.format(
|
493
|
+
param_name="start_time", param_value=start_time
|
494
|
+
)
|
495
|
+
raise StreamlitAPIException(error_msg) from None
|
496
|
+
|
497
|
+
try:
|
498
|
+
# TODO[kajarenc]: Replace `duration_to_seconds` with `time_to_seconds`
|
499
|
+
# when PR #8343 is merged.
|
500
|
+
end_time = duration_to_seconds(end_time, coerce_none_to_inf=False)
|
501
|
+
if end_time is not None:
|
502
|
+
end_time = int(end_time)
|
503
|
+
except StreamlitAPIException:
|
504
|
+
error_msg = TIMEDELTA_PARSE_ERROR_MESSAGE.format(
|
505
|
+
param_name="end_time", param_value=end_time
|
506
|
+
)
|
507
|
+
raise StreamlitAPIException(error_msg) from None
|
508
|
+
|
509
|
+
return start_time, end_time
|
510
|
+
|
511
|
+
|
464
512
|
def _validate_and_normalize(data: npt.NDArray[Any]) -> tuple[bytes, int]:
|
465
513
|
"""Validates and normalizes numpy array data.
|
466
514
|
We validate numpy array shape (should be 1d or 2d)
|
@@ -189,11 +189,13 @@ class LLMThought:
|
|
189
189
|
# If we're receiving streaming tokens from `on_llm_new_token`, this response
|
190
190
|
# data is redundant
|
191
191
|
self._reset_llm_token_stream()
|
192
|
+
# set the container status to complete
|
193
|
+
self.complete(self._labeler.get_final_agent_thought_label())
|
192
194
|
|
193
195
|
def on_llm_error(self, error: BaseException, *args: Any, **kwargs: Any) -> None:
|
194
|
-
self._container.markdown("**LLM encountered an error...**")
|
195
196
|
self._container.exception(error)
|
196
197
|
self._state = LLMThoughtState.ERROR
|
198
|
+
self.complete("LLM encountered an error...")
|
197
199
|
|
198
200
|
def on_tool_start(
|
199
201
|
self, serialized: dict[str, Any], input_str: str, **kwargs: Any
|
@@ -35,7 +35,6 @@ from streamlit.runtime.caching.cache_utils import (
|
|
35
35
|
Cache,
|
36
36
|
CachedFuncInfo,
|
37
37
|
make_cached_func_wrapper,
|
38
|
-
ttl_to_seconds,
|
39
38
|
)
|
40
39
|
from streamlit.runtime.caching.cached_message_replay import (
|
41
40
|
CachedMessageReplayContext,
|
@@ -59,6 +58,7 @@ from streamlit.runtime.caching.storage.dummy_cache_storage import (
|
|
59
58
|
MemoryCacheStorageManager,
|
60
59
|
)
|
61
60
|
from streamlit.runtime.metrics_util import gather_metrics
|
61
|
+
from streamlit.runtime.runtime_util import duration_to_seconds
|
62
62
|
from streamlit.runtime.scriptrunner.script_run_context import get_script_run_ctx
|
63
63
|
from streamlit.runtime.stats import CacheStat, CacheStatsProvider, group_stats
|
64
64
|
|
@@ -154,7 +154,7 @@ class DataCaches(CacheStatsProvider):
|
|
154
154
|
If it doesn't exist, create a new one with the given params.
|
155
155
|
"""
|
156
156
|
|
157
|
-
ttl_seconds =
|
157
|
+
ttl_seconds = duration_to_seconds(ttl, coerce_none_to_inf=False)
|
158
158
|
|
159
159
|
# Get the existing cache, if it exists, and validate that its params
|
160
160
|
# haven't changed.
|
@@ -254,7 +254,7 @@ class DataCaches(CacheStatsProvider):
|
|
254
254
|
CacheStorageContext.
|
255
255
|
"""
|
256
256
|
|
257
|
-
ttl_seconds =
|
257
|
+
ttl_seconds = duration_to_seconds(ttl, coerce_none_to_inf=False)
|
258
258
|
|
259
259
|
cache_context = self.create_cache_storage_context(
|
260
260
|
function_key="DUMMY_KEY",
|
@@ -176,14 +176,3 @@ class UnevaluatedDataFrameError(StreamlitAPIException):
|
|
176
176
|
"""Used to display a message about uncollected dataframe being used"""
|
177
177
|
|
178
178
|
pass
|
179
|
-
|
180
|
-
|
181
|
-
class BadTTLStringError(StreamlitAPIException):
|
182
|
-
"""Raised when a bad ttl= argument string is passed."""
|
183
|
-
|
184
|
-
def __init__(self, ttl: str):
|
185
|
-
MarkdownFormattedException.__init__(
|
186
|
-
self,
|
187
|
-
"TTL string doesn't look right. It should be formatted as"
|
188
|
-
f"`'1d2h34m'` or `2 days`, for example. Got: {ttl}",
|
189
|
-
)
|
@@ -35,7 +35,6 @@ from streamlit.runtime.caching.cache_utils import (
|
|
35
35
|
Cache,
|
36
36
|
CachedFuncInfo,
|
37
37
|
make_cached_func_wrapper,
|
38
|
-
ttl_to_seconds,
|
39
38
|
)
|
40
39
|
from streamlit.runtime.caching.cached_message_replay import (
|
41
40
|
CachedMessageReplayContext,
|
@@ -46,6 +45,7 @@ from streamlit.runtime.caching.cached_message_replay import (
|
|
46
45
|
)
|
47
46
|
from streamlit.runtime.caching.hashing import HashFuncsDict
|
48
47
|
from streamlit.runtime.metrics_util import gather_metrics
|
48
|
+
from streamlit.runtime.runtime_util import duration_to_seconds
|
49
49
|
from streamlit.runtime.scriptrunner.script_run_context import get_script_run_ctx
|
50
50
|
from streamlit.runtime.stats import CacheStat, CacheStatsProvider, group_stats
|
51
51
|
|
@@ -89,7 +89,7 @@ class ResourceCaches(CacheStatsProvider):
|
|
89
89
|
if max_entries is None:
|
90
90
|
max_entries = math.inf
|
91
91
|
|
92
|
-
ttl_seconds =
|
92
|
+
ttl_seconds = duration_to_seconds(ttl)
|
93
93
|
|
94
94
|
# Get the existing cache, if it exists, and validate that its params
|
95
95
|
# haven't changed.
|
@@ -19,20 +19,17 @@ from __future__ import annotations
|
|
19
19
|
import functools
|
20
20
|
import hashlib
|
21
21
|
import inspect
|
22
|
-
import math
|
23
22
|
import threading
|
24
23
|
import time
|
25
24
|
import types
|
26
25
|
from abc import abstractmethod
|
27
26
|
from collections import defaultdict
|
28
|
-
from
|
29
|
-
from typing import Any, Callable, Final, Literal, overload
|
27
|
+
from typing import Any, Callable, Final
|
30
28
|
|
31
29
|
from streamlit import type_util
|
32
30
|
from streamlit.elements.spinner import spinner
|
33
31
|
from streamlit.logger import get_logger
|
34
32
|
from streamlit.runtime.caching.cache_errors import (
|
35
|
-
BadTTLStringError,
|
36
33
|
CacheError,
|
37
34
|
CacheKeyNotFoundError,
|
38
35
|
UnevaluatedDataFrameError,
|
@@ -58,45 +55,6 @@ _LOGGER: Final = get_logger(__name__)
|
|
58
55
|
TTLCACHE_TIMER = time.monotonic
|
59
56
|
|
60
57
|
|
61
|
-
@overload
|
62
|
-
def ttl_to_seconds(
|
63
|
-
ttl: float | timedelta | str | None, *, coerce_none_to_inf: Literal[False]
|
64
|
-
) -> float | None:
|
65
|
-
...
|
66
|
-
|
67
|
-
|
68
|
-
@overload
|
69
|
-
def ttl_to_seconds(ttl: float | timedelta | str | None) -> float:
|
70
|
-
...
|
71
|
-
|
72
|
-
|
73
|
-
def ttl_to_seconds(
|
74
|
-
ttl: float | timedelta | str | None, *, coerce_none_to_inf: bool = True
|
75
|
-
) -> float | None:
|
76
|
-
"""
|
77
|
-
Convert a ttl value to a float representing "number of seconds".
|
78
|
-
"""
|
79
|
-
if coerce_none_to_inf and ttl is None:
|
80
|
-
return math.inf
|
81
|
-
if isinstance(ttl, timedelta):
|
82
|
-
return ttl.total_seconds()
|
83
|
-
if isinstance(ttl, str):
|
84
|
-
import numpy as np
|
85
|
-
import pandas as pd
|
86
|
-
|
87
|
-
try:
|
88
|
-
out: float = pd.Timedelta(ttl).total_seconds()
|
89
|
-
except ValueError as ex:
|
90
|
-
raise BadTTLStringError(ttl) from ex
|
91
|
-
|
92
|
-
if np.isnan(out):
|
93
|
-
raise BadTTLStringError(ttl)
|
94
|
-
|
95
|
-
return out
|
96
|
-
|
97
|
-
return ttl
|
98
|
-
|
99
|
-
|
100
58
|
# We show a special "UnevaluatedDataFrame" warning for cached funcs
|
101
59
|
# that attempt to return one of these unserializable types:
|
102
60
|
UNEVALUATED_DATAFRAME_TYPES = (
|
@@ -16,10 +16,12 @@
|
|
16
16
|
|
17
17
|
from __future__ import annotations
|
18
18
|
|
19
|
-
|
19
|
+
import math
|
20
|
+
from datetime import timedelta
|
21
|
+
from typing import Any, Literal, overload
|
20
22
|
|
21
23
|
from streamlit import config
|
22
|
-
from streamlit.errors import MarkdownFormattedException
|
24
|
+
from streamlit.errors import MarkdownFormattedException, StreamlitAPIException
|
23
25
|
from streamlit.proto.ForwardMsg_pb2 import ForwardMsg
|
24
26
|
from streamlit.runtime.forward_msg_cache import populate_hash_if_needed
|
25
27
|
|
@@ -54,6 +56,17 @@ of the client's browser and the Streamlit server._
|
|
54
56
|
)
|
55
57
|
|
56
58
|
|
59
|
+
class BadDurationStringError(StreamlitAPIException):
|
60
|
+
"""Raised when a bad duration argument string is passed."""
|
61
|
+
|
62
|
+
def __init__(self, duration: str):
|
63
|
+
MarkdownFormattedException.__init__(
|
64
|
+
self,
|
65
|
+
"TTL string doesn't look right. It should be formatted as"
|
66
|
+
f"`'1d2h34m'` or `2 days`, for example. Got: {duration}",
|
67
|
+
)
|
68
|
+
|
69
|
+
|
57
70
|
def is_cacheable_msg(msg: ForwardMsg) -> bool:
|
58
71
|
"""True if the given message qualifies for caching."""
|
59
72
|
if msg.WhichOneof("type") in {"ref_hash", "initialize"}:
|
@@ -62,6 +75,45 @@ def is_cacheable_msg(msg: ForwardMsg) -> bool:
|
|
62
75
|
return msg.ByteSize() >= int(config.get_option("global.minCachedMessageSize"))
|
63
76
|
|
64
77
|
|
78
|
+
@overload
|
79
|
+
def duration_to_seconds(
|
80
|
+
ttl: float | timedelta | str | None, *, coerce_none_to_inf: Literal[False]
|
81
|
+
) -> float | None:
|
82
|
+
...
|
83
|
+
|
84
|
+
|
85
|
+
@overload
|
86
|
+
def duration_to_seconds(ttl: float | timedelta | str | None) -> float:
|
87
|
+
...
|
88
|
+
|
89
|
+
|
90
|
+
def duration_to_seconds(
|
91
|
+
ttl: float | timedelta | str | None, *, coerce_none_to_inf: bool = True
|
92
|
+
) -> float | None:
|
93
|
+
"""
|
94
|
+
Convert a ttl value to a float representing "number of seconds".
|
95
|
+
"""
|
96
|
+
if coerce_none_to_inf and ttl is None:
|
97
|
+
return math.inf
|
98
|
+
if isinstance(ttl, timedelta):
|
99
|
+
return ttl.total_seconds()
|
100
|
+
if isinstance(ttl, str):
|
101
|
+
import numpy as np
|
102
|
+
import pandas as pd
|
103
|
+
|
104
|
+
try:
|
105
|
+
out: float = pd.Timedelta(ttl).total_seconds()
|
106
|
+
except ValueError as ex:
|
107
|
+
raise BadDurationStringError(ttl) from ex
|
108
|
+
|
109
|
+
if np.isnan(out):
|
110
|
+
raise BadDurationStringError(ttl)
|
111
|
+
|
112
|
+
return out
|
113
|
+
|
114
|
+
return ttl
|
115
|
+
|
116
|
+
|
65
117
|
def serialize_forward_msg(msg: ForwardMsg) -> bytes:
|
66
118
|
"""Serialize a ForwardMsg to send to a client.
|
67
119
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"files": {
|
3
|
-
"main.css": "./static/css/main.
|
4
|
-
"main.js": "./static/js/main.
|
3
|
+
"main.css": "./static/css/main.bf304093.css",
|
4
|
+
"main.js": "./static/js/main.7fde7092.js",
|
5
5
|
"static/js/9336.2d95d840.chunk.js": "./static/js/9336.2d95d840.chunk.js",
|
6
6
|
"static/js/9330.d29313d4.chunk.js": "./static/js/9330.d29313d4.chunk.js",
|
7
7
|
"static/js/7217.d970c074.chunk.js": "./static/js/7217.d970c074.chunk.js",
|
@@ -10,7 +10,7 @@
|
|
10
10
|
"static/js/3092.3d4df25e.chunk.js": "./static/js/3092.3d4df25e.chunk.js",
|
11
11
|
"static/css/43.c24b25fa.chunk.css": "./static/css/43.c24b25fa.chunk.css",
|
12
12
|
"static/js/43.76c54963.chunk.js": "./static/js/43.76c54963.chunk.js",
|
13
|
-
"static/js/8427.
|
13
|
+
"static/js/8427.44d27448.chunk.js": "./static/js/8427.44d27448.chunk.js",
|
14
14
|
"static/js/7323.2808d029.chunk.js": "./static/js/7323.2808d029.chunk.js",
|
15
15
|
"static/js/4185.78230b2a.chunk.js": "./static/js/4185.78230b2a.chunk.js",
|
16
16
|
"static/js/7805.51638fbc.chunk.js": "./static/js/7805.51638fbc.chunk.js",
|
@@ -149,7 +149,7 @@
|
|
149
149
|
"static/media/checkmark.svg": "./static/media/checkmark.29851c8e9e6ef0c3d6c1e4efe3c1bb9e.svg"
|
150
150
|
},
|
151
151
|
"entrypoints": [
|
152
|
-
"static/css/main.
|
153
|
-
"static/js/main.
|
152
|
+
"static/css/main.bf304093.css",
|
153
|
+
"static/js/main.7fde7092.js"
|
154
154
|
]
|
155
155
|
}
|
streamlit/static/index.html
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><link rel="shortcut icon" href="./favicon.png"/><link rel="preload" href="./static/media/SourceSansPro-Regular.0d69e5ff5e92ac64a0c9.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-SemiBold.abed79cd0df1827e18cf.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-Bold.118dea98980e20a81ced.woff2" as="font" type="font/woff2" crossorigin><title>Streamlit</title><script>window.prerenderReady=!1</script><script defer="defer" src="./static/js/main.
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><link rel="shortcut icon" href="./favicon.png"/><link rel="preload" href="./static/media/SourceSansPro-Regular.0d69e5ff5e92ac64a0c9.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-SemiBold.abed79cd0df1827e18cf.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-Bold.118dea98980e20a81ced.woff2" as="font" type="font/woff2" crossorigin><title>Streamlit</title><script>window.prerenderReady=!1</script><script defer="defer" src="./static/js/main.7fde7092.js"></script><link href="./static/css/main.bf304093.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
@@ -0,0 +1 @@
|
|
1
|
+
@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(../../static/media/KaTeX_AMS-Regular.73ea273a72f4aca30ca5.woff2) format("woff2"),url(../../static/media/KaTeX_AMS-Regular.d562e886c52f12660a41.woff) format("woff"),url(../../static/media/KaTeX_AMS-Regular.853be92419a6c3766b9a.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(../../static/media/KaTeX_Caligraphic-Bold.a1abf90dfd72792a577a.woff2) format("woff2"),url(../../static/media/KaTeX_Caligraphic-Bold.d757c535a2e5902f1325.woff) format("woff"),url(../../static/media/KaTeX_Caligraphic-Bold.7489a2fbfb9bfe704420.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(../../static/media/KaTeX_Caligraphic-Regular.d6484fce1ef428d5bd94.woff2) format("woff2"),url(../../static/media/KaTeX_Caligraphic-Regular.db074fa22cf224af93d7.woff) format("woff"),url(../../static/media/KaTeX_Caligraphic-Regular.7e873d3833eb108a0758.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(../../static/media/KaTeX_Fraktur-Bold.931d67ea207ab37ee693.woff2) format("woff2"),url(../../static/media/KaTeX_Fraktur-Bold.354501bac435c3264834.woff) format("woff"),url(../../static/media/KaTeX_Fraktur-Bold.4c761b3711973ab04edf.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(../../static/media/KaTeX_Fraktur-Regular.172d3529b26f8cedef6b.woff2) format("woff2"),url(../../static/media/KaTeX_Fraktur-Regular.6fdf0ac577be0ba82a4c.woff) format("woff"),url(../../static/media/KaTeX_Fraktur-Regular.ed305b5434865e06ffde.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(../../static/media/KaTeX_Main-Bold.39890742bc957b368704.woff2) format("woff2"),url(../../static/media/KaTeX_Main-Bold.0c3b8929d377c0e9b2f3.woff) format("woff"),url(../../static/media/KaTeX_Main-Bold.8169508bf58f8bd92ad8.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(../../static/media/KaTeX_Main-BoldItalic.20f389c4120be058d80a.woff2) format("woff2"),url(../../static/media/KaTeX_Main-BoldItalic.428978dc7837d46de091.woff) format("woff"),url(../../static/media/KaTeX_Main-BoldItalic.828abcb200061cffbaae.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(../../static/media/KaTeX_Main-Italic.fe2176f79edaa716e621.woff2) format("woff2"),url(../../static/media/KaTeX_Main-Italic.fd947498bc16392e76c2.woff) format("woff"),url(../../static/media/KaTeX_Main-Italic.fa675e5e4bec9eb250b6.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(../../static/media/KaTeX_Main-Regular.f650f111a3b890d116f1.woff2) format("woff2"),url(../../static/media/KaTeX_Main-Regular.4f35fbcc9ee8614c2bcc.woff) format("woff"),url(../../static/media/KaTeX_Main-Regular.9eba1d77abcf2aa6e94e.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(../../static/media/KaTeX_Math-BoldItalic.dcbcbd93bac0470b462d.woff2) format("woff2"),url(../../static/media/KaTeX_Math-BoldItalic.3f07ed67f06c720120ce.woff) format("woff"),url(../../static/media/KaTeX_Math-BoldItalic.bf2d440b3a42ea78a998.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(../../static/media/KaTeX_Math-Italic.6d3d25f4820d0da8f01f.woff2) format("woff2"),url(../../static/media/KaTeX_Math-Italic.96759856b4e70f3a8338.woff) format("woff"),url(../../static/media/KaTeX_Math-Italic.8a5f936332e8028c7278.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(../../static/media/KaTeX_SansSerif-Bold.95591a929f0d32aa282a.woff2) format("woff2"),url(../../static/media/KaTeX_SansSerif-Bold.b9cd458ac6d5889ff9c3.woff) format("woff"),url(../../static/media/KaTeX_SansSerif-Bold.5b49f4993ae22d7975b4.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(../../static/media/KaTeX_SansSerif-Italic.7d393d382f3e7fb1c637.woff2) format("woff2"),url(../../static/media/KaTeX_SansSerif-Italic.8d593cfaa96238d5e2f8.woff) format("woff"),url(../../static/media/KaTeX_SansSerif-Italic.b257a18c016f37ee4543.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(../../static/media/KaTeX_SansSerif-Regular.cd5e231e0cc53b2cb2c0.woff2) format("woff2"),url(../../static/media/KaTeX_SansSerif-Regular.02271ec5cb9f5b4588ac.woff) format("woff"),url(../../static/media/KaTeX_SansSerif-Regular.2f7bc363fc5424ebda59.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(../../static/media/KaTeX_Script-Regular.c81d1b2a4b75d3eded60.woff2) format("woff2"),url(../../static/media/KaTeX_Script-Regular.073b3402d036714b4370.woff) format("woff"),url(../../static/media/KaTeX_Script-Regular.fc9ba5249878cd8f8d88.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(../../static/media/KaTeX_Size1-Regular.6eec866c69313624be60.woff2) format("woff2"),url(../../static/media/KaTeX_Size1-Regular.0108e89c9003e8c14ea3.woff) format("woff"),url(../../static/media/KaTeX_Size1-Regular.6de7d4b539221a49e9e2.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(../../static/media/KaTeX_Size2-Regular.2960900c4f271311eb36.woff2) format("woff2"),url(../../static/media/KaTeX_Size2-Regular.3a99e70aee4076660d38.woff) format("woff"),url(../../static/media/KaTeX_Size2-Regular.57f5c1837853986ea1db.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(../../static/media/KaTeX_Size3-Regular.e1951519f6f0596f7356.woff2) format("woff2"),url(../../static/media/KaTeX_Size3-Regular.7947224e8a9914fa332b.woff) format("woff"),url(../../static/media/KaTeX_Size3-Regular.8d6b6822586eea3d3b20.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(../../static/media/KaTeX_Size4-Regular.e418bf257af1052628d8.woff2) format("woff2"),url(../../static/media/KaTeX_Size4-Regular.aeffd8025cba3647f1a6.woff) format("woff"),url(../../static/media/KaTeX_Size4-Regular.4ad7c7e8bb8d10a34bb7.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(../../static/media/KaTeX_Typewriter-Regular.c295e7f71970f03c0549.woff2) format("woff2"),url(../../static/media/KaTeX_Typewriter-Regular.4c6b94fd1d07f8beff7c.woff) format("woff"),url(../../static/media/KaTeX_Typewriter-Regular.c5c02d763c89380dcb4e.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.10"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}@font-face{font-family:Source Code Pro;font-style:regular;font-weight:400;src:url(../../static/media/SourceCodePro-Regular.84b900b88d09398d86b0.woff2) format("woff2")}@font-face{font-family:Source Code Pro;font-style:regular;font-weight:600;src:url(../../static/media/SourceCodePro-SemiBold.17291d1c493cb25eb2c3.woff2) format("woff2")}@font-face{font-family:Source Code Pro;font-style:regular;font-weight:700;src:url(../../static/media/SourceCodePro-Bold.17a68a0751a813474a0e.woff2) format("woff2")}@font-face{font-family:Source Code Pro;font-style:italic;font-weight:400;src:url(../../static/media/SourceCodePro-Italic.ec122a420df4175e74f2.woff2) format("woff2")}@font-face{font-family:Source Code Pro;font-style:italic;font-weight:600;src:url(../../static/media/SourceCodePro-SemiBoldItalic.f879ae27307c3926522b.woff2) format("woff2")}@font-face{font-family:Source Code Pro;font-style:italic;font-weight:700;src:url(../../static/media/SourceCodePro-BoldItalic.d45b7a3df103d441d78b.woff2) format("woff2")}@font-face{font-family:Source Sans Pro;font-style:regular;font-weight:400;src:url(../../static/media/SourceSansPro-Regular.0d69e5ff5e92ac64a0c9.woff2) format("woff2")}@font-face{font-family:Source Sans Pro;font-style:regular;font-weight:600;src:url(../../static/media/SourceSansPro-SemiBold.abed79cd0df1827e18cf.woff2) format("woff2")}@font-face{font-family:Source Sans Pro;font-style:regular;font-weight:700;src:url(../../static/media/SourceSansPro-Bold.118dea98980e20a81ced.woff2) format("woff2")}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(../../static/media/SourceSansPro-Italic.8a9bfea74d43927d6eec.woff2) format("woff2")}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(../../static/media/SourceSansPro-SemiBoldItalic.befb0a2824eabc5ce36b.woff2) format("woff2")}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(../../static/media/SourceSansPro-BoldItalic.1d664be59d2eb5fef029.woff2) format("woff2")}@font-face{font-family:"Source Serif Pro";font-style:regular;font-weight:400;src:url(../../static/media/SourceSerifPro-Regular.e6c37aa3926474cc93e1.woff2) format("woff2")}@font-face{font-family:"Source Serif Pro";font-style:regular;font-weight:600;src:url(../../static/media/SourceSerifPro-SemiBold.5c1d378dd5990ef334ca.woff2) format("woff2")}@font-face{font-family:"Source Serif Pro";font-style:regular;font-weight:700;src:url(../../static/media/SourceSerifPro-Bold.d7975b56594770699ae0.woff2) format("woff2")}@font-face{font-family:"Source Serif Pro";font-style:italic;font-weight:400;src:url(../../static/media/SourceSerifPro-Italic.d3529cb5797663ac5d88.woff2) format("woff2")}@font-face{font-family:"Source Serif Pro";font-style:italic;font-weight:600;src:url(../../static/media/SourceSerifPro-SemiBoldItalic.249e948b885d0c7d30a8.woff2) format("woff2")}@font-face{font-family:"Source Serif Pro";font-style:italic;font-weight:700;src:url(../../static/media/SourceSerifPro-BoldItalic.913697a7178b128caa4c.woff2) format("woff2")}html{font-size:1rem}h1{font-size:calc(1.4rem + 1.8vw)}@media(min-width:1200px){h1{font-size:2.75rem}}h2{font-size:calc(1.35rem + 1.2vw)}@media(min-width:1200px){h2{font-size:2.25rem}}h3{font-size:calc(1.3rem + .6vw)}@media(min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media(min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}small{font-size:.875rem}sub,sup{font-size:.75rem}code,kbd,pre{font-size:1em}pre{font-size:.75em}pre code{font-size:inherit}code{font-size:.75em}kbd{border-radius:.25rem;font-size:.875rem}kbd kbd{font-size:1em}button,input,optgroup,select,textarea{font-size:inherit}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}legend{font-size:1rem}
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunk_streamlit_app=self.webpackChunk_streamlit_app||[]).push([[8427],{18427:(e,t,o)=>{o.r(t),o.d(t,{default:()=>b});var r=o(66845),i=o(25621),n=o(69021),s=o(92627),a=o(21e3),d=o(59033),l=o(36989),c=o(1515);const u=(0,c.Z)("button",{target:"elibz2u1"})((e=>{let{theme:t}=e;return{fontSize:t.fontSizes.sm,lineHeight:"1.4rem",color:t.colors.gray60,backgroundColor:t.colors.transparent,border:"none",boxShadow:"none",padding:"0px","&:hover, &:active, &:focus":{border:"none",outline:"none",boxShadow:"none"},"&:hover":{color:t.colors.primary}}}),""),h=(0,c.Z)("div",{target:"elibz2u0"})((e=>{let{theme:t,expanded:o}=e;return{maxHeight:o?"none":t.breakpoints.toast}}),"");var p=o(40864);const b=(0,i.b)((function(e){let{theme:t,body:o,icon:i,width:c}=e;const b=i?"".concat(i," ").concat(o):o,g=function(e){if(e.length>114){let t=e.replace(/^(.{114}[^\s]*).*/,"$1");return t.length>114&&(t=t.substring(0,114).split(" ").slice(0,-1).join(" ")),t.trim()}return e}(b),m=b!==g,[x,f]=(0,r.useState)(!m),[y,w]=(0,r.useState)(0),S=(0,r.useCallback)((()=>{f(!x)}),[x]),v=(0,r.useMemo)((()=>function(e,t){const o=(0,s.Iy)(t);return{Body:{props:{"data-testid":"stToast"},style:{width:"288px",marginTop:"8px",borderTopLeftRadius:t.radii.lg,borderTopRightRadius:t.radii.lg,borderBottomLeftRadius:t.radii.lg,borderBottomRightRadius:t.radii.lg,backgroundColor:o?t.colors.gray10:t.colors.gray90,color:t.colors.bodyText,boxShadow:o?"0px 4px 16px rgba(0, 0, 0, 0.16)":"0px 4px 16px rgba(0, 0, 0, 0.7)"}},InnerContainer:{style:{maxHeight:e?"none":"88px",overflow:"hidden",fontSize:t.fontSizes.sm,lineHeight:"1.4rem"}},CloseIcon:{style:{color:t.colors.bodyText,marginRight:"-5px",width:"1.2rem",height:"1.2rem"}}}}(x,t)),[x,t]),k=(0,r.useMemo)((()=>(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(h,{expanded:x,children:(0,p.jsx)(a.ZP,{source:x?b:g,allowHTML:!1,isToast:!0})}),m&&(0,p.jsx)(u,{"data-testid":"toastViewButton",className:"toastViewButton",onClick:S,children:x?"view less":"view more"})]})),[m,x,b,g,S]);(0,r.useEffect)((()=>{if(t.inSidebar)return;const e=n.Z.info(k,{overrides:{...v}});return w(e),()=>{n.Z.update(e,{overrides:{Body:{style:{transitionDuration:0}}}}),n.Z.clear(e)}}),[]),(0,r.useEffect)((()=>{n.Z.update(y,{children:k,overrides:{...v}})}),[y,k,v]);const R=(0,p.jsx)(l.Z,{kind:d.h.ERROR,body:"Streamlit API Error: `st.toast` cannot be called directly on the sidebar with `st.sidebar.toast`. See our `st.toast` API [docs](https://docs.streamlit.io/library/api-reference/status/st.toast) for more information.",width:c});return(0,p.jsx)(p.Fragment,{children:t.inSidebar&&R})}))}}]);
|