Import údajov
library(readr)
# Načítanie CSV súboru
Vysledky <- read_csv("student_exam_scores.csv")
tabuľka
library(knitr)
# Základná tabuľka
kable(Vysledky)
student_id |
hours_studied |
sleep_hours |
attendance_percent |
previous_scores |
exam_score |
S001 |
8.0 |
8.8 |
72.1 |
45 |
30.2 |
S002 |
1.3 |
8.6 |
60.7 |
55 |
25.0 |
S003 |
4.0 |
8.2 |
73.7 |
86 |
35.8 |
S004 |
3.5 |
4.8 |
95.1 |
66 |
34.0 |
S005 |
9.1 |
6.4 |
89.8 |
71 |
40.3 |
S006 |
8.4 |
5.1 |
58.5 |
75 |
35.7 |
S007 |
10.8 |
6.0 |
54.2 |
88 |
37.9 |
S008 |
2.0 |
4.3 |
75.8 |
55 |
18.3 |
S009 |
5.6 |
5.9 |
81.6 |
84 |
34.7 |
S010 |
1.3 |
8.9 |
66.8 |
70 |
24.7 |
S011 |
3.4 |
5.3 |
90.9 |
81 |
29.3 |
S012 |
6.6 |
7.9 |
87.6 |
85 |
35.1 |
S013 |
1.3 |
6.3 |
83.6 |
71 |
31.2 |
S014 |
3.2 |
6.1 |
61.2 |
68 |
30.2 |
S015 |
8.1 |
8.8 |
60.0 |
90 |
41.1 |
S016 |
7.0 |
9.0 |
51.2 |
41 |
34.1 |
S017 |
3.4 |
6.8 |
62.2 |
45 |
28.9 |
S018 |
7.5 |
7.6 |
73.8 |
58 |
36.3 |
S019 |
9.9 |
4.8 |
92.5 |
54 |
35.6 |
S020 |
1.1 |
5.5 |
53.6 |
65 |
17.1 |
S021 |
9.9 |
8.8 |
70.7 |
84 |
46.0 |
S022 |
8.7 |
6.9 |
81.5 |
55 |
36.1 |
S023 |
4.7 |
6.7 |
59.7 |
59 |
29.6 |
S024 |
2.7 |
7.7 |
84.8 |
82 |
35.9 |
S025 |
11.5 |
4.3 |
74.7 |
77 |
39.2 |
S026 |
4.7 |
6.9 |
62.2 |
63 |
30.0 |
S027 |
2.0 |
6.5 |
82.8 |
70 |
29.0 |
S028 |
2.1 |
8.3 |
50.3 |
75 |
26.5 |
S029 |
10.3 |
4.8 |
87.5 |
73 |
37.2 |
S030 |
7.6 |
8.8 |
88.5 |
62 |
36.2 |
S031 |
9.9 |
4.4 |
55.3 |
67 |
34.5 |
S032 |
9.0 |
4.9 |
71.3 |
87 |
41.6 |
S033 |
6.9 |
7.0 |
58.8 |
75 |
38.1 |
S034 |
11.7 |
7.4 |
97.9 |
61 |
42.7 |
S035 |
5.2 |
5.2 |
75.9 |
62 |
32.0 |
S036 |
7.1 |
4.6 |
52.5 |
84 |
32.0 |
S037 |
10.1 |
8.5 |
62.5 |
69 |
44.7 |
S038 |
7.8 |
5.2 |
92.4 |
57 |
38.3 |
S039 |
10.5 |
7.0 |
72.8 |
59 |
39.8 |
S040 |
7.4 |
7.1 |
90.1 |
56 |
35.0 |
S041 |
8.8 |
6.1 |
83.4 |
54 |
34.2 |
S042 |
1.5 |
6.9 |
99.4 |
47 |
23.1 |
S043 |
3.5 |
6.6 |
79.8 |
86 |
37.2 |
S044 |
4.2 |
8.7 |
97.5 |
52 |
30.3 |
S045 |
1.9 |
5.0 |
94.6 |
60 |
26.1 |
S046 |
3.6 |
7.6 |
80.6 |
47 |
31.8 |
S047 |
2.1 |
5.2 |
86.0 |
87 |
31.6 |
S048 |
4.1 |
6.0 |
75.2 |
74 |
31.1 |
S049 |
8.0 |
7.4 |
91.5 |
88 |
41.2 |
S050 |
5.0 |
5.5 |
77.4 |
84 |
30.6 |
S051 |
5.1 |
5.6 |
94.9 |
51 |
28.8 |
S052 |
3.3 |
7.8 |
87.2 |
52 |
30.7 |
S053 |
3.9 |
4.4 |
73.7 |
53 |
26.9 |
S054 |
11.3 |
6.3 |
63.0 |
87 |
46.4 |
S055 |
8.1 |
9.0 |
62.4 |
70 |
34.4 |
S056 |
7.7 |
9.0 |
81.9 |
57 |
37.0 |
S057 |
2.9 |
4.4 |
88.3 |
86 |
35.2 |
S058 |
9.0 |
5.1 |
76.1 |
77 |
38.2 |
S059 |
2.8 |
5.3 |
81.3 |
88 |
33.0 |
S060 |
5.2 |
8.7 |
63.7 |
73 |
29.2 |
S061 |
11.9 |
8.4 |
53.9 |
78 |
48.6 |
S062 |
8.0 |
8.4 |
64.3 |
58 |
36.1 |
S063 |
7.1 |
5.8 |
63.6 |
46 |
27.1 |
S064 |
8.5 |
4.8 |
66.0 |
93 |
36.1 |
S065 |
10.3 |
8.2 |
77.0 |
52 |
39.5 |
S066 |
9.5 |
7.5 |
56.9 |
58 |
36.7 |
S067 |
3.5 |
7.1 |
61.6 |
54 |
21.7 |
S068 |
1.4 |
8.9 |
84.7 |
63 |
32.2 |
S069 |
4.5 |
7.3 |
85.3 |
51 |
33.5 |
S070 |
3.9 |
4.0 |
53.2 |
59 |
23.9 |
S071 |
3.3 |
8.1 |
70.4 |
40 |
20.8 |
S072 |
11.4 |
5.5 |
77.1 |
85 |
47.9 |
S073 |
10.6 |
7.3 |
70.8 |
74 |
41.9 |
S074 |
4.5 |
8.7 |
60.3 |
48 |
29.5 |
S075 |
8.2 |
4.7 |
71.0 |
57 |
33.5 |
S076 |
5.4 |
4.6 |
95.2 |
42 |
26.3 |
S077 |
11.1 |
4.5 |
79.2 |
43 |
39.9 |
S078 |
6.0 |
6.8 |
84.8 |
75 |
40.3 |
S079 |
3.9 |
5.4 |
92.8 |
58 |
26.5 |
S080 |
3.7 |
7.0 |
88.3 |
84 |
34.2 |
S081 |
7.2 |
7.6 |
69.0 |
48 |
30.8 |
S082 |
3.9 |
5.0 |
50.3 |
80 |
32.4 |
S083 |
7.4 |
7.2 |
67.6 |
95 |
39.8 |
S084 |
10.9 |
5.3 |
87.7 |
88 |
48.9 |
S085 |
5.4 |
6.4 |
92.7 |
71 |
38.0 |
S086 |
3.4 |
8.5 |
97.7 |
46 |
26.5 |
S087 |
12.0 |
8.2 |
71.0 |
95 |
51.3 |
S088 |
6.6 |
4.5 |
87.4 |
40 |
28.6 |
S089 |
2.0 |
6.1 |
77.3 |
76 |
32.1 |
S090 |
1.5 |
5.4 |
80.2 |
58 |
23.9 |
S091 |
2.2 |
4.0 |
61.0 |
70 |
27.3 |
S092 |
7.9 |
7.9 |
61.0 |
70 |
34.0 |
S093 |
9.7 |
7.2 |
71.8 |
68 |
37.5 |
S094 |
5.6 |
5.3 |
51.5 |
61 |
29.1 |
S095 |
1.7 |
7.7 |
66.8 |
51 |
28.1 |
S096 |
5.2 |
6.8 |
84.0 |
43 |
28.7 |
S097 |
12.0 |
6.1 |
70.2 |
56 |
36.9 |
S098 |
6.8 |
4.0 |
58.3 |
95 |
36.0 |
S099 |
11.7 |
4.4 |
73.4 |
70 |
39.9 |
S100 |
10.5 |
8.4 |
56.4 |
47 |
37.1 |
S101 |
1.1 |
8.5 |
81.1 |
92 |
31.4 |
S102 |
8.9 |
6.7 |
51.3 |
44 |
31.3 |
S103 |
8.5 |
8.2 |
69.7 |
65 |
35.7 |
S104 |
6.9 |
6.9 |
78.2 |
71 |
32.6 |
S105 |
3.9 |
4.7 |
51.4 |
44 |
24.1 |
S106 |
8.1 |
4.6 |
82.1 |
76 |
38.2 |
S107 |
2.2 |
5.5 |
56.8 |
80 |
23.7 |
S108 |
5.8 |
8.5 |
73.1 |
83 |
39.2 |
S109 |
6.0 |
8.0 |
52.5 |
43 |
23.2 |
S110 |
11.5 |
8.3 |
69.0 |
49 |
42.2 |
S111 |
10.6 |
8.5 |
60.6 |
49 |
39.6 |
S112 |
3.9 |
5.1 |
66.3 |
91 |
34.8 |
S113 |
6.5 |
5.2 |
88.1 |
76 |
34.6 |
S114 |
3.0 |
4.5 |
69.0 |
59 |
26.4 |
S115 |
11.0 |
7.9 |
87.6 |
45 |
43.1 |
S116 |
10.6 |
8.4 |
91.6 |
55 |
46.4 |
S117 |
4.3 |
6.0 |
62.6 |
47 |
25.2 |
S118 |
8.0 |
7.1 |
54.1 |
75 |
31.3 |
S119 |
7.7 |
4.8 |
51.0 |
88 |
35.8 |
S120 |
2.7 |
8.6 |
77.0 |
66 |
29.8 |
S121 |
9.4 |
8.3 |
100.0 |
78 |
47.9 |
S122 |
6.9 |
8.9 |
67.5 |
78 |
40.9 |
S123 |
9.6 |
8.1 |
82.5 |
90 |
44.1 |
S124 |
6.8 |
8.4 |
89.1 |
79 |
39.3 |
S125 |
1.0 |
4.1 |
82.6 |
54 |
21.2 |
S126 |
4.6 |
7.7 |
87.7 |
89 |
38.6 |
S127 |
1.2 |
5.7 |
97.5 |
73 |
26.8 |
S128 |
11.2 |
8.7 |
60.0 |
64 |
42.7 |
S129 |
10.7 |
8.0 |
51.0 |
68 |
36.1 |
S130 |
10.1 |
8.3 |
57.6 |
68 |
39.2 |
S131 |
4.4 |
8.1 |
56.3 |
59 |
32.9 |
S132 |
1.6 |
5.3 |
83.5 |
95 |
28.8 |
S133 |
10.7 |
7.9 |
78.2 |
77 |
45.7 |
S134 |
11.4 |
4.5 |
60.9 |
67 |
40.8 |
S135 |
1.9 |
8.4 |
85.0 |
59 |
30.6 |
S136 |
6.3 |
8.3 |
88.3 |
76 |
41.1 |
S137 |
1.8 |
5.1 |
58.4 |
79 |
29.0 |
S138 |
9.4 |
8.1 |
80.4 |
43 |
35.1 |
S139 |
9.4 |
6.3 |
87.4 |
79 |
39.9 |
S140 |
2.4 |
5.5 |
55.7 |
87 |
29.9 |
S141 |
6.2 |
8.0 |
91.0 |
46 |
35.0 |
S142 |
7.0 |
5.1 |
98.2 |
88 |
43.3 |
S143 |
3.9 |
4.1 |
55.4 |
53 |
19.0 |
S144 |
10.6 |
5.0 |
51.3 |
80 |
35.1 |
S145 |
5.7 |
5.6 |
65.6 |
53 |
29.9 |
S146 |
3.3 |
8.3 |
83.9 |
56 |
33.0 |
S147 |
6.9 |
8.8 |
97.9 |
82 |
45.8 |
S148 |
9.0 |
5.4 |
69.8 |
45 |
35.5 |
S149 |
3.2 |
7.2 |
85.8 |
50 |
26.4 |
S150 |
4.4 |
6.0 |
53.8 |
55 |
21.9 |
S151 |
11.9 |
8.9 |
84.5 |
51 |
44.1 |
S152 |
8.1 |
6.7 |
81.4 |
75 |
42.3 |
S153 |
5.8 |
8.7 |
55.1 |
44 |
27.7 |
S154 |
6.7 |
4.6 |
88.6 |
50 |
33.4 |
S155 |
2.3 |
8.9 |
92.5 |
40 |
29.7 |
S156 |
3.5 |
4.9 |
80.0 |
66 |
23.6 |
S157 |
4.7 |
8.8 |
56.1 |
68 |
33.6 |
S158 |
7.5 |
5.3 |
99.2 |
84 |
37.9 |
S159 |
3.5 |
4.5 |
89.1 |
78 |
29.5 |
S160 |
3.4 |
6.2 |
67.4 |
70 |
24.7 |
S161 |
1.8 |
7.6 |
71.4 |
58 |
25.2 |
S162 |
7.9 |
5.6 |
68.5 |
42 |
31.4 |
S163 |
3.5 |
7.0 |
75.3 |
54 |
30.0 |
S164 |
11.0 |
6.6 |
67.1 |
58 |
35.8 |
S165 |
10.5 |
5.9 |
92.5 |
85 |
40.6 |
S166 |
1.8 |
6.9 |
91.1 |
58 |
30.1 |
S167 |
3.6 |
5.3 |
55.3 |
84 |
30.3 |
S168 |
8.4 |
7.5 |
98.0 |
95 |
42.0 |
S169 |
3.4 |
4.0 |
81.8 |
69 |
32.1 |
S170 |
2.5 |
8.6 |
91.4 |
44 |
22.8 |
S171 |
11.3 |
6.7 |
85.4 |
83 |
45.3 |
S172 |
7.3 |
7.6 |
71.8 |
54 |
31.0 |
S173 |
6.2 |
7.7 |
86.7 |
56 |
31.0 |
S174 |
9.6 |
7.4 |
98.3 |
90 |
40.9 |
S175 |
9.9 |
5.8 |
63.5 |
90 |
44.8 |
S176 |
3.1 |
4.3 |
90.4 |
80 |
34.4 |
S177 |
2.1 |
7.3 |
76.9 |
77 |
30.7 |
S178 |
5.7 |
5.7 |
74.2 |
82 |
31.0 |
S179 |
5.7 |
5.6 |
71.8 |
91 |
35.0 |
S180 |
6.1 |
8.2 |
86.6 |
52 |
31.4 |
S181 |
9.0 |
7.6 |
63.4 |
67 |
38.4 |
S182 |
8.4 |
5.5 |
92.6 |
47 |
36.1 |
S183 |
11.8 |
5.5 |
91.5 |
74 |
44.1 |
S184 |
2.1 |
6.0 |
54.3 |
54 |
19.4 |
S185 |
5.4 |
6.0 |
94.1 |
81 |
39.4 |
S186 |
4.7 |
5.5 |
62.2 |
49 |
22.9 |
S187 |
10.5 |
4.6 |
73.2 |
57 |
36.2 |
S188 |
3.7 |
6.1 |
80.5 |
92 |
33.4 |
S189 |
3.1 |
8.7 |
68.9 |
49 |
23.4 |
S190 |
5.9 |
7.4 |
51.4 |
44 |
28.0 |
S191 |
5.6 |
8.5 |
92.5 |
43 |
32.2 |
S192 |
4.1 |
7.1 |
59.1 |
50 |
30.7 |
S193 |
3.7 |
5.5 |
60.6 |
90 |
28.8 |
S194 |
11.2 |
6.7 |
89.9 |
59 |
46.7 |
S195 |
5.9 |
4.0 |
67.0 |
78 |
33.8 |
S196 |
10.5 |
5.4 |
94.0 |
87 |
42.7 |
S197 |
7.1 |
6.1 |
85.1 |
92 |
40.4 |
S198 |
1.6 |
6.9 |
63.8 |
76 |
28.2 |
S199 |
12.0 |
7.3 |
50.5 |
58 |
42.0 |
S200 |
10.2 |
6.3 |
97.4 |
68 |
37.8 |
tabuľka 2
library(knitr)
kable(Vysledky[1:10, ], # napr. len prvých 10 riadkov
caption = "Výsledky študentov z testov",
align = "c") # zarovnanie na stred
Výsledky študentov z testov
student_id |
hours_studied |
sleep_hours |
attendance_percent |
previous_scores |
exam_score |
S001 |
8.0 |
8.8 |
72.1 |
45 |
30.2 |
S002 |
1.3 |
8.6 |
60.7 |
55 |
25.0 |
S003 |
4.0 |
8.2 |
73.7 |
86 |
35.8 |
S004 |
3.5 |
4.8 |
95.1 |
66 |
34.0 |
S005 |
9.1 |
6.4 |
89.8 |
71 |
40.3 |
S006 |
8.4 |
5.1 |
58.5 |
75 |
35.7 |
S007 |
10.8 |
6.0 |
54.2 |
88 |
37.9 |
S008 |
2.0 |
4.3 |
75.8 |
55 |
18.3 |
S009 |
5.6 |
5.9 |
81.6 |
84 |
34.7 |
S010 |
1.3 |
8.9 |
66.8 |
70 |
24.7 |
farebná tabuľka
# Pekná ružová tabuľka
kable(udaje2[1:10, ], # napríklad len prvých 10 riadkov
caption = "💗 Výsledky študentov z testov") %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE,
position = "center"
) %>%
row_spec(0, bold = TRUE, color = "white", background = "#E75480") %>% # ružový header
row_spec(1:nrow(udaje2[1:10, ]), background = "#ffe6f2") %>% # svetloružové riadky
column_spec(1, bold = TRUE, color = "#E75480") # prvý stĺpec ružovo zvýraznený
💗 Výsledky študentov z testov
student_id |
hours_studied |
sleep_hours |
attendance_percent |
previous_scores |
exam_score |
hours_category |
hours_group |
S001 |
8.0 |
8.8 |
72.1 |
45 |
30.2 |
Medium |
High |
S002 |
1.3 |
8.6 |
60.7 |
55 |
25.0 |
Low |
Low |
S003 |
4.0 |
8.2 |
73.7 |
86 |
35.8 |
Low |
Low |
S004 |
3.5 |
4.8 |
95.1 |
66 |
34.0 |
Low |
Low |
S005 |
9.1 |
6.4 |
89.8 |
71 |
40.3 |
High |
High |
S006 |
8.4 |
5.1 |
58.5 |
75 |
35.7 |
High |
High |
S007 |
10.8 |
6.0 |
54.2 |
88 |
37.9 |
High |
High |
S008 |
2.0 |
4.3 |
75.8 |
55 |
18.3 |
Low |
Low |
S009 |
5.6 |
5.9 |
81.6 |
84 |
34.7 |
Medium |
Low |
S010 |
1.3 |
8.9 |
66.8 |
70 |
24.7 |
Low |
Low |
orámovanie
library(knitr)
library(kableExtra)
kable(udaje2[1:10, ],
caption = "💗 Výsledky študentov z testov") %>%
kable_styling(
full_width = FALSE,
position = "center",
bootstrap_options = c("condensed", "responsive"),
htmltable_class = "table table-bordered"
) %>%
row_spec(0, bold = TRUE, color = "white", background = "#E75480") %>% # ružový header
row_spec(1:nrow(udaje2[1:10, ]), background = "#fff0f6") # svetloružové riadky
💗 Výsledky študentov z testov
student_id |
hours_studied |
sleep_hours |
attendance_percent |
previous_scores |
exam_score |
hours_category |
hours_group |
S001 |
8.0 |
8.8 |
72.1 |
45 |
30.2 |
Medium |
High |
S002 |
1.3 |
8.6 |
60.7 |
55 |
25.0 |
Low |
Low |
S003 |
4.0 |
8.2 |
73.7 |
86 |
35.8 |
Low |
Low |
S004 |
3.5 |
4.8 |
95.1 |
66 |
34.0 |
Low |
Low |
S005 |
9.1 |
6.4 |
89.8 |
71 |
40.3 |
High |
High |
S006 |
8.4 |
5.1 |
58.5 |
75 |
35.7 |
High |
High |
S007 |
10.8 |
6.0 |
54.2 |
88 |
37.9 |
High |
High |
S008 |
2.0 |
4.3 |
75.8 |
55 |
18.3 |
Low |
Low |
S009 |
5.6 |
5.9 |
81.6 |
84 |
34.7 |
Medium |
Low |
S010 |
1.3 |
8.9 |
66.8 |
70 |
24.7 |
Low |
Low |
Tabuľka zobrazuje údaje o študentoch – počet hodín štúdia, spánku,
percento účasti, predchádzajúce skóre a výsledok skúšky. Použitá je
ružová farebná schéma s orámovaním pre lepšiu čitateľnosť.
stĺpcový graf
# Top 10 študentov podľa exam_score
Vysledky %>%
slice_max(order_by = exam_score, n = 10) %>%
ggplot(aes(x = reorder(student_id, exam_score), y = exam_score, fill = exam_score)) +
geom_col(color = "white", width = 0.7) + # biely obrys stĺpcov
coord_flip() + # horizontálny graf
scale_fill_gradient(low = "#f8c6c9", high = "#800020") + # burgundy škála
labs(
title = "💗 Výsledky študentov z testov",
x = "Študent",
y = "Skóre",
fill = "Skóre"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
axis.text.x = element_text(color = "#4d0012"),
axis.text.y = element_text(color = "#4d0012")
)

Graf zobrazuje skóre študentov v testoch. Každý stĺpec predstavuje
jedného študenta. Tmavšia burgundy farba označuje vyššie skóre,
svetlejšia nižšie. Graf umožňuje rýchlo identifikovať najúspešnejších
študentov.
HeatMap
library(ggplot2)
library(dplyr)
library(tidyr)
library(reshape2)
# Vyberieme len číselné stĺpce z datasetu
numeric_data <- Vysledky %>%
select(hours_studied, sleep_hours, attendance_percent, previous_scores, exam_score)
# Spočítame korelačnú maticu
cor_matrix <- cor(numeric_data, use = "complete.obs")
# Premeníme korelačnú maticu do tvaru vhodného pre ggplot
cor_data <- melt(cor_matrix)
# Vytvoríme heatmapu s burgundy škálou 💗
ggplot(cor_data, aes(x = Var1, y = Var2, fill = value)) +
geom_tile(color = "white", linewidth = 0.8) +
scale_fill_gradient2(
low = "#f8c6c9", mid = "white", high = "#800020",
midpoint = 0, limits = c(-1, 1)
) +
geom_text(aes(label = round(value, 2)), color = "#4d0012", size = 4) +
labs(
title = "💗 Korelačná heatmapa – výsledky študentov",
x = "",
y = "",
fill = "Korelácia"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, color = "#4d0012"),
axis.text.y = element_text(color = "#4d0012")
)

Heatmapa zobrazuje korelácie medzi číselnými premennými
datasetu.Tmavšia farba znamená silnejšiu pozitívnu
koreláciu,svetloružová slabšiu alebo negatívnu.Z grafu možno vidieť,že
počet hodín štúdia súvisí s vyšším skóre na skúške.
LS0tCnRpdGxlOiAiUHLDoWNhIHMgZGF0YWLDoXpvdSIKYXV0aG9yOiAiRGlhbmEgSHJ1xaFvdnNrw6EgIDxicj4KKHMgdnl1xb5pdMOtbSB2ZXJlam5lIGRvc3R1cG7DvWNoIGvDs2RvdikiCmRhdGU6ICJTZXB0ZW1iZXIgMjAyNSIKb3V0cHV0OiAKICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIHRoZW1lOiB1bml0ZWQKICAgIGhpZ2hsaWdodDogdGFuZ28KZWRpdG9yX29wdGlvbnM6IAogIG1hcmtkb3duOiAKICAgIHdyYXA6IDcyCi0tLQoKIyMgSW1wb3J0IMO6ZGFqb3YKCmBgYHtyfQpsaWJyYXJ5KHJlYWRyKQoKIyBOYcSNw610YW5pZSBDU1Ygc8O6Ym9ydSAKVnlzbGVka3kgPC0gcmVhZF9jc3YoInN0dWRlbnRfZXhhbV9zY29yZXMuY3N2IikKYGBgCgojIyB0YWJ1xL5rYQoKYGBge3J9CmxpYnJhcnkoa25pdHIpCgojIFrDoWtsYWRuw6EgdGFidcS+a2EKa2FibGUoVnlzbGVka3kpCmBgYAoKIyMgdGFidcS+a2EgcyBmb3JtYXRvdmFuaW0KCmBgYHtyfQpsaWJyYXJ5KGtuaXRyKQoKa2FibGUoVnlzbGVka3lbMToxMCwgXSwgICAgICAgICMgbmFwci4gbGVuIHBydsO9Y2ggMTAgcmlhZGtvdgogICAgICBjYXB0aW9uID0gIlbDvXNsZWRreSDFoXR1ZGVudG92IHogdGVzdG92IiwKICAgICAgYWxpZ24gPSAiYyIpICAgICAgICAgICAgIyB6YXJvdm5hbmllIG5hIHN0cmVkCmBgYAoKIyMgdGFidcS+a2EgMgoKYGBge3J9CmxpYnJhcnkoa25pdHIpCmthYmxlKFZ5c2xlZGt5LCBjYXB0aW9uID0gIlbDvXNsZWRreSDFoXR1ZGVudG92IHogdGVzdG92IikKYGBgCgojIyBmYXJlYm7DoSB0YWJ1xL5rYQoKYGBge3J9CiMgUGVrbsOhIHJ1xb5vdsOhIHRhYnXEvmthCmthYmxlKHVkYWplMlsxOjEwLCBdLCAgICAgICAgICAgICAgICAgICAgICAgIyBuYXByw61rbGFkIGxlbiBwcnbDvWNoIDEwIHJpYWRrb3YKICAgICAgY2FwdGlvbiA9ICLwn5KXIFbDvXNsZWRreSDFoXR1ZGVudG92IHogdGVzdG92IikgJT4lCiAga2FibGVfc3R5bGluZygKICAgIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLAogICAgZnVsbF93aWR0aCA9IEZBTFNFLAogICAgcG9zaXRpb24gPSAiY2VudGVyIgogICkgJT4lCiAgcm93X3NwZWMoMCwgYm9sZCA9IFRSVUUsIGNvbG9yID0gIndoaXRlIiwgYmFja2dyb3VuZCA9ICIjRTc1NDgwIikgJT4lICAgIyBydcW+b3bDvSBoZWFkZXIKICByb3dfc3BlYygxOm5yb3codWRhamUyWzE6MTAsIF0pLCBiYWNrZ3JvdW5kID0gIiNmZmU2ZjIiKSAlPiUgICAgICAgICAgICAjIHN2ZXRsb3J1xb5vdsOpIHJpYWRreQogIGNvbHVtbl9zcGVjKDEsIGJvbGQgPSBUUlVFLCBjb2xvciA9ICIjRTc1NDgwIikgICAgICAgICAgICAgICAgICAgICAgICAgICMgcHJ2w70gc3TEunBlYyBydcW+b3ZvIHp2w71yYXpuZW7DvQpgYGAKCiMjIG9yw6Ftb3ZhbmllCgpgYGB7cn0KbGlicmFyeShrbml0cikKbGlicmFyeShrYWJsZUV4dHJhKQoKa2FibGUodWRhamUyWzE6MTAsIF0sCiAgICAgIGNhcHRpb24gPSAi8J+SlyBWw71zbGVka3kgxaF0dWRlbnRvdiB6IHRlc3RvdiIpICU+JQogIGthYmxlX3N0eWxpbmcoCiAgICBmdWxsX3dpZHRoID0gRkFMU0UsCiAgICBwb3NpdGlvbiA9ICJjZW50ZXIiLAogICAgYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLAogICAgaHRtbHRhYmxlX2NsYXNzID0gInRhYmxlIHRhYmxlLWJvcmRlcmVkIgogICkgJT4lCiAgcm93X3NwZWMoMCwgYm9sZCA9IFRSVUUsIGNvbG9yID0gIndoaXRlIiwgYmFja2dyb3VuZCA9ICIjRTc1NDgwIikgJT4lICAjIHJ1xb5vdsO9IGhlYWRlcgogIHJvd19zcGVjKDE6bnJvdyh1ZGFqZTJbMToxMCwgXSksIGJhY2tncm91bmQgPSAiI2ZmZjBmNiIpICAgICAgICAgICAgICAgIyBzdmV0bG9ydcW+b3bDqSByaWFka3kKYGBgCgojIyMgVGFidcS+a2Egem9icmF6dWplIMO6ZGFqZSBvIMWhdHVkZW50b2NoIOKAkyBwb8SNZXQgaG9kw61uIMWhdMO6ZGlhLCBzcMOhbmt1LCBwZXJjZW50byDDusSNYXN0aSwgcHJlZGNow6FkemFqw7pjZSBza8OzcmUgYSB2w71zbGVkb2sgc2vDusWha3kuIFBvdcW+aXTDoSBqZSBydcW+b3bDoSBmYXJlYm7DoSBzY2jDqW1hIHMgb3LDoW1vdmFuw61tIHByZSBsZXDFoWl1IMSNaXRhdGXEvm5vc8WlLgoKIyMgc3TEunBjb3bDvSBncmFmCgpgYGB7cn0KIyBUb3AgMTAgxaF0dWRlbnRvdiBwb2TEvmEgZXhhbV9zY29yZQpWeXNsZWRreSAlPiUKICBzbGljZV9tYXgob3JkZXJfYnkgPSBleGFtX3Njb3JlLCBuID0gMTApICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIoc3R1ZGVudF9pZCwgZXhhbV9zY29yZSksIHkgPSBleGFtX3Njb3JlLCBmaWxsID0gZXhhbV9zY29yZSkpICsKICBnZW9tX2NvbChjb2xvciA9ICJ3aGl0ZSIsIHdpZHRoID0gMC43KSArICAgICAgICAgICAgICAgIyBiaWVseSBvYnJ5cyBzdMS6cGNvdgogIGNvb3JkX2ZsaXAoKSArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGhvcml6b250w6FsbnkgZ3JhZgogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gIiNmOGM2YzkiLCBoaWdoID0gIiM4MDAwMjAiKSArICMgYnVyZ3VuZHkgxaFrw6FsYQogIGxhYnMoCiAgICB0aXRsZSA9ICLwn5KXIFbDvXNsZWRreSDFoXR1ZGVudG92IHogdGVzdG92IiwKICAgIHggPSAixaB0dWRlbnQiLAogICAgeSA9ICJTa8OzcmUiLAogICAgZmlsbCA9ICJTa8OzcmUiCiAgKSArCiAgdGhlbWVfbWluaW1hbChiYXNlX3NpemUgPSAxNCkgKwogIHRoZW1lKAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLCBoanVzdCA9IDAuNSksCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICIjNGQwMDEyIiksCiAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICIjNGQwMDEyIikKICApCmBgYAoKIyMjIEdyYWYgem9icmF6dWplIHNrw7NyZSDFoXR1ZGVudG92IHYgdGVzdG9jaC4gS2HFvmTDvSBzdMS6cGVjIHByZWRzdGF2dWplIGplZG7DqWhvIMWhdHVkZW50YS4gVG1hdsWhaWEgYnVyZ3VuZHkgZmFyYmEgb3puYcSNdWplIHZ5xaHFoWllIHNrw7NyZSwgc3ZldGxlasWhaWEgbmnFvsWhaWUuIEdyYWYgdW1vxb7FiHVqZSByw71jaGxvIGlkZW50aWZpa292YcWlIG5hasO6c3BlxaFuZWrFocOtY2ggxaF0dWRlbnRvdi4KCiMjIEhlYXRNYXAKCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkodGlkeXIpCmxpYnJhcnkocmVzaGFwZTIpCgojIFZ5YmVyaWVtZSBsZW4gxI3DrXNlbG7DqSBzdMS6cGNlIHogZGF0YXNldHUKbnVtZXJpY19kYXRhIDwtIFZ5c2xlZGt5ICU+JQogIHNlbGVjdChob3Vyc19zdHVkaWVkLCBzbGVlcF9ob3VycywgYXR0ZW5kYW5jZV9wZXJjZW50LCBwcmV2aW91c19zY29yZXMsIGV4YW1fc2NvcmUpCgojIFNwb8SNw610YW1lIGtvcmVsYcSNbsO6IG1hdGljdQpjb3JfbWF0cml4IDwtIGNvcihudW1lcmljX2RhdGEsIHVzZSA9ICJjb21wbGV0ZS5vYnMiKQoKIyBQcmVtZW7DrW1lIGtvcmVsYcSNbsO6IG1hdGljdSBkbyB0dmFydSB2aG9kbsOpaG8gcHJlIGdncGxvdApjb3JfZGF0YSA8LSBtZWx0KGNvcl9tYXRyaXgpCgojIFZ5dHZvcsOtbWUgaGVhdG1hcHUgcyBidXJndW5keSDFoWvDoWxvdSDwn5KXCmdncGxvdChjb3JfZGF0YSwgYWVzKHggPSBWYXIxLCB5ID0gVmFyMiwgZmlsbCA9IHZhbHVlKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJ3aGl0ZSIsIGxpbmV3aWR0aCA9IDAuOCkgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQyKAogICAgbG93ID0gIiNmOGM2YzkiLCBtaWQgPSAid2hpdGUiLCBoaWdoID0gIiM4MDAwMjAiLAogICAgbWlkcG9pbnQgPSAwLCBsaW1pdHMgPSBjKC0xLCAxKQogICkgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSByb3VuZCh2YWx1ZSwgMikpLCBjb2xvciA9ICIjNGQwMDEyIiwgc2l6ZSA9IDQpICsKICBsYWJzKAogICAgdGl0bGUgPSAi8J+SlyBLb3JlbGHEjW7DoSBoZWF0bWFwYSDigJMgdsO9c2xlZGt5IMWhdHVkZW50b3YiLAogICAgeCA9ICIiLAogICAgeSA9ICIiLAogICAgZmlsbCA9ICJLb3JlbMOhY2lhIgogICkgKwogIHRoZW1lX21pbmltYWwoYmFzZV9zaXplID0gMTQpICsKICB0aGVtZSgKICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIiwgaGp1c3QgPSAwLjUpLAogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCBjb2xvciA9ICIjNGQwMDEyIiksCiAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICIjNGQwMDEyIikKICApCmBgYAoKIyMjIEhlYXRtYXBhIHpvYnJhenVqZSBrb3JlbMOhY2llIG1lZHppIMSNw61zZWxuw71taSBwcmVtZW5uw71taSBkYXRhc2V0dS5UbWF2xaFpYSBmYXJiYSB6bmFtZW7DoSBzaWxuZWrFoWl1IHBveml0w612bnUga29yZWzDoWNpdSxzdmV0bG9ydcW+b3bDoSBzbGFixaFpdSBhbGVibyBuZWdhdMOtdm51LlogZ3JhZnUgbW/Fvm5vIHZpZGllxaUsxb5lIHBvxI1ldCBob2TDrW4gxaF0w7pkaWEgc8O6dmlzw60gcyB2ecWhxaHDrW0gc2vDs3JlIG5hIHNrw7rFoWtlLgo=