forked from zhongkaifu/TensorSharp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConsoleBanner.cs
More file actions
234 lines (210 loc) · 62.4 KB
/
Copy pathConsoleBanner.cs
File metadata and controls
234 lines (210 loc) · 62.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
// Copyright (c) Zhongkai Fu. All rights reserved.
// https://github.com/zhongkaifu/TensorSharp
//
// This file is part of TensorSharp.
//
// TensorSharp is licensed under the BSD-3-Clause license found in the LICENSE file in the root directory of this source tree.
//
// TensorSharp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the BSD-3-Clause License for more details.
using System;
using System.Text;
namespace TensorSharp.Runtime
{
/// <summary>
/// Prints a colorful ASCII art startup banner to the console. The top section shows a
/// high-resolution half-block pixel art rendition of the project mascot (converted from
/// assistant_logo_2.png at 74x84 half-block pixels) and the bottom section displays the
/// TensorSharp logo text with a horizontal color gradient. Uses 24-bit ANSI true-color
/// escape sequences with a graceful fallback for redirected or NO_COLOR terminals.
/// </summary>
public static class ConsoleBanner
{
// 74 columns x 42 terminal rows (74x84 half-block pixels)
// Generated from imgs/assistant_logo_2.png via imgs/convert_to_ascii.py
private static readonly string[] Sarah = new[]
{
" \x1b[38;2;58;62;72m\u2584\x1b[38;2;80;87;96m\x1b[48;2;55;50;56m\u2580\x1b[38;2;108;100;96m\x1b[48;2;65;54;55m\u2580\x1b[38;2;181;165;152m\x1b[48;2;78;64;61m\u2580\x1b[38;2;219;205;190m\x1b[48;2;94;77;71m\u2580\x1b[38;2;239;231;216m\x1b[48;2;143;121;107m\u2580\x1b[38;2;229;227;211m\x1b[48;2;216;188;162m\u2580\x1b[38;2;185;201;193m\x1b[48;2;222;204;181m\u2580\x1b[49m\x1b[38;2;225;225;213m\u2584\x1b[38;2;189;207;201m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;97;115;129m\x1b[48;2;49;54;66m\u2580\x1b[38;2;42;48;56m\x1b[48;2;29;27;32m\u2580\x1b[38;2;34;32;37m\x1b[48;2;40;39;43m\u2580\x1b[38;2;45;40;45m\x1b[48;2;49;45;50m\u2580\x1b[38;2;50;43;48m\x1b[48;2;61;54;58m\u2580\x1b[38;2;46;38;41m\x1b[48;2;69;63;67m\u2580\x1b[38;2;47;39;41m\x1b[48;2;59;52;53m\u2580\x1b[38;2;51;41;40m\x1b[48;2;57;47;47m\u2580\x1b[38;2;96;76;67m\x1b[48;2;48;37;37m\u2580\x1b[38;2;171;144;124m\x1b[48;2;91;74;67m\u2580\x1b[38;2;198;172;152m\x1b[48;2;112;88;76m\u2580\x1b[38;2;240;237;224m\x1b[48;2;202;185;168m\u2580\x1b[38;2;198;213;210m\x1b[48;2;238;242;232m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;92;86;87m\u2584\x1b[38;2;86;100;117m\x1b[48;2;54;61;81m\u2580\x1b[38;2;36;38;48m\x1b[48;2;32;31;38m\u2580\x1b[38;2;32;31;34m\x1b[48;2;37;35;40m\u2580\x1b[38;2;44;41;46m\x1b[48;2;39;36;40m\u2580\x1b[38;2;45;40;42m\x1b[48;2;40;36;36m\u2580\x1b[38;2;50;42;45m\x1b[48;2;39;32;32m\u2580\x1b[38;2;51;44;46m\x1b[48;2;47;36;35m\u2580\x1b[38;2;66;57;60m\x1b[48;2;48;37;37m\u2580\x1b[38;2;72;63;63m\x1b[48;2;55;41;40m\u2580\x1b[38;2;58;47;47m\x1b[48;2;67;49;47m\u2580\x1b[38;2;66;50;46m\x1b[48;2;110;84;74m\u2580\x1b[38;2;62;41;34m\x1b[48;2;173;140;124m\u2580\x1b[38;2;142;119;105m\x1b[48;2;119;95;82m\u2580\x1b[38;2;255;255;245m\x1b[48;2;244;228;202m\u2580\x1b[38;2;202;214;211m\x1b[48;2;223;230;220m\u2580\x1b[49m\x1b[38;2;175;209;215m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;130;120;117m\x1b[48;2;60;61;71m\u2580\x1b[38;2;58;55;62m\x1b[48;2;26;31;44m\u2580\x1b[38;2;39;47;67m\x1b[48;2;62;54;60m\u2580\x1b[38;2;29;29;35m\x1b[48;2;55;47;48m\u2580\x1b[38;2;40;37;43m\x1b[48;2;40;37;43m\u2580\x1b[38;2;43;37;40m\x1b[48;2;48;39;41m\u2580\x1b[38;2;42;35;34m\x1b[48;2;54;42;43m\u2580\x1b[38;2;48;37;37m\x1b[48;2;55;41;42m\u2580\x1b[38;2;45;33;33m\x1b[48;2;87;65;61m\u2580\x1b[38;2;49;33;31m\x1b[48;2;141;110;100m\u2580\x1b[38;2;111;84;77m\x1b[48;2;130;105;95m\u2580\x1b[38;2;94;69;61m\x1b[48;2;160;138;124m\u2580\x1b[38;2;188;161;148m\x1b[48;2;233;211;199m\u2580\x1b[38;2;227;198;181m\x1b[48;2;232;205;191m\u2580\x1b[38;2;110;85;76m\x1b[48;2;113;92;86m\u2580\x1b[38;2;163;131;108m\x1b[48;2;91;65;55m\u2580\x1b[38;2;237;234;218m\x1b[48;2;215;200;179m\u2580\x1b[38;2;202;226;230m\x1b[48;2;218;239;241m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;174;196;206m\u2580\x1b[38;2;77;87;100m\x1b[48;2;91;109;120m\u2580\x1b[38;2;35;30;36m\x1b[48;2;56;52;59m\u2580\x1b[38;2;191;120;100m\x1b[48;2;208;130;112m\u2580\x1b[38;2;152;107;95m\x1b[48;2;159;98;87m\u2580\x1b[38;2;36;34;39m\x1b[48;2;42;37;42m\u2580\x1b[38;2;71;53;52m\x1b[48;2;126;93;85m\u2580\x1b[38;2;78;57;52m\x1b[48;2;221;175;156m\u2580\x1b[38;2;25;21;21m\x1b[48;2;155;123;111m\u2580\x1b[38;2;78;66;61m\x1b[48;2;165;144;134m\u2580\x1b[38;2;170;142;129m\x1b[48;2;211;183;166m\u2580\x1b[38;2;190;164;148m\x1b[48;2;230;198;178m\u2580\x1b[38;2;231;207;192m\x1b[48;2;225;197;178m\u2580\x1b[38;2;218;193;181m\x1b[48;2;206;177;164m\u2580\x1b[38;2;201;173;159m\x1b[48;2;193;162;150m\u2580\x1b[38;2;108;88;84m\x1b[48;2;104;84;80m\u2580\x1b[38;2;81;59;53m\x1b[48;2;74;55;53m\u2580\x1b[38;2;171;148;129m\x1b[48;2;130;112;101m\u2580\x1b[38;2;197;217;219m\x1b[48;2;177;197;198m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;60;71;84m\x1b[48;2;81;92;104m\u2580\x1b[38;2;140;101;94m\x1b[48;2;47;48;59m\u2580\x1b[38;2;207;145;129m\x1b[48;2;149;125;119m\u2580\x1b[38;2;69;57;58m\x1b[48;2;90;71;71m\u2580\x1b[38;2;151;115;105m\x1b[48;2;172;142;131m\u2580\x1b[38;2;240;185;167m\x1b[48;2;233;193;174m\u2580\x1b[38;2;231;177;159m\x1b[48;2;228;188;171m\u2580\x1b[38;2;235;189;170m\x1b[48;2;232;197;178m\u2580\x1b[38;2;227;191;171m\x1b[48;2;230;195;176m\u2580\x1b[38;2;235;199;176m\x1b[48;2;239;207;185m\u2580\x1b[38;2;202;170;154m\x1b[48;2;221;184;165m\u2580\x1b[38;2;66;55;51m\x1b[48;2;193;151;137m\u2580\x1b[38;2;82;69;64m\x1b[48;2;136;111;105m\u2580\x1b[38;2;89;71;70m\x1b[48;2;39;33;38m\u2580\x1b[38;2;57;44;46m\x1b[48;2;51;44;48m\u2580\x1b[38;2;114;111;107m\x1b[48;2;125;136;137m\u2580\x1b[38;2;170;185;185m\x1b[48;2;154;171;171m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;151;171;179m\u2584\x1b[38;2;66;76;87m\x1b[48;2;46;55;67m\u2580\x1b[38;2;43;47;59m\x1b[48;2;52;55;67m\u2580\x1b[38;2;90;92;99m\x1b[48;2;121;122;129m\u2580\x1b[38;2;66;49;49m\x1b[48;2;105;81;74m\u2580\x1b[38;2;186;159;146m\x1b[48;2;166;129;115m\u2580\x1b[38;2;237;209;191m\x1b[48;2;238;212;194m\u2580\x1b[38;2;225;195;179m\x1b[48;2;225;198;182m\u2580\x1b[38;2;220;184;169m\x1b[48;2;208;150;140m\u2580\x1b[38;2;234;202;184m\x1b[48;2;201;135;125m\u2580\x1b[38;2;237;210;191m\x1b[48;2;213;179;164m\u2580\x1b[38;2;231;189;170m\x1b[48;2;236;203;182m\u2580\x1b[38;2;249;193;176m\x1b[48;2;230;205;191m\u2580\x1b[38;2;171;150;148m\x1b[48;2;143;139;141m\u2580\x1b[38;2;53;46;53m\x1b[48;2;74;64;71m\u2580\x1b[38;2;60;61;67m\x1b[48;2;100;99;101m\u2580\x1b[38;2;153;174;177m\x1b[48;2;184;206;207m\u2580\x1b[49m\x1b[38;2;140;161;167m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;200;209;200m\u2584\x1b[38;2;179;195;195m\x1b[48;2;161;174;176m\u2580\x1b[38;2;118;132;143m\x1b[48;2;58;66;77m\u2580\x1b[38;2;27;33;46m\x1b[48;2;37;42;53m\u2580\x1b[38;2;57;63;76m\x1b[48;2;52;65;86m\u2580\x1b[38;2;77;75;82m\x1b[48;2;60;84;118m\u2580\x1b[38;2;162;126;108m\x1b[48;2;118;109;114m\u2580\x1b[38;2;165;110;93m\x1b[48;2;197;146;123m\u2580\x1b[38;2;206;163;145m\x1b[48;2;183;121;101m\u2580\x1b[38;2;235;214;196m\x1b[48;2;202;160;142m\u2580\x1b[38;2;231;199;183m\x1b[48;2;236;212;196m\u2580\x1b[38;2;221;172;157m\x1b[48;2;232;214;200m\u2580\x1b[38;2;233;201;182m\x1b[48;2;181;174;170m\u2580\x1b[38;2;232;214;200m\x1b[48;2;128;122;121m\u2580\x1b[38;2;212;208;202m\x1b[48;2;184;180;173m\u2580\x1b[38;2;174;180;182m\x1b[48;2;193;203;203m\u2580\x1b[38;2;94;88;89m\x1b[48;2;140;135;133m\u2580\x1b[38;2;145;142;137m\x1b[48;2;201;205;198m\u2580\x1b[38;2;211;228;228m\x1b[48;2;168;177;171m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;91;109;136m\u2584\x1b[38;2;106;114;133m\x1b[48;2;49;73;113m\u2580\x1b[38;2;126;140;159m\x1b[48;2;27;50;91m\u2580\x1b[38;2;97;115;139m\x1b[48;2;35;56;97m\u2580\x1b[38;2;63;77;97m\x1b[48;2;46;68;109m\u2580\x1b[38;2;35;40;52m\x1b[48;2;33;53;86m\u2580\x1b[38;2;51;70;99m\x1b[48;2;20;38;73m\u2580\x1b[38;2;49;74;113m\x1b[48;2;34;52;84m\u2580\x1b[38;2;65;78;96m\x1b[48;2;66;82;103m\u2580\x1b[38;2;122;111;113m\x1b[48;2;55;72;95m\u2580\x1b[38;2;204;148;123m\x1b[48;2;148;126;122m\u2580\x1b[38;2;183;119;97m\x1b[48;2;211;153;128m\u2580\x1b[38;2;156;123;112m\x1b[48;2;109;91;87m\u2580\x1b[38;2;92;97;108m\x1b[48;2;58;74;93m\u2580\x1b[38;2;58;65;80m\x1b[48;2;69;77;90m\u2580\x1b[38;2;86;83;86m\x1b[48;2;72;70;77m\u2580\x1b[38;2;161;155;149m\x1b[48;2;147;141;138m\u2580\x1b[38;2;216;232;230m\x1b[48;2;214;225;220m\u2580\x1b[38;2;152;152;148m\x1b[48;2;165;167;162m\u2580\x1b[38;2;216;227;220m\x1b[48;2;213;221;213m\u2580\x1b[38;2;174;178;172m\x1b[48;2;211;227;223m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;141;164;160m\u2584\x1b[38;2;175;192;181m\x1b[48;2;213;234;229m\u2580\x1b[38;2;159;177;186m\x1b[48;2;132;152;171m\u2580\x1b[38;2;45;69;110m\x1b[48;2;24;46;86m\u2580\x1b[38;2;49;77;122m\x1b[48;2;51;75;114m\u2580\x1b[38;2;72;101;147m\x1b[48;2;63;90;133m\u2580\x1b[38;2;45;68;110m\x1b[48;2;71;99;145m\u2580\x1b[38;2;25;43;80m\x1b[48;2;46;68;106m\u2580\x1b[38;2;36;58;98m\x1b[48;2;25;41;76m\u2580\x1b[38;2;35;58;95m\x1b[48;2;53;73;108m\u2580\x1b[38;2;16;40;81m\x1b[48;2;95;103;115m\u2580\x1b[38;2;59;72;94m\x1b[48;2;47;63;90m\u2580\x1b[38;2;95;92;96m\x1b[48;2;56;71;99m\u2580\x1b[38;2;71;78;93m\x1b[48;2;86;92;102m\u2580\x1b[38;2;167;132;122m\x1b[48;2;105;91;100m\u2580\x1b[38;2;68;51;50m\x1b[48;2;112;78;78m\u2580\x1b[38;2;78;90;109m\x1b[48;2;98;94;100m\u2580\x1b[38;2;81;90;105m\x1b[48;2;69;74;92m\u2580\x1b[38;2;59;60;68m\x1b[48;2;66;69;79m\u2580\x1b[38;2;112;106;108m\x1b[48;2;74;70;73m\u2580\x1b[38;2;212;209;200m\x1b[48;2;145;132;127m\u2580\x1b[38;2;203;204;195m\x1b[48;2;232;229;219m\u2580\x1b[38;2;207;209;200m\x1b[48;2;222;227;220m\u2580\x1b[38;2;209;233;231m\x1b[48;2;228;244;240m\u2580\x1b[49m\x1b[38;2;214;234;231m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;148;172;168m\x1b[48;2;197;216;211m\u2580\x1b[38;2;208;233;228m\x1b[48;2;208;228;225m\u2580\x1b[38;2;173;190;189m\x1b[48;2;83;97;103m\u2580\x1b[38;2;42;57;83m\x1b[48;2;29;44;70m\u2580\x1b[38;2;30;52;89m\x1b[48;2;31;56;97m\u2580\x1b[38;2;35;56;93m\x1b[48;2;35;61;104m\u2580\x1b[38;2;35;59;97m\x1b[48;2;46;75;118m\u2580\x1b[38;2;40;65;102m\x1b[48;2;61;89;131m\u2580\x1b[38;2;53;75;110m\x1b[48;2;66;90;129m\u2580\x1b[38;2;40;51;80m\x1b[48;2;83;94;121m\u2580\x1b[38;2;28;48;86m\x1b[48;2;46;58;86m\u2580\x1b[38;2;109;117;126m\x1b[48;2;92;101;121m\u2580\x1b[38;2;142;134;121m\x1b[48;2;115;118;130m\u2580\x1b[38;2;49;68;100m\x1b[48;2;114;120;134m\u2580\x1b[38;2;43;63;99m\x1b[48;2;88;98;123m\u2580\x1b[38;2;107;104;115m\x1b[48;2;48;68;104m\u2580\x1b[38;2;141;117;118m\x1b[48;2;89;95;113m\u2580\x1b[38;2;108;111;122m\x1b[48;2;57;76;109m\u2580\x1b[38;2;47;65;97m\x1b[48;2;60;79;107m\u2580\x1b[38;2;54;73;104m\x1b[48;2;84;96;117m\u2580\x1b[38;2;97;100;114m\x1b[48;2;96;111;142m\u2580\x1b[38;2;130;114;110m\x1b[48;2;201;197;207m\u2580\x1b[38;2;189;170;155m\x1b[48;2;214;204;201m\u2580\x1b[38;2;237;239;229m\x1b[48;2;210;195;181m\u2580\x1b[38;2;231;243;237m\x1b[48;2;234;235;223m\u2580\x1b[38;2;235;247;240m\x1b[48;2;229;243;236m\u2580\x1b[38;2;206;226;222m\x1b[48;2;221;234;226m\u2580\x1b[49m\x1b[38;2;199;220;213m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;131;131;127m\u2584\x1b[38;2;174;185;182m\x1b[48;2;197;210;205m\u2580\x1b[38;2;214;232;227m\x1b[48;2;195;218;219m\u2580\x1b[38;2;150;168;173m\x1b[48;2;59;71;84m\u2580\x1b[38;2;37;44;55m\x1b[48;2;29;35;46m\u2580\x1b[38;2;34;51;79m\x1b[48;2;39;57;84m\u2580\x1b[38;2;34;58;99m\x1b[48;2;32;55;94m\u2580\x1b[38;2;40;66;108m\x1b[48;2;42;67;107m\u2580\x1b[38;2;48;75;120m\x1b[48;2;43;70;113m\u2580\x1b[38;2;58;87;132m\x1b[48;2;50;77;122m\u2580\x1b[38;2;69;97;143m\x1b[48;2;59;87;130m\u2580\x1b[38;2;91;112;154m\x1b[48;2;79;102;148m\u2580\x1b[38;2;74;81;104m\x1b[48;2;71;88;126m\u2580\x1b[38;2;166;144;122m\x1b[48;2;88;86;94m\u2580\x1b[38;2;132;116;107m\x1b[48;2;165;166;169m\u2580\x1b[38;2;128;120;124m\x1b[48;2;54;71;104m\u2580\x1b[38;2;124;127;142m\x1b[48;2;95;107;133m\u2580\x1b[38;2;78;90;112m\x1b[48;2;101;108;126m\u2580\x1b[38;2;51;69;101m\x1b[48;2;50;73;111m\u2580\x1b[38;2;59;77;109m\x1b[48;2;39;64;105m\u2580\x1b[38;2;110;115;125m\x1b[48;2;91;101;120m\u2580\x1b[38;2;159;149;139m\x1b[48;2;155;147;144m\u2580\x1b[38;2;131;130;135m\x1b[48;2;179;165;151m\u2580\x1b[38;2;123;131;155m\x1b[48;2;168;162;159m\u2580\x1b[38;2;154;161;182m\x1b[48;2;95;110;137m\u2580\x1b[38;2;174;165;165m\x1b[48;2;148;152;167m\u2580\x1b[38;2;174;153;139m\x1b[48;2;146;128;123m\u2580\x1b[38;2;237;233;217m\x1b[48;2;156;141;133m\u2580\x1b[38;2;240;249;236m\x1b[48;2;221;209;193m\u2580\x1b[38;2;207;220;211m\x1b[48;2;239;234;219m\u2580\x1b[49m\x1b[38;2;202;211;200m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;195;220;218m\u2584\x1b[38;2;178;190;186m\x1b[48;2;198;217;216m\u2580\x1b[38;2;201;220;221m\x1b[48;2;81;90;100m\u2580\x1b[38;2;85;101;114m\x1b[48;2;38;45;60m\u2580\x1b[38;2;31;40;53m\x1b[48;2;35;43;56m\u2580\x1b[38;2;35;44;56m\x1b[48;2;35;44;57m\u2580\x1b[38;2;34;52;78m\x1b[48;2;33;46;68m\u2580\x1b[38;2;31;55;91m\x1b[48;2;20;39;74m\u2580\x1b[38;2;30;53;89m\x1b[48;2;31;53;90m\u2580\x1b[38;2;34;57;95m\x1b[48;2;33;54;93m\u2580\x1b[38;2;32;54;93m\x1b[48;2;36;59;99m\u2580\x1b[38;2;38;62;101m\x1b[48;2;42;67;110m\u2580\x1b[38;2;63;81;115m\x1b[48;2;51;78;119m\u2580\x1b[38;2;102;114;142m\x1b[48;2;72;92;129m\u2580\x1b[38;2;121;130;152m\x1b[48;2;112;122;148m\u2580\x1b[38;2;92;105;129m\x1b[48;2;140;140;152m\u2580\x1b[38;2;94;112;139m\x1b[48;2;98;110;136m\u2580\x1b[38;2;46;70;112m\x1b[48;2;73;96;137m\u2580\x1b[38;2;61;80;116m\x1b[48;2;184;180;179m\u2580\x1b[38;2;61;83;120m\x1b[48;2;139;142;152m\u2580\x1b[38;2;53;79;121m\x1b[48;2;108;116;135m\u2580\x1b[38;2;48;72;111m\x1b[48;2;116;128;147m\u2580\x1b[38;2;112;115;124m\x1b[48;2;96;111;139m\u2580\x1b[38;2;148;142;143m\x1b[48;2;175;167;163m\u2580\x1b[38;2;164;159;160m\x1b[48;2;207;189;171m\u2580\x1b[38;2;60;77;107m\x1b[48;2;81;84;100m\u2580\x1b[38;2;116;132;160m\x1b[48;2;77;99;138m\u2580\x1b[38;2;163;151;149m\x1b[48;2;151;153;166m\u2580\x1b[38;2;117;105;106m\x1b[48;2;135;124;122m\u2580\x1b[38;2;165;160;161m\x1b[48;2;110;106;113m\u2580\x1b[38;2;213;202;190m\x1b[48;2;195;199;199m\u2580\x1b[38;2;212;201;185m\x1b[48;2;213;211;201m\u2580\x1b[38;2;204;210;201m\x1b[48;2;204;198;185m\u2580\x1b[49m\x1b[38;2;203;220;214m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;105;125;130m\u2584\x1b[38;2;176;203;203m\x1b[48;2;126;145;149m\u2580\x1b[38;2;183;204;205m\x1b[48;2;71;81;91m\u2580\x1b[38;2;82;89;97m\x1b[48;2;32;37;48m\u2580\x1b[38;2;33;39;52m\x1b[48;2;91;106;112m\u2580\x1b[38;2;45;55;69m\x1b[48;2;74;89;102m\u2580\x1b[38;2;37;47;62m\x1b[48;2;35;45;61m\u2580\x1b[38;2;39;50;65m\x1b[48;2;46;59;77m\u2580\x1b[38;2;54;70;91m\x1b[48;2;67;86;105m\u2580\x1b[38;2;25;39;66m\x1b[48;2;54;67;85m\u2580\x1b[38;2;19;38;71m\x1b[48;2;40;45;56m\u2580\x1b[38;2;27;50;89m\x1b[48;2;37;47;68m\u2580\x1b[38;2;33;56;92m\x1b[48;2;26;49;85m\u2580\x1b[38;2;38;62;100m\x1b[48;2;28;48;83m\u2580\x1b[38;2;45;70;109m\x1b[48;2;28;47;83m\u2580\x1b[38;2;57;80;117m\x1b[48;2;33;56;92m\u2580\x1b[38;2;95;109;136m\x1b[48;2;53;75;109m\u2580\x1b[38;2;132;137;156m\x1b[48;2;86;100;126m\u2580\x1b[38;2;113;122;146m\x1b[48;2;123;130;150m\u2580\x1b[38;2;97;114;151m\x1b[48;2;152;156;173m\u2580\x1b[38;2;106;122;153m\x1b[48;2;125;135;163m\u2580\x1b[38;2;127;136;158m\x1b[48;2;86;106;146m\u2580\x1b[38;2;160;163;178m\x1b[48;2;100;114;147m\u2580\x1b[38;2;238;229;215m\x1b[48;2;107;124;158m\u2580\x1b[38;2;154;162;183m\x1b[48;2;126;136;165m\u2580\x1b[38;2;135;147;177m\x1b[48;2;136;142;165m\u2580\x1b[38;2;189;184;193m\x1b[48;2;130;143;175m\u2580\x1b[38;2;136;132;141m\x1b[48;2;134;142;166m\u2580\x1b[38;2;62;81;117m\x1b[48;2;79;96;128m\u2580\x1b[38;2;153;162;185m\x1b[48;2;124;140;169m\u2580\x1b[38;2;141;143;149m\x1b[48;2;159;164;174m\u2580\x1b[38;2;104;102;109m\x1b[48;2;119;125;131m\u2580\x1b[38;2;120;121;129m\x1b[48;2;113;116;125m\u2580\x1b[38;2;217;231;228m\x1b[48;2;163;172;175m\u2580\x1b[38;2;192;198;189m\x1b[48;2;204;230;224m\u2580\x1b[38;2;211;222;214m\x1b[48;2;181;186;180m\u2580\x1b[38;2;190;219;216m\x1b[48;2;196;224;224m\u2580\x1b[49m\x1b[38;2;163;193;198m\u2584\x1b[0m \x1b[0m",
"\x1b[38;2;85;112;119m\u2584\x1b[38;2;92;113;121m\x1b[48;2;134;169;174m\u2580\x1b[38;2;126;152;157m\x1b[48;2;155;187;192m\u2580\x1b[38;2;136;157;162m\x1b[48;2;65;79;92m\u2580\x1b[38;2;44;53;67m\x1b[48;2;51;66;80m\u2580\x1b[38;2;100;117;121m\x1b[48;2;174;204;203m\u2580\x1b[38;2;162;186;187m\x1b[48;2;133;155;161m\u2580\x1b[38;2;52;64;78m\x1b[48;2;48;57;72m\u2580\x1b[38;2;45;55;70m\x1b[48;2;54;64;79m\u2580\x1b[38;2;50;63;82m\x1b[48;2;54;67;86m\u2580\x1b[38;2;76;96;117m\x1b[48;2;83;104;125m\u2580\x1b[38;2;64;71;82m\x1b[48;2;115;111;110m\u2580\x1b[38;2;80;75;73m\x1b[48;2;112;96;84m\u2580\x1b[38;2;70;73;76m\x1b[48;2;47;59;76m\u2580\x1b[38;2;38;58;85m\x1b[48;2;34;45;65m\u2580\x1b[38;2;31;53;89m\x1b[48;2;23;43;75m\u2580\x1b[38;2;30;48;84m\x1b[48;2;36;58;94m\u2580\x1b[38;2;35;57;93m\x1b[48;2;31;51;87m\u2580\x1b[38;2;40;59;92m\x1b[48;2;64;77;102m\u2580\x1b[38;2;104;114;135m\x1b[48;2;53;72;103m\u2580\x1b[38;2;98;113;143m\x1b[48;2;44;69;108m\u2580\x1b[38;2;141;133;146m\x1b[48;2;102;108;130m\u2580\x1b[38;2;187;169;167m\x1b[48;2;203;181;170m\u2580\x1b[38;2;163;156;158m\x1b[48;2;249;225;203m\u2580\x1b[38;2;140;137;140m\x1b[48;2;251;237;219m\u2580\x1b[38;2;80;94;122m\x1b[48;2;232;223;210m\u2580\x1b[38;2;72;85;114m\x1b[48;2;178;179;179m\u2580\x1b[38;2;89;97;119m\x1b[48;2;115;124;141m\u2580\x1b[38;2;59;81;119m\x1b[48;2;70;86;113m\u2580\x1b[38;2;76;94;127m\x1b[48;2;43;61;93m\u2580\x1b[38;2;67;86;116m\x1b[48;2;40;61;95m\u2580\x1b[38;2;90;111;147m\x1b[48;2;78;101;140m\u2580\x1b[38;2;171;174;188m\x1b[48;2;148;154;176m\u2580\x1b[38;2;152;161;165m\x1b[48;2;163;171;180m\u2580\x1b[38;2;154;163;166m\x1b[48;2;182;195;198m\u2580\x1b[38;2;120;127;133m\x1b[48;2;106;115;123m\u2580\x1b[38;2;202;231;228m\x1b[48;2;194;226;223m\u2580\x1b[38;2;165;174;169m\x1b[48;2;170;180;175m\u2580\x1b[38;2;177;199;198m\x1b[48;2;163;182;181m\u2580\x1b[49m\x1b[38;2;184;223;223m\u2580\x1b[0m \x1b[0m",
"\x1b[38;2;100;133;142m\x1b[48;2;110;144;154m\u2580\x1b[38;2;160;205;211m\x1b[48;2;157;199;206m\u2580\x1b[38;2;100;126;139m\x1b[48;2;88;113;129m\u2580\x1b[38;2;56;72;87m\x1b[48;2;67;86;102m\u2580\x1b[38;2;89;110;120m\x1b[48;2;100;124;134m\u2580\x1b[38;2;196;227;225m\x1b[48;2;199;230;230m\u2580\x1b[38;2;103;123;135m\x1b[48;2;95;115;131m\u2580\x1b[38;2;52;62;77m\x1b[48;2;83;98;111m\u2580\x1b[38;2;69;80;94m\x1b[48;2;82;94;108m\u2580\x1b[38;2;69;82;99m\x1b[48;2;66;77;95m\u2580\x1b[38;2;83;103;123m\x1b[48;2;78;96;116m\u2580\x1b[38;2;116;127;135m\x1b[48;2;99;119;135m\u2580\x1b[38;2;72;79;93m\x1b[48;2;53;64;83m\u2580\x1b[38;2;6;23;56m\x1b[48;2;35;44;61m\u2580\x1b[38;2;8;22;48m\x1b[48;2;34;43;63m\u2580\x1b[38;2;19;30;51m\x1b[48;2;73;72;75m\u2580\x1b[38;2;33;53;86m\x1b[48;2;27;32;48m\u2580\x1b[38;2;34;54;90m\x1b[48;2;29;49;81m\u2580\x1b[38;2;66;78;104m\x1b[48;2;56;73;103m\u2580\x1b[38;2;36;56;92m\x1b[48;2;37;57;96m\u2580\x1b[38;2;34;56;95m\x1b[48;2;28;56;98m\u2580\x1b[38;2;34;53;88m\x1b[48;2;81;73;88m\u2580\x1b[38;2;168;140;132m\x1b[48;2;215;166;146m\u2580\x1b[38;2;231;194;174m\x1b[48;2;214;175;159m\u2580\x1b[38;2;226;191;170m\x1b[48;2;214;175;157m\u2580\x1b[38;2;241;208;187m\x1b[48;2;216;177;158m\u2580\x1b[38;2;255;227;203m\x1b[48;2;221;181;161m\u2580\x1b[38;2;255;235;213m\x1b[48;2;225;186;166m\u2580\x1b[38;2;236;223;208m\x1b[48;2;233;195;173m\u2580\x1b[38;2;195;189;183m\x1b[48;2;244;208;185m\u2580\x1b[38;2;152;154;159m\x1b[48;2;250;216;192m\u2580\x1b[38;2;134;142;156m\x1b[48;2;245;215;193m\u2580\x1b[38;2;112;120;139m\x1b[48;2;242;221;203m\u2580\x1b[38;2;132;131;148m\x1b[48;2;239;229;214m\u2580\x1b[38;2;161;159;167m\x1b[48;2;206;195;184m\u2580\x1b[38;2;135;144;150m\x1b[48;2;193;185;177m\u2580\x1b[38;2;213;226;222m\x1b[48;2;184;171;163m\u2580\x1b[38;2;179;186;184m\x1b[48;2;191;203;201m\u2580\x1b[38;2;179;204;204m\x1b[48;2;200;230;230m\u2580\x1b[0m \x1b[0m",
"\x1b[38;2;107;138;146m\u2580\x1b[38;2;175;213;217m\x1b[48;2;163;195;198m\u2580\x1b[38;2;95;120;137m\x1b[48;2;127;153;168m\u2580\x1b[38;2;90;112;126m\x1b[48;2;115;142;152m\u2580\x1b[38;2;128;154;163m\x1b[48;2;174;204;205m\u2580\x1b[38;2;185;213;215m\x1b[48;2;155;178;184m\u2580\x1b[38;2;90;111;126m\x1b[48;2;106;126;139m\u2580\x1b[38;2;139;157;164m\x1b[48;2;137;156;161m\u2580\x1b[38;2;107;121;132m\x1b[48;2;189;208;207m\u2580\x1b[38;2;84;97;111m\x1b[48;2;92;105;117m\u2580\x1b[38;2;86;102;116m\x1b[48;2;140;155;162m\u2580\x1b[38;2;87;107;126m\x1b[48;2;130;152;164m\u2580\x1b[38;2;36;47;67m\x1b[48;2;65;78;96m\u2580\x1b[38;2;102;103;107m\x1b[48;2;142;140;139m\u2580\x1b[38;2;123;120;118m\x1b[48;2;142;119;102m\u2580\x1b[38;2;156;145;135m\x1b[48;2;118;103;93m\u2580\x1b[38;2;64;61;66m\x1b[48;2;76;78;82m\u2580\x1b[38;2;38;42;50m\x1b[48;2;103;85;70m\u2580\x1b[38;2;57;69;88m\x1b[48;2;73;70;70m\u2580\x1b[38;2;34;56;92m\x1b[48;2;41;55;80m\u2580\x1b[38;2;29;54;93m\x1b[48;2;42;60;90m\u2580\x1b[38;2;91;70;76m\x1b[48;2;16;23;37m\u2580\x1b[38;2;191;136;118m\x1b[48;2;35;32;40m\u2580\x1b[38;2;207;154;135m\x1b[48;2;90;72;69m\u2580\x1b[38;2;210;159;140m\x1b[48;2;147;117;105m\u2580\x1b[38;2;219;171;151m\x1b[48;2;158;121;109m\u2580\x1b[38;2;223;179;159m\x1b[48;2;168;128;116m\u2580\x1b[38;2;223;181;162m\x1b[48;2;179;140;126m\u2580\x1b[38;2;225;184;165m\x1b[48;2;175;135;123m\u2580\x1b[38;2;224;184;167m\x1b[48;2;175;133;123m\u2580\x1b[38;2;222;181;164m\x1b[48;2;186;136;122m\u2580\x1b[38;2;224;182;164m\x1b[48;2;186;130;112m\u2580\x1b[38;2;225;176;157m\x1b[48;2;205;161;141m\u2580\x1b[38;2;238;202;181m\x1b[48;2;239;223;203m\u2580\x1b[38;2;255;238;215m\x1b[48;2;233;212;191m\u2580\x1b[38;2;255;245;222m\x1b[48;2;228;187;164m\u2580\x1b[38;2;246;240;220m\x1b[48;2;237;195;172m\u2580\x1b[38;2;244;239;219m\x1b[48;2;246;221;196m\u2580\x1b[38;2;241;237;218m\x1b[48;2;246;220;196m\u2580\x1b[38;2;238;233;219m\x1b[48;2;255;237;213m\u2580\x1b[49m\x1b[38;2;241;224;205m\u2584\x1b[38;2;227;221;209m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;117;144;155m\u2580\x1b[38;2;129;154;163m\x1b[48;2;117;142;148m\u2580\x1b[38;2;206;237;235m\x1b[48;2;162;187;190m\u2580\x1b[38;2;198;223;223m\x1b[48;2;187;212;211m\u2580\x1b[38;2;143;163;171m\x1b[48;2;201;223;223m\u2580\x1b[38;2;101;118;129m\x1b[48;2;108;125;136m\u2580\x1b[38;2;226;244;239m\x1b[48;2;158;175;183m\u2580\x1b[38;2;190;208;206m\x1b[48;2;223;243;240m\u2580\x1b[38;2;122;138;145m\x1b[48;2;198;220;216m\u2580\x1b[38;2;166;185;189m\x1b[48;2;167;182;183m\u2580\x1b[38;2;54;74;100m\x1b[48;2;38;54;80m\u2580\x1b[38;2;37;51;75m\x1b[48;2;8;28;62m\u2580\x1b[38;2;95;88;87m\x1b[48;2;17;36;65m\u2580\x1b[38;2;74;72;72m\x1b[48;2;42;56;77m\u2580\x1b[38;2;95;97;98m\x1b[48;2;47;60;81m\u2580\x1b[38;2;103;97;92m\x1b[48;2;62;77;98m\u2580\x1b[38;2;66;73;83m\x1b[48;2;22;40;70m\u2580\x1b[38;2;20;36;62m\x1b[48;2;21;39;68m\u2580\x1b[38;2;36;50;72m\x1b[48;2;24;42;70m\u2580\x1b[38;2;19;32;50m\x1b[48;2;28;45;73m\u2580\x1b[38;2;14;29;53m\x1b[48;2;25;43;71m\u2580\x1b[38;2;24;42;69m\x1b[48;2;22;41;72m\u2580\x1b[38;2;78;82;86m\x1b[48;2;28;44;69m\u2580\x1b[38;2;98;94;86m\x1b[48;2;52;60;69m\u2580\x1b[38;2;61;64;72m\x1b[48;2;33;44;60m\u2580\x1b[38;2;55;62;78m\x1b[48;2;49;71;94m\u2580\x1b[38;2;30;42;67m\x1b[48;2;90;112;129m\u2580\x1b[38;2;30;40;64m\x1b[48;2;30;47;75m\u2580\x1b[38;2;129;96;90m\x1b[48;2;107;78;77m\u2580\x1b[38;2;177;125;110m\x1b[48;2;196;146;128m\u2580\x1b[38;2;230;188;167m\x1b[48;2;217;159;140m\u2580\x1b[38;2;249;229;209m\x1b[48;2;235;195;175m\u2580\x1b[38;2;250;234;215m\x1b[48;2;234;198;177m\u2580\x1b[38;2;233;205;183m\x1b[48;2;243;212;189m\u2580\x1b[38;2;175;130;112m\x1b[48;2;246;218;196m\u2580\x1b[38;2;205;155;136m\x1b[48;2;165;124;110m\u2580\x1b[38;2;194;151;135m\x1b[48;2;177;131;116m\u2580\x1b[38;2;213;166;146m\x1b[48;2;158;120;107m\u2580\x1b[38;2;239;196;171m\x1b[48;2;226;173;150m\u2580\x1b[38;2;239;207;186m\x1b[48;2;224;172;149m\u2580\x1b[38;2;211;208;199m\x1b[48;2;211;185;171m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;166;182;182m\u2580\x1b[38;2;130;148;155m\u2580\x1b[38;2;138;160;164m\u2580\x1b[38;2;221;241;236m\x1b[48;2;91;96;102m\u2580\x1b[38;2;125;138;142m\x1b[48;2;38;50;70m\u2580\x1b[38;2;24;35;55m\x1b[48;2;44;61;87m\u2580\x1b[38;2;38;49;68m\x1b[48;2;66;71;82m\u2580\x1b[38;2;25;37;60m\x1b[48;2;75;71;71m\u2580\x1b[38;2;14;31;59m\x1b[48;2;36;43;60m\u2580\x1b[38;2;14;32;63m\x1b[48;2;29;40;59m\u2580\x1b[38;2;21;36;62m\x1b[48;2;30;40;58m\u2580\x1b[38;2;28;41;65m\x1b[48;2;27;36;54m\u2580\x1b[38;2;18;35;59m\x1b[48;2;11;25;48m\u2580\x1b[38;2;20;36;61m\x1b[48;2;16;31;54m\u2580\x1b[38;2;18;35;62m\x1b[48;2;17;33;58m\u2580\x1b[38;2;32;47;69m\x1b[48;2;26;42;65m\u2580\x1b[38;2;65;76;90m\x1b[48;2;47;59;78m\u2580\x1b[38;2;43;57;76m\x1b[48;2;48;58;73m\u2580\x1b[38;2;37;47;63m\x1b[48;2;23;41;67m\u2580\x1b[38;2;36;58;84m\x1b[48;2;133;150;168m\u2580\x1b[38;2;175;197;203m\x1b[48;2;219;218;208m\u2580\x1b[38;2;126;146;154m\x1b[48;2;140;130;124m\u2580\x1b[38;2;79;87;98m\x1b[48;2;130;114;108m\u2580\x1b[38;2;99;82;79m\x1b[48;2;99;84;78m\u2580\x1b[38;2;213;163;146m\x1b[48;2;190;143;130m\u2580\x1b[38;2;165;105;90m\x1b[48;2;132;88;77m\u2580\x1b[38;2;213;175;158m\x1b[48;2;178;130;117m\u2580\x1b[38;2;231;195;176m\x1b[48;2;221;165;148m\u2580\x1b[38;2;231;196;176m\x1b[48;2;215;161;143m\u2580\x1b[38;2;243;208;187m\x1b[48;2;224;172;155m\u2580\x1b[38;2;181;151;137m\x1b[48;2;180;138;124m\u2580\x1b[38;2;99;72;67m\x1b[48;2;96;71;64m\u2580\x1b[38;2;116;89;82m\x1b[48;2;112;86;79m\u2580\x1b[38;2;147;106;94m\x1b[48;2;109;83;77m\u2580\x1b[38;2;212;170;153m\x1b[48;2;125;94;84m\u2580\x1b[38;2;197;169;157m\x1b[48;2;195;180;168m\u2580\x1b[38;2;194;194;186m\x1b[48;2;202;218;216m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;154;156;159m\u2584\x1b[38;2;144;145;147m\x1b[48;2;108;103;104m\u2580\x1b[38;2;101;101;103m\x1b[48;2;143;125;111m\u2580\x1b[38;2;149;136;121m\x1b[48;2;182;166;151m\u2580\x1b[38;2;186;166;142m\x1b[48;2;90;93;102m\u2580\x1b[38;2;86;90;98m\x1b[48;2;33;52;83m\u2580\x1b[38;2;31;45;70m\x1b[48;2;22;45;79m\u2580\x1b[38;2;76;84;97m\x1b[48;2;27;51;84m\u2580\x1b[38;2;91;93;98m\x1b[48;2;33;53;85m\u2580\x1b[38;2;43;54;74m\x1b[48;2;25;44;74m\u2580\x1b[38;2;12;30;58m\x1b[48;2;14;34;67m\u2580\x1b[38;2;18;33;58m\x1b[48;2;26;46;74m\u2580\x1b[38;2;14;30;56m\x1b[48;2;39;53;77m\u2580\x1b[38;2;17;29;50m\x1b[48;2;99;97;107m\u2580\x1b[38;2;13;24;44m\x1b[48;2;121;114;117m\u2580\x1b[38;2;40;49;65m\x1b[48;2;126;114;111m\u2580\x1b[38;2;101;97;97m\x1b[48;2;130;110;102m\u2580\x1b[38;2;129;118;114m\x1b[48;2;118;95;86m\u2580\x1b[38;2;143;128;120m\x1b[48;2;105;85;77m\u2580\x1b[38;2;128;105;95m\x1b[48;2;110;90;84m\u2580\x1b[38;2;95;78;76m\x1b[48;2;104;87;85m\u2580\x1b[38;2;61;57;67m\x1b[48;2;102;85;84m\u2580\x1b[38;2;87;72;72m\x1b[48;2;118;96;92m\u2580\x1b[38;2;124;93;88m\x1b[48;2;88;72;72m\u2580\x1b[38;2;117;85;77m\x1b[48;2;84;64;63m\u2580\x1b[38;2;186;133;120m\x1b[48;2;181;125;115m\u2580\x1b[38;2;196;133;118m\x1b[48;2;163;109;98m\u2580\x1b[38;2;184;120;105m\x1b[48;2;144;99;93m\u2580\x1b[38;2;180;124;113m\x1b[48;2;84;60;58m\u2580\x1b[38;2;99;77;75m\x1b[48;2;53;50;58m\u2580\x1b[38;2;108;87;82m\x1b[48;2;81;71;76m\u2580\x1b[38;2;120;91;82m\x1b[48;2;105;81;72m\u2580\x1b[38;2;126;96;88m\x1b[48;2;114;87;77m\u2580\x1b[38;2;131;99;87m\x1b[48;2;128;95;87m\u2580\x1b[38;2;176;142;125m\x1b[48;2;146;105;91m\u2580\x1b[38;2;202;199;189m\x1b[48;2;200;178;161m\u2580\x1b[49m\x1b[38;2;202;210;205m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;65;92;122m\u2584\x1b[38;2;91;111;134m\x1b[48;2;39;63;98m\u2580\x1b[38;2;76;93;112m\x1b[48;2;32;56;88m\u2580\x1b[38;2;73;83;100m\x1b[48;2;20;47;86m\u2580\x1b[38;2;59;73;100m\x1b[48;2;37;63;104m\u2580\x1b[38;2;56;79;116m\x1b[48;2;67;84;110m\u2580\x1b[38;2;31;62;103m\x1b[48;2;102;104;105m\u2580\x1b[38;2;81;93;110m\x1b[48;2;104;90;81m\u2580\x1b[38;2;132;119;111m\x1b[48;2;97;74;63m\u2580\x1b[38;2;79;69;71m\x1b[48;2;123;108;95m\u2580\x1b[38;2;60;58;69m\x1b[48;2;165;158;149m\u2580\x1b[38;2;72;83;100m\x1b[48;2;200;186;168m\u2580\x1b[38;2;122;128;135m\x1b[48;2;210;192;171m\u2580\x1b[38;2;140;140;147m\x1b[48;2;127;135;152m\u2580\x1b[38;2;126;134;150m\x1b[48;2;75;94;125m\u2580\x1b[38;2;115;124;144m\x1b[48;2;60;57;65m\u2580\x1b[38;2;87;82;86m\x1b[48;2;101;81;73m\u2580\x1b[38;2;98;82;74m\x1b[48;2;120;98;91m\u2580\x1b[38;2;102;82;74m\x1b[48;2;132;115;116m\u2580\x1b[38;2;117;95;89m\x1b[48;2;127;111;112m\u2580\x1b[38;2;120;99;93m\x1b[48;2;127;103;95m\u2580\x1b[38;2;113;93;89m\x1b[48;2;144;117;107m\u2580\x1b[38;2;125;100;91m\x1b[48;2;128;104;95m\u2580\x1b[38;2;123;98;90m\x1b[48;2;115;94;88m\u2580\x1b[38;2;107;93;95m\x1b[48;2;101;84;81m\u2580\x1b[38;2;94;84;87m\x1b[48;2;90;75;73m\u2580\x1b[38;2;81;67;66m\x1b[48;2;90;73;68m\u2580\x1b[38;2;113;83;80m\x1b[48;2;67;55;53m\u2580\x1b[38;2;80;57;56m\x1b[48;2;62;51;51m\u2580\x1b[38;2;63;50;51m\x1b[48;2;62;51;50m\u2580\x1b[38;2;64;52;52m\x1b[48;2;63;52;52m\u2580\x1b[38;2;64;51;53m\x1b[48;2;65;52;51m\u2580\x1b[38;2;59;50;54m\x1b[48;2;65;62;68m\u2580\x1b[38;2;92;74;70m\x1b[48;2;74;68;72m\u2580\x1b[38;2;114;89;80m\x1b[48;2;102;81;74m\u2580\x1b[38;2;131;101;89m\x1b[48;2;123;98;87m\u2580\x1b[38;2;142;106;92m\x1b[48;2;149;116;100m\u2580\x1b[38;2;174;135;115m\x1b[48;2;156;114;96m\u2580\x1b[38;2;219;205;189m\x1b[48;2;212;181;159m\u2580\x1b[49m\x1b[38;2;226;225;213m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;121;129;135m\u2584\x1b[38;2;72;86;105m\x1b[48;2;89;81;80m\u2580\x1b[38;2;96;91;91m\x1b[48;2;170;152;134m\u2580\x1b[38;2;97;95;98m\x1b[48;2;167;159;149m\u2580\x1b[38;2;93;106;124m\x1b[48;2;71;75;81m\u2580\x1b[38;2;75;86;101m\x1b[48;2;88;85;82m\u2580\x1b[38;2;83;79;76m\x1b[48;2;120;114;107m\u2580\x1b[38;2;112;102;94m\x1b[48;2;179;166;146m\u2580\x1b[38;2;156;144;129m\x1b[48;2;206;188;158m\u2580\x1b[38;2;165;156;139m\x1b[48;2;210;185;150m\u2580\x1b[38;2;196;191;173m\x1b[48;2;155;147;134m\u2580\x1b[38;2;183;174;164m\x1b[48;2;91;100;112m\u2580\x1b[38;2;140;127;121m\x1b[48;2;60;82;115m\u2580\x1b[38;2;87;104;126m\x1b[48;2;57;86;124m\u2580\x1b[38;2;63;91;128m\x1b[48;2;64;82;113m\u2580\x1b[38;2;57;64;80m\x1b[48;2;85;74;75m\u2580\x1b[38;2;106;86;79m\x1b[48;2;147;119;109m\u2580\x1b[38;2;143;116;106m\x1b[48;2;151;121;112m\u2580\x1b[38;2;139;115;109m\x1b[48;2;145;117;110m\u2580\x1b[38;2;131;114;118m\x1b[48;2;128;102;97m\u2580\x1b[38;2;128;106;102m\x1b[48;2;131;105;97m\u2580\x1b[38;2;136;110;100m\x1b[48;2;118;95;89m\u2580\x1b[38;2;127;102;95m\x1b[48;2;108;87;83m\u2580\x1b[38;2;116;95;89m\x1b[48;2;98;80;76m\u2580\x1b[38;2;106;86;81m\x1b[48;2;90;73;71m\u2580\x1b[38;2;93;77;72m\x1b[48;2;81;67;66m\u2580\x1b[38;2;84;69;66m\x1b[48;2;70;58;57m\u2580\x1b[38;2;76;61;60m\x1b[48;2;61;49;50m\u2580\x1b[38;2;70;56;55m\x1b[48;2;51;43;45m\u2580\x1b[38;2;60;50;50m\x1b[48;2;31;29;35m\u2580\x1b[38;2;43;39;43m\x1b[48;2;31;27;32m\u2580\x1b[38;2;28;26;32m\x1b[48;2;61;49;49m\u2580\x1b[38;2;30;27;30m\x1b[48;2;82;65;64m\u2580\x1b[38;2;45;41;46m\x1b[48;2;73;59;58m\u2580\x1b[38;2;61;54;58m\x1b[48;2;49;41;42m\u2580\x1b[38;2;91;73;70m\x1b[48;2;73;60;61m\u2580\x1b[38;2;110;89;81m\x1b[48;2;100;79;76m\u2580\x1b[38;2;133;108;96m\x1b[48;2;119;94;87m\u2580\x1b[38;2;157;121;106m\x1b[48;2;144;115;103m\u2580\x1b[38;2;160;122;106m\x1b[48;2;159;123;108m\u2580\x1b[38;2;222;199;181m\x1b[48;2;155;122;107m\u2580\x1b[38;2;214;216;205m\x1b[48;2;219;202;184m\u2580\x1b[49m\x1b[38;2;200;204;194m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;89;116;141m\u2584\x1b[38;2;101;103;107m\x1b[48;2;76;91;107m\u2580\x1b[38;2;153;135;123m\x1b[48;2;92;96;104m\u2580\x1b[38;2;136;126;121m\x1b[48;2;32;56;90m\u2580\x1b[38;2;35;55;82m\x1b[48;2;55;74;101m\u2580\x1b[38;2;106;115;116m\x1b[48;2;110;118;123m\u2580\x1b[38;2;133;140;135m\x1b[48;2;152;146;134m\u2580\x1b[38;2;190;166;138m\x1b[48;2;205;178;140m\u2580\x1b[38;2;215;186;152m\x1b[48;2;141;139;131m\u2580\x1b[38;2;196;176;150m\x1b[48;2;92;108;122m\u2580\x1b[38;2;131;124;118m\x1b[48;2;53;77;106m\u2580\x1b[38;2;74;87;103m\x1b[48;2;110;115;117m\u2580\x1b[38;2;66;88;116m\x1b[48;2;126;129;130m\u2580\x1b[38;2;58;85;120m\x1b[48;2;89;116;144m\u2580\x1b[38;2;63;90;124m\x1b[48;2;61;87;120m\u2580\x1b[38;2;58;64;79m\x1b[48;2;66;56;59m\u2580\x1b[38;2;122;96;88m\x1b[48;2;140;110;101m\u2580\x1b[38;2;151;121;113m\x1b[48;2;133;105;98m\u2580\x1b[38;2;142;113;104m\x1b[48;2;122;98;91m\u2580\x1b[38;2;130;104;97m\x1b[48;2;110;88;85m\u2580\x1b[38;2;121;96;91m\x1b[48;2;101;82;80m\u2580\x1b[38;2;107;86;83m\x1b[48;2;94;77;75m\u2580\x1b[38;2;97;80;77m\x1b[48;2;85;71;69m\u2580\x1b[38;2;92;75;72m\x1b[48;2;78;65;64m\u2580\x1b[38;2;85;70;68m\x1b[48;2;69;57;56m\u2580\x1b[38;2;77;63;61m\x1b[48;2;59;49;49m\u2580\x1b[38;2;65;53;53m\x1b[48;2;50;43;46m\u2580\x1b[38;2;56;47;48m\x1b[48;2;35;31;39m\u2580\x1b[38;2;42;37;41m\x1b[48;2;17;18;25m\u2580\x1b[38;2;22;20;25m\x1b[48;2;49;38;41m\u2580\x1b[38;2;52;40;42m\x1b[48;2;109;83;80m\u2580\x1b[38;2;119;89;84m\x1b[48;2;128;97;91m\u2580\x1b[38;2;151;115;108m\x1b[48;2;139;106;99m\u2580\x1b[38;2;156;117;109m\x1b[48;2;155;118;109m\u2580\x1b[38;2;183;155;147m\x1b[48;2;173;137;131m\u2580\x1b[38;2;168;150;146m\x1b[48;2;196;168;164m\u2580\x1b[38;2;66;54;57m\x1b[48;2;125;102;100m\u2580\x1b[38;2;79;65;66m\x1b[48;2;59;48;52m\u2580\x1b[38;2;106;84;79m\x1b[48;2;90;74;73m\u2580\x1b[38;2;129;103;94m\x1b[48;2;113;90;84m\u2580\x1b[38;2;159;127;113m\x1b[48;2;135;110;98m\u2580\x1b[38;2;162;129;112m\x1b[48;2;171;139;122m\u2580\x1b[38;2;156;127;110m\x1b[48;2;158;125;109m\u2580\x1b[38;2;216;203;187m\x1b[48;2;164;136;120m\u2580\x1b[38;2;187;199;190m\x1b[48;2;206;197;183m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;64;95;129m\x1b[48;2;69;90;110m\u2580\x1b[38;2;53;74;101m\x1b[48;2;56;66;80m\u2580\x1b[38;2;33;53;83m\x1b[48;2;101;111;123m\u2580\x1b[38;2;43;69;107m\x1b[48;2;68;85;106m\u2580\x1b[38;2;48;71;103m\x1b[48;2;56;80;105m\u2580\x1b[38;2;86;96;109m\x1b[48;2;55;82;115m\u2580\x1b[38;2;71;83;97m\x1b[48;2;62;85;111m\u2580\x1b[38;2;65;84;103m\x1b[48;2;97;106;111m\u2580\x1b[38;2;60;81;100m\x1b[48;2;120;122;116m\u2580\x1b[38;2;71;96;119m\x1b[48;2;85;104;122m\u2580\x1b[38;2;83;104;126m\x1b[48;2;76;99;125m\u2580\x1b[38;2;137;137;131m\x1b[48;2;112;123;132m\u2580\x1b[38;2;135;140;143m\x1b[48;2;91;107;128m\u2580\x1b[38;2;87;116;149m\x1b[48;2;54;78;114m\u2580\x1b[38;2;42;57;81m\x1b[48;2;33;39;53m\u2580\x1b[38;2;82;61;58m\x1b[48;2;90;71;66m\u2580\x1b[38;2;129;103;97m\x1b[48;2;109;88;83m\u2580\x1b[38;2;113;90;86m\x1b[48;2;96;78;76m\u2580\x1b[38;2;103;83;80m\x1b[48;2;89;74;72m\u2580\x1b[38;2;95;77;75m\x1b[48;2;82;69;68m\u2580\x1b[38;2;90;74;74m\x1b[48;2;73;62;62m\u2580\x1b[38;2;80;68;67m\x1b[48;2;63;54;55m\u2580\x1b[38;2;69;58;58m\x1b[48;2;56;48;50m\u2580\x1b[38;2;60;51;53m\x1b[48;2;49;44;49m\u2580\x1b[38;2;52;45;47m\x1b[48;2;44;42;52m\u2580\x1b[38;2;45;41;47m\x1b[48;2;27;29;40m\u2580\x1b[38;2;29;29;38m\x1b[48;2;14;16;25m\u2580\x1b[38;2;16;17;25m\x1b[48;2;37;33;39m\u2580\x1b[38;2;40;34;38m\x1b[48;2;58;49;53m\u2580\x1b[38;2;80;64;66m\x1b[48;2;73;60;61m\u2580\x1b[38;2;97;76;75m\x1b[48;2;81;65;66m\u2580\x1b[38;2;105;82;78m\x1b[48;2;90;71;70m\u2580\x1b[38;2;117;92;85m\x1b[48;2;102;80;78m\u2580\x1b[38;2;133;102;95m\x1b[48;2;102;79;76m\u2580\x1b[38;2;154;116;109m\x1b[48;2;120;88;85m\u2580\x1b[38;2;153;117;113m\x1b[48;2;136;102;98m\u2580\x1b[38;2;143;111;106m\x1b[48;2;132;99;95m\u2580\x1b[38;2;62;50;53m\x1b[48;2;79;62;63m\u2580\x1b[38;2;56;50;54m\x1b[48;2;29;30;37m\u2580\x1b[38;2;96;81;79m\x1b[48;2;57;55;60m\u2580\x1b[38;2;117;95;87m\x1b[48;2;97;80;78m\u2580\x1b[38;2;140;114;101m\x1b[48;2;116;95;88m\u2580\x1b[38;2;169;139;123m\x1b[48;2;140;115;103m\u2580\x1b[38;2;145;115;100m\x1b[48;2;161;132;117m\u2580\x1b[38;2;172;145;131m\x1b[48;2;132;105;93m\u2580\x1b[38;2;193;187;179m\x1b[48;2;174;152;139m\u2580\x1b[49m\x1b[38;2;184;186;181m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;119;135;135m\u2584\x1b[38;2;44;53;63m\x1b[48;2;64;71;75m\u2580\x1b[38;2;66;77;90m\x1b[48;2;68;82;100m\u2580\x1b[38;2;76;89;103m\x1b[48;2;57;78;99m\u2580\x1b[38;2;38;64;95m\x1b[48;2;76;95;114m\u2580\x1b[38;2;56;85;120m\x1b[48;2;57;83;115m\u2580\x1b[38;2;71;99;129m\x1b[48;2;71;97;125m\u2580\x1b[38;2;110;117;119m\x1b[48;2;95;103;107m\u2580\x1b[38;2;112;114;113m\x1b[48;2;105;108;107m\u2580\x1b[38;2;124;125;118m\x1b[48;2;117;118;117m\u2580\x1b[38;2;107;121;131m\x1b[48;2;95;111;127m\u2580\x1b[38;2;64;90;124m\x1b[48;2;54;81;120m\u2580\x1b[38;2;61;84;114m\x1b[48;2;52;80;116m\u2580\x1b[38;2;71;94;126m\x1b[48;2;51;76;113m\u2580\x1b[38;2;46;68;101m\x1b[48;2;29;47;74m\u2580\x1b[38;2;30;31;40m\x1b[48;2;32;31;38m\u2580\x1b[38;2;88;70;68m\x1b[48;2;81;65;64m\u2580\x1b[38;2;91;74;73m\x1b[48;2;80;67;66m\u2580\x1b[38;2;83;69;68m\x1b[48;2;69;59;59m\u2580\x1b[38;2;75;64;64m\x1b[48;2;59;52;55m\u2580\x1b[38;2;66;57;57m\x1b[48;2;57;50;55m\u2580\x1b[38;2;60;52;54m\x1b[48;2;56;50;58m\u2580\x1b[38;2;56;49;54m\x1b[48;2;49;47;58m\u2580\x1b[38;2;49;45;54m\x1b[48;2;44;44;58m\u2580\x1b[38;2;44;44;54m\x1b[48;2;27;32;44m\u2580\x1b[38;2;27;30;41m\x1b[48;2;14;19;29m\u2580\x1b[38;2;13;16;27m\x1b[48;2;28;28;39m\u2580\x1b[38;2;33;31;38m\x1b[48;2;44;42;48m\u2580\x1b[38;2;50;45;49m\x1b[48;2;48;45;50m\u2580\x1b[38;2;54;47;52m\x1b[48;2;51;46;51m\u2580\x1b[38;2;61;53;56m\x1b[48;2;53;47;52m\u2580\x1b[38;2;66;56;59m\x1b[48;2;54;48;54m\u2580\x1b[38;2;73;60;62m\x1b[48;2;59;51;55m\u2580\x1b[38;2;90;71;72m\x1b[48;2;70;59;61m\u2580\x1b[38;2;103;81;79m\x1b[48;2;86;71;70m\u2580\x1b[38;2;101;77;77m\x1b[48;2;102;82;81m\u2580\x1b[38;2;109;82;81m\x1b[48;2;103;80;79m\u2580\x1b[38;2;120;90;87m\x1b[48;2;106;80;78m\u2580\x1b[38;2;90;70;70m\x1b[48;2;92;70;72m\u2580\x1b[38;2;31;31;36m\x1b[48;2;43;38;43m\u2580\x1b[38;2;43;41;47m\x1b[48;2;30;30;36m\u2580\x1b[38;2;77;66;67m\x1b[48;2;62;57;63m\u2580\x1b[38;2;99;82;79m\x1b[48;2;85;74;74m\u2580\x1b[38;2;116;96;88m\x1b[48;2;99;83;79m\u2580\x1b[38;2;142;116;105m\x1b[48;2;116;96;89m\u2580\x1b[38;2;151;125;113m\x1b[48;2;139;114;104m\u2580\x1b[38;2;127;102;91m\x1b[48;2;136;112;101m\u2580\x1b[38;2;165;150;140m\x1b[48;2;123;100;91m\u2580\x1b[38;2;169;183;183m\x1b[48;2;162;152;147m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;147;165;172m\x1b[48;2;92;115;145m\u2580\x1b[38;2;48;58;69m\x1b[48;2;14;32;55m\u2580\x1b[38;2;73;88;106m\x1b[48;2;77;90;102m\u2580\x1b[38;2;87;95;102m\x1b[48;2;83;92;101m\u2580\x1b[38;2;129;126;115m\x1b[48;2;99;107;111m\u2580\x1b[38;2;68;94;118m\x1b[48;2;59;82;112m\u2580\x1b[38;2;67;94;120m\x1b[48;2;46;76;111m\u2580\x1b[38;2;100;105;103m\x1b[48;2;71;88;106m\u2580\x1b[38;2;113;111;103m\x1b[48;2;101;109;115m\u2580\x1b[38;2;134;124;111m\x1b[48;2;86;94;101m\u2580\x1b[38;2;103;115;129m\x1b[48;2;78;97;118m\u2580\x1b[38;2;56;84;122m\x1b[48;2;67;93;123m\u2580\x1b[38;2;46;72;107m\x1b[48;2;45;69;105m\u2580\x1b[38;2;47;71;106m\x1b[48;2;43;68;102m\u2580\x1b[38;2;22;38;62m\x1b[48;2;21;38;62m\u2580\x1b[38;2;36;35;44m\x1b[48;2;34;37;48m\u2580\x1b[38;2;65;54;55m\x1b[48;2;46;40;47m\u2580\x1b[38;2;62;53;56m\x1b[48;2;49;46;53m\u2580\x1b[38;2;54;48;52m\x1b[48;2;52;50;59m\u2580\x1b[38;2;54;50;57m\x1b[48;2;51;50;64m\u2580\x1b[38;2;53;50;60m\x1b[48;2;48;49;67m\u2580\x1b[38;2;49;48;62m\x1b[48;2;42;48;65m\u2580\x1b[38;2;45;47;63m\x1b[48;2;26;33;47m\u2580\x1b[38;2;27;33;46m\x1b[48;2;15;22;33m\u2580\x1b[38;2;14;20;31m\x1b[48;2;26;30;40m\u2580\x1b[38;2;27;30;41m\x1b[48;2;38;40;51m\u2580\x1b[38;2;38;38;48m\x1b[48;2;41;41;52m\u2580\x1b[38;2;45;43;49m\x1b[48;2;43;42;52m\u2580\x1b[38;2;47;43;50m\x1b[48;2;42;42;52m\u2580\x1b[38;2;49;46;52m\x1b[48;2;43;44;54m\u2580\x1b[38;2;49;47;53m\x1b[48;2;39;43;53m\u2580\x1b[38;2;48;47;54m\x1b[48;2;33;38;51m\u2580\x1b[38;2;45;45;53m\x1b[48;2;26;34;50m\u2580\x1b[38;2;55;50;56m\x1b[48;2;40;43;56m\u2580\x1b[38;2;68;60;62m\x1b[48;2;60;55;58m\u2580\x1b[38;2;87;71;71m\x1b[48;2;77;66;66m\u2580\x1b[38;2;104;82;80m\x1b[48;2;95;79;76m\u2580\x1b[38;2;112;87;85m\x1b[48;2;110;89;85m\u2580\x1b[38;2;101;78;77m\x1b[48;2;121;97;92m\u2580\x1b[38;2;65;54;59m\x1b[48;2;96;78;77m\u2580\x1b[38;2;29;28;34m\x1b[48;2;43;39;45m\u2580\x1b[38;2;55;55;63m\x1b[48;2;30;30;38m\u2580\x1b[38;2;68;67;74m\x1b[48;2;47;46;55m\u2580\x1b[38;2;80;69;69m\x1b[48;2;55;52;56m\u2580\x1b[38;2;96;80;77m\x1b[48;2;83;72;72m\u2580\x1b[38;2;112;94;87m\x1b[48;2;93;79;77m\u2580\x1b[38;2;132;109;100m\x1b[48;2;109;91;86m\u2580\x1b[38;2;121;100;92m\x1b[48;2;126;105;97m\u2580\x1b[38;2;124;104;97m\x1b[48;2;107;89;82m\u2580\x1b[38;2;159;155;153m\x1b[48;2;123;107;102m\u2580\x1b[49m\x1b[38;2;148;154;153m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;39;74;104m\x1b[48;2;37;73;101m\u2580\x1b[38;2;17;45;72m\x1b[48;2;36;71;97m\u2580\x1b[38;2;62;76;84m\x1b[48;2;24;49;71m\u2580\x1b[38;2;104;121;131m\x1b[48;2;42;63;85m\u2580\x1b[38;2;71;92;112m\x1b[48;2;54;75;101m\u2580\x1b[38;2;47;71;104m\x1b[48;2;36;58;90m\u2580\x1b[38;2;30;55;90m\x1b[48;2;26;49;81m\u2580\x1b[38;2;37;63;99m\x1b[48;2;34;56;89m\u2580\x1b[38;2;45;72;106m\x1b[48;2;32;56;91m\u2580\x1b[38;2;40;66;99m\x1b[48;2;33;56;90m\u2580\x1b[38;2;40;67;100m\x1b[48;2;34;57;89m\u2580\x1b[38;2;43;68;97m\x1b[48;2;25;48;80m\u2580\x1b[38;2;33;55;85m\x1b[48;2;36;56;82m\u2580\x1b[38;2;36;55;82m\x1b[48;2;30;44;61m\u2580\x1b[38;2;23;41;66m\x1b[48;2;20;38;64m\u2580\x1b[38;2;28;35;51m\x1b[48;2;23;35;53m\u2580\x1b[38;2;42;43;56m\x1b[48;2;37;45;64m\u2580\x1b[38;2;47;49;62m\x1b[48;2;41;50;72m\u2580\x1b[38;2;47;48;65m\x1b[48;2;40;49;72m\u2580\x1b[38;2;45;49;71m\x1b[48;2;30;40;61m\u2580\x1b[38;2;38;45;67m\x1b[48;2;20;30;44m\u2580\x1b[38;2;23;33;48m\x1b[48;2;19;30;42m\u2580\x1b[38;2;18;26;38m\x1b[48;2;25;34;48m\u2580\x1b[38;2;24;30;43m\x1b[48;2;31;38;53m\u2580\x1b[38;2;35;39;52m\x1b[48;2;36;42;57m\u2580\x1b[38;2;39;42;54m\x1b[48;2;38;45;61m\u2580\x1b[38;2;40;42;55m\x1b[48;2;39;48;65m\u2580\x1b[38;2;40;43;55m\x1b[48;2;38;48;67m\u2580\x1b[38;2;38;44;56m\x1b[48;2;38;52;75m\u2580\x1b[38;2;34;42;57m\x1b[48;2;51;71;96m\u2580\x1b[38;2;35;48;69m\x1b[48;2;76;97;118m\u2580\x1b[38;2;54;71;91m\x1b[48;2;83;113;134m\u2580\x1b[49m\x1b[38;2;99;108;118m\u2580\x1b[38;2;64;72;85m\x1b[48;2;110;122;132m\u2580\x1b[38;2;49;49;57m\x1b[48;2;51;56;68m\u2580\x1b[38;2;72;62;64m\x1b[48;2;67;60;62m\u2580\x1b[38;2;90;76;74m\x1b[48;2;92;78;78m\u2580\x1b[38;2;100;84;80m\x1b[48;2;99;84;82m\u2580\x1b[38;2;125;102;95m\x1b[48;2;114;94;87m\u2580\x1b[38;2;123;101;95m\x1b[48;2;133;111;101m\u2580\x1b[38;2;69;59;62m\x1b[48;2;94;77;76m\u2580\x1b[38;2;35;37;42m\x1b[48;2;70;69;71m\u2580\x1b[38;2;39;40;47m\x1b[48;2;110;120;125m\u2580\x1b[38;2;47;46;53m\x1b[48;2;51;56;68m\u2580\x1b[38;2;54;52;59m\x1b[48;2;37;40;50m\u2580\x1b[38;2;67;61;66m\x1b[48;2;45;43;51m\u2580\x1b[38;2;89;76;74m\x1b[48;2;69;61;64m\u2580\x1b[38;2;103;88;83m\x1b[48;2;82;71;72m\u2580\x1b[38;2;115;97;91m\x1b[48;2;98;84;82m\u2580\x1b[38;2;97;79;75m\x1b[48;2;104;89;86m\u2580\x1b[38;2;123;113;109m\x1b[48;2;92;78;77m\u2580\x1b[38;2;141;157;157m\x1b[48;2;117;112;107m\u2580\x1b[49m\x1b[38;2;144;167;167m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;33;73;95m\u2580\x1b[38;2;34;73;96m\u2580\x1b[38;2;24;55;78m\u2580\x1b[38;2;36;62;91m\x1b[48;2;29;65;97m\u2580\x1b[38;2;27;47;79m\x1b[48;2;25;55;84m\u2580\x1b[38;2;24;44;76m\x1b[48;2;26;54;83m\u2580\x1b[38;2;32;53;84m\x1b[48;2;26;55;85m\u2580\x1b[38;2;25;47;77m\x1b[48;2;31;61;90m\u2580\x1b[38;2;24;44;74m\x1b[48;2;26;54;82m\u2580\x1b[38;2;24;43;74m\x1b[48;2;29;54;80m\u2580\x1b[38;2;26;51;81m\x1b[48;2;39;61;81m\u2580\x1b[38;2;41;59;80m\x1b[48;2;28;45;64m\u2580\x1b[38;2;17;32;51m\x1b[48;2;18;41;66m\u2580\x1b[38;2;25;46;72m\x1b[48;2;31;57;87m\u2580\x1b[38;2;17;32;52m\x1b[48;2;21;40;61m\u2580\x1b[38;2;28;42;65m\x1b[48;2;15;31;46m\u2580\x1b[38;2;31;44;67m\x1b[48;2;14;29;44m\u2580\x1b[38;2;22;34;52m\x1b[48;2;14;28;43m\u2580\x1b[38;2;14;25;39m\x1b[48;2;18;31;48m\u2580\x1b[38;2;17;28;40m\x1b[48;2;19;32;50m\u2580\x1b[38;2;22;33;49m\x1b[48;2;19;34;54m\u2580\x1b[38;2;27;38;56m\x1b[48;2;25;40;62m\u2580\x1b[38;2;35;45;66m\x1b[48;2;31;48;73m\u2580\x1b[38;2;37;48;69m\x1b[48;2;35;55;81m\u2580\x1b[38;2;39;52;75m\x1b[48;2;36;58;85m\u2580\x1b[38;2;41;58;83m\x1b[48;2;39;65;93m\u2580\x1b[38;2;45;68;99m\x1b[48;2;48;77;106m\u2580\x1b[38;2;53;81;113m\x1b[48;2;56;96;127m\u2580\x1b[49m\x1b[38;2;92;114;133m\u2580\x1b[0m \x1b[38;2;60;70;85m\x1b[48;2;72;89;106m\u2580\x1b[38;2;62;59;63m\x1b[48;2;61;62;71m\u2580\x1b[38;2;91;78;77m\x1b[48;2;82;72;71m\u2580\x1b[38;2;102;86;85m\x1b[48;2;102;87;86m\u2580\x1b[38;2;105;90;85m\x1b[48;2;104;89;86m\u2580\x1b[38;2;124;103;95m\x1b[48;2;112;95;89m\u2580\x1b[38;2;121;101;95m\x1b[48;2;127;106;99m\u2580\x1b[38;2;78;68;67m\x1b[48;2;97;81;77m\u2580\x1b[38;2;125;130;129m\x1b[48;2;88;86;86m\u2580\x1b[49m\x1b[38;2;122;141;151m\u2580\x1b[38;2;58;69;83m\x1b[48;2;122;155;165m\u2580\x1b[38;2;43;48;59m\x1b[48;2;79;96;110m\u2580\x1b[38;2;50;53;60m\x1b[48;2;62;73;87m\u2580\x1b[38;2;62;59;65m\x1b[48;2;53;59;69m\u2580\x1b[38;2;78;69;71m\x1b[48;2;57;57;63m\u2580\x1b[38;2;93;80;79m\x1b[48;2;73;65;69m\u2580\x1b[38;2;95;82;82m\x1b[48;2;88;76;76m\u2580\x1b[38;2;93;80;78m\x1b[48;2;89;78;78m\u2580\x1b[38;2;114;114;113m\x1b[48;2;91;78;77m\u2580\x1b[38;2;155;186;192m\x1b[48;2;116;119;119m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;29;52;79m\u2580\x1b[38;2;24;44;63m\u2580\x1b[38;2;14;29;45m\u2580\x1b[38;2;15;32;47m\u2580\x1b[38;2;14;31;48m\u2580\x1b[38;2;14;31;50m\u2580\x1b[38;2;21;35;56m\u2580\x1b[38;2;18;35;56m\u2580\x1b[38;2;16;31;52m\u2580\x1b[38;2;18;33;56m\u2580\x1b[38;2;22;41;64m\u2580\x1b[38;2;24;48;72m\u2580\x1b[0m \x1b[38;2;82;104;120m\x1b[48;2;122;158;173m\u2580\x1b[38;2;61;67;82m\x1b[48;2;66;83;100m\u2580\x1b[38;2;71;63;66m\x1b[48;2;64;61;69m\u2580\x1b[38;2;96;83;82m\x1b[48;2;86;75;76m\u2580\x1b[38;2;104;89;87m\x1b[48;2;101;85;86m\u2580\x1b[38;2;107;92;88m\x1b[48;2;103;88;86m\u2580\x1b[38;2;121;100;94m\x1b[48;2;110;92;87m\u2580\x1b[38;2;107;90;84m\x1b[48;2;118;98;93m\u2580\x1b[38;2;93;83;82m\x1b[48;2;93;78;75m\u2580\x1b[38;2;143;150;150m\x1b[48;2;135;130;128m\u2580\x1b[0m \x1b[38;2;97;117;129m\u2580\x1b[38;2;59;70;86m\x1b[48;2;116;134;143m\u2580\x1b[38;2;43;48;62m\x1b[48;2;67;79;95m\u2580\x1b[38;2;50;50;60m\x1b[48;2;45;54;70m\u2580\x1b[38;2;72;65;71m\x1b[48;2;36;41;52m\u2580\x1b[38;2;88;76;76m\x1b[48;2;64;60;66m\u2580\x1b[38;2;87;74;74m\x1b[48;2;84;73;75m\u2580\x1b[38;2;92;81;80m\x1b[48;2;82;71;71m\u2580\x1b[38;2;123;128;128m\x1b[48;2;97;85;84m\u2580\x1b[49m\x1b[38;2;147;150;147m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;83;107;125m\x1b[48;2;124;154;171m\u2580\x1b[38;2;64;70;85m\x1b[48;2;70;85;104m\u2580\x1b[38;2;73;64;67m\x1b[48;2;60;57;66m\u2580\x1b[38;2;90;78;78m\x1b[48;2;77;69;72m\u2580\x1b[38;2;101;86;85m\x1b[48;2;92;81;81m\u2580\x1b[38;2;103;87;85m\x1b[48;2;98;84;82m\u2580\x1b[38;2;117;98;94m\x1b[48;2;109;92;88m\u2580\x1b[38;2;98;82;78m\x1b[48;2;108;92;87m\u2580\x1b[38;2;118;108;105m\x1b[48;2;102;88;86m\u2580\x1b[38;2;195;206;202m\x1b[48;2;153;155;153m\u2580\x1b[0m \x1b[38;2;82;100;113m\u2580\x1b[38;2;39;52;68m\x1b[48;2;86;107;120m\u2580\x1b[38;2;39;45;56m\x1b[48;2;57;71;87m\u2580\x1b[38;2;64;61;67m\x1b[48;2;45;50;62m\u2580\x1b[38;2;80;71;73m\x1b[48;2;59;58;65m\u2580\x1b[38;2;81;70;71m\x1b[48;2;73;69;72m\u2580\x1b[38;2;108;96;93m\x1b[48;2;78;68;70m\u2580\x1b[38;2;157;156;151m\x1b[48;2;109;94;90m\u2580\x1b[38;2;170;198;198m\x1b[48;2;180;177;169m\u2580\x1b[49m\x1b[38;2;204;214;207m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;88;115;129m\u2580\x1b[38;2;60;71;90m\x1b[48;2;80;102;121m\u2580\x1b[38;2;60;57;63m\x1b[48;2;60;68;84m\u2580\x1b[38;2;80;72;75m\x1b[48;2;62;59;63m\u2580\x1b[38;2;93;81;80m\x1b[48;2;83;74;76m\u2580\x1b[38;2;99;86;84m\x1b[48;2;95;80;80m\u2580\x1b[38;2;109;94;91m\x1b[48;2;103;89;88m\u2580\x1b[38;2;94;77;76m\x1b[48;2;94;79;79m\u2580\x1b[38;2;132;125;123m\x1b[48;2;116;104;101m\u2580\x1b[49m\x1b[38;2;173;178;178m\u2584\x1b[0m \x1b[38;2;105;126;137m\u2580\x1b[38;2;51;64;79m\x1b[48;2;98;119;132m\u2580\x1b[38;2;31;39;53m\x1b[48;2;42;53;70m\u2580\x1b[38;2;42;45;55m\x1b[48;2;31;38;52m\u2580\x1b[38;2;68;62;65m\x1b[48;2;90;91;97m\u2580\x1b[38;2;103;96;95m\x1b[48;2;99;96;99m\u2580\x1b[38;2;135;121;114m\x1b[48;2;89;80;80m\u2580\x1b[38;2;178;165;153m\x1b[48;2;115;98;92m\u2580\x1b[38;2;196;201;192m\x1b[48;2;179;159;145m\u2580\x1b[49m\x1b[38;2;210;207;198m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;76;95;116m\x1b[48;2;119;150;166m\u2580\x1b[38;2;52;56;71m\x1b[48;2;64;81;105m\u2580\x1b[38;2;67;60;65m\x1b[48;2;51;52;64m\u2580\x1b[38;2;85;73;76m\x1b[48;2;70;64;69m\u2580\x1b[38;2;94;80;81m\x1b[48;2;85;73;76m\u2580\x1b[38;2;100;86;85m\x1b[48;2;98;84;84m\u2580\x1b[38;2;97;83;82m\x1b[48;2;90;75;75m\u2580\x1b[38;2;146;140;140m\x1b[48;2;117;110;109m\u2580\x1b[49m\x1b[38;2;190;211;216m\u2584\x1b[0m \x1b[38;2;60;73;87m\x1b[48;2;67;83;96m\u2580\x1b[38;2;58;65;78m\x1b[48;2;37;46;60m\u2580\x1b[38;2;101;102;109m\x1b[48;2;22;28;40m\u2580\x1b[38;2;70;70;76m\x1b[48;2;47;54;64m\u2580\x1b[38;2;83;77;80m\x1b[48;2;76;76;84m\u2580\x1b[38;2;89;76;75m\x1b[48;2;103;97;100m\u2580\x1b[38;2;125;108;104m\x1b[48;2;103;92;92m\u2580\x1b[38;2;167;147;137m\x1b[48;2;98;79;75m\u2580\x1b[38;2;199;187;172m\x1b[48;2;140;115;104m\u2580\x1b[38;2;197;212;204m\x1b[48;2;185;168;153m\u2580\x1b[49m\x1b[38;2;208;210;196m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;113;138;157m\u2580\x1b[38;2;64;77;99m\x1b[48;2;105;129;145m\u2580\x1b[38;2;54;54;63m\x1b[48;2;60;72;89m\u2580\x1b[38;2;75;68;70m\x1b[48;2;58;55;60m\u2580\x1b[38;2;87;75;76m\x1b[48;2;78;67;71m\u2580\x1b[38;2;94;79;79m\x1b[48;2;90;78;78m\u2580\x1b[38;2;99;87;87m\x1b[48;2;90;76;76m\u2580\x1b[38;2;136;146;148m\x1b[48;2;113;110;113m\u2580\x1b[0m \x1b[38;2;41;60;78m\x1b[48;2;67;87;107m\u2580\x1b[38;2;19;33;51m\x1b[48;2;21;37;56m\u2580\x1b[38;2;18;28;42m\x1b[48;2;22;34;50m\u2580\x1b[38;2;24;33;48m\x1b[48;2;28;39;55m\u2580\x1b[38;2;30;38;53m\x1b[48;2;29;39;52m\u2580\x1b[38;2;46;48;56m\x1b[48;2;43;48;59m\u2580\x1b[38;2;75;68;70m\x1b[48;2;49;53;63m\u2580\x1b[38;2;95;82;80m\x1b[48;2;72;69;71m\u2580\x1b[38;2;96;79;75m\x1b[48;2;94;81;78m\u2580\x1b[38;2;117;92;83m\x1b[48;2;103;84;80m\u2580\x1b[38;2;170;148;133m\x1b[48;2;110;84;76m\u2580\x1b[38;2;196;190;177m\x1b[48;2;170;140;123m\u2580\x1b[49m\x1b[38;2;179;162;149m\u2584\x1b[38;2;136;136;136m\u2584\x1b[38;2;142;143;145m\u2584\x1b[38;2;111;114;123m\u2584\x1b[38;2;47;55;69m\u2584\x1b[38;2;73;86;94m\u2584\x1b[0m",
" \x1b[38;2;86;109;127m\u2580\x1b[38;2;54;60;76m\x1b[48;2;72;88;108m\u2580\x1b[38;2;65;60;64m\x1b[48;2;56;57;69m\u2580\x1b[38;2;84;73;73m\x1b[48;2;72;65;66m\u2580\x1b[38;2;87;73;74m\x1b[48;2;87;74;75m\u2580\x1b[38;2;101;91;93m\x1b[48;2;89;76;77m\u2580\x1b[38;2;154;167;167m\x1b[48;2;128;128;126m\u2580\x1b[0m \x1b[38;2;114;137;153m\u2580\x1b[38;2;36;54;73m\x1b[48;2;76;102;121m\u2580\x1b[38;2;13;25;41m\x1b[48;2;35;57;77m\u2580\x1b[38;2;20;31;45m\x1b[48;2;15;28;42m\u2580\x1b[38;2;16;28;41m\x1b[48;2;22;33;45m\u2580\x1b[38;2;20;32;45m\x1b[48;2;35;47;60m\u2580\x1b[38;2;22;34;47m\x1b[48;2;27;41;55m\u2580\x1b[38;2;41;48;57m\x1b[48;2;19;34;50m\u2580\x1b[38;2;68;66;71m\x1b[48;2;21;31;45m\u2580\x1b[38;2;80;71;73m\x1b[48;2;37;44;54m\u2580\x1b[38;2;101;84;80m\x1b[48;2;45;48;57m\u2580\x1b[38;2;114;92;87m\x1b[48;2;38;45;55m\u2580\x1b[38;2;88;81;84m\x1b[48;2;40;49;60m\u2580\x1b[38;2;79;82;91m\x1b[48;2;34;45;58m\u2580\x1b[38;2;83;87;94m\x1b[48;2;17;30;44m\u2580\x1b[38;2;33;43;57m\x1b[48;2;51;67;79m\u2580\x1b[38;2;39;55;66m\x1b[48;2;139;162;168m\u2580\x1b[49m\x1b[38;2;114;138;145m\u2580\x1b[0m",
" \x1b[38;2;129;162;176m\u2580\x1b[38;2;59;73;91m\x1b[48;2;88;110;129m\u2580\x1b[38;2;58;55;62m\x1b[48;2;55;60;76m\u2580\x1b[38;2;81;72;72m\x1b[48;2;69;62;67m\u2580\x1b[38;2;84;71;72m\x1b[48;2;89;77;77m\u2580\x1b[38;2;111;101;101m\x1b[48;2;98;83;82m\u2580\x1b[38;2;188;195;193m\x1b[48;2;154;150;146m\u2580\x1b[0m \x1b[38;2;111;146;166m\u2580\x1b[38;2;37;59;80m\x1b[48;2;109;137;156m\u2580\x1b[38;2;58;71;84m\x1b[48;2;56;71;89m\u2580\x1b[38;2;181;195;195m\x1b[48;2;133;145;145m\u2580\x1b[49m\x1b[38;2;88;102;109m\u2580\x1b[38;2;61;79;94m\u2580\x1b[38;2;35;52;71m\x1b[48;2;104;121;137m\u2580\x1b[38;2;17;30;44m\x1b[48;2;47;65;82m\u2580\x1b[38;2;17;28;42m\x1b[48;2;30;44;58m\u2580\x1b[38;2;18;30;43m\x1b[48;2;29;43;54m\u2580\x1b[38;2;16;28;42m\x1b[48;2;51;65;78m\u2580\x1b[38;2;25;40;53m\x1b[48;2;108;129;139m\u2580\x1b[49m\x1b[38;2;73;92;102m\u2580\x1b[38;2;167;195;206m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;64;76;94m\x1b[48;2;100;118;134m\u2580\x1b[38;2;56;53;62m\x1b[48;2;63;68;82m\u2580\x1b[38;2;81;70;70m\x1b[48;2;77;71;75m\u2580\x1b[38;2;93;78;78m\x1b[48;2;97;87;87m\u2580\x1b[38;2;135;122;119m\x1b[48;2;127;114;112m\u2580\x1b[38;2;197;201;197m\x1b[48;2;164;156;152m\u2580\x1b[0m \x1b[38;2;66;87;105m\u2580\x1b[38;2;84;97;108m\x1b[48;2;78;95;108m\u2580\x1b[49m\x1b[38;2;105;120;128m\u2584\x1b[0m \x1b[38;2;145;170;182m\u2580\x1b[38;2;80;104;114m\u2580\x1b[38;2;93;113;122m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;109;129;143m\x1b[48;2;49;69;89m\u2580\x1b[38;2;102;111;120m\x1b[48;2;59;66;77m\u2580\x1b[38;2;74;75;81m\x1b[48;2;58;60;68m\u2580\x1b[38;2;85;82;85m\x1b[48;2;63;62;66m\u2580\x1b[38;2;92;83;83m\x1b[48;2;84;78;79m\u2580\x1b[38;2;147;134;129m\x1b[48;2;104;90;87m\u2580\x1b[38;2;195;196;189m\x1b[48;2;166;158;151m\u2580\x1b[49m\x1b[38;2;232;241;236m\u2584\x1b[0m \x1b[38;2;83;107;122m\u2580\x1b[38;2;86;108;120m\u2580\x1b[0m \x1b[0m",
" \x1b[38;2;101;136;158m\u2584\x1b[38;2;35;53;71m\x1b[48;2;34;51;68m\u2580\x1b[38;2;21;31;44m\x1b[48;2;17;27;40m\u2580\x1b[38;2;64;68;76m\x1b[48;2;27;34;45m\u2580\x1b[38;2;80;80;84m\x1b[48;2;67;67;74m\u2580\x1b[38;2;82;76;79m\x1b[48;2;86;83;88m\u2580\x1b[38;2;102;91;90m\x1b[48;2;98;91;91m\u2580\x1b[38;2;148;134;129m\x1b[48;2;95;80;76m\u2580\x1b[38;2;186;182;176m\x1b[48;2;150;135;128m\u2580\x1b[49m\x1b[38;2;188;195;192m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;43;65;85m\x1b[48;2;85;127;154m\u2580\x1b[38;2;20;32;47m\x1b[48;2;31;49;67m\u2580\x1b[38;2;17;25;37m\x1b[48;2;21;29;44m\u2580\x1b[38;2;32;38;47m\x1b[48;2;16;26;40m\u2580\x1b[38;2;55;54;59m\x1b[48;2;38;44;52m\u2580\x1b[38;2;71;63;66m\x1b[48;2;63;61;66m\u2580\x1b[38;2;89;77;77m\x1b[48;2;80;71;74m\u2580\x1b[38;2;100;83;79m\x1b[48;2;90;76;75m\u2580\x1b[38;2;140;140;138m\x1b[48;2;103;93;93m\u2580\x1b[49m\x1b[38;2;158;170;170m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;33;54;76m\x1b[48;2;38;61;82m\u2580\x1b[38;2;42;61;79m\x1b[48;2;51;76;94m\u2580\x1b[49m\x1b[38;2;49;68;81m\u2580\x1b[38;2;16;28;41m\x1b[48;2;45;65;76m\u2580\x1b[38;2;40;45;52m\x1b[48;2;21;33;44m\u2580\x1b[38;2;71;67;70m\x1b[48;2;50;51;58m\u2580\x1b[38;2;89;79;78m\x1b[48;2;84;76;76m\u2580\x1b[38;2;87;72;70m\x1b[48;2;92;79;78m\u2580\x1b[38;2;106;103;103m\x1b[48;2;89;75;73m\u2580\x1b[38;2;158;190;190m\x1b[48;2;117;115;116m\u2580\x1b[49m\x1b[38;2;168;184;190m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;48;74;91m\x1b[48;2;40;64;81m\u2580\x1b[38;2;51;77;91m\x1b[48;2;46;70;86m\u2580\x1b[0m \x1b[38;2;34;53;70m\x1b[48;2;60;89;111m\u2580\x1b[38;2;22;32;44m\x1b[48;2;25;42;59m\u2580\x1b[38;2;44;47;55m\x1b[48;2;14;24;35m\u2580\x1b[38;2;60;60;67m\x1b[48;2;19;29;40m\u2580\x1b[38;2;69;72;80m\x1b[48;2;39;49;61m\u2580\x1b[38;2;80;82;90m\x1b[48;2;49;59;73m\u2580\x1b[38;2;113;115;119m\x1b[48;2;57;62;72m\u2580\x1b[38;2;149;153;155m\x1b[48;2;108;107;112m\u2580\x1b[49m\x1b[38;2;94;98;104m\u2584\x1b[38;2;80;96;105m\u2584\x1b[0m \x1b[0m",
" \x1b[38;2;36;61;87m\x1b[48;2;34;63;88m\u2580\x1b[38;2;39;68;91m\x1b[48;2;32;61;88m\u2580\x1b[0m \x1b[38;2;36;57;77m\u2580\x1b[38;2;27;41;55m\x1b[48;2;29;49;67m\u2580\x1b[38;2;21;30;39m\x1b[48;2;25;42;59m\u2580\x1b[38;2;18;26;36m\x1b[48;2;27;41;58m\u2580\x1b[38;2;18;27;37m\x1b[48;2;26;41;58m\u2580\x1b[38;2;19;29;40m\x1b[48;2;26;41;60m\u2580\x1b[38;2;19;30;40m\x1b[48;2;29;49;68m\u2580\x1b[38;2;31;42;55m\x1b[48;2;40;65;84m\u2580\x1b[38;2;57;79;93m\x1b[48;2;94;133;151m\u2580\x1b[0m \x1b[0m",
};
private const int SarahDisplayWidth = 74;
private static readonly string[] LogoLines = new[]
{
@"████████╗███████╗███╗ ██╗███████╗ ██████╗ ██████╗ ███████╗██╗ ██╗ █████╗ ██████╗ ██████╗ ",
@"╚══██╔══╝██╔════╝████╗ ██║██╔════╝██╔═══██╗██╔══██╗██╔════╝██║ ██║██╔══██╗██╔══██╗██╔══██╗",
@" ██║ █████╗ ██╔██╗ ██║███████╗██║ ██║██████╔╝███████╗███████║███████║██████╔╝██████╔╝",
@" ██║ ██╔══╝ ██║╚██╗██║╚════██║██║ ██║██╔══██╗╚════██║██╔══██║██╔══██║██╔══██╗██╔═══╝ ",
@" ██║ ███████╗██║ ╚████║███████║╚██████╔╝██║ ██║███████║██║ ██║██║ ██║██║ ██║██║ ",
@" ╚═╝ ╚══════╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝",
};
private const string Tagline = "Open-Source Deep Learning / AI C# Library";
private const string Url = "https://github.com/zhongkaifu/TensorSharp";
private static readonly (int R, int G, int B)[] Gradient =
{
(59, 130, 246),
(6, 182, 212),
(20, 184, 166),
(245, 158, 11),
(217, 70, 239),
(99, 102, 241),
};
private static readonly (string Symbol, int R, int G, int B)[] Cubes =
{
("\u25C6", 59, 130, 246),
("\u25C7", 6, 182, 212),
("\u25C8", 245, 158, 11),
("\u25C7", 217, 70, 239),
("\u25C6", 99, 102, 241),
("\u25C8", 20, 184, 166),
("\u25C7", 245, 158, 11),
("\u25C6", 217, 70, 239),
("\u25C7", 59, 130, 246),
};
public static void Print(bool showSarah = false)
{
bool color = !Console.IsOutputRedirected
&& Environment.GetEnvironmentVariable("NO_COLOR") == null;
int logoWidth = 0;
foreach (var line in LogoLines)
if (line.Length > logoWidth) logoWidth = line.Length;
var sb = new StringBuilder(65536);
sb.AppendLine();
if (color)
BuildColor(sb, logoWidth, showSarah);
else
BuildPlain(sb, logoWidth);
sb.AppendLine();
Console.Write(sb.ToString());
}
private static void BuildColor(StringBuilder sb, int logoWidth, bool showSarah)
{
const string Reset = "\x1b[0m";
if (showSarah)
{
int sarahPad = Math.Max(0, (logoWidth - SarahDisplayWidth) / 2);
string sarahIndent = sarahPad > 0 ? new string(' ', sarahPad) : "";
foreach (var line in Sarah)
{
sb.Append(sarahIndent);
sb.AppendLine(line);
}
sb.AppendLine();
}
// Cube decoration
int cubeSpacing = logoWidth / (Cubes.Length + 1);
sb.Append(" ");
int cursor = 0;
for (int i = 0; i < Cubes.Length; i++)
{
int target = cubeSpacing * (i + 1);
if (target > cursor) { sb.Append(new string(' ', target - cursor)); cursor = target; }
var c = Cubes[i];
sb.Append($"\x1b[38;2;{c.R};{c.G};{c.B}m{c.Symbol}{Reset}");
cursor++;
}
sb.AppendLine();
// Logo text with gradient
for (int row = 0; row < LogoLines.Length; row++)
{
string line = LogoLines[row];
float brightness = 1.0f - row * 0.04f;
sb.Append(" ");
for (int col = 0; col < line.Length; col++)
{
char ch = line[col];
if (ch == ' ') { sb.Append(' '); continue; }
float t = (float)col / Math.Max(1, line.Length - 1);
var (r, g, b) = Lerp(t);
r = Clamp((int)(r * brightness));
g = Clamp((int)(g * brightness));
b = Clamp((int)(b * brightness));
sb.Append($"\x1b[38;2;{r};{g};{b}m{ch}");
}
sb.Append(Reset);
sb.AppendLine();
}
sb.AppendLine();
CenterColored(sb, Tagline, logoWidth, 6, 182, 212);
CenterColored(sb, Url, logoWidth, 100, 116, 139);
}
private static void BuildPlain(StringBuilder sb, int logoWidth)
{
foreach (var line in LogoLines)
{
sb.Append(" ");
sb.AppendLine(line);
}
sb.AppendLine();
CenterPlain(sb, Tagline, logoWidth);
CenterPlain(sb, Url, logoWidth);
}
private static void CenterColored(StringBuilder sb, string text, int width,
int r, int g, int b)
{
int pad = Math.Max(0, (width - text.Length) / 2 + 2);
sb.Append(new string(' ', pad));
sb.Append($"\x1b[38;2;{r};{g};{b}m{text}\x1b[0m");
sb.AppendLine();
}
private static void CenterPlain(StringBuilder sb, string text, int width)
{
int pad = Math.Max(0, (width - text.Length) / 2 + 2);
sb.Append(new string(' ', pad));
sb.AppendLine(text);
}
private static (int R, int G, int B) Lerp(float t)
{
t = Math.Max(0f, Math.Min(1f, t));
float seg = t * (Gradient.Length - 1);
int i = Math.Min((int)seg, Gradient.Length - 2);
float frac = seg - i;
var a = Gradient[i];
var b = Gradient[i + 1];
return (
(int)(a.R + (b.R - a.R) * frac),
(int)(a.G + (b.G - a.G) * frac),
(int)(a.B + (b.B - a.B) * frac));
}
private static int Clamp(int v) => v < 0 ? 0 : v > 255 ? 255 : v;
}
}