shaders ¶
FSRCNNXShader dataclass
¶
FSRCNNXShader(
*,
kernel: KernelT | None = None,
scaler: ScalerT | None = None,
shifter: KernelT | None = None,
chroma_loc: int | None = None,
matrix: int | None = None,
trc: int | None = None,
linearize: int | None = None,
sigmoidize: int | None = None,
sigmoid_center: float | None = None,
sigmoid_slope: float | None = None,
antiring: float | None = None,
filter_shader: str | None = None,
clamp: float | None = None,
blur: float | None = None,
taper: float | None = None,
radius: float | None = None,
param1: float | None = None,
param2: float | None = None
)
Bases: PlaceboShaderBase
Defaults FSRCNNX shaders shipped with vsscale.
antiring class-attribute
instance-attribute
¶
chroma_loc class-attribute
instance-attribute
¶
filter_shader class-attribute
instance-attribute
¶
kernel class-attribute
instance-attribute
¶
Base kernel to be used for certain scaling/shifting/resampling operations. Must be specified and defaults to catrom
linearize class-attribute
instance-attribute
¶
param1 class-attribute
instance-attribute
¶
param2 class-attribute
instance-attribute
¶
radius class-attribute
instance-attribute
¶
scale_function instance-attribute
¶
scale_function: GenericVSFunction
Scale function called internally when scaling
scaler class-attribute
instance-attribute
¶
Scaler used for scaling operations. Defaults to kernel.
shifter class-attribute
instance-attribute
¶
Kernel used for shifting operations. Defaults to kernel.
sigmoid_center class-attribute
instance-attribute
¶
sigmoid_slope class-attribute
instance-attribute
¶
sigmoidize class-attribute
instance-attribute
¶
x16 dataclass
¶
x16(
*,
kernel: KernelT | None = None,
scaler: ScalerT | None = None,
shifter: KernelT | None = None,
chroma_loc: int | None = None,
matrix: int | None = None,
trc: int | None = None,
linearize: int | None = None,
sigmoidize: int | None = None,
sigmoid_center: float | None = None,
sigmoid_slope: float | None = None,
antiring: float | None = None,
filter_shader: str | None = None,
clamp: float | None = None,
blur: float | None = None,
taper: float | None = None,
radius: float | None = None,
param1: float | None = None,
param2: float | None = None
)
Bases: PlaceboShaderBase
antiring class-attribute
instance-attribute
¶
chroma_loc class-attribute
instance-attribute
¶
filter_shader class-attribute
instance-attribute
¶
kernel class-attribute
instance-attribute
¶
Base kernel to be used for certain scaling/shifting/resampling operations. Must be specified and defaults to catrom
linearize class-attribute
instance-attribute
¶
param1 class-attribute
instance-attribute
¶
param2 class-attribute
instance-attribute
¶
radius class-attribute
instance-attribute
¶
scale_function instance-attribute
¶
scale_function: GenericVSFunction
Scale function called internally when scaling
scaler class-attribute
instance-attribute
¶
Scaler used for scaling operations. Defaults to kernel.
shifter class-attribute
instance-attribute
¶
Kernel used for shifting operations. Defaults to kernel.
sigmoid_center class-attribute
instance-attribute
¶
sigmoid_slope class-attribute
instance-attribute
¶
sigmoidize class-attribute
instance-attribute
¶
ensure_obj classmethod
¶
ensure_obj(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> BaseScalerT
Source code
186 187 188 189 190 191 192 193 |
|
ensure_scaler ¶
Source code
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
|
from_param classmethod
¶
from_param(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> type[BaseScalerT]
Source code
177 178 179 180 181 182 183 184 |
|
get_clean_kwargs ¶
Source code
199 200 |
|
get_implemented_funcs ¶
Source code
270 271 |
|
get_scale_args ¶
get_scale_args(
clip: VideoNode,
shift: tuple[TopShift, LeftShift] = (0, 0),
width: int | None = None,
height: int | None = None,
*funcs: Callable[..., Any],
**kwargs: Any
) -> KwargsT
Source code
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
|
kernel_radius ¶
kernel_radius() -> int
Source code
195 196 197 |
|
multi ¶
multi(
clip: VideoNode,
multi: float = 2,
shift: tuple[TopShift, LeftShift] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
|
pretty_string ¶
pretty_string() -> str
Source code
202 203 204 205 206 207 208 209 210 211 212 213 214 |
|
scale ¶
scale(
clip: VideoNode,
width: int | None = None,
height: int | None = None,
shift: tuple[float, float] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
|
x56 dataclass
¶
x56(
*,
kernel: KernelT | None = None,
scaler: ScalerT | None = None,
shifter: KernelT | None = None,
chroma_loc: int | None = None,
matrix: int | None = None,
trc: int | None = None,
linearize: int | None = None,
sigmoidize: int | None = None,
sigmoid_center: float | None = None,
sigmoid_slope: float | None = None,
antiring: float | None = None,
filter_shader: str | None = None,
clamp: float | None = None,
blur: float | None = None,
taper: float | None = None,
radius: float | None = None,
param1: float | None = None,
param2: float | None = None
)
Bases: PlaceboShaderBase
antiring class-attribute
instance-attribute
¶
chroma_loc class-attribute
instance-attribute
¶
filter_shader class-attribute
instance-attribute
¶
kernel class-attribute
instance-attribute
¶
Base kernel to be used for certain scaling/shifting/resampling operations. Must be specified and defaults to catrom
linearize class-attribute
instance-attribute
¶
param1 class-attribute
instance-attribute
¶
param2 class-attribute
instance-attribute
¶
radius class-attribute
instance-attribute
¶
scale_function instance-attribute
¶
scale_function: GenericVSFunction
Scale function called internally when scaling
scaler class-attribute
instance-attribute
¶
Scaler used for scaling operations. Defaults to kernel.
shifter class-attribute
instance-attribute
¶
Kernel used for shifting operations. Defaults to kernel.
sigmoid_center class-attribute
instance-attribute
¶
sigmoid_slope class-attribute
instance-attribute
¶
sigmoidize class-attribute
instance-attribute
¶
ensure_obj classmethod
¶
ensure_obj(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> BaseScalerT
Source code
186 187 188 189 190 191 192 193 |
|
ensure_scaler ¶
Source code
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
|
from_param classmethod
¶
from_param(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> type[BaseScalerT]
Source code
177 178 179 180 181 182 183 184 |
|
get_clean_kwargs ¶
Source code
199 200 |
|
get_implemented_funcs ¶
Source code
270 271 |
|
get_scale_args ¶
get_scale_args(
clip: VideoNode,
shift: tuple[TopShift, LeftShift] = (0, 0),
width: int | None = None,
height: int | None = None,
*funcs: Callable[..., Any],
**kwargs: Any
) -> KwargsT
Source code
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
|
kernel_radius ¶
kernel_radius() -> int
Source code
195 196 197 |
|
multi ¶
multi(
clip: VideoNode,
multi: float = 2,
shift: tuple[TopShift, LeftShift] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
|
pretty_string ¶
pretty_string() -> str
Source code
202 203 204 205 206 207 208 209 210 211 212 213 214 |
|
scale ¶
scale(
clip: VideoNode,
width: int | None = None,
height: int | None = None,
shift: tuple[float, float] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
|
x8 dataclass
¶
x8(
*,
kernel: KernelT | None = None,
scaler: ScalerT | None = None,
shifter: KernelT | None = None,
chroma_loc: int | None = None,
matrix: int | None = None,
trc: int | None = None,
linearize: int | None = None,
sigmoidize: int | None = None,
sigmoid_center: float | None = None,
sigmoid_slope: float | None = None,
antiring: float | None = None,
filter_shader: str | None = None,
clamp: float | None = None,
blur: float | None = None,
taper: float | None = None,
radius: float | None = None,
param1: float | None = None,
param2: float | None = None
)
Bases: PlaceboShaderBase
antiring class-attribute
instance-attribute
¶
chroma_loc class-attribute
instance-attribute
¶
filter_shader class-attribute
instance-attribute
¶
kernel class-attribute
instance-attribute
¶
Base kernel to be used for certain scaling/shifting/resampling operations. Must be specified and defaults to catrom
linearize class-attribute
instance-attribute
¶
param1 class-attribute
instance-attribute
¶
param2 class-attribute
instance-attribute
¶
radius class-attribute
instance-attribute
¶
scale_function instance-attribute
¶
scale_function: GenericVSFunction
Scale function called internally when scaling
scaler class-attribute
instance-attribute
¶
Scaler used for scaling operations. Defaults to kernel.
shifter class-attribute
instance-attribute
¶
Kernel used for shifting operations. Defaults to kernel.
sigmoid_center class-attribute
instance-attribute
¶
sigmoid_slope class-attribute
instance-attribute
¶
sigmoidize class-attribute
instance-attribute
¶
ensure_obj classmethod
¶
ensure_obj(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> BaseScalerT
Source code
186 187 188 189 190 191 192 193 |
|
ensure_scaler ¶
Source code
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
|
from_param classmethod
¶
from_param(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> type[BaseScalerT]
Source code
177 178 179 180 181 182 183 184 |
|
get_clean_kwargs ¶
Source code
199 200 |
|
get_implemented_funcs ¶
Source code
270 271 |
|
get_scale_args ¶
get_scale_args(
clip: VideoNode,
shift: tuple[TopShift, LeftShift] = (0, 0),
width: int | None = None,
height: int | None = None,
*funcs: Callable[..., Any],
**kwargs: Any
) -> KwargsT
Source code
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
|
kernel_radius ¶
kernel_radius() -> int
Source code
195 196 197 |
|
multi ¶
multi(
clip: VideoNode,
multi: float = 2,
shift: tuple[TopShift, LeftShift] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
|
pretty_string ¶
pretty_string() -> str
Source code
202 203 204 205 206 207 208 209 210 211 212 213 214 |
|
scale ¶
scale(
clip: VideoNode,
width: int | None = None,
height: int | None = None,
shift: tuple[float, float] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
|
ensure_obj classmethod
¶
ensure_obj(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> BaseScalerT
Source code
186 187 188 189 190 191 192 193 |
|
ensure_scaler ¶
Source code
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
|
from_param classmethod
¶
from_param(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> type[BaseScalerT]
Source code
177 178 179 180 181 182 183 184 |
|
get_clean_kwargs ¶
Source code
199 200 |
|
get_implemented_funcs ¶
Source code
270 271 |
|
get_scale_args ¶
get_scale_args(
clip: VideoNode,
shift: tuple[TopShift, LeftShift] = (0, 0),
width: int | None = None,
height: int | None = None,
*funcs: Callable[..., Any],
**kwargs: Any
) -> KwargsT
Source code
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
|
kernel_radius ¶
kernel_radius() -> int
Source code
195 196 197 |
|
multi ¶
multi(
clip: VideoNode,
multi: float = 2,
shift: tuple[TopShift, LeftShift] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
|
pretty_string ¶
pretty_string() -> str
Source code
202 203 204 205 206 207 208 209 210 211 212 213 214 |
|
scale ¶
scale(
clip: VideoNode,
width: int | None = None,
height: int | None = None,
shift: tuple[float, float] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
|
PlaceboShader dataclass
¶
PlaceboShader(
shader_file: str | Path,
*,
kernel: KernelT | None = None,
scaler: ScalerT | None = None,
shifter: KernelT | None = None,
chroma_loc: int | None = None,
matrix: int | None = None,
trc: int | None = None,
linearize: int | None = None,
sigmoidize: int | None = None,
sigmoid_center: float | None = None,
sigmoid_slope: float | None = None,
antiring: float | None = None,
filter_shader: str | None = None,
clamp: float | None = None,
blur: float | None = None,
taper: float | None = None,
radius: float | None = None,
param1: float | None = None,
param2: float | None = None
)
Bases: PlaceboShaderBase
antiring class-attribute
instance-attribute
¶
chroma_loc class-attribute
instance-attribute
¶
filter_shader class-attribute
instance-attribute
¶
kernel class-attribute
instance-attribute
¶
Base kernel to be used for certain scaling/shifting/resampling operations. Must be specified and defaults to catrom
linearize class-attribute
instance-attribute
¶
param1 class-attribute
instance-attribute
¶
param2 class-attribute
instance-attribute
¶
radius class-attribute
instance-attribute
¶
scale_function instance-attribute
¶
scale_function: GenericVSFunction
Scale function called internally when scaling
scaler class-attribute
instance-attribute
¶
Scaler used for scaling operations. Defaults to kernel.
shifter class-attribute
instance-attribute
¶
Kernel used for shifting operations. Defaults to kernel.
sigmoid_center class-attribute
instance-attribute
¶
sigmoid_slope class-attribute
instance-attribute
¶
sigmoidize class-attribute
instance-attribute
¶
ensure_obj classmethod
¶
ensure_obj(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> BaseScalerT
Source code
186 187 188 189 190 191 192 193 |
|
ensure_scaler ¶
Source code
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
|
from_param classmethod
¶
from_param(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> type[BaseScalerT]
Source code
177 178 179 180 181 182 183 184 |
|
get_clean_kwargs ¶
Source code
199 200 |
|
get_implemented_funcs ¶
Source code
270 271 |
|
get_scale_args ¶
get_scale_args(
clip: VideoNode,
shift: tuple[TopShift, LeftShift] = (0, 0),
width: int | None = None,
height: int | None = None,
*funcs: Callable[..., Any],
**kwargs: Any
) -> KwargsT
Source code
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
|
kernel_radius ¶
kernel_radius() -> int
Source code
195 196 197 |
|
multi ¶
multi(
clip: VideoNode,
multi: float = 2,
shift: tuple[TopShift, LeftShift] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
|
pretty_string ¶
pretty_string() -> str
Source code
202 203 204 205 206 207 208 209 210 211 212 213 214 |
|
scale ¶
scale(
clip: VideoNode,
width: int | None = None,
height: int | None = None,
shift: tuple[float, float] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
|
PlaceboShaderBase dataclass
¶
PlaceboShaderBase(
*,
kernel: KernelT | None = None,
scaler: ScalerT | None = None,
shifter: KernelT | None = None,
chroma_loc: int | None = None,
matrix: int | None = None,
trc: int | None = None,
linearize: int | None = None,
sigmoidize: int | None = None,
sigmoid_center: float | None = None,
sigmoid_slope: float | None = None,
antiring: float | None = None,
filter_shader: str | None = None,
clamp: float | None = None,
blur: float | None = None,
taper: float | None = None,
radius: float | None = None,
param1: float | None = None,
param2: float | None = None
)
Bases: PlaceboShaderMeta
Base placebo shader class.
antiring class-attribute
instance-attribute
¶
chroma_loc class-attribute
instance-attribute
¶
filter_shader class-attribute
instance-attribute
¶
kernel class-attribute
instance-attribute
¶
Base kernel to be used for certain scaling/shifting/resampling operations. Must be specified and defaults to catrom
linearize class-attribute
instance-attribute
¶
param1 class-attribute
instance-attribute
¶
param2 class-attribute
instance-attribute
¶
radius class-attribute
instance-attribute
¶
scale_function instance-attribute
¶
scale_function: GenericVSFunction
Scale function called internally when scaling
scaler class-attribute
instance-attribute
¶
Scaler used for scaling operations. Defaults to kernel.
shifter class-attribute
instance-attribute
¶
Kernel used for shifting operations. Defaults to kernel.
sigmoid_center class-attribute
instance-attribute
¶
sigmoid_slope class-attribute
instance-attribute
¶
sigmoidize class-attribute
instance-attribute
¶
ensure_obj classmethod
¶
ensure_obj(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> BaseScalerT
Source code
186 187 188 189 190 191 192 193 |
|
ensure_scaler ¶
Source code
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
|
from_param classmethod
¶
from_param(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> type[BaseScalerT]
Source code
177 178 179 180 181 182 183 184 |
|
get_clean_kwargs ¶
Source code
199 200 |
|
get_implemented_funcs ¶
Source code
270 271 |
|
get_scale_args ¶
get_scale_args(
clip: VideoNode,
shift: tuple[TopShift, LeftShift] = (0, 0),
width: int | None = None,
height: int | None = None,
*funcs: Callable[..., Any],
**kwargs: Any
) -> KwargsT
Source code
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
|
kernel_radius ¶
kernel_radius() -> int
Source code
195 196 197 |
|
multi ¶
multi(
clip: VideoNode,
multi: float = 2,
shift: tuple[TopShift, LeftShift] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
|
pretty_string ¶
pretty_string() -> str
Source code
202 203 204 205 206 207 208 209 210 211 212 213 214 |
|
scale ¶
scale(
clip: VideoNode,
width: int | None = None,
height: int | None = None,
shift: tuple[float, float] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
|
PlaceboShaderMeta dataclass
¶
PlaceboShaderMeta(
func: (
_GeneriScaleNoShift | _GeneriScaleWithShift | Callable[..., VideoNode]
),
**kwargs: Any
)
Bases: GenericScaler
Source code
71 72 73 74 75 |
|
kernel class-attribute
instance-attribute
¶
Base kernel to be used for certain scaling/shifting/resampling operations. Must be specified and defaults to catrom
scale_function instance-attribute
¶
scale_function: GenericVSFunction
Scale function called internally when scaling
scaler class-attribute
instance-attribute
¶
Scaler used for scaling operations. Defaults to kernel.
shifter class-attribute
instance-attribute
¶
Kernel used for shifting operations. Defaults to kernel.
ensure_obj classmethod
¶
ensure_obj(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> BaseScalerT
Source code
186 187 188 189 190 191 192 193 |
|
ensure_scaler ¶
Source code
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
|
from_param classmethod
¶
from_param(
scaler: str | type[BaseScalerT] | BaseScalerT | None = None,
/,
func_except: FuncExceptT | None = None,
) -> type[BaseScalerT]
Source code
177 178 179 180 181 182 183 184 |
|
get_clean_kwargs ¶
Source code
199 200 |
|
get_implemented_funcs ¶
Source code
270 271 |
|
get_scale_args ¶
get_scale_args(
clip: VideoNode,
shift: tuple[TopShift, LeftShift] = (0, 0),
width: int | None = None,
height: int | None = None,
*funcs: Callable[..., Any],
**kwargs: Any
) -> KwargsT
Source code
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
|
kernel_radius ¶
kernel_radius() -> int
Source code
195 196 197 |
|
multi ¶
multi(
clip: VideoNode,
multi: float = 2,
shift: tuple[TopShift, LeftShift] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
|
pretty_string ¶
pretty_string() -> str
Source code
202 203 204 205 206 207 208 209 210 211 212 213 214 |
|
scale ¶
scale(
clip: VideoNode,
width: int | None = None,
height: int | None = None,
shift: tuple[float, float] = (0, 0),
**kwargs: Any
) -> VideoNode
Source code
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
|
ShaderFile ¶
Bases: ShaderFileBase
Default shader files shipped with vsscale.
__call__ ¶
Get a path from the shader member, name or path.
Source code
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
|