Question #10 Body
Weight by status
- N size, % of respondents, mean, SD, median for all respondents and
across all menopausal stage.
- Please conduct an analysis of statistical significance between the
three groups (Pre; Peri; Post) for reported value of Body Weight.
- Between-Group Comparison: Is there a statistically significant
difference in the Body Weight value reported between women who are
premenopausal, perimenopausal, and postmenopausal?
The weight variable was skewed for all three groups (Shapiro-Wilk
p-values all less than .0001). As a result, a Kruskal-Wallis test was
used to find differences among the menopausal status groups for the
variable WTKG. A statistically significant difference was found among
the status groups, X2(df=2)=17.908, p=.00013. The Dunn test was used to
evaluate pairwise comparisons, and only perimenopause and postmenopause
were found to be statistically significant (adjusted p=.00007).
Descriptive statsitcs of WTKG
|
mean
|
sd
|
median
|
n
|
|
66.18129
|
10.88626
|
65
|
4148
|
Descriptive statsitcs of WTKG by status
|
status
|
mean
|
sd
|
median
|
n
|
|
pre-menopause
|
66.54032
|
12.39984
|
65
|
496
|
|
peri-menopause
|
66.85299
|
10.59572
|
65
|
1823
|
|
post-menopause
|
65.41443
|
10.68849
|
64
|
1829
|
Normality assessment by status
|
status
|
statistic
|
p_value
|
|
pre-menopause
|
0.8534337
|
0
|
|
peri-menopause
|
0.9432977
|
0
|
|
post-menopause
|
0.9336935
|
0
|

Kruskal-Wallis rank sum test
data: WTKG by status
Kruskal-Wallis chi-squared = 17.908, df = 2, p-value = 0.0001292
Comparison Z P.unadj P.adj
1 peri-menopause - post-menopause 4.229002 0.00002347304 0.00007041912
2 peri-menopause - pre-menopause 1.239827 0.21503921122 0.21503921122
3 post-menopause - pre-menopause -1.524382 0.12741336926 0.25482673851
Question #20 Are you
taking any prescription anti-depressant medications?
- Analysis of statistical significance between the three groups (Pre;
Peri; Post) for the answer ‘Yes’.
- Between-Group Comparison: Is there a statistically significant
difference in the number of ‘Yes’ responses between women who are
premenopausal, perimenopausal, and postmenopausal?
A Chi-square test of independence was conducted to assess the
relationship between antidepressant use and menopausal status. No
statistically significant association was found, X2(df=2)=1.328,
p=.5148. Cramer’s V was trivial at V=0.018, 95% CI(0.00,
0.049).
Yes No I don't know
462 3678 0
Prefer Not to Answer <NA>
7 1
status
dep pre-menopause peri-menopause post-menopause
Yes 48 209 205
No 448 1607 1623
status
dep pre-menopause peri-menopause post-menopause
Yes 0.09677419 0.11508811 0.11214442
No 0.90322581 0.88491189 0.88785558
Pearson's Chi-squared test
data: x
X-squared = 1.328, df = 2, p-value = 0.5148
status
dep pre-menopause peri-menopause post-menopause
Yes 55.35072 202.6551 203.9942
No 440.64928 1613.3449 1624.0058
1-sample proportions test with continuity correction
data: 48 out of 48 + 448, null probability 0.5
X-squared = 320.97, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.07288888 0.12709489
sample estimates:
p
0.09677419
1-sample proportions test with continuity correction
data: 209 out of 209 + 1607, null probability 0.5
X-squared = 1074.7, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.1009565 0.1308752
sample estimates:
p
0.1150881
1-sample proportions test with continuity correction
data: 205 out of 205 + 1623, null probability 0.5
X-squared = 1098.4, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.09822743 0.12771880
sample estimates:
p
0.1121444
Pairwise comparisons using Pairwise comparison of proportions
data: b$num out of b$den
1 2
2 0.85 -
3 0.85 0.85
P value adjustment method: holm
Two-sided 95% chi-squared confidence interval for the population
Cramer's V
Sample estimate: 0.01791018
Confidence interval:
2.5% 97.5%
0.00000000 0.04910733
Question #21 Are you
taking any prescription sleep medications?
- Analysis of statistical significance between the three groups (Pre;
Peri; Post) for the answer ‘Yes’.
- Between-Group Comparison: Is there a statistically significant
difference in the number of ‘Yes’ responses between women who are
premenopausal, perimenopausal, and postmenopausal?
A Chi-square test of independence was conducted to assess the
relationship between and menopausal status. A statistically significant
association was found, X2(df=2)=6.3055, p=.0427. Cramer’s V was trivial
at V=0.039, 95% CI(0.00, 0.071).
Yes No I don't know
192 3950 4
Prefer Not to Answer <NA>
0 2
status
sleep pre-menopause peri-menopause post-menopause
Yes 12 88 92
No 483 1733 1734
status
sleep pre-menopause peri-menopause post-menopause
Yes 0.02424242 0.04832510 0.05038335
No 0.97575758 0.95167490 0.94961665
Pearson's Chi-squared test
data: x
X-squared = 6.3055, df = 2, p-value = 0.04274
status
sleep pre-menopause peri-menopause post-menopause
Yes 22.94544 84.4114 84.64317
No 472.05456 1736.5886 1741.35683
1-sample proportions test with continuity correction
data: 12 out of 12 + 483, null probability 0.5
X-squared = 446.26, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.01318411 0.04315340
sample estimates:
p
0.02424242
1-sample proportions test with continuity correction
data: 88 out of 88 + 1733, null probability 0.5
X-squared = 1484.2, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.03914314 0.05946140
sample estimates:
p
0.0483251
1-sample proportions test with continuity correction
data: 92 out of 92 + 1734, null probability 0.5
X-squared = 1474.7, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.04101321 0.06169254
sample estimates:
p
0.05038335
Pairwise comparisons using Pairwise comparison of proportions
data: b$num out of b$den
1 2
2 0.054 -
3 0.053 0.833
P value adjustment method: holm
Two-sided 95% chi-squared confidence interval for the population
Cramer's V
Sample estimate: 0.03901698
Confidence interval:
2.5% 97.5%
0.00000000 0.07060679
Question #22 Are you
taking any prescription weight loss medications?
- Please conduct an analysis of statistical significance between the
three groups (Pre; Peri; Post) for the answer ‘Yes’.
- Between-Group Comparison: Is there a statistically significant
difference in the number of ‘Yes’ responses between women who are
premenopausal, perimenopausal, and postmenopausal?
A Chi-square test of independence was conducted to assess the
relationship between taking weight loss medication and menopausal
status. No statistically significant association was found,
X2(df=2)=0.316, p=.8539. Cramer’s V was trivial at V=0.01, 95% CI(0.00,
0.037).
Yes No I don't know
203 3940 1
Prefer Not to Answer <NA>
0 4
status
WLMED pre-menopause peri-menopause post-menopause
Yes 23 93 87
No 471 1727 1742
status
WLMED pre-menopause peri-menopause post-menopause
Yes 0.04655870 0.05109890 0.04756698
No 0.95344130 0.94890110 0.95243302
Pearson's Chi-squared test
data: x
X-squared = 0.31585, df = 2, p-value = 0.8539
status
WLMED pre-menopause peri-menopause post-menopause
Yes 24.20517 89.17692 89.61791
No 469.79483 1730.82308 1739.38209
1-sample proportions test with continuity correction
data: 23 out of 23 + 471, null probability 0.5
X-squared = 404.47, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.03040551 0.07008276
sample estimates:
p
0.0465587
1-sample proportions test with continuity correction
data: 93 out of 93 + 1727, null probability 0.5
X-squared = 1465.2, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.04164589 0.06249398
sample estimates:
p
0.0510989
1-sample proportions test with continuity correction
data: 87 out of 87 + 1742, null probability 0.5
X-squared = 1495.7, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.03847846 0.05860485
sample estimates:
p
0.04756698
Pairwise comparisons using Pairwise comparison of proportions
data: b$num out of b$den
1 2
2 1 -
3 1 1
P value adjustment method: holm
Two-sided 95% chi-squared confidence interval for the population
Cramer's V
Sample estimate: 0.008731422
Confidence interval:
2.5% 97.5%
0.00000000 0.03747234
Question #31 Body fat
percentage by status
- Analysis of statistical significance between the three groups (Pre;
Peri; Post) for self-reported value of Body Fat %.
-Between-Group Comparison: Is there a statistically significant
difference in the Body Fat % value reported between women who are
premenopausal, perimenopausal, and postmenopausal?
The body fat percentage variable was skewed for all three groups
(Shapiro-Wilk p-values all less than .0001). A Kruskal-Wallis test was
used to find differences among the menopausal status groups for the
variable WTKG. A statistically significant difference was found among
the status groups, X2(df=2)=18.167, p=.00011. The Dunn test was used to
evaluate pairwise comparisons; perimenopause and postmenopause were
found to be statistically significantly different (adjusted p=.0012), as
were premenopause and postmenopause (adjusted p=0014).
Normality assessment by status
|
status
|
statistic
|
p_value
|
|
pre-menopause
|
0.9857073
|
0.0087803
|
|
peri-menopause
|
0.9903387
|
0.0000022
|
|
post-menopause
|
0.9914790
|
0.0000124
|
Kruskal-Wallis rank sum test
data: BFPCT by status
Kruskal-Wallis chi-squared = 18.167, df = 2, p-value = 0.0001135
Comparison Z P.unadj P.adj
1 peri-menopause - post-menopause -3.550098 0.0003850884 0.001155265
2 peri-menopause - pre-menopause 1.110993 0.2665715714 0.266571571
3 post-menopause - pre-menopause 3.384328 0.0007135281 0.001427056
Question #32 Measure
frequencies of body composition measurement tools.
- Please provide N size and % of respondents for each body composition
measurement tool
- Total values should add up to 100%
DEXA Other High-quality BIA device
374 322 659
Skinfolds Home bathroom scale Ultrasound
106 862 4
BodPod <NA>
51 1770
DEXA Other High-quality BIA device
0.090 0.078 0.159
Skinfolds Home bathroom scale Ultrasound
0.026 0.208 0.001
BodPod <NA>
0.012 0.427
Question #33 Body
Composition Satisfaction
- Please provide N size, % of respondents who replied yes or no for
each menopause stage.
- Please conduct an analysis of statistical significance between the
three groups (Pre; Peri; Post) for Body Composition Satisfaction (‘No’
Responses)
- Between-Group Comparison: Is there a statistically significant
difference in the number of ‘No’ responses between women who are
premenopausal, perimenopausal, and postmenopausal?
A Chi-square test of independence was conducted to assess the
relationship between BC satisfaction and menopausal status. A
statistically significant association was found, X2(df=2)=40.8,
p=.000000001. Cramer’s V was small at V=0.1, 95% CI(0.07,
0.13).
Yes No <NA>
1158 2990 0
status
bcsatis pre-menopause peri-menopause post-menopause
Yes 192 521 445
No 304 1302 1384
status
bcsatis pre-menopause peri-menopause post-menopause
Yes 0.3870968 0.2857926 0.2433024
No 0.6129032 0.7142074 0.7566976
Pearson's Chi-squared test
data: x
X-squared = 40.8, df = 2, p-value = 0.000000001381
status
bcsatis pre-menopause peri-menopause post-menopause
Yes 138.4687 508.9282 510.6032
No 357.5313 1314.0718 1318.3968
1-sample proportions test with continuity correction
data: 304 out of 304 + 192, null probability 0.5
X-squared = 24.841, df = 1, p-value = 0.0000006227
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.5683052 0.6557252
sample estimates:
p
0.6129032
1-sample proportions test with continuity correction
data: 1302 out of 1302 + 521, null probability 0.5
X-squared = 333.74, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.692755 0.734747
sample estimates:
p
0.7142074
1-sample proportions test with continuity correction
data: 1384 out of 1384 + 445, null probability 0.5
X-squared = 481.05, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.7362285 0.7760759
sample estimates:
p
0.7566976
Pairwise comparisons using Pairwise comparison of proportions
data: b$num out of b$den
1 2
2 0.00003734913 -
3 0.00000000083 0.0041
P value adjustment method: holm
Two-sided 95% chi-squared confidence interval for the population
Cramer's V
Sample estimate: 0.09917743
Confidence interval:
2.5% 97.5%
0.07076358 0.13040325
Question #34 Perceived
Recent Body Fat Gain
- Please provide N size, % of respondents who replied Yes’ or ‘No’ or
“I do not know”
- Please conduct an analysis of statistical significance between the
three groups (Pre; Peri; Post) for recent body fat gain
- Between-Group Comparison: Is there a statistically significant
difference in the number of ‘Yes’ responses between women who are
premenopausal, perimenopausal, and postmenopausal?
A Chi-square test of independence was conducted to assess the
relationship between perceived weight gain and menopausal status. A
statistically significant association was found, X2(df=4)=60.9,
p=.00000000000006. Cramer’s V was small at V=0.12, 95% CI(0.09,
0.15).
Yes No
3012 1019
status
wtgain pre-menopause peri-menopause post-menopause
Yes 287 1353 1372
No 190 419 410
status
wtgain pre-menopause peri-menopause post-menopause
Yes 0.6016771 0.7635440 0.7699214
No 0.3983229 0.2364560 0.2300786
Pearson's Chi-squared test
data: x
X-squared = 60.855, df = 2, p-value = 0.00000000000006103
status
wtgain pre-menopause peri-menopause post-menopause
Yes 356.4188 1324.0546 1331.5267
No 120.5812 447.9454 450.4733
1-sample proportions test with continuity correction
data: 287 out of 287 + 19 + 190, null probability 0.5
X-squared = 11.954, df = 1, p-value = 0.0005454
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.5337186 0.6223029
sample estimates:
p
0.578629
1-sample proportions test with continuity correction
data: 1353 out of 1353 + 51 + 419, null probability 0.5
X-squared = 426.73, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.7213279 0.7620061
sample estimates:
p
0.7421832
1-sample proportions test with continuity correction
data: 1372 out of 1372 + 47 + 410, null probability 0.5
X-squared = 456.75, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.7295053 0.7697051
sample estimates:
p
0.7501367
Pairwise comparisons using Pairwise comparison of proportions
data: b$num out of b$den
1 2
2 0.00000000000380 -
3 0.00000000000031 0.61
P value adjustment method: holm
Two-sided 95% chi-squared confidence interval for the population
Cramer's V
Sample estimate: 0.1228686
Confidence interval:
2.5% 97.5%
0.09351581 0.15444816
Question #35a-g Factors
Contributing to Body Fat Gain
- For each cell in the table, please provide the n size and the % of
respondents
35a Increased calorie
Intake
Very responsible Somewhat responsible Not at all responsible
379 1473 1160
<NA>
1136
status
cal pre-menopause peri-menopause post-menopause
Very responsible 53 158 168
Somewhat responsible 177 649 647
Not at all responsible 57 546 557
status
cal pre-menopause peri-menopause post-menopause
Very responsible 0.185 0.117 0.122
Somewhat responsible 0.617 0.480 0.472
Not at all responsible 0.199 0.404 0.406
35b Changes in
Workout Routine
Very responsible Somewhat responsible Not at all responsible
245 988 1779
<NA>
1136
status
change pre-menopause peri-menopause post-menopause
Very responsible 35 88 122
Somewhat responsible 100 412 476
Not at all responsible 152 853 774
status
change pre-menopause peri-menopause post-menopause
Very responsible 0.122 0.065 0.089
Somewhat responsible 0.348 0.305 0.347
Not at all responsible 0.530 0.630 0.564
35c Sleep
Depravation
Somewhat responsible Very responsible Not at all responsible
1454 597 961
<NA>
1136
status
sleep pre-menopause peri-menopause post-menopause
Somewhat responsible 141 627 686
Very responsible 45 273 279
Not at all responsible 101 453 407
status
sleep pre-menopause peri-menopause post-menopause
Somewhat responsible 0.491 0.463 0.500
Very responsible 0.157 0.202 0.203
Not at all responsible 0.352 0.335 0.297
35d Stress
Somewhat responsible Very responsible Not at all responsible
1542 731 739
<NA>
1136
status
stress pre-menopause peri-menopause post-menopause
Somewhat responsible 149 711 682
Very responsible 77 345 309
Not at all responsible 61 297 381
status
stress pre-menopause peri-menopause post-menopause
Somewhat responsible 0.519 0.525 0.497
Very responsible 0.268 0.255 0.225
Not at all responsible 0.213 0.220 0.278
35e Fatigue or Lack
of Energy
Somewhat responsible Very responsible Not at all responsible
1460 677 875
<NA>
1136
status
low pre-menopause peri-menopause post-menopause
Somewhat responsible 157 684 619
Very responsible 59 320 298
Not at all responsible 71 349 455
status
low pre-menopause peri-menopause post-menopause
Somewhat responsible 0.547 0.506 0.451
Very responsible 0.206 0.237 0.217
Not at all responsible 0.247 0.258 0.332
35f Hormonal
Changes
Very responsible Somewhat responsible Not at all responsible
1717 1108 187
<NA>
1136
status
hormone pre-menopause peri-menopause post-menopause
Very responsible 83 843 791
Somewhat responsible 168 465 475
Not at all responsible 36 45 106
status
hormone pre-menopause peri-menopause post-menopause
Very responsible 0.289 0.623 0.577
Somewhat responsible 0.585 0.344 0.346
Not at all responsible 0.125 0.033 0.077
35g Reduced Daily
Activities/Movement
Very responsible Somewhat responsible Not at all responsible
298 1041 1673
<NA>
1136
status
move pre-menopause peri-menopause post-menopause
Very responsible 32 124 142
Somewhat responsible 105 442 494
Not at all responsible 150 787 736
status
move pre-menopause peri-menopause post-menopause
Very responsible 0.111 0.092 0.103
Somewhat responsible 0.366 0.327 0.360
Not at all responsible 0.523 0.582 0.536
| stage |
|
Pre |
Pre |
Pre |
Peri |
Peri |
Peri |
Post |
Post |
Post |
| Response |
|
Not at all |
somewhat |
very |
Not at all |
somewhat |
very |
Not at all |
somewhat |
very |
| Item |
Increased calorie intake |
57 |
177 |
53 |
546 |
649 |
158 |
557 |
647 |
168 |
| Ppn |
Increased calorie intake |
0.199 |
0.617 |
0.185 |
0.404 |
0.48 |
0.117 |
0.406 |
0.472 |
0.122 |
| Item |
Changes in Workout |
152 |
100 |
35 |
853 |
412 |
88 |
774 |
476 |
122 |
| Ppn |
Changes in Workout |
0.53 |
0.348 |
0.122 |
0.63 |
0.305 |
0.065 |
0.564 |
0.347 |
0.089 |
| Item |
Sleep |
101 |
45 |
141 |
453 |
273 |
627 |
407 |
279 |
686 |
| Ppn |
Sleep |
0.352 |
0.157 |
0.491 |
0.335 |
0.202 |
0.463 |
0.297 |
0.203 |
0.5 |
| Item |
Stress |
61 |
77 |
149 |
297 |
345 |
711 |
381 |
309 |
682 |
| Ppn |
Stress |
0.213 |
0.268 |
0.519 |
0.22 |
0.255 |
0.525 |
0.278 |
0.225 |
0.497 |
| Item |
Fatigue |
71 |
59 |
157 |
349 |
320 |
684 |
455 |
298 |
619 |
| Ppn |
Fatigue |
0.247 |
0.206 |
0.547 |
0.258 |
0.237 |
0.506 |
0.332 |
0.217 |
0.451 |
| Item |
Hormonal changes |
36 |
168 |
83 |
45 |
465 |
843 |
106 |
475 |
791 |
| Ppn |
Hormonal changes |
0.125 |
0.585 |
0.289 |
0.033 |
0.344 |
0.623 |
0.077 |
0.346 |
0.577 |
| Item |
Reduced activities |
150 |
105 |
32 |
787 |
442 |
124 |
736 |
494 |
142 |
| Ppn |
Reduced activities |
0.523 |
0.366 |
0.111 |
0.582 |
0.327 |
0.092 |
0.536 |
0.36 |
0.103 |
Question #36 Weight
loss resistance
- Please conduct an analysis of statistical significance between the
three groups (Pre; Peri; Post) currently experiencing weight loss
resistance Between-Group Comparison:
- Is there a statistically significant difference in the number of
‘Yes’ responses between women who are premenopausal, perimenopausal, and
postmenopausal?
A Chi-square test of independence was conducted to assess the
relationship between perceived weight gain and menopausal status. A
statistically significant association was found, X2(df=6)=60.554,
p=.00000000003. Cramer’s V was small at V=0.09, 95% CI(0.07, 0.11).
Yes No I don't know Does Not Apply <NA>
2361 804 362 621 0
status
wlr pre-menopause peri-menopause post-menopause
Yes 212 1032 1117
No 132 366 306
I don't know 67 151 144
Does Not Apply 85 274 262
status
wlr pre-menopause peri-menopause post-menopause
Yes 0.42741935 0.56609984 0.61071624
No 0.26612903 0.20076796 0.16730454
I don't know 0.13508065 0.08283050 0.07873155
Does Not Apply 0.17137097 0.15030170 0.14324768
Pearson's Chi-squared test
data: x
X-squared = 60.554, df = 6, p-value = 0.00000000003472
status
wlr pre-menopause peri-menopause post-menopause
Yes 282.31823 1037.6333 1041.0485
No 96.13886 353.3491 354.5121
I don't know 43.28640 159.0950 159.6186
Does Not Apply 74.25651 272.9226 273.8209
1-sample proportions test with continuity correction
data: 212 out of 212 + 132 + 67 + 85, null probability 0.5
X-squared = 10.163, df = 1, p-value = 0.001433
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.3836174 0.4723626
sample estimates:
p
0.4274194
1-sample proportions test with continuity correction
data: 1032 out of 1032 + 274 + 151 + 366, null probability 0.5
X-squared = 31.596, df = 1, p-value = 0.00000001898
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.5429582 0.5889601
sample estimates:
p
0.5660998
1-sample proportions test with continuity correction
data: 1117 out of 1117 + 262 + 144 + 306, null probability 0.5
X-squared = 89.238, df = 1, p-value < 0.00000000000000022
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.5878851 0.6330776
sample estimates:
p
0.6107162
Pairwise comparisons using Pairwise comparison of proportions
data: b$num out of b$den
1 2
2 0.0000001061716 -
3 0.0000000000011 0.0068
P value adjustment method: holm
Two-sided 95% chi-squared confidence interval for the population
Cramer's V
Sample estimate: 0.08543557
Confidence interval:
2.5% 97.5%
0.0654849 0.1071792
Question #37a-f
Factors contributing to WLR
37a Changes in
Workout Routine
- For each cell in the table, please provide the n size and the % of
respondents
Somewhat responsible Not at all responsible Very responsible
729 1502 130
<NA>
1787
status
change pre-menopause peri-menopause post-menopause
Somewhat responsible 69 282 378
Not at all responsible 132 693 677
Very responsible 11 57 62
status
change pre-menopause peri-menopause post-menopause
Somewhat responsible 0.325 0.273 0.338
Not at all responsible 0.623 0.672 0.606
Very responsible 0.052 0.055 0.056
37b Sleep
Depravation
Not at all responsible Somewhat responsible Very responsible
796 1101 464
<NA>
1787
status
sleep pre-menopause peri-menopause post-menopause
Not at all responsible 76 362 358
Somewhat responsible 102 460 539
Very responsible 34 210 220
status
sleep pre-menopause peri-menopause post-menopause
Not at all responsible 0.358 0.351 0.321
Somewhat responsible 0.481 0.446 0.483
Very responsible 0.160 0.203 0.197
37c Stress
Somewhat responsible Very responsible Not at all responsible
1173 570 618
<NA>
1787
status
stress pre-menopause peri-menopause post-menopause
Somewhat responsible 103 527 543
Very responsible 67 254 249
Not at all responsible 42 251 325
status
stress pre-menopause peri-menopause post-menopause
Somewhat responsible 0.486 0.511 0.486
Very responsible 0.316 0.246 0.223
Not at all responsible 0.198 0.243 0.291
37d Fatigue or Lack
of Energy
Somewhat responsible Not at all responsible Very responsible
1130 757 474
<NA>
1787
status
low pre-menopause peri-menopause post-menopause
Somewhat responsible 100 504 526
Not at all responsible 68 304 385
Very responsible 44 224 206
status
low pre-menopause peri-menopause post-menopause
Somewhat responsible 0.472 0.488 0.471
Not at all responsible 0.321 0.295 0.345
Very responsible 0.208 0.217 0.184
37e Hormonal
Changes
Very responsible Somewhat responsible Not at all responsible
1475 765 121
<NA>
1787
status
hormone pre-menopause peri-menopause post-menopause
Very responsible 69 717 689
Somewhat responsible 130 289 346
Not at all responsible 13 26 82
status
hormone pre-menopause peri-menopause post-menopause
Very responsible 0.325 0.695 0.617
Somewhat responsible 0.613 0.280 0.310
Not at all responsible 0.061 0.025 0.073
37f Reduced Daily
Activities/Movement
Somewhat responsible Not at all responsible Very responsible
772 1396 193
<NA>
1787
status
move pre-menopause peri-menopause post-menopause
Somewhat responsible 72 297 403
Not at all responsible 123 646 627
Very responsible 17 89 87
status
move pre-menopause peri-menopause post-menopause
Somewhat responsible 0.340 0.288 0.361
Not at all responsible 0.580 0.626 0.561
Very responsible 0.080 0.086 0.078
| stage |
|
Pre |
Pre |
Pre |
Peri |
Peri |
Peri |
Post |
Post |
Post |
| Response |
|
Not at all |
somewhat |
very |
Not at all |
somewhat |
very |
Not at all |
somewhat |
very |
| Item |
Workoutchanges |
11 |
132 |
69 |
57 |
693 |
282 |
62 |
677 |
378 |
| Ppn |
Workoutchanges |
0.052 |
0.623 |
0.325 |
0.055 |
0.672 |
0.273 |
0.056 |
0.606 |
0.338 |
| Item |
Sleep |
34 |
102 |
76 |
210 |
460 |
362 |
220 |
539 |
358 |
| Ppn |
Sleep |
0.16 |
0.481 |
0.358 |
0.203 |
0.446 |
0.351 |
0.197 |
0.483 |
0.321 |
| Item |
Stress |
42 |
67 |
103 |
251 |
254 |
527 |
325 |
249 |
543 |
| Ppn |
Stress |
0.198 |
0.316 |
0.486 |
0.243 |
0.246 |
0.511 |
0.291 |
0.223 |
0.486 |
| Item |
Fatigue |
44 |
68 |
100 |
224 |
304 |
504 |
206 |
385 |
526 |
| Ppn |
Fatigue |
0.208 |
0.321 |
0.472 |
0.217 |
0.295 |
0.488 |
0.184 |
0.345 |
0.471 |
| Item |
Hormonal changes |
13 |
130 |
69 |
26 |
289 |
717 |
82 |
346 |
689 |
| Ppn |
Hormonal changes |
0.061 |
0.613 |
0.325 |
0.025 |
0.28 |
0.695 |
0.073 |
0.31 |
0.617 |
| Item |
Reduced activites |
17 |
123 |
72 |
89 |
646 |
297 |
87 |
627 |
403 |
| Ppn |
Reduced activities |
0.08 |
0.58 |
0.34 |
0.086 |
0.626 |
0.288 |
0.078 |
0.561 |
0.361 |
LS0tDQp0aXRsZTogIkZGTVMgTWFudXNjcmlwdCAyIFN0YXRpc3RpY2FsIEFuYWx5c2lzIg0KYXV0aG9yOiAiIg0KZGF0ZTogIiINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICB0b2NfZmxvYXQ6IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgdG9jX2NvbGxhcHNlZDogeWVzDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgc21vb3RoX3Njcm9sbDogeWVzDQogICAgdGhlbWU6IGx1bWVuDQogIHBkZl9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICBmaWdfd2lkdGg6IDMNCiAgICBmaWdfaGVpZ2h0OiAzDQogIHdvcmRfZG9jdW1lbnQ6IA0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiA0DQogICAgZmlnX2NhcHRpb246IHllcw0KICAgIGtlZXBfbWQ6IHllcw0KZWRpdG9yX29wdGlvbnM6IA0KICBjaHVua19vdXRwdXRfdHlwZTogaW5saW5lDQotLS0NCg0KYGBge2NzcywgZWNobyA9IEZBTFNFfQ0KI1RPQzo6YmVmb3JlIHsNCiAgY29udGVudDogIlRhYmxlIG9mIENvbnRlbnRzIjsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZvbnQtc2l6ZTogMS4yZW07DQogIGRpc3BsYXk6IGJsb2NrOw0KICBjb2xvcjogbmF2eTsNCiAgbWFyZ2luLWJvdHRvbTogMTBweDsNCn0NCg0KDQpkaXYjVE9DIGxpIHsgICAgIC8qIHRhYmxlIG9mIGNvbnRlbnQgICovDQogICAgbGlzdC1zdHlsZTp1cHBlci1yb21hbjsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7DQogICAgYmFja2dyb3VuZC1yZXBlYXQ6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7DQp9DQoNCmgxLnRpdGxlIHsgICAgLyogbGV2ZWwgMSBoZWFkZXIgb2YgdGl0bGUgICovDQogIGZvbnQtc2l6ZTogMjJweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGNvbG9yOiBEYXJrUmVkOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogIGZvbnQtZmFtaWx5OiAiR2lsbCBTYW5zIiwgc2Fucy1zZXJpZjsNCn0NCg0KaDQuYXV0aG9yIHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxNXB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTsNCiAgY29sb3I6IG5hdnk7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KaDQuZGF0ZSB7IC8qIEhlYWRlciA0IC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogIGZvbnQtc2l6ZTogMThweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZvbnQtZmFtaWx5OiAiR2lsbCBTYW5zIiwgc2Fucy1zZXJpZjsNCiAgY29sb3I6IERhcmtCbHVlOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCmgxIHsgLyogSGVhZGVyIDEgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDIwcHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KaDIgeyAvKiBIZWFkZXIgMiAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogbmF2eTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMyB7IC8qIEhlYWRlciAzIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxNnB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmg0IHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE0cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCi8qIEFkZCBkb3RzIGFmdGVyIG51bWJlcmVkIGhlYWRlcnMgKi8NCi5oZWFkZXItc2VjdGlvbi1udW1iZXI6OmFmdGVyIHsNCiAgY29udGVudDogIi4iOw0KDQpib2R5IHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfQ0KDQouaGlnaGxpZ2h0bWUgeyBiYWNrZ3JvdW5kLWNvbG9yOnllbGxvdzsgfQ0KDQpwIHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfQ0KDQp9DQpgYGANCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9Rn0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGLCBjb21tZW50PU5BLCB3YXJuaW5nPUYsIHJlc3VsdHM9VCwgbWVzc2FnZT1GKQ0KDQpzZXR3ZCgiQzovVXNlcnMvNzVMUFlPVFQvT25lRHJpdmUgLSBXZXN0IENoZXN0ZXIgVW5pdmVyc2l0eSBvZiBQQS9GRk1TIikNCg0KbGlicmFyeShGU0EpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShzcGxpdHN0YWNrc2hhcGUpDQpsaWJyYXJ5KHN1bW1hcnl0b29scykNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeSh0aWR5cikNCmxpYnJhcnkoVklNKQ0KbGlicmFyeSh6b28pDQpsaWJyYXJ5KGp0b29scykNCmxpYnJhcnkoYnJvb20pDQpsaWJyYXJ5KHZjZCkNCmxpYnJhcnkodmlzZGF0KQ0KbGlicmFyeShza2ltcikNCmxpYnJhcnkoamFuaXRvcikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZ21vZGVscykNCmxpYnJhcnkoZHVubi50ZXN0KQ0KbGlicmFyeShyc3RhdGl4KQ0KbGlicmFyeShEZXNjVG9vbHMpDQpsaWJyYXJ5KGVmZmVjdHNpemUpDQpsaWJyYXJ5KGNvbmZpbnRyKQ0KbGlicmFyeShjaGlzcXVhcmUpDQpsaWJyYXJ5KGZvcmNhdHMpDQpvcHRpb25zKHNjaXBlbj05OTkpDQoNCiN3cmFuZ2xpbmcNCg0KZmlyc3QuZGF0YT1yZWFkLmNzdigiRkZNUyBkZW1vZyB2YXJzLmNzdiIsIGhlYWRlcj1UKQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgZmlsdGVyKFdUS0c8MTgwKQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKHN0YXR1cz1jYXNlX3doZW4oTUVOT1NUQVRVUz09MX4icHJlLW1lbm9wYXVzZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBNRU5PU1RBVFVTPT0yfiJwZXJpLW1lbm9wYXVzZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBNRU5PU1RBVFVTPT0zfiJwb3N0LW1lbm9wYXVzZSIsIFRSVUV+TkEpKQ0KDQpmaXJzdC5kYXRhJHN0YXR1cz1mY3RfaW5vcmRlcihmaXJzdC5kYXRhJHN0YXR1cykNCmBgYA0KDQojIFF1ZXN0aW9uICMxMCBCb2R5IFdlaWdodCBieSBzdGF0dXMNCg0KLSAgIE4gc2l6ZSwgJSBvZiByZXNwb25kZW50cywgbWVhbiwgU0QsIG1lZGlhbiBmb3IgYWxsIHJlc3BvbmRlbnRzIGFuZCBhY3Jvc3MgYWxsIG1lbm9wYXVzYWwgc3RhZ2UuXA0KLSAgIFBsZWFzZSBjb25kdWN0IGFuIGFuYWx5c2lzIG9mIHN0YXRpc3RpY2FsIHNpZ25pZmljYW5jZSBiZXR3ZWVuIHRoZSB0aHJlZSBncm91cHMgKFByZTsgUGVyaTsgUG9zdCkgZm9yIHJlcG9ydGVkIHZhbHVlIG9mIEJvZHkgV2VpZ2h0Lg0KLSAgIEJldHdlZW4tR3JvdXAgQ29tcGFyaXNvbjogSXMgdGhlcmUgYSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2UgaW4gdGhlIEJvZHkgV2VpZ2h0IHZhbHVlIHJlcG9ydGVkIGJldHdlZW4gd29tZW4gd2hvIGFyZSBwcmVtZW5vcGF1c2FsLCBwZXJpbWVub3BhdXNhbCwgYW5kIHBvc3RtZW5vcGF1c2FsPw0KDQoqVGhlIHdlaWdodCB2YXJpYWJsZSB3YXMgc2tld2VkIGZvciBhbGwgdGhyZWUgZ3JvdXBzIChTaGFwaXJvLVdpbGsgcC12YWx1ZXMgYWxsIGxlc3MgdGhhbiAuMDAwMSkuIEFzIGEgcmVzdWx0LCBhIEtydXNrYWwtV2FsbGlzIHRlc3Qgd2FzIHVzZWQgdG8gZmluZCBkaWZmZXJlbmNlcyBhbW9uZyB0aGUgbWVub3BhdXNhbCBzdGF0dXMgZ3JvdXBzIGZvciB0aGUgdmFyaWFibGUgV1RLRy4gQSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2Ugd2FzIGZvdW5kIGFtb25nIHRoZSBzdGF0dXMgZ3JvdXBzLCBYMihkZj0yKT0xNy45MDgsIHA9LjAwMDEzLiBUaGUgRHVubiB0ZXN0IHdhcyB1c2VkIHRvIGV2YWx1YXRlIHBhaXJ3aXNlIGNvbXBhcmlzb25zLCBhbmQgb25seSBwZXJpbWVub3BhdXNlIGFuZCBwb3N0bWVub3BhdXNlIHdlcmUgZm91bmQgdG8gYmUgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCAoYWRqdXN0ZWQgcD0uMDAwMDcpLioNCg0KYGBge3IgUTEwLCBpbmNsdWRlPVR9DQoNCnN1bW1hcnlfb3ZlcmFsbCA9IGZpcnN0LmRhdGEgJT4lDQogIHN1bW1hcmlzZShtZWFuPW1lYW4oV1RLRyksIHNkPXNkKFdUS0cpLCBtZWRpYW49bWVkaWFuKFdUS0cpLCBuPW4oKSkNCg0Kc3VtbWFyeV9ieXN0YXR1cyA9IGZpcnN0LmRhdGEgJT4lDQogIGdyb3VwX2J5KHN0YXR1cykgJT4lDQogIHN1bW1hcmlzZShtZWFuPW1lYW4oV1RLRyksIHNkPXNkKFdUS0cpLCBtZWRpYW49bWVkaWFuKFdUS0cpLCBuPW4oKSkNCg0Ka2FibGUoc3VtbWFyeV9vdmVyYWxsLCBmb3JtYXQ9Imh0bWwiLCBjYXB0aW9uPSJEZXNjcmlwdGl2ZSBzdGF0c2l0Y3Mgb2YgV1RLRyIpICU+JQ0KICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIpLCBmdWxsX3dpZHRoID0gRikNCg0Ka2FibGUoc3VtbWFyeV9ieXN0YXR1cywgZm9ybWF0PSJodG1sIiwgY2FwdGlvbj0iRGVzY3JpcHRpdmUgc3RhdHNpdGNzIG9mIFdUS0cgYnkgc3RhdHVzIikgJT4lDQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiksIGZ1bGxfd2lkdGggPSBGKQ0KDQojbW9kZWw9bG0oV1RLR35zdGF0dXMsIGRhdGE9Zmlyc3QuZGF0YSkNCiAjc3VtbWFyeShtb2RlbCkNCiANCiNlcHNpbG9uX3NxdWFyZWQobW9kZWwpDQogDQpyZXN1bHRzIDwtIGZpcnN0LmRhdGEgJT4lDQogIGdyb3VwX2J5KHN0YXR1cykgJT4lDQogIHN1bW1hcmlzZShzaGFwaXJvX3Rlc3QgPSBsaXN0KHNoYXBpcm8udGVzdChXVEtHKSkpICU+JQ0KICBtdXRhdGUoc3RhdGlzdGljID0gc2FwcGx5KHNoYXBpcm9fdGVzdCwgZnVuY3Rpb24oeCkgeCRzdGF0aXN0aWMpLA0KICAgICAgICAgcF92YWx1ZSA9IHNhcHBseShzaGFwaXJvX3Rlc3QsIGZ1bmN0aW9uKHgpIHgkcC52YWx1ZSkpICU+JQ0KICBzZWxlY3Qoc3RhdHVzLCBzdGF0aXN0aWMsIHBfdmFsdWUpDQoNCg0Ka2FibGUocmVzdWx0cywgZm9ybWF0PSJodG1sIiwgY2FwdGlvbj0iTm9ybWFsaXR5IGFzc2Vzc21lbnQgYnkgc3RhdHVzIikgJT4lDQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiksIGZ1bGxfd2lkdGggPSBGKQ0KDQpnZ3Bsb3QoZmlyc3QuZGF0YSwgYWVzKHggPSBXVEtHKSkgKw0KICBnZW9tX2hpc3RvZ3JhbSgpICsNCiAgZmFjZXRfd3JhcCh+IHN0YXR1cykgKyANCiAgbGFicyh0aXRsZSA9ICJXZWlnaHQgYnkgbWVub3BhdXNlIHN0YXR1cyIsDQogICAgICAgeCA9ICJraWxncmFtcyIsDQogICAgICAgeSA9ICJGcmVxdWVuY3kiKQ0KDQprcnVza2FsLnRlc3QoV1RLR35zdGF0dXMsIGRhdGE9Zmlyc3QuZGF0YSkNCmR1bm5UZXN0KFdUS0d+c3RhdHVzLCBkYXRhPWZpcnN0LmRhdGEpDQoNCmBgYA0KDQojIFF1ZXN0aW9uICMyMCBBcmUgeW91IHRha2luZyBhbnkgcHJlc2NyaXB0aW9uIGFudGktZGVwcmVzc2FudCBtZWRpY2F0aW9ucz8NCg0KLSAgIEFuYWx5c2lzIG9mIHN0YXRpc3RpY2FsIHNpZ25pZmljYW5jZSBiZXR3ZWVuIHRoZSB0aHJlZSBncm91cHMgKFByZTsgUGVyaTsgUG9zdCkgZm9yIHRoZSBhbnN3ZXIgJ1llcycuDQotICAgQmV0d2Vlbi1Hcm91cCBDb21wYXJpc29uOiBJcyB0aGVyZSBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBpbiB0aGUgbnVtYmVyIG9mICdZZXMnIHJlc3BvbnNlcyBiZXR3ZWVuIHdvbWVuIHdobyBhcmUgcHJlbWVub3BhdXNhbCwgcGVyaW1lbm9wYXVzYWwsIGFuZCBwb3N0bWVub3BhdXNhbD8NCg0KKkEgQ2hpLXNxdWFyZSB0ZXN0IG9mIGluZGVwZW5kZW5jZSB3YXMgY29uZHVjdGVkIHRvIGFzc2VzcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYW50aWRlcHJlc3NhbnQgdXNlIGFuZCBtZW5vcGF1c2FsIHN0YXR1cy4gTm8gc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBhc3NvY2lhdGlvbiB3YXMgZm91bmQsIFgyKGRmPTIpPTEuMzI4LCBwPS41MTQ4LiBDcmFtZXIncyBWIHdhcyB0cml2aWFsIGF0IFY9MC4wMTgsIDk1JSBDSSgwLjAwLCAwLjA0OSkuKg0KDQpgYGB7ciBRMjAsIGluY2x1ZGU9VH0NCg0KZmlyc3QuZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogICAgbXV0YXRlKGRlcHJlc3Npb249Y2FzZV93aGVuKEFOVERFUD09MX4iWWVzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgQU5UREVQPT0yfiJObyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBBTlRERVA9PTN+IkkgZG9uJ3Qga25vdyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIEFOVERFUD09NH4iUHJlZmVyIE5vdCB0byBBbnN3ZXIiLCBUUlVFfk5BKSkNCmZpcnN0LmRhdGEkZGVwcmVzc2lvbiA8LSBmYWN0b3IoZmlyc3QuZGF0YSRkZXByZXNzaW9uLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiWWVzIiwgIk5vIiwgIkkgZG9uJ3Qga25vdyIsICJQcmVmZXIgTm90IHRvIEFuc3dlciIpKQ0KdGFibGUoZmlyc3QuZGF0YSRkZXByZXNzaW9uLCB1c2VOQSA9ICJhbHdheXMiKQ0KDQojUmVtb3ZlIGV2ZXJ5b25lIGV4Y2VwdCB5ZXMgb3Igbm8gYW5kIG1pc3NpbmcsIG9ubHkgOA0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIGZpbHRlcihBTlRERVA8MykNCg0KZGF0YSA9IGRhdGEgJT4lDQogIG11dGF0ZShkZXA9Y2FzZV93aGVuKEFOVERFUD09MX4iWWVzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgQU5UREVQPT0yfiJObyIsIFRSVUV+TkEpKQ0KZGF0YSRkZXAgPC0gZmFjdG9yKGRhdGEkZGVwLCBsZXZlbHMgPSBjKCJZZXMiLCAiTm8iKSkNCg0KeD14dGFicyh+ZGVwK3N0YXR1cywgZGF0YT1kYXRhKQ0KeA0KcHJvcC50YWJsZSh4LDIpDQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpyZXN1bHQkZXhwZWN0ZWQNCiNwcmUNCnByb3AudGVzdCg0OCwgNDgrNDQ4KQ0KI3BlcmkNCnByb3AudGVzdCgyMDksIDIwOSsxNjA3KQ0KI3Bvc3QNCnByb3AudGVzdCgyMDUsIDIwNSsxNjIzKQ0KDQpiPWRhdGEuZnJhbWUoDQpudW09Yyg0OCwgMjA5LCAyMDUpLA0KZGVuPWMoNDgrNDQ4LCAyMDkrMTYwNywgMjA1KzE2MjMpLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCg0KDQpkZiA8LSBkYXRhLmZyYW1lKA0KICB4ID0gYygiUHJlIiwgIlBlcmkiLCAiUG9zdCIpLA0KICB5ID0gYyguMDk3LCAuMTE1LCAuMTEyKSwNCiAgeW1pbiA9IGMoLjA3MywgLjEwMSwgLjA5OCksDQogIHltYXggPSBjKC4xMjcsIC4xMzEsIC4xMjgpDQopDQoNCmRmJHg9ZmN0X2lub3JkZXIoZGYkeCkNCg0KI2dncGxvdChkZiwgYWVzKHggPSB4LCB5ID0geSkpICsNCiAjIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC45KSwgZmlsbCA9ICJibHVlIikgKw0KICMgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IHltaW4sIHltYXggPSB5bWF4KSwNCiAjICAgICAgICAgICAgICAgd2lkdGggPSAwLjEwLCAgIyBXaWR0aCBvZiB0aGUgZXJyb3IgYmFyIGNhcHMNCiMgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuOSkpICsNCiMgIHNjYWxlX2ZpbGxfZ3JleSgpICsNCiMgIGxhYnModGl0bGUgPSAiWWVzIHRvIEFudGlkZXByZXNzYW50IFVzZSB3Lzk1JSBDSSIsDQogIyAgICAgIHggPSAiTWVub3BhdXNhbCBTdGF0dXMiLA0KICMgICAgICB5ID0gIlByb3BvcnRpb24iKSArDQogIyB0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQojIFF1ZXN0aW9uICMyMSBBcmUgeW91IHRha2luZyBhbnkgcHJlc2NyaXB0aW9uIHNsZWVwIG1lZGljYXRpb25zPw0KDQotICAgQW5hbHlzaXMgb2Ygc3RhdGlzdGljYWwgc2lnbmlmaWNhbmNlIGJldHdlZW4gdGhlIHRocmVlIGdyb3VwcyAoUHJlOyBQZXJpOyBQb3N0KSBmb3IgdGhlIGFuc3dlciAnWWVzJy4NCi0gICBCZXR3ZWVuLUdyb3VwIENvbXBhcmlzb246IElzIHRoZXJlIGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGluIHRoZSBudW1iZXIgb2YgJ1llcycgcmVzcG9uc2VzIGJldHdlZW4gd29tZW4gd2hvIGFyZSBwcmVtZW5vcGF1c2FsLCBwZXJpbWVub3BhdXNhbCwgYW5kIHBvc3RtZW5vcGF1c2FsPw0KDQoqQSBDaGktc3F1YXJlIHRlc3Qgb2YgaW5kZXBlbmRlbmNlIHdhcyBjb25kdWN0ZWQgdG8gYXNzZXNzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBhbmQgbWVub3BhdXNhbCBzdGF0dXMuIEEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBhc3NvY2lhdGlvbiB3YXMgZm91bmQsIFgyKGRmPTIpPTYuMzA1NSwgcD0uMDQyNy4gQ3JhbWVyJ3MgViB3YXMgdHJpdmlhbCBhdCBWPTAuMDM5LCA5NSUgQ0koMC4wMCwgMC4wNzEpLioNCg0KYGBge3IgUTIxLCBpbmNsdWRlPVR9DQoNCmZpcnN0LmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUoc2xwPWNhc2Vfd2hlbihTTEVFUE1FRD09MX4iWWVzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgU0xFRVBNRUQ9PTJ+Ik5vIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIFNMRUVQTUVEPT0zfiJJIGRvbid0IGtub3ciLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgU0xFRVBNRUQ9PTR+IlByZWZlciBub3QgdG8gYW5zd2VyIiwgVFJVRX5OQSkpDQpmaXJzdC5kYXRhJHNscCA8LSBmYWN0b3IoZmlyc3QuZGF0YSRzbHAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJZZXMiLCAiTm8iLCAiSSBkb24ndCBrbm93IiwgIlByZWZlciBOb3QgdG8gQW5zd2VyIikpDQp0YWJsZShmaXJzdC5kYXRhJHNscCwgdXNlTkEgPSAiYWx3YXlzIikNCiNSZW1vdmUgZXZlcnlvbmUgZXhjZXB0IHllcyBvciBubyBhbmQgbWlzc2luZywgb25seSA2DQpkYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgZmlsdGVyKFNMRUVQTUVEPDMpDQoNCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUoc2xlZXA9Y2FzZV93aGVuKFNMRUVQTUVEPT0xfiJZZXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBTTEVFUE1FRD09Mn4iTm8iLCBUUlVFfk5BKSkNCg0KZGF0YSRzbGVlcCA8LSBmYWN0b3IoZGF0YSRzbGVlcCwgbGV2ZWxzID0gYygiWWVzIiwgIk5vIikpDQoNCng9eHRhYnMofnNsZWVwK3N0YXR1cywgZGF0YT1kYXRhKQ0KeA0KcHJvcC50YWJsZSh4LDIpDQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpyZXN1bHQkZXhwZWN0ZWQNCiNwcmUNCnByb3AudGVzdCgxMiwgMTIrNDgzKQ0KI3BlcmkNCnByb3AudGVzdCg4OCwgODgrMTczMykNCiNwb3N0DQpwcm9wLnRlc3QoOTIsIDkyKzE3MzQpDQogICAgICAgICAgDQpiPWRhdGEuZnJhbWUoDQpudW09YygxMiwgODgsIDkyKSwNCmRlbj1jKDEyKzQ4MywgODgrMTczMywgOTIrMTczNCksDQpzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IikNCikNCg0KcGFpcndpc2UucHJvcC50ZXN0KHg9YiRudW0sIG49YiRkZW4sIHAuYWRqdXN0Lm1ldGhvZCA9ICJob2xtIikNCg0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpkZiA8LSBkYXRhLmZyYW1lKA0KICB4ID0gYygiUHJlIiwgIlBlcmkiLCAiUG9zdCIpLA0KICB5ID0gYyguMDI0LCAuMDQ4LCAuMDUwKSwNCiAgeW1pbiA9IGMoLjAxMywgLjAzOSwgLjA0MSksDQogIHltYXggPSBjKC4wNDMsIC4wNTksIC4wNjIpDQopDQoNCmRmJHg9ZmN0X2lub3JkZXIoZGYkeCkNCg0KI2dncGxvdChkZiwgYWVzKHggPSB4LCB5ID0geSkpICsNCiMgIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC45KSwgZmlsbCA9ICJibHVlIikgKw0KIyAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IHltaW4sIHltYXggPSB5bWF4KSwNCiMgICAgICAgICAgICAgICAgd2lkdGggPSAwLjEwLCAgIyBXaWR0aCBvZiB0aGUgZXJyb3IgYmFyIGNhcHMNCiMgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuOSkpICsNCiMgIHNjYWxlX2ZpbGxfZ3JleSgpICsNCiMgIGxhYnModGl0bGUgPSAiWWVzIHRvIFNsZWVwIE1lZHMgdy85NSUgQ0kiLA0KIyAgICAgICB4ID0gIk1lbm9wYXVzYWwgU3RhdHVzIiwNCiMgICAgICAgeSA9ICJQcm9wb3J0aW9uIikgKw0KIyAgdGhlbWVfY2xhc3NpYygpDQpgYGANCg0KIyBRdWVzdGlvbiAjMjIgQXJlIHlvdSB0YWtpbmcgYW55IHByZXNjcmlwdGlvbiB3ZWlnaHQgbG9zcyBtZWRpY2F0aW9ucz8NCg0KLSAgIFBsZWFzZSBjb25kdWN0IGFuIGFuYWx5c2lzIG9mIHN0YXRpc3RpY2FsIHNpZ25pZmljYW5jZSBiZXR3ZWVuIHRoZSB0aHJlZSBncm91cHMgKFByZTsgUGVyaTsgUG9zdCkgZm9yIHRoZSBhbnN3ZXIgJ1llcycuDQotICAgQmV0d2Vlbi1Hcm91cCBDb21wYXJpc29uOiBJcyB0aGVyZSBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBpbiB0aGUgbnVtYmVyIG9mICdZZXMnIHJlc3BvbnNlcyBiZXR3ZWVuIHdvbWVuIHdobyBhcmUgcHJlbWVub3BhdXNhbCwgcGVyaW1lbm9wYXVzYWwsIGFuZCBwb3N0bWVub3BhdXNhbD8NCg0KKkEgQ2hpLXNxdWFyZSB0ZXN0IG9mIGluZGVwZW5kZW5jZSB3YXMgY29uZHVjdGVkIHRvIGFzc2VzcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGFraW5nIHdlaWdodCBsb3NzIG1lZGljYXRpb24gYW5kIG1lbm9wYXVzYWwgc3RhdHVzLiBObyBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGFzc29jaWF0aW9uIHdhcyBmb3VuZCwgWDIoZGY9Mik9MC4zMTYsIHA9Ljg1MzkuIENyYW1lcidzIFYgd2FzIHRyaXZpYWwgYXQgVj0wLjAxLCA5NSUgQ0koMC4wMCwgMC4wMzcpLioNCg0KYGBge3IgUTIyLCBpbmNsdWRlPVR9DQoNCmZpcnN0LmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUod2xtPWNhc2Vfd2hlbihXVExPU1NNRUQ9PTF+IlllcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIFdUTE9TU01FRD09Mn4iTm8iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgV1RMT1NTTUVEPT0zfiJJIGRvbid0IGtub3ciLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgV1RMT1NTTUVEPT00fiJQcmVmZXIgbm90IHRvIGFuc3dlciIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSR3bG0gPC0gZmFjdG9yKGZpcnN0LmRhdGEkd2xtLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiWWVzIiwgIk5vIiwgIkkgZG9uJ3Qga25vdyIsICJQcmVmZXIgTm90IHRvIEFuc3dlciIpKQ0KdGFibGUoZmlyc3QuZGF0YSR3bG0sIHVzZU5BID0gImFsd2F5cyIpDQoNCiNSZW1vdmUgZXZlcnlvbmUgZXhjZXB0IHllcyBvciBubyBhbmQgbWlzc2luZywgb25seSA1DQpkYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgZmlsdGVyKFdUTE9TU01FRDwzKQ0KDQpkYXRhID0gZGF0YSAlPiUNCiAgbXV0YXRlKFdMTUVEPWNhc2Vfd2hlbihXVExPU1NNRUQ9PTF+IlllcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIFdUTE9TU01FRD09Mn4iTm8iLCBUUlVFfk5BKSkNCg0KZGF0YSRXTE1FRCA8LSBmYWN0b3IoZGF0YSRXTE1FRCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIlllcyIsICJObyIpKQ0KeD14dGFicyh+V0xNRUQrc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQpwcm9wLnRhYmxlKHgsMikNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQpyZXN1bHQNCnJlc3VsdCRleHBlY3RlZA0KI3ByZQ0KcHJvcC50ZXN0KDIzLCAyMys0NzEpDQojcGVyaQ0KcHJvcC50ZXN0KDkzLCA5MysxNzI3KQ0KI3Bvc3QNCnByb3AudGVzdCg4NywgODcrMTc0MikNCiAgICAgICAgICANCmI9ZGF0YS5mcmFtZSgNCm51bT1jKDIzLCA5MywgODcpLA0KZGVuPWMoMjMrNDcxLCA5MysxNzI3LCA4NysxNzQyKSwNCnN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKQ0KKQ0KDQpwYWlyd2lzZS5wcm9wLnRlc3QoeD1iJG51bSwgbj1iJGRlbiwgcC5hZGp1c3QubWV0aG9kID0gImhvbG0iKQ0KDQpjaV9jcmFtZXJzdihyZXN1bHQpDQoNCmRmIDwtIGRhdGEuZnJhbWUoDQogIHggPSBjKCJQcmUiLCAiUGVyaSIsICJQb3N0IiksDQogIHkgPSBjKC4wNDcsIC4wNTEsIC4wNDgpLA0KICB5bWluID0gYyguMDMwLCAuMDQyLCAuMDM4KSwNCiAgeW1heCA9IGMoLjA3MCwgLjA2MiwgLjA1OSkNCikNCg0KZGYkeD1mY3RfaW5vcmRlcihkZiR4KQ0KDQojZ2dwbG90KGRmLCBhZXMoeCA9IHgsIHkgPSB5KSkgKw0KIyAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjkpLCBmaWxsID0gImJsdWUiKSArDQogIyBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0geW1pbiwgeW1heCA9IHltYXgpLA0KICAjICAgICAgICAgICAgICB3aWR0aCA9IDAuMTAsICAjIFdpZHRoIG9mIHRoZSBlcnJvciBiYXIgY2Fwcw0KICAgIyAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC45KSkgKw0KICAjc2NhbGVfZmlsbF9ncmV5KCkgKw0KICAjbGFicyh0aXRsZSA9ICJZZXMgdG8gUHJlc2NyaXB0aW9uIFd0IExvc3MgTWVkcyB3LzUlIENJIiwNCiAgICMgICAgeCA9ICJNZW5vcGF1c2FsIFN0YXR1cyIsDQogICAgIyAgIHkgPSAiUHJvcG9ydGlvbiIpICsNCiMgIHRoZW1lX2NsYXNzaWMoKQ0KYGBgDQoNCiMgUXVlc3Rpb24gIzMxIEJvZHkgZmF0IHBlcmNlbnRhZ2UgYnkgc3RhdHVzDQoNCi0gICBBbmFseXNpcyBvZiBzdGF0aXN0aWNhbCBzaWduaWZpY2FuY2UgYmV0d2VlbiB0aGUgdGhyZWUgZ3JvdXBzIChQcmU7IFBlcmk7IFBvc3QpIGZvciBzZWxmLXJlcG9ydGVkIHZhbHVlIG9mIEJvZHkgRmF0ICUuDQoNCi1CZXR3ZWVuLUdyb3VwIENvbXBhcmlzb246IElzIHRoZXJlIGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGluIHRoZSBCb2R5IEZhdCAlIHZhbHVlIHJlcG9ydGVkIGJldHdlZW4gd29tZW4gd2hvIGFyZSBwcmVtZW5vcGF1c2FsLCBwZXJpbWVub3BhdXNhbCwgYW5kIHBvc3RtZW5vcGF1c2FsPw0KDQoqVGhlIGJvZHkgZmF0IHBlcmNlbnRhZ2UgdmFyaWFibGUgd2FzIHNrZXdlZCBmb3IgYWxsIHRocmVlIGdyb3VwcyAoU2hhcGlyby1XaWxrIHAtdmFsdWVzIGFsbCBsZXNzIHRoYW4gLjAwMDEpLiBBIEtydXNrYWwtV2FsbGlzIHRlc3Qgd2FzIHVzZWQgdG8gZmluZCBkaWZmZXJlbmNlcyBhbW9uZyB0aGUgbWVub3BhdXNhbCBzdGF0dXMgZ3JvdXBzIGZvciB0aGUgdmFyaWFibGUgV1RLRy4gQSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2Ugd2FzIGZvdW5kIGFtb25nIHRoZSBzdGF0dXMgZ3JvdXBzLCBYMihkZj0yKT0xOC4xNjcsIHA9LjAwMDExLiBUaGUgRHVubiB0ZXN0IHdhcyB1c2VkIHRvIGV2YWx1YXRlIHBhaXJ3aXNlIGNvbXBhcmlzb25zOyBwZXJpbWVub3BhdXNlIGFuZCBwb3N0bWVub3BhdXNlIHdlcmUgZm91bmQgdG8gYmUgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudGx5IGRpZmZlcmVudCAoYWRqdXN0ZWQgcD0uMDAxMiksIGFzIHdlcmUgcHJlbWVub3BhdXNlIGFuZCBwb3N0bWVub3BhdXNlIChhZGp1c3RlZCBwPTAwMTQpLioNCg0KYGBge3IgUTMxfQ0KDQojZmlsdGVyIHZhbHVlcyBvZiAxLCAyLCBhbmQgOTkNCmRhdGE9Zmlyc3QuZGF0YSAlPiUNCiAgZmlsdGVyKEJGUENUPjIgJiBCRlBDVDw5OSkNCg0KDQojbW9kZWw9bG0oQkZQQ1R+c3RhdHVzLCBkYXRhPWRhdGEpDQojIHN1bW1hcnkobW9kZWwpDQoNCiANCmdncGxvdChkYXRhLCBhZXMoeCA9IEJGUENUKSkgKw0KICBnZW9tX2hpc3RvZ3JhbSgpICsNCiAgZmFjZXRfd3JhcCh+IHN0YXR1cykgKyANCiAgbGFicyh0aXRsZSA9ICJXZWlnaHQgYnkgbWVub3BhdXNlIHN0YXR1cyIsDQogICAgICAgeCA9ICJraWxncmFtcyIsDQogICAgICAgeSA9ICJGcmVxdWVuY3kiKQ0KDQpyZXN1bHRzIDwtIGRhdGEgJT4lDQogIGdyb3VwX2J5KHN0YXR1cykgJT4lDQogIHN1bW1hcmlzZShzaGFwaXJvX3Rlc3QgPSBsaXN0KHNoYXBpcm8udGVzdChCRlBDVCkpKSAlPiUNCiAgbXV0YXRlKHN0YXRpc3RpYyA9IHNhcHBseShzaGFwaXJvX3Rlc3QsIGZ1bmN0aW9uKHgpIHgkc3RhdGlzdGljKSwNCiAgICAgICAgIHBfdmFsdWUgPSBzYXBwbHkoc2hhcGlyb190ZXN0LCBmdW5jdGlvbih4KSB4JHAudmFsdWUpKSAlPiUNCiAgc2VsZWN0KHN0YXR1cywgc3RhdGlzdGljLCBwX3ZhbHVlKQ0KDQprYWJsZShyZXN1bHRzLCBmb3JtYXQ9Imh0bWwiLCBjYXB0aW9uPSJOb3JtYWxpdHkgYXNzZXNzbWVudCBieSBzdGF0dXMiKSAlPiUNCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiKSwgZnVsbF93aWR0aCA9IEYpDQoNCmtydXNrYWwudGVzdChCRlBDVH5zdGF0dXMsIGRhdGE9ZGF0YSkNCmR1bm5UZXN0KEJGUENUfnN0YXR1cywgZGF0YT1kYXRhKQ0KDQoNCmBgYA0KDQojIFF1ZXN0aW9uICMzMiBNZWFzdXJlIGZyZXF1ZW5jaWVzIG9mIGJvZHkgY29tcG9zaXRpb24gbWVhc3VyZW1lbnQgdG9vbHMuDQoNCi0gICBQbGVhc2UgcHJvdmlkZSBOIHNpemUgYW5kICUgb2YgcmVzcG9uZGVudHMgZm9yIGVhY2ggYm9keSBjb21wb3NpdGlvbiBtZWFzdXJlbWVudCB0b29sDQotICAgVG90YWwgdmFsdWVzIHNob3VsZCBhZGQgdXAgdG8gMTAwJQ0KDQpgYGB7ciBRMzIsIGluY2x1ZGU9VH0NCg0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShpbnN0PWNhc2Vfd2hlbihCRklOU1RSPT0xfiJERVhBIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJGSU5TVFI9PTJ+IkJvZFBvZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBCRklOU1RSPT0zfiJTa2luZm9sZHMiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJGSU5TVFI9PTR+IlVsdHJhc291bmQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgQkZJTlNUUj09NX4iSG9tZSBiYXRocm9vbSBzY2FsZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBCRklOU1RSPT02fiJIaWdoLXF1YWxpdHkgQklBIGRldmljZSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgQkZJTlNUUj09N34iT3RoZXIiLCBUUlVFfk5BKSkNCg0KZGF0YSRpbnN0PWZjdF9pbm9yZGVyKGRhdGEkaW5zdCkNCng9dGFibGUoZGF0YSRpbnN0LCB1c2VOQSA9ICJhbHdheXMiKQ0KeA0Kcm91bmQocHJvcC50YWJsZSh0YWJsZShkYXRhJGluc3QsIHVzZU5BID0gImFsd2F5cyIpKSwgMykNCg0KYGBgDQoNCiMgUXVlc3Rpb24gIzMzIEJvZHkgQ29tcG9zaXRpb24gU2F0aXNmYWN0aW9uDQoNCi0gICBQbGVhc2UgcHJvdmlkZSBOIHNpemUsICUgb2YgcmVzcG9uZGVudHMgd2hvIHJlcGxpZWQgeWVzIG9yIG5vIGZvciBlYWNoIG1lbm9wYXVzZSBzdGFnZS4NCi0gICBQbGVhc2UgY29uZHVjdCBhbiBhbmFseXNpcyBvZiBzdGF0aXN0aWNhbCBzaWduaWZpY2FuY2UgYmV0d2VlbiB0aGUgdGhyZWUgZ3JvdXBzIChQcmU7IFBlcmk7IFBvc3QpIGZvciBCb2R5IENvbXBvc2l0aW9uIFNhdGlzZmFjdGlvbiAoJ05vJyBSZXNwb25zZXMpDQotICAgQmV0d2Vlbi1Hcm91cCBDb21wYXJpc29uOiBJcyB0aGVyZSBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBpbiB0aGUgbnVtYmVyIG9mICdObycgcmVzcG9uc2VzIGJldHdlZW4gd29tZW4gd2hvIGFyZSBwcmVtZW5vcGF1c2FsLCBwZXJpbWVub3BhdXNhbCwgYW5kIHBvc3RtZW5vcGF1c2FsPw0KDQoqQSBDaGktc3F1YXJlIHRlc3Qgb2YgaW5kZXBlbmRlbmNlIHdhcyBjb25kdWN0ZWQgdG8gYXNzZXNzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBCQyBzYXRpc2ZhY3Rpb24gYW5kIG1lbm9wYXVzYWwgc3RhdHVzLiBBIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgYXNzb2NpYXRpb24gd2FzIGZvdW5kLCBYMihkZj0yKT00MC44LCBwPS4wMDAwMDAwMDEuIENyYW1lcidzIFYgd2FzIHNtYWxsIGF0IFY9MC4xLCA5NSUgQ0koMC4wNywgMC4xMykuKg0KDQpgYGB7ciBRMzMsIGluY2x1ZGU9VH0NCg0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShiY3NhdGlzPWNhc2Vfd2hlbihCQ1NBVElTPT0xfiJZZXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJDU0FUSVM9PTJ+Ik5vIiwgVFJVRX5OQSkpDQoNCmRhdGEkYmNzYXRpcyA8LSBmYWN0b3IoZGF0YSRiY3NhdGlzLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiWWVzIiwgIk5vIikpDQp0YWJsZShkYXRhJGJjc2F0aXMsIHVzZU5BID0gImFsd2F5cyIpDQp4PXh0YWJzKH5iY3NhdGlzK3N0YXR1cywgZGF0YT1kYXRhKQ0KeA0KcHJvcC50YWJsZSh4LDIpDQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpyZXN1bHQkZXhwZWN0ZWQNCiNwcmUNCnByb3AudGVzdCgzMDQsIDMwNCsxOTIpDQojcGVyaQ0KcHJvcC50ZXN0KDEzMDIsIDEzMDIrNTIxKQ0KI3Bvc3QNCnByb3AudGVzdCgxMzg0LCAxMzg0KzQ0NSkNCiAgICAgICAgICANCmI9ZGF0YS5mcmFtZSgNCm51bT1jKDMwNCwgMTMwMiwgMTM4NCksDQpkZW49YygzMDQrMTkyLCAxMzAyKzUyMSwgMTM4NCs0NDUpLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCiMgQ3JlYXRlIGEgc2FtcGxlIGRhdGEgZnJhbWUgDQojIEVuc3VyZSB5b3VyIGRhdGEgZnJhbWUgaGFzIGNvbHVtbnMgZm9yIHRoZSB4LWF4aXMgdmFyaWFibGUsIHRoZSBncm91cGluZyB2YXJpYWJsZSwgDQojIHRoZSBtZWFuIHZhbHVlLCBhbmQgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi9lcnJvci4NCmRmIDwtIGRhdGEuZnJhbWUoDQogIHggPSBjKCJQcmUiLCAiUGVyaSIsICJQb3N0IiksDQogIHkgPSBjKC42MTMsIC43MTQsIC43NTcpLA0KICB5bWluID0gYyguNTY4LCAuNjkzLCAuNzM2KSwNCiAgeW1heCA9IGMoLjY1NiwgLjczNSwgLjc3NikNCikNCg0KZGYkeD1mY3RfaW5vcmRlcihkZiR4KQ0KDQojZ2dwbG90KGRmLCBhZXMoeCA9IHgsIHkgPSB5KSkgKw0KICMgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjkpLCBmaWxsID0gImJsdWUiKSArDQogICNnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0geW1pbiwgeW1heCA9IHltYXgpLA0KICAgIyAgICAgICAgICAgICB3aWR0aCA9IDAuMTAsICAjIFdpZHRoIG9mIHRoZSBlcnJvciBiYXIgY2Fwcw0KICAgICMgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC45KSkgKw0KIyAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiRGVwcmVzc2lvbiIgPSAiYmxhY2siLCAiTm9uLWRlcHJlc3Npb24iID0gImJsYWNrIikpKw0KIyAgc2NhbGVfZmlsbF9ncmV5KCkgKw0KICMgbGFicyh0aXRsZSA9ICJObyB0byBCb2R5IENvbXBvc2l0aW9uIFNhdGlzZmFjdGlvbiB3Lzk1JSBDSSIsDQogICMgICAgIHggPSAiTWVub3BhdXNhbCBTdGF0dXMiLA0KICAgIyAgICB5ID0gIlByb3BvcnRpb24iKSArDQojICB0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQojIFF1ZXN0aW9uICMzNCBQZXJjZWl2ZWQgUmVjZW50IEJvZHkgRmF0IEdhaW4NCg0KLSAgIFBsZWFzZSBwcm92aWRlIE4gc2l6ZSwgJSBvZiByZXNwb25kZW50cyB3aG8gcmVwbGllZCBZZXMnIG9yICdObycgb3IgIkkgZG8gbm90IGtub3ciDQotICAgUGxlYXNlIGNvbmR1Y3QgYW4gYW5hbHlzaXMgb2Ygc3RhdGlzdGljYWwgc2lnbmlmaWNhbmNlIGJldHdlZW4gdGhlIHRocmVlIGdyb3VwcyAoUHJlOyBQZXJpOyBQb3N0KSBmb3IgcmVjZW50IGJvZHkgZmF0IGdhaW4NCi0gICBCZXR3ZWVuLUdyb3VwIENvbXBhcmlzb246IElzIHRoZXJlIGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGluIHRoZSBudW1iZXIgb2YgJ1llcycgcmVzcG9uc2VzIGJldHdlZW4gd29tZW4gd2hvIGFyZSBwcmVtZW5vcGF1c2FsLCBwZXJpbWVub3BhdXNhbCwgYW5kIHBvc3RtZW5vcGF1c2FsPw0KDQoqQSBDaGktc3F1YXJlIHRlc3Qgb2YgaW5kZXBlbmRlbmNlIHdhcyBjb25kdWN0ZWQgdG8gYXNzZXNzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBwZXJjZWl2ZWQgd2VpZ2h0IGdhaW4gYW5kIG1lbm9wYXVzYWwgc3RhdHVzLiBBIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgYXNzb2NpYXRpb24gd2FzIGZvdW5kLCBYMihkZj00KT02MC45LCBwPS4wMDAwMDAwMDAwMDAwNi4gQ3JhbWVyJ3MgViB3YXMgc21hbGwgYXQgVj0wLjEyLCA5NSUgQ0koMC4wOSwgMC4xNSkuKg0KDQpgYGB7ciBRMzQsIGluY2x1ZGU9VH0NCg0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZSh3dGdhaW49Y2FzZV93aGVuKFdUR0FJTj09MX4iWWVzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgV1RHQUlOPT0yfiJObyIsIFRSVUV+TkEpKQ0KDQpkYXRhJHd0Z2FpbiA8LSBmYWN0b3IoZGF0YSR3dGdhaW4sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJZZXMiLCAiTm8iKSkNCnRhYmxlKGRhdGEkd3RnYWluKQ0KeD14dGFicyh+d3RnYWluK3N0YXR1cywgZGF0YT1kYXRhKQ0KeA0KcHJvcC50YWJsZSh4LDIpDQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpyZXN1bHQkZXhwZWN0ZWQNCiNwcmUNCnByb3AudGVzdCgyODcsIDI4NysxOSsxOTApDQojcGVyaQ0KcHJvcC50ZXN0KDEzNTMsIDEzNTMrNTErNDE5KQ0KI3Bvc3QNCnByb3AudGVzdCgxMzcyLCAxMzcyKzQ3KzQxMCkNCiAgICAgICAgICANCmI9ZGF0YS5mcmFtZSgNCm51bT1jKDI4NywgMTM1MywgMTM3MiksDQpkZW49YygyODcrMTkrMTkwLDEzNTMrNTErNDE5LDEzNzIrNDcrNDEwKSwNCnN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKQ0KKQ0KDQpwYWlyd2lzZS5wcm9wLnRlc3QoeD1iJG51bSwgbj1iJGRlbiwgcC5hZGp1c3QubWV0aG9kID0gImhvbG0iKQ0KDQpjaV9jcmFtZXJzdihyZXN1bHQpDQoNCiMgQ3JlYXRlIGEgc2FtcGxlIGRhdGEgZnJhbWUgDQojIEVuc3VyZSB5b3VyIGRhdGEgZnJhbWUgaGFzIGNvbHVtbnMgZm9yIHRoZSB4LWF4aXMgdmFyaWFibGUsIHRoZSBncm91cGluZyB2YXJpYWJsZSwgDQojIHRoZSBtZWFuIHZhbHVlLCBhbmQgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi9lcnJvci4NCmRmIDwtIGRhdGEuZnJhbWUoDQogIHggPSBjKCJQcmUiLCAiUGVyaSIsICJQb3N0IiksDQogIHkgPSBjKC41NzksIC43NDIsIC43NTApLA0KICB5bWluID0gYyguNTM0LCAuNzIxLCAuNzMwKSwNCiAgeW1heCA9IGMoLjYyMiwgLjc2MiwgLjc3MCkNCikNCg0KZGYkeD1mY3RfaW5vcmRlcihkZiR4KQ0KDQojZ2dwbG90KGRmLCBhZXMoeCA9IHgsIHkgPSB5KSkgKw0KICMgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjkpLCBmaWxsID0gImJsdWUiKSArDQogICNnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0geW1pbiwgeW1heCA9IHltYXgpLA0KICAgIyAgICAgICAgICAgICB3aWR0aCA9IDAuMTAsICAjIFdpZHRoIG9mIHRoZSBlcnJvciBiYXIgY2Fwcw0KICAgICMgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC45KSkgKw0KIyAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiRGVwcmVzc2lvbiIgPSAiYmxhY2siLCAiTm9uLWRlcHJlc3Npb24iID0gImJsYWNrIikpKw0KICAjc2NhbGVfZmlsbF9ncmV5KCkgKw0KICAjbGFicyh0aXRsZSA9ICJZZXMgdG8gUGVyY2VpdmVkIFJlY2VuZXQgQm9keSBGYXQgR2FpbiB3Lzk1JSBDSSIsDQogICAjICAgIHggPSAiTWVub3BhdXNhbCBTdGF0dXMiLA0KICAgICMgICB5ID0gIlByb3BvcnRpb24iKSArDQogICN0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQojIFF1ZXN0aW9uICMzNWEtZyBGYWN0b3JzIENvbnRyaWJ1dGluZyB0byBCb2R5IEZhdCBHYWluDQoNCi0gICBGb3IgZWFjaCBjZWxsIGluIHRoZSB0YWJsZSwgcGxlYXNlIHByb3ZpZGUgdGhlIG4gc2l6ZSBhbmQgdGhlICUgb2YgcmVzcG9uZGVudHMNCg0KIyMgMzVhIEluY3JlYXNlZCBjYWxvcmllIEludGFrZQ0KDQpgYGB7ciBRMzVhfQ0KDQpkYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKGNhbD1jYXNlX3doZW4oQ0FMSU5DPT0xfiJOb3QgYXQgYWxsIHJlc3BvbnNpYmxlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FMSU5DPT0yfiJTb21ld2hhdCByZXNwb25zaWJsZSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBDQUxJTkM9PTN+IlZlcnkgcmVzcG9uc2libGUiLCBUUlVFfk5BKSkNCmRhdGEkY2FsPWZjdF9pbm9yZGVyKGRhdGEkY2FsKQ0KdGFibGUoZGF0YSRjYWwsIHVzZU5BID0gImFsd2F5cyIpDQoNCng9eHRhYnMofmNhbCtzdGF0dXMsIGRhdGE9ZGF0YSkNCngNCnk9cm91bmQocHJvcC50YWJsZSh4LDIpLCAzKQ0KeQ0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCg0Kbm90PWRhdGEuZnJhbWUoDQogIHN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKSwNCiAgY291bnQ9Yyh4WzMsMV0sIHhbMywyXSwgeFszLDNdKSwNCiAgcHBuPWMoeVszLDFdLCB5WzMsMl0sIHlbMywzXSkNCikNCm5vdCRleHRlbnQ9YygiTm90IGF0IGFsbCIpDQoNCnNvbWV3aGF0PWRhdGEuZnJhbWUoDQogIHN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKSwNCiAgY291bnQ9Yyh4WzIsMV0sIHhbMiwyXSwgeFsyLDNdKSwNCiAgcHBuPWMoeVsyLDFdLCB5WzIsMl0sIHlbMiwzXSkNCikNCnNvbWV3aGF0JGV4dGVudD1jKCJTb21ld2hhdCIpDQoNCg0KdmVyeT1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFsxLDFdLCB4WzEsMl0sIHhbMSwzXSksDQogIHBwbj1jKHlbMSwxXSwgeVsxLDJdLCB5WzEsM10pDQopDQp2ZXJ5JGV4dGVudD1jKCJWZXJ5IikNCg0KY2hhbmdlc190YWJsZT1hcy5kYXRhLmZyYW1lKHJiaW5kKG5vdCwgc29tZXdoYXQsIHZlcnkpKQ0KDQpzdGFnZT1jKCIgICAiLCAiUHJlIiwgIlByZSIsICJQcmUiLCAiUGVyaSIsICJQZXJpIiwiUGVyaSIsIlBvc3QiLCJQb3N0IiwiUG9zdCIpDQpSZXNwb25zZT1jKCIgICIsICJOb3QgYXQgYWxsIiwgInNvbWV3aGF0IiwgInZlcnkiLCAiTm90IGF0IGFsbCIsICJzb21ld2hhdCIsICJ2ZXJ5IiwgIk5vdCBhdCBhbGwiLCAic29tZXdoYXQiLCAidmVyeSIgKQ0KSXRlbT1jKCJJbmNyZWFzZWQgY2Fsb3JpZSBpbnRha2UiLCB4WzMsMV0sIHhbMiwxXSx4WzEsMV0sIHhbMywyXSx4WzIsMl0seFsxLDJdLHhbMywzXSx4WzIsM10seFsxLDNdKQ0KUHBuPWMoIkluY3JlYXNlZCBjYWxvcmllIGludGFrZSIsIHlbMywxXSwgeVsyLDFdLCB5WzEsMV0sIHlbMywyXSx5WzIsMl0seVsxLDJdLHlbMywzXSx5WzIsM10seVsxLDNdKQ0KUTM1YT1yYmluZChzdGFnZSwgUmVzcG9uc2UsIEl0ZW0sIFBwbikNCmBgYA0KDQojIyAzNWIgQ2hhbmdlcyBpbiBXb3Jrb3V0IFJvdXRpbmUNCg0KYGBge3IgUTM1Yn0NCg0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShjaGFuZ2U9Y2FzZV93aGVuKEJGX1dLVENIQU5HRT09MX4iTm90IGF0IGFsbCByZXNwb25zaWJsZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIEJGX1dLVENIQU5HRT09Mn4iU29tZXdoYXQgcmVzcG9uc2libGUiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgQkZfV0tUQ0hBTkdFPT0zfiJWZXJ5IHJlc3BvbnNpYmxlIiwgVFJVRX5OQSkpDQpkYXRhJGNoYW5nZT1mY3RfaW5vcmRlcihkYXRhJGNoYW5nZSkNCnRhYmxlKGRhdGEkY2hhbmdlLCB1c2VOQSA9ICJhbHdheXMiKQ0KDQp4PXh0YWJzKH5jaGFuZ2Urc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQp5PXJvdW5kKHByb3AudGFibGUoeCwyKSwgMykNCnkNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQoNCm5vdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFszLDFdLCB4WzMsMl0sIHhbMywzXSksDQogIHBwbj1jKHlbMywxXSwgeVszLDJdLCB5WzMsM10pDQopDQpub3QkZXh0ZW50PWMoIk5vdCBhdCBhbGwiKQ0KDQpzb21ld2hhdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFsyLDFdLCB4WzIsMl0sIHhbMiwzXSksDQogIHBwbj1jKHlbMiwxXSwgeVsyLDJdLCB5WzIsM10pDQopDQpzb21ld2hhdCRleHRlbnQ9YygiU29tZXdoYXQiKQ0KDQoNCnZlcnk9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMSwxXSwgeFsxLDJdLCB4WzEsM10pLA0KICBwcG49Yyh5WzEsMV0sIHlbMSwyXSwgeVsxLDNdKQ0KKQ0KdmVyeSRleHRlbnQ9YygiVmVyeSIpDQoNCmNoYW5nZXNfdGFibGU9YXMuZGF0YS5mcmFtZShyYmluZChub3QsIHNvbWV3aGF0LCB2ZXJ5KSkNCg0KI2thYmxlKGNoYW5nZXNfdGFibGUsIGZvcm1hdD0iaHRtbCIsIGNhcHRpb249IkNoYW5nZXMgaW4gd29ya291dCByb3V0aW5lIikgJT4lDQogIyBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIpLCBmdWxsX3dpZHRoID0gRikNCg0KSXRlbT1jKCJDaGFuZ2VzIGluIFdvcmtvdXQiLCB4WzMsMV0sIHhbMiwxXSx4WzEsMV0sIHhbMywyXSx4WzIsMl0seFsxLDJdLHhbMywzXSx4WzIsM10seFsxLDNdKQ0KUHBuPWMoIkNoYW5nZXMgaW4gV29ya291dCIsIHlbMywxXSwgeVsyLDFdLCB5WzEsMV0sIHlbMywyXSx5WzIsMl0seVsxLDJdLHlbMywzXSx5WzIsM10seVsxLDNdKQ0KUTM1Yj1yYmluZChJdGVtLCBQcG4pDQpgYGANCg0KIyMgMzVjIFNsZWVwIERlcHJhdmF0aW9uDQoNCmBgYHtyIFEzNWN9DQpkYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKHNsZWVwPWNhc2Vfd2hlbihCRl9TTEVFUERFUD09MX4iTm90IGF0IGFsbCByZXNwb25zaWJsZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIEJGX1NMRUVQREVQPT0yfiJTb21ld2hhdCByZXNwb25zaWJsZSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBCRl9TTEVFUERFUD09M34iVmVyeSByZXNwb25zaWJsZSIsIFRSVUV+TkEpKQ0KZGF0YSRzbGVlcD1mY3RfaW5vcmRlcihkYXRhJHNsZWVwKQ0KdGFibGUoZGF0YSRzbGVlcCwgdXNlTkEgPSAiYWx3YXlzIikNCg0KeD14dGFicyh+c2xlZXArc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQp5PXJvdW5kKHByb3AudGFibGUoeCwyKSwgMykNCnkNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQoNCm5vdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFszLDFdLCB4WzMsMl0sIHhbMywzXSksDQogIHBwbj1jKHlbMywxXSwgeVszLDJdLCB5WzMsM10pDQopDQpub3QkZXh0ZW50PWMoIk5vdCBhdCBhbGwiKQ0KDQpzb21ld2hhdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFsyLDFdLCB4WzIsMl0sIHhbMiwzXSksDQogIHBwbj1jKHlbMiwxXSwgeVsyLDJdLCB5WzIsM10pDQopDQpzb21ld2hhdCRleHRlbnQ9YygiU29tZXdoYXQiKQ0KDQoNCnZlcnk9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMSwxXSwgeFsxLDJdLCB4WzEsM10pLA0KICBwcG49Yyh5WzEsMV0sIHlbMSwyXSwgeVsxLDNdKQ0KKQ0KdmVyeSRleHRlbnQ9YygiVmVyeSIpDQoNCmNoYW5nZXNfdGFibGU9YXMuZGF0YS5mcmFtZShyYmluZChub3QsIHNvbWV3aGF0LCB2ZXJ5KSkNCg0KI2thYmxlKGNoYW5nZXNfdGFibGUsIGZvcm1hdD0iaHRtbCIsIGNhcHRpb249IlNsZWVwIERlcHJhdmF0aW9uIikgJT4lDQogIyBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIpLCBmdWxsX3dpZHRoID0gRikNCg0KSXRlbT1jKCJTbGVlcCIsIHhbMywxXSwgeFsyLDFdLHhbMSwxXSwgeFszLDJdLHhbMiwyXSx4WzEsMl0seFszLDNdLHhbMiwzXSx4WzEsM10pDQpQcG49YygiU2xlZXAiLCB5WzMsMV0sIHlbMiwxXSwgeVsxLDFdLCB5WzMsMl0seVsyLDJdLHlbMSwyXSx5WzMsM10seVsyLDNdLHlbMSwzXSkNClEzNWM9cmJpbmQoSXRlbSwgUHBuKQ0KYGBgDQoNCiMjIDM1ZCBTdHJlc3MNCg0KYGBge3IgUTM1ZH0NCg0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShzdHJlc3M9Y2FzZV93aGVuKEJGX1NUUkVTUz09MX4iTm90IGF0IGFsbCByZXNwb25zaWJsZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIEJGX1NUUkVTUz09Mn4iU29tZXdoYXQgcmVzcG9uc2libGUiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgQkZfU1RSRVNTPT0zfiJWZXJ5IHJlc3BvbnNpYmxlIiwgVFJVRX5OQSkpDQpkYXRhJHN0cmVzcz1mY3RfaW5vcmRlcihkYXRhJHN0cmVzcykNCnRhYmxlKGRhdGEkc3RyZXNzLCB1c2VOQSA9ICJhbHdheXMiKQ0KDQp4PXh0YWJzKH5zdHJlc3Mrc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQp5PXJvdW5kKHByb3AudGFibGUoeCwyKSwgMykNCnkNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQoNCm5vdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFszLDFdLCB4WzMsMl0sIHhbMywzXSksDQogIHBwbj1jKHlbMywxXSwgeVszLDJdLCB5WzMsM10pDQopDQpub3QkZXh0ZW50PWMoIk5vdCBhdCBhbGwiKQ0KDQpzb21ld2hhdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFsyLDFdLCB4WzIsMl0sIHhbMiwzXSksDQogIHBwbj1jKHlbMiwxXSwgeVsyLDJdLCB5WzIsM10pDQopDQpzb21ld2hhdCRleHRlbnQ9YygiU29tZXdoYXQiKQ0KDQoNCnZlcnk9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMSwxXSwgeFsxLDJdLCB4WzEsM10pLA0KICBwcG49Yyh5WzEsMV0sIHlbMSwyXSwgeVsxLDNdKQ0KKQ0KdmVyeSRleHRlbnQ9YygiVmVyeSIpDQoNCmNoYW5nZXNfdGFibGU9YXMuZGF0YS5mcmFtZShyYmluZChub3QsIHNvbWV3aGF0LCB2ZXJ5KSkNCg0KI2thYmxlKGNoYW5nZXNfdGFibGUsIGZvcm1hdD0iaHRtbCIsIGNhcHRpb249IkNoYW5nZXMgaW4gd29ya291dCByb3V0aW5lIikgJT4lDQogIyBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIpLCBmdWxsX3dpZHRoID0gRikNCg0KSXRlbT1jKCJTdHJlc3MiLCB4WzMsMV0sIHhbMiwxXSx4WzEsMV0sIHhbMywyXSx4WzIsMl0seFsxLDJdLHhbMywzXSx4WzIsM10seFsxLDNdKQ0KUHBuPWMoIlN0cmVzcyIsIHlbMywxXSwgeVsyLDFdLCB5WzEsMV0sIHlbMywyXSx5WzIsMl0seVsxLDJdLHlbMywzXSx5WzIsM10seVsxLDNdKQ0KUTM1ZD1yYmluZChJdGVtLCBQcG4pDQpgYGANCg0KIyMgMzVlIEZhdGlndWUgb3IgTGFjayBvZiBFbmVyZ3kNCg0KYGBge3IgUTM1ZX0NCg0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShsb3c9Y2FzZV93aGVuKEJGX0xPV0VORVJHPT0xfiJOb3QgYXQgYWxsIHJlc3BvbnNpYmxlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgQkZfTE9XRU5FUkc9PTJ+IlNvbWV3aGF0IHJlc3BvbnNpYmxlIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIEJGX0xPV0VORVJHPT0zfiJWZXJ5IHJlc3BvbnNpYmxlIiwgVFJVRX5OQSkpDQpkYXRhJGxvdz1mY3RfaW5vcmRlcihkYXRhJGxvdykNCnRhYmxlKGRhdGEkbG93LCB1c2VOQSA9ICJhbHdheXMiKQ0KDQp4PXh0YWJzKH5sb3crc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQp5PXJvdW5kKHByb3AudGFibGUoeCwyKSwgMykNCnkNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQoNCm5vdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFszLDFdLCB4WzMsMl0sIHhbMywzXSksDQogIHBwbj1jKHlbMywxXSwgeVszLDJdLCB5WzMsM10pDQopDQpub3QkZXh0ZW50PWMoIk5vdCBhdCBhbGwiKQ0KDQpzb21ld2hhdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFsyLDFdLCB4WzIsMl0sIHhbMiwzXSksDQogIHBwbj1jKHlbMiwxXSwgeVsyLDJdLCB5WzIsM10pDQopDQpzb21ld2hhdCRleHRlbnQ9YygiU29tZXdoYXQiKQ0KDQoNCnZlcnk9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMSwxXSwgeFsxLDJdLCB4WzEsM10pLA0KICBwcG49Yyh5WzEsMV0sIHlbMSwyXSwgeVsxLDNdKQ0KKQ0KdmVyeSRleHRlbnQ9YygiVmVyeSIpDQoNCmNoYW5nZXNfdGFibGU9YXMuZGF0YS5mcmFtZShyYmluZChub3QsIHNvbWV3aGF0LCB2ZXJ5KSkNCg0KI2thYmxlKGNoYW5nZXNfdGFibGUsIGZvcm1hdD0iaHRtbCIsIGNhcHRpb249IkNGYXRpcXVlIG9yIExvdyBFbmVyZ3kiKSAlPiUNCiAjIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiksIGZ1bGxfd2lkdGggPSBGKQ0KDQpJdGVtPWMoIkZhdGlndWUiLCB4WzMsMV0sIHhbMiwxXSx4WzEsMV0sIHhbMywyXSx4WzIsMl0seFsxLDJdLHhbMywzXSx4WzIsM10seFsxLDNdKQ0KUHBuPWMoIkZhdGlndWUiLCB5WzMsMV0sIHlbMiwxXSwgeVsxLDFdLCB5WzMsMl0seVsyLDJdLHlbMSwyXSx5WzMsM10seVsyLDNdLHlbMSwzXSkNClEzNWU9cmJpbmQoSXRlbSwgUHBuKQ0KYGBgDQoNCiMjIDM1ZiBIb3Jtb25hbCBDaGFuZ2VzDQoNCmBgYHtyIFEzNWZ9DQoNCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUoaG9ybW9uZT1jYXNlX3doZW4oQkZfSFJNQ0hBTkdFPT0xfiJOb3QgYXQgYWxsIHJlc3BvbnNpYmxlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgQkZfSFJNQ0hBTkdFPT0yfiJTb21ld2hhdCByZXNwb25zaWJsZSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBCRl9IUk1DSEFOR0U9PTN+IlZlcnkgcmVzcG9uc2libGUiLCBUUlVFfk5BKSkNCmRhdGEkaG9ybW9uZT1mY3RfaW5vcmRlcihkYXRhJGhvcm1vbmUpDQp0YWJsZShkYXRhJGhvcm1vbmUsIHVzZU5BID0gImFsd2F5cyIpDQoNCng9eHRhYnMofmhvcm1vbmUrc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQp5PXJvdW5kKHByb3AudGFibGUoeCwyKSwgMykNCnkNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQoNCm5vdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFszLDFdLCB4WzMsMl0sIHhbMywzXSksDQogIHBwbj1jKHlbMywxXSwgeVszLDJdLCB5WzMsM10pDQopDQpub3QkZXh0ZW50PWMoIk5vdCBhdCBhbGwiKQ0KDQpzb21ld2hhdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFsyLDFdLCB4WzIsMl0sIHhbMiwzXSksDQogIHBwbj1jKHlbMiwxXSwgeVsyLDJdLCB5WzIsM10pDQopDQpzb21ld2hhdCRleHRlbnQ9YygiU29tZXdoYXQiKQ0KDQoNCnZlcnk9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMSwxXSwgeFsxLDJdLCB4WzEsM10pLA0KICBwcG49Yyh5WzEsMV0sIHlbMSwyXSwgeVsxLDNdKQ0KKQ0KdmVyeSRleHRlbnQ9YygiVmVyeSIpDQoNCmNoYW5nZXNfdGFibGU9YXMuZGF0YS5mcmFtZShyYmluZChub3QsIHNvbWV3aGF0LCB2ZXJ5KSkNCg0KI2thYmxlKGNoYW5nZXNfdGFibGUsIGZvcm1hdD0iaHRtbCIsIGNhcHRpb249Ikhvcm1vbmFsIENoYW5nZXMiKSAlPiUNCiAjIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiksIGZ1bGxfd2lkdGggPSBGKQ0KDQpJdGVtPWMoIkhvcm1vbmFsIGNoYW5nZXMiLCB4WzMsMV0sIHhbMiwxXSx4WzEsMV0sIHhbMywyXSx4WzIsMl0seFsxLDJdLHhbMywzXSx4WzIsM10seFsxLDNdKQ0KUHBuPWMoIkhvcm1vbmFsIGNoYW5nZXMiLCB5WzMsMV0sIHlbMiwxXSwgeVsxLDFdLCB5WzMsMl0seVsyLDJdLHlbMSwyXSx5WzMsM10seVsyLDNdLHlbMSwzXSkNClEzNWY9cmJpbmQoSXRlbSwgUHBuKQ0KYGBgDQoNCiMjIDM1ZyBSZWR1Y2VkIERhaWx5IEFjdGl2aXRpZXMvTW92ZW1lbnQNCg0KYGBge3IgUTM1Z30NCg0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShtb3ZlPWNhc2Vfd2hlbihCRl9NT1ZFTEVTUz09MX4iTm90IGF0IGFsbCByZXNwb25zaWJsZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIEJGX01PVkVMRVNTPT0yfiJTb21ld2hhdCByZXNwb25zaWJsZSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBCRl9NT1ZFTEVTUz09M34iVmVyeSByZXNwb25zaWJsZSIsIFRSVUV+TkEpKQ0KZGF0YSRtb3ZlPWZjdF9pbm9yZGVyKGRhdGEkbW92ZSkNCnRhYmxlKGRhdGEkbW92ZSwgdXNlTkEgPSAiYWx3YXlzIikNCg0KeD14dGFicyh+bW92ZStzdGF0dXMsIGRhdGE9ZGF0YSkNCngNCnk9cm91bmQocHJvcC50YWJsZSh4LDIpLCAzKQ0KeQ0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCg0Kbm90PWRhdGEuZnJhbWUoDQogIHN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKSwNCiAgY291bnQ9Yyh4WzMsMV0sIHhbMywyXSwgeFszLDNdKSwNCiAgcHBuPWMoeVszLDFdLCB5WzMsMl0sIHlbMywzXSkNCikNCm5vdCRleHRlbnQ9YygiTm90IGF0IGFsbCIpDQoNCnNvbWV3aGF0PWRhdGEuZnJhbWUoDQogIHN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKSwNCiAgY291bnQ9Yyh4WzIsMV0sIHhbMiwyXSwgeFsyLDNdKSwNCiAgcHBuPWMoeVsyLDFdLCB5WzIsMl0sIHlbMiwzXSkNCikNCnNvbWV3aGF0JGV4dGVudD1jKCJTb21ld2hhdCIpDQoNCg0KdmVyeT1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFsxLDFdLCB4WzEsMl0sIHhbMSwzXSksDQogIHBwbj1jKHlbMSwxXSwgeVsxLDJdLCB5WzEsM10pDQopDQp2ZXJ5JGV4dGVudD1jKCJWZXJ5IikNCg0KY2hhbmdlc190YWJsZT1hcy5kYXRhLmZyYW1lKHJiaW5kKG5vdCwgc29tZXdoYXQsIHZlcnkpKQ0KDQoja2FibGUoY2hhbmdlc190YWJsZSwgZm9ybWF0PSJodG1sIiwgY2FwdGlvbj0iUmVkdWNlZCBEYWlseSBBY3Rpdml0aWVzL01vdmVtZW50IikgJT4lDQogIyBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIpLCBmdWxsX3dpZHRoID0gRikNCg0KSXRlbT1jKCJSZWR1Y2VkIGFjdGl2aXRpZXMiLCB4WzMsMV0sIHhbMiwxXSx4WzEsMV0sIHhbMywyXSx4WzIsMl0seFsxLDJdLHhbMywzXSx4WzIsM10seFsxLDNdKQ0KUHBuPWMoIlJlZHVjZWQgYWN0aXZpdGllcyIsIHlbMywxXSwgeVsyLDFdLCB5WzEsMV0sIHlbMywyXSx5WzIsMl0seVsxLDJdLHlbMywzXSx5WzIsM10seVsxLDNdKQ0KUTM1Zz1yYmluZChJdGVtLCBQcG4pDQpgYGANCg0KYGBgIHtyfQ0KdGFiPXJiaW5kKFEzNWEsIFEzNWIsIFEzNWMsIFEzNWQsIFEzNWUsIFEzNWYsIFEzNWcpDQoNCmthYmxlKHRhYikNCmBgYA0KDQoNCg0KDQojIFF1ZXN0aW9uICMzNiBXZWlnaHQgbG9zcyByZXNpc3RhbmNlDQotIFBsZWFzZSBjb25kdWN0IGFuIGFuYWx5c2lzIG9mIHN0YXRpc3RpY2FsIHNpZ25pZmljYW5jZSBiZXR3ZWVuIHRoZSB0aHJlZSBncm91cHMgKFByZTsgUGVyaTsgUG9zdCkgY3VycmVudGx5IGV4cGVyaWVuY2luZyB3ZWlnaHQgbG9zcyByZXNpc3RhbmNlIEJldHdlZW4tR3JvdXAgQ29tcGFyaXNvbjogDQotIElzIHRoZXJlIGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGluIHRoZSBudW1iZXIgb2Yg4oCYWWVz4oCZIHJlc3BvbnNlcyBiZXR3ZWVuIHdvbWVuIHdobyBhcmUgcHJlbWVub3BhdXNhbCwgcGVyaW1lbm9wYXVzYWwsIGFuZCBwb3N0bWVub3BhdXNhbD8gDQoNCipBIENoaS1zcXVhcmUgdGVzdCBvZiBpbmRlcGVuZGVuY2Ugd2FzIGNvbmR1Y3RlZCB0byBhc3Nlc3MgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHBlcmNlaXZlZCB3ZWlnaHQgZ2FpbiBhbmQgbWVub3BhdXNhbCBzdGF0dXMuIEEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBhc3NvY2lhdGlvbiB3YXMgZm91bmQsIFgyKGRmPTYpPTYwLjU1NCwgcD0uMDAwMDAwMDAwMDMuIENyYW1lcidzIFYgd2FzIHNtYWxsIGF0IFY9MC4wOSwgOTUlIENJKDAuMDcsIDAuMTEpLiAqDQoNCmBgYHtyIFEzNiwgaW5jbHVkZT1UfQ0KDQoNCg0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZSh3bHI9Y2FzZV93aGVuKFdMUj09MX4iWWVzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXTFI9PTJ+Ik5vIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICBXTFI9PTN+IkkgZG9uJ3Qga25vdyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBXTFI9PTR+IkRvZXMgTm90IEFwcGx5IiwgVFJVRX5OQSkpDQoNCmRhdGEkd2xyIDwtIGZhY3RvcihkYXRhJHdsciwgbGV2ZWxzID0gYygiWWVzIiwgIk5vIiwgIkkgZG9uJ3Qga25vdyIsICJEb2VzIE5vdCBBcHBseSIpKQ0KdGFibGUoZGF0YSR3bHIsIHVzZU5BID0gImFsd2F5cyIpDQp4PXh0YWJzKH53bHIrc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQpwcm9wLnRhYmxlKHgsMikNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQpyZXN1bHQNCnJlc3VsdCRleHBlY3RlZA0KI3ByZQ0KcHJvcC50ZXN0KDIxMiwgMjEyKzEzMis2Nys4NSkNCiNwZXJpDQpwcm9wLnRlc3QoMTAzMiwgMTAzMisyNzQrMTUxKzM2NikNCiNwb3N0DQpwcm9wLnRlc3QoMTExNywgMTExNysyNjIrMTQ0KzMwNikNCiAgICAgICAgICANCmI9ZGF0YS5mcmFtZSgNCm51bT1jKDIxMiwgMTAzMiwgMTExNyksDQpkZW49YygyMTIrMTMyKzY3Kzg1LCAxMDMyKzI3NCsxNTErMzY2LCAxMTE3KzI2MisxNDQrMzA2KSwNCnN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKQ0KKQ0KcGFpcndpc2UucHJvcC50ZXN0KHg9YiRudW0sIG49YiRkZW4sIHAuYWRqdXN0Lm1ldGhvZCA9ICJob2xtIikNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCiMgQ3JlYXRlIGEgc2FtcGxlIGRhdGEgZnJhbWUgDQojIEVuc3VyZSB5b3VyIGRhdGEgZnJhbWUgaGFzIGNvbHVtbnMgZm9yIHRoZSB4LWF4aXMgdmFyaWFibGUsIHRoZSBncm91cGluZyB2YXJpYWJsZSwgDQojIHRoZSBtZWFuIHZhbHVlLCBhbmQgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi9lcnJvci4NCmRmIDwtIGRhdGEuZnJhbWUoDQogIHggPSBjKCJQcmUiLCAiUGVyaSIsICJQb3N0IiksDQogIHkgPSBjKC40MjcsIC41NjYsIC42MTEpLA0KICB5bWluID0gYyguMzg0LCAuNTIzLCAuNTg4KSwNCiAgeW1heCA9IGMoLjQ3MiwgLjU4OSwgLjYzMykNCikNCg0KZGYkeD1mY3RfaW5vcmRlcihkZiR4KQ0KI2dncGxvdChkZiwgYWVzKHggPSB4LCB5ID0geSkpICsNCiAjIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC45KSwgZmlsbCA9ICJibHVlIikgKw0KICAjZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IHltaW4sIHltYXggPSB5bWF4KSwNCiAgICMgICAgICAgICAgICAgd2lkdGggPSAwLjEwLCAgIyBXaWR0aCBvZiB0aGUgZXJyb3IgYmFyIGNhcHMNCiAgICAjICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuOSkpICsNCiMgIHNjYWxlX2ZpbGxfZ3JleSgpICsNCiAjIGxhYnModGl0bGUgPSAiV2VpZ2h0IExvc3MgcmVzaXN0YW5jZSIsDQogICMgICAgIHggPSAiTWVub3BhdXNhbCBTdGF0dXMiLA0KICAgIyAgICB5ID0gIlByb3BvcnRpb24iKSArDQojICB0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQojIFF1ZXN0aW9uICMzN2EtZiBGYWN0b3JzIGNvbnRyaWJ1dGluZyB0byBXTFINCg0KIyMgMzdhIENoYW5nZXMgaW4gV29ya291dCBSb3V0aW5lDQoNCi0gICBGb3IgZWFjaCBjZWxsIGluIHRoZSB0YWJsZSwgcGxlYXNlIHByb3ZpZGUgdGhlIG4gc2l6ZSBhbmQgdGhlICUgb2YgcmVzcG9uZGVudHMNCg0KYGBge3IgUTM3YX0NCg0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShjaGFuZ2U9Y2FzZV93aGVuKFdMUl9XS1RDSEFOR0U9PTF+Ik5vdCBhdCBhbGwgcmVzcG9uc2libGUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBXTFJfV0tUQ0hBTkdFPT0yfiJTb21ld2hhdCByZXNwb25zaWJsZSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBXTFJfV0tUQ0hBTkdFPT0zfiJWZXJ5IHJlc3BvbnNpYmxlIiwgVFJVRX5OQSkpDQpkYXRhJGNoYW5nZT1mY3RfaW5vcmRlcihkYXRhJGNoYW5nZSkNCnRhYmxlKGRhdGEkY2hhbmdlLCB1c2VOQSA9ICJhbHdheXMiKQ0KDQp4PXh0YWJzKH5jaGFuZ2Urc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQp5PXJvdW5kKHByb3AudGFibGUoeCwyKSwgMykNCnkNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQoNCm5vdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFszLDFdLCB4WzMsMl0sIHhbMywzXSksDQogIHBwbj1jKHlbMywxXSwgeVszLDJdLCB5WzMsM10pDQopDQpub3QkZXh0ZW50PWMoIk5vdCBhdCBhbGwiKQ0KDQpzb21ld2hhdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFsyLDFdLCB4WzIsMl0sIHhbMiwzXSksDQogIHBwbj1jKHlbMiwxXSwgeVsyLDJdLCB5WzIsM10pDQopDQpzb21ld2hhdCRleHRlbnQ9YygiU29tZXdoYXQiKQ0KDQoNCnZlcnk9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMSwxXSwgeFsxLDJdLCB4WzEsM10pLA0KICBwcG49Yyh5WzEsMV0sIHlbMSwyXSwgeVsxLDNdKQ0KKQ0KdmVyeSRleHRlbnQ9YygiVmVyeSIpDQoNCmNoYW5nZXNfdGFibGU9YXMuZGF0YS5mcmFtZShyYmluZChub3QsIHNvbWV3aGF0LCB2ZXJ5KSkNCg0KI2thYmxlKGNoYW5nZXNfdGFibGUsIGZvcm1hdD0iaHRtbCIsIGNhcHRpb249IkNoYW5nZXMgaW4gd29ya291dCByb3V0aW5lIikgJT4lDQogIyBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIpLCBmdWxsX3dpZHRoID0gRikNCg0Kc3RhZ2U9YygiICAgIiwgIlByZSIsICJQcmUiLCAiUHJlIiwgIlBlcmkiLCAiUGVyaSIsIlBlcmkiLCJQb3N0IiwiUG9zdCIsIlBvc3QiKQ0KUmVzcG9uc2U9YygiICAiLCAiTm90IGF0IGFsbCIsICJzb21ld2hhdCIsICJ2ZXJ5IiwgIk5vdCBhdCBhbGwiLCAic29tZXdoYXQiLCAidmVyeSIsICJOb3QgYXQgYWxsIiwgInNvbWV3aGF0IiwgInZlcnkiICkNCkl0ZW09YygiV29ya291dGNoYW5nZXMiLCB4WzMsMV0sIHhbMiwxXSx4WzEsMV0sIHhbMywyXSx4WzIsMl0seFsxLDJdLHhbMywzXSx4WzIsM10seFsxLDNdKQ0KUHBuPWMoIldvcmtvdXRjaGFuZ2VzIiwgeVszLDFdLCB5WzIsMV0sIHlbMSwxXSwgeVszLDJdLHlbMiwyXSx5WzEsMl0seVszLDNdLHlbMiwzXSx5WzEsM10pDQpRMzdhPXJiaW5kKHN0YWdlLCBSZXNwb25zZSwgSXRlbSwgUHBuKQ0KYGBgDQoNCiMjIDM3YiBTbGVlcCBEZXByYXZhdGlvbg0KDQpgYGB7ciBRMzdifQ0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShzbGVlcD1jYXNlX3doZW4oV0xSX1NMUD09MX4iTm90IGF0IGFsbCByZXNwb25zaWJsZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIFdMUl9TTFA9PTJ+IlNvbWV3aGF0IHJlc3BvbnNpYmxlIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIFdMUl9TTFA9PTN+IlZlcnkgcmVzcG9uc2libGUiLCBUUlVFfk5BKSkNCmRhdGEkc2xlZXA9ZmN0X2lub3JkZXIoZGF0YSRzbGVlcCkNCnRhYmxlKGRhdGEkc2xlZXAsIHVzZU5BID0gImFsd2F5cyIpDQoNCng9eHRhYnMofnNsZWVwK3N0YXR1cywgZGF0YT1kYXRhKQ0KeA0KeT1yb3VuZChwcm9wLnRhYmxlKHgsMiksIDMpDQp5DQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KDQpub3Q9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMywxXSwgeFszLDJdLCB4WzMsM10pLA0KICBwcG49Yyh5WzMsMV0sIHlbMywyXSwgeVszLDNdKQ0KKQ0Kbm90JGV4dGVudD1jKCJOb3QgYXQgYWxsIikNCg0Kc29tZXdoYXQ9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMiwxXSwgeFsyLDJdLCB4WzIsM10pLA0KICBwcG49Yyh5WzIsMV0sIHlbMiwyXSwgeVsyLDNdKQ0KKQ0Kc29tZXdoYXQkZXh0ZW50PWMoIlNvbWV3aGF0IikNCg0KDQp2ZXJ5PWRhdGEuZnJhbWUoDQogIHN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKSwNCiAgY291bnQ9Yyh4WzEsMV0sIHhbMSwyXSwgeFsxLDNdKSwNCiAgcHBuPWMoeVsxLDFdLCB5WzEsMl0sIHlbMSwzXSkNCikNCnZlcnkkZXh0ZW50PWMoIlZlcnkiKQ0KDQpjaGFuZ2VzX3RhYmxlPWFzLmRhdGEuZnJhbWUocmJpbmQobm90LCBzb21ld2hhdCwgdmVyeSkpDQoNCiNrYWJsZShjaGFuZ2VzX3RhYmxlLCBmb3JtYXQ9Imh0bWwiLCBjYXB0aW9uPSJTbGVlcCBEZXByYXZhdGlvbiIpICU+JQ0KICMga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiKSwgZnVsbF93aWR0aCA9IEYpDQoNCg0KSXRlbT1jKCJTbGVlcCIsIHhbMywxXSwgeFsyLDFdLHhbMSwxXSx4WzMsMl0seFsyLDJdLHhbMSwyXSx4WzMsM10seFsyLDNdLHhbMSwzXSkNClBwbj1jKCJTbGVlcCIsIHlbMywxXSwgeVsyLDFdLCB5WzEsMV0sIHlbMywyXSx5WzIsMl0seVsxLDJdLHlbMywzXSx5WzIsM10seVsxLDNdKQ0KUTM3Yj1yYmluZChJdGVtLCBQcG4pDQpgYGANCg0KIyMgMzdjIFN0cmVzcw0KDQpgYGB7ciBRMzdjfQ0KDQpkYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKHN0cmVzcz1jYXNlX3doZW4oV0xSX1NUUkVTUz09MX4iTm90IGF0IGFsbCByZXNwb25zaWJsZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIFdMUl9TVFJFU1M9PTJ+IlNvbWV3aGF0IHJlc3BvbnNpYmxlIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIFdMUl9TVFJFU1M9PTN+IlZlcnkgcmVzcG9uc2libGUiLCBUUlVFfk5BKSkNCmRhdGEkc3RyZXNzPWZjdF9pbm9yZGVyKGRhdGEkc3RyZXNzKQ0KdGFibGUoZGF0YSRzdHJlc3MsIHVzZU5BID0gImFsd2F5cyIpDQoNCng9eHRhYnMofnN0cmVzcytzdGF0dXMsIGRhdGE9ZGF0YSkNCngNCnk9cm91bmQocHJvcC50YWJsZSh4LDIpLCAzKQ0KeQ0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCg0Kbm90PWRhdGEuZnJhbWUoDQogIHN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKSwNCiAgY291bnQ9Yyh4WzMsMV0sIHhbMywyXSwgeFszLDNdKSwNCiAgcHBuPWMoeVszLDFdLCB5WzMsMl0sIHlbMywzXSkNCikNCm5vdCRleHRlbnQ9YygiTm90IGF0IGFsbCIpDQoNCnNvbWV3aGF0PWRhdGEuZnJhbWUoDQogIHN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKSwNCiAgY291bnQ9Yyh4WzIsMV0sIHhbMiwyXSwgeFsyLDNdKSwNCiAgcHBuPWMoeVsyLDFdLCB5WzIsMl0sIHlbMiwzXSkNCikNCnNvbWV3aGF0JGV4dGVudD1jKCJTb21ld2hhdCIpDQoNCg0KdmVyeT1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFsxLDFdLCB4WzEsMl0sIHhbMSwzXSksDQogIHBwbj1jKHlbMSwxXSwgeVsxLDJdLCB5WzEsM10pDQopDQp2ZXJ5JGV4dGVudD1jKCJWZXJ5IikNCg0KY2hhbmdlc190YWJsZT1hcy5kYXRhLmZyYW1lKHJiaW5kKG5vdCwgc29tZXdoYXQsIHZlcnkpKQ0KDQoja2FibGUoY2hhbmdlc190YWJsZSwgZm9ybWF0PSJodG1sIiwgY2FwdGlvbj0iQ2hhbmdlcyBpbiB3b3Jrb3V0IHJvdXRpbmUiKSAlPiUNCiAjIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiksIGZ1bGxfd2lkdGggPSBGKQ0KDQpJdGVtPWMoIlN0cmVzcyIsIHhbMywxXSwgeFsyLDFdLHhbMSwxXSx4WzMsMl0seFsyLDJdLHhbMSwyXSx4WzMsM10seFsyLDNdLHhbMSwzXSkNClBwbj1jKCJTdHJlc3MiLCB5WzMsMV0sIHlbMiwxXSwgeVsxLDFdLCB5WzMsMl0seVsyLDJdLHlbMSwyXSx5WzMsM10seVsyLDNdLHlbMSwzXSkNClEzN2M9cmJpbmQoSXRlbSwgUHBuKQ0KYGBgDQoNCiMjIDM3ZCBGYXRpZ3VlIG9yIExhY2sgb2YgRW5lcmd5DQoNCmBgYHtyIFEzN2R9DQoNCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUobG93PWNhc2Vfd2hlbihXTFJfTE9XRU5FUkc9PTF+Ik5vdCBhdCBhbGwgcmVzcG9uc2libGUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBXTFJfTE9XRU5FUkc9PTJ+IlNvbWV3aGF0IHJlc3BvbnNpYmxlIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIFdMUl9MT1dFTkVSRz09M34iVmVyeSByZXNwb25zaWJsZSIsIFRSVUV+TkEpKQ0KZGF0YSRsb3c9ZmN0X2lub3JkZXIoZGF0YSRsb3cpDQp0YWJsZShkYXRhJGxvdywgdXNlTkEgPSAiYWx3YXlzIikNCg0KeD14dGFicyh+bG93K3N0YXR1cywgZGF0YT1kYXRhKQ0KeA0KeT1yb3VuZChwcm9wLnRhYmxlKHgsMiksIDMpDQp5DQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KDQpub3Q9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMywxXSwgeFszLDJdLCB4WzMsM10pLA0KICBwcG49Yyh5WzMsMV0sIHlbMywyXSwgeVszLDNdKQ0KKQ0Kbm90JGV4dGVudD1jKCJOb3QgYXQgYWxsIikNCg0Kc29tZXdoYXQ9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMiwxXSwgeFsyLDJdLCB4WzIsM10pLA0KICBwcG49Yyh5WzIsMV0sIHlbMiwyXSwgeVsyLDNdKQ0KKQ0Kc29tZXdoYXQkZXh0ZW50PWMoIlNvbWV3aGF0IikNCg0KDQp2ZXJ5PWRhdGEuZnJhbWUoDQogIHN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKSwNCiAgY291bnQ9Yyh4WzEsMV0sIHhbMSwyXSwgeFsxLDNdKSwNCiAgcHBuPWMoeVsxLDFdLCB5WzEsMl0sIHlbMSwzXSkNCikNCnZlcnkkZXh0ZW50PWMoIlZlcnkiKQ0KDQpjaGFuZ2VzX3RhYmxlPWFzLmRhdGEuZnJhbWUocmJpbmQobm90LCBzb21ld2hhdCwgdmVyeSkpDQoNCiNrYWJsZShjaGFuZ2VzX3RhYmxlLCBmb3JtYXQ9Imh0bWwiLCBjYXB0aW9uPSJDRmF0aXF1ZSBvciBMb3cgRW5lcmd5IikgJT4lDQogIyBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIpLCBmdWxsX3dpZHRoID0gRikNCg0KSXRlbT1jKCJGYXRpZ3VlIiwgeFszLDFdLCB4WzIsMV0seFsxLDFdLHhbMywyXSx4WzIsMl0seFsxLDJdLHhbMywzXSx4WzIsM10seFsxLDNdKQ0KUHBuPWMoIkZhdGlndWUiLCB5WzMsMV0sIHlbMiwxXSwgeVsxLDFdLCB5WzMsMl0seVsyLDJdLHlbMSwyXSx5WzMsM10seVsyLDNdLHlbMSwzXSkNClEzN2Q9cmJpbmQoSXRlbSwgUHBuKQ0KYGBgDQoNCiMjIDM3ZSBIb3Jtb25hbCBDaGFuZ2VzDQoNCmBgYHtyIFEzN2V9DQoNCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUoaG9ybW9uZT1jYXNlX3doZW4oV0xSX0hSTUNIQU5HRT09MX4iTm90IGF0IGFsbCByZXNwb25zaWJsZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIFdMUl9IUk1DSEFOR0U9PTJ+IlNvbWV3aGF0IHJlc3BvbnNpYmxlIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIFdMUl9IUk1DSEFOR0U9PTN+IlZlcnkgcmVzcG9uc2libGUiLCBUUlVFfk5BKSkNCmRhdGEkaG9ybW9uZT1mY3RfaW5vcmRlcihkYXRhJGhvcm1vbmUpDQp0YWJsZShkYXRhJGhvcm1vbmUsIHVzZU5BID0gImFsd2F5cyIpDQoNCng9eHRhYnMofmhvcm1vbmUrc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQp5PXJvdW5kKHByb3AudGFibGUoeCwyKSwgMykNCnkNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQoNCm5vdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFszLDFdLCB4WzMsMl0sIHhbMywzXSksDQogIHBwbj1jKHlbMywxXSwgeVszLDJdLCB5WzMsM10pDQopDQpub3QkZXh0ZW50PWMoIk5vdCBhdCBhbGwiKQ0KDQpzb21ld2hhdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFsyLDFdLCB4WzIsMl0sIHhbMiwzXSksDQogIHBwbj1jKHlbMiwxXSwgeVsyLDJdLCB5WzIsM10pDQopDQpzb21ld2hhdCRleHRlbnQ9YygiU29tZXdoYXQiKQ0KDQoNCnZlcnk9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMSwxXSwgeFsxLDJdLCB4WzEsM10pLA0KICBwcG49Yyh5WzEsMV0sIHlbMSwyXSwgeVsxLDNdKQ0KKQ0KdmVyeSRleHRlbnQ9YygiVmVyeSIpDQoNCmNoYW5nZXNfdGFibGU9YXMuZGF0YS5mcmFtZShyYmluZChub3QsIHNvbWV3aGF0LCB2ZXJ5KSkNCg0KI2thYmxlKGNoYW5nZXNfdGFibGUsIGZvcm1hdD0iaHRtbCIsIGNhcHRpb249Ikhvcm1vbmFsIENoYW5nZXMiKSAlPiUNCiAjIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiksIGZ1bGxfd2lkdGggPSBGKQ0KDQoNCkl0ZW09YygiSG9ybW9uYWwgY2hhbmdlcyIsIHhbMywxXSwgeFsyLDFdLHhbMSwxXSx4WzMsMl0seFsyLDJdLHhbMSwyXSx4WzMsM10seFsyLDNdLHhbMSwzXSkNClBwbj1jKCJIb3Jtb25hbCBjaGFuZ2VzIiwgeVszLDFdLCB5WzIsMV0sIHlbMSwxXSwgeVszLDJdLHlbMiwyXSx5WzEsMl0seVszLDNdLHlbMiwzXSx5WzEsM10pDQpRMzdlPXJiaW5kKEl0ZW0sIFBwbikNCmBgYA0KDQojIyAzN2YgUmVkdWNlZCBEYWlseSBBY3Rpdml0aWVzL01vdmVtZW50DQoNCmBgYHtyIFEzN2Z9DQoNCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUobW92ZT1jYXNlX3doZW4oV0xSX01PVkVMRVNTPT0xfiJOb3QgYXQgYWxsIHJlc3BvbnNpYmxlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgV0xSX01PVkVMRVNTPT0yfiJTb21ld2hhdCByZXNwb25zaWJsZSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBXTFJfTU9WRUxFU1M9PTN+IlZlcnkgcmVzcG9uc2libGUiLCBUUlVFfk5BKSkNCmRhdGEkbW92ZT1mY3RfaW5vcmRlcihkYXRhJG1vdmUpDQp0YWJsZShkYXRhJG1vdmUsIHVzZU5BID0gImFsd2F5cyIpDQoNCng9eHRhYnMofm1vdmUrc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQp5PXJvdW5kKHByb3AudGFibGUoeCwyKSwgMykNCnkNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQoNCm5vdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFszLDFdLCB4WzMsMl0sIHhbMywzXSksDQogIHBwbj1jKHlbMywxXSwgeVszLDJdLCB5WzMsM10pDQopDQpub3QkZXh0ZW50PWMoIk5vdCBhdCBhbGwiKQ0KDQpzb21ld2hhdD1kYXRhLmZyYW1lKA0KICBzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IiksDQogIGNvdW50PWMoeFsyLDFdLCB4WzIsMl0sIHhbMiwzXSksDQogIHBwbj1jKHlbMiwxXSwgeVsyLDJdLCB5WzIsM10pDQopDQpzb21ld2hhdCRleHRlbnQ9YygiU29tZXdoYXQiKQ0KDQoNCnZlcnk9ZGF0YS5mcmFtZSgNCiAgc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpLA0KICBjb3VudD1jKHhbMSwxXSwgeFsxLDJdLCB4WzEsM10pLA0KICBwcG49Yyh5WzEsMV0sIHlbMSwyXSwgeVsxLDNdKQ0KKQ0KdmVyeSRleHRlbnQ9YygiVmVyeSIpDQoNCmNoYW5nZXNfdGFibGU9YXMuZGF0YS5mcmFtZShyYmluZChub3QsIHNvbWV3aGF0LCB2ZXJ5KSkNCg0KI2thYmxlKGNoYW5nZXNfdGFibGUsIGZvcm1hdD0iaHRtbCIsIGNhcHRpb249IlJlZHVjZWQgRGFpbHkgQWN0aXZpdGllcy9Nb3ZlbWVudCIpICU+JQ0KICAja2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiKSwgZnVsbF93aWR0aCA9IEYpDQoNCg0KSXRlbT1jKCJSZWR1Y2VkIGFjdGl2aXRlcyIsIHhbMywxXSwgeFsyLDFdLHhbMSwxXSx4WzMsMl0seFsyLDJdLHhbMSwyXSx4WzMsM10seFsyLDNdLHhbMSwzXSkNClBwbj1jKCJSZWR1Y2VkIGFjdGl2aXRpZXMiLCB5WzMsMV0sIHlbMiwxXSwgeVsxLDFdLCB5WzMsMl0seVsyLDJdLHlbMSwyXSx5WzMsM10seVsyLDNdLHlbMSwzXSkNClEzN2Y9cmJpbmQoSXRlbSwgUHBuKQ0KYGBgDQoNCg0KYGBgIHtyfQ0KdGFiPXJiaW5kKFEzN2EsIFEzN2IsIFEzN2MsIFEzN2QsIFEzN2UsIFEzN2YpDQoNCmthYmxlKHRhYikNCmBgYA0KDQpgYGAge3IgYmFycGxvdHMsIGluY2x1ZGU9Rn0=