Based on the article “Sleep and the Allocation of Time”, I created an analysis of the length of sleep and nap time (from the sleep75 data set) in terms of other variables, such as total work time and age.

Correlation matrix of the sleep75 dataset

I created this matrix to have a general view of correlations between different variables in the sleep75 data set.

Warning in cor(data, use = method[1], method = method[2]): the standard
deviation is zero

Creating a basic regression model

From the matrix, the strongest correlation I found for slpnaps was with totwrk. The coefficient of correlation is:

The following object is masked from package:datasets:

    sleep
[1] -0.3425592

Then I created a linear model for sleep&nap time and total work time.

model1 <- lm(slpnaps~totwrk, data = sleep75)
summary(model1)

Call:
lm(formula = slpnaps ~ totwrk, data = sleep75)

Residuals:
     Min       1Q   Median       3Q      Max 
-1950.64  -270.86   -11.23   261.34  2343.88 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) 3766.12461   43.35218  86.873   <2e-16 ***
totwrk        -0.18043    0.01865  -9.674   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 469.2 on 704 degrees of freedom
Multiple R-squared:  0.1173,    Adjusted R-squared:  0.1161 
F-statistic:  93.6 on 1 and 704 DF,  p-value: < 2.2e-16

The intercept tells us that the approximate sleep and nap time for a person who does not work is 3766.1246 minutes (62 hours and 46 minutes) per week.

The equation of sleep and nap time looks like this: slpnaps = 3766.12461 - 0.1804*totwrk

That means increasing the total work time by one hour would decrease the sleep and nap time by 0.1804*60 = 10.824 minutes per week (which is not a lot per night)

Residual standard error: 469.2 on 704 degrees of freedom Multiple R-squared: 0.1173

Scatterplot of sleep time and total work

ggplot(data=sleep75, aes(totwrk,slpnaps)) +
  geom_point() +
  geom_smooth(method = lm)+
  labs(x="total work time", y="sleep and nap time")
`geom_smooth()` using formula = 'y ~ x'

Total work time analysis

ggplot(data=sleep75, aes(factor(male),totwrk)) +
  geom_boxplot() +
  ggtitle("Total work time grouped by sex") +
  labs(x="0 - female, 1 - male", y="total work time")

As you can see, the sleep and nap time was slightly higher for men than for women in the 70s. This brings on a question - Is the sleep time affected by gender?

biserial.cor(slpnaps, male)
[1] 0.05193646

The correlation coefficient between sleep time and gender is very low, which indicates that gender has pretty much no influence on the length of sleep and naps.

Considering wage in the model

As Biddle and Hamermesh mentioned in their article, sleep and nap time is also affected by the earnings of a working person.

model2<-lm(slpnaps ~ totwrk + earns74, data = sleep75,  na.action = na.omit)
summary(model2)

Call:
lm(formula = slpnaps ~ totwrk + earns74, data = sleep75, na.action = na.omit)

Residuals:
     Min       1Q   Median       3Q      Max 
-1966.15  -267.98    -3.06   253.17  2372.15 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  3.789e+03  4.551e+01  83.274   <2e-16 ***
totwrk      -1.768e-01  1.875e-02  -9.428   <2e-16 ***
earns74     -3.177e-03  1.906e-03  -1.667    0.096 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 468.6 on 703 degrees of freedom
Multiple R-squared:  0.1208,    Adjusted R-squared:  0.1183 
F-statistic: 48.31 on 2 and 703 DF,  p-value: < 2.2e-16

This model seems to be slightly better than the previous one. The R-squared is slightly higher and the error rate is lower. However, the problem with the income is that it is dependent on other variables.

The analysis of income

Warning in cor(data, use = method[1], method = method[2]): the standard
deviation is zero

From the correlarion matrix, we can observe a correlation between income and spsepay as well as othinc. Let’s analyze them.

ggplot(data=sleep75,aes(lothinc, earns74, color = factor(male))) +
  geom_point() +
  geom_smooth(method = lm)
`geom_smooth()` using formula = 'y ~ x'

There is some negative correlation between these variables, but it is not very strong:

cor(lothinc,earns74)
[1] -0.3209126
ggplot(data=sleep75,aes(spsepay, earns74)) +
  geom_point() +
  geom_smooth(method = lm) +
  ggtitle("Spouse pay vs income")
`geom_smooth()` using formula = 'y ~ x'

The correlation between earnings and spouse’s earnings is just 0.2433.

cor(spsepay,earns74)
[1] 0.2433129

To sum it up, it is quite difficult to state what impacts the income as it is influenced by many variables. It is also hard to create an accurate linear model for it.

Creating a final version of the model

In this case I want to consider a model defined by the equation: sleep = β0 + β1 x totwork + β2 x educ + β x age + u

model3<-lm(slpnaps ~ totwrk + educ + age, data = sleep75)
summary(model3)

Call:
lm(formula = slpnaps ~ totwrk + educ + age, data = sleep75)

Residuals:
     Min       1Q   Median       3Q      Max 
-1914.12  -277.00    -7.56   277.30  2377.92 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) 3847.54448  124.50279  30.903  < 2e-16 ***
totwrk        -0.17688    0.01851  -9.555  < 2e-16 ***
educ         -16.87035    6.52545  -2.585  0.00993 ** 
age            3.26280    1.60317   2.035  0.04220 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 465 on 702 degrees of freedom
Multiple R-squared:  0.1354,    Adjusted R-squared:  0.1317 
F-statistic: 36.64 on 3 and 702 DF,  p-value: < 2.2e-16

As you can see, more education leads to less sleep and nap time. If we assume that the difference between high school and college is four years, than the sleep time of a person who graduated from college would be 4*16,87 = 67,48 minutes per week lower than a person’s who graduated from high school.

The coefficient for age is positive, so the increase in age leads to an increase in the sleep time(although it is not very significant).

`geom_smooth()` using formula = 'y ~ x'

Including age and education in the model increased the R-squared from 0.1173 to 0.1354. However, it is still a pretty weak correlation since the three variables only explain around 13,5% variation in sleep and nap time.

The RSE of this model is 465.1, which gives us the error rate of value 13,7%. It is a little bit better than in the simple model, where the error rate was ~13,85%

[1] 0.1374576

Diagnostic plots of the regression model

When it comes to the diagnostics plots, the Residuals vs Fitted looks OK and so does the Normal Q-Q, which means the residuals have a roughly linear pattern and are normally distributed. The Scale-Location and Residuals vs Leverage are also not bad.

Overall, even though it is far from perfect, this model seems to be quite good.

Conclusion

The only factor that seems to significantly affect sleeping time is the total work time. Because of the low correlation coefficients, it it hard to state what else might influence the sleep time. However, these models show that sleep is at least partially a consumer’s choice and is influenced by the same variables as our other uses of time.

LS0tCnRpdGxlOiAiU2xlZXAgYW5hbHlzaXMiCmF1dGhvcjogIkFnYXRhIFN0dWtvdyIKZGF0ZTogIjIwMjMtMDYtMTIiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgdGhlbWU6IGNlcnVsZWFuCiAgICBoaWdobGlnaHQ6IHRleHRtYXRlCiAgICBmb250c2l6ZTogOHB0CiAgICB0b2M6IHllcwogICAgY29kZV9kb3dubG9hZDogeWVzCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogbm8KICAgIGRmX3ByaW50OiBkZWZhdWx0CiAgICB0b2NfZGVwdGg6IDUKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiAnNScKZWRpdG9yX29wdGlvbnM6CiAgbWFya2Rvd246CiAgICB3cmFwOiA3MgotLS0KQmFzZWQgb24gdGhlIGFydGljbGUgIlNsZWVwIGFuZCB0aGUgQWxsb2NhdGlvbiBvZiBUaW1lIiwgSSBjcmVhdGVkIGFuIGFuYWx5c2lzIG9mIHRoZSBsZW5ndGggb2Ygc2xlZXAgYW5kIG5hcCB0aW1lIChmcm9tIHRoZSBzbGVlcDc1IGRhdGEgc2V0KSBpbiB0ZXJtcyBvZiBvdGhlciB2YXJpYWJsZXMsIHN1Y2ggYXMgdG90YWwgd29yayB0aW1lIGFuZCBhZ2UuCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgY29tbWVudCA9ICIiKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGNvcnJwbG90KQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShoYXZlbikKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGdyaWRFeHRyYSkKbGlicmFyeShwcGNvcikgIyB0aGlzIHBhY2thZ2UgY29tcHV0ZXMgcGFydGlhbCBhbmQgc2VtaXBhcnRpYWwgY29ycmVsYXRpb25zLgpsaWJyYXJ5KGx0bSkgIyB0aGlzIHBhY2thZ2UgY29tcHV0ZXMgcG9pbnQtYmlzZXJpYWwgY29ycmVsYXRpb25zLgpsaWJyYXJ5KGRldnRvb2xzKSAKaW5zdGFsbF9naXRodWIoIm1hcmtoZWNrbWFubi9yeW91cmVhZHkiKSAjIHBsZWFzZSBpbnN0YWxsIHBhY2thZ2UgInJ5b3VyZWFkeSIgZnJvbSBnaXRodWIhICh0aGVuICMgaXQpCmxpYnJhcnkocnlvdXJlYWR5KSAjIHRoaXMgcGFja2FnZSBjb21wdXRlcyBub25saW5lYXIgImV0YSIgY29ycmVsYXRpb25zLgpsaWJyYXJ5KEdHYWxseSkgIyB0aGlzIHBhY2thZ2UgY29tcHV0ZXMgY29ycmVsYXRpb24gbWF0cml4LgpsaWJyYXJ5KHBzeWNoKSAjIHRoaXMgcGFja2FnZSBjb21wdXRlcyBxdWFsaXRhdGl2ZSBjb3JyZWxhdGlvbnMuCmxpYnJhcnkoRGVzY1Rvb2xzKSAjIHRoaXMgcGFja2FnZSBjb21wdXRlcyBxdWFsaXRhdGl2ZSBjb3JyZWxhdGlvbnMuCmxpYnJhcnkod29vbGRyaWRnZSkKbGlicmFyeShwbG90M0QpCmBgYAoKCiMjIENvcnJlbGF0aW9uIG1hdHJpeCBvZiB0aGUgc2xlZXA3NSBkYXRhc2V0CgpJIGNyZWF0ZWQgdGhpcyBtYXRyaXggdG8gaGF2ZSBhIGdlbmVyYWwgdmlldyBvZiBjb3JyZWxhdGlvbnMgYmV0d2VlbiBkaWZmZXJlbnQgdmFyaWFibGVzIGluIHRoZSBzbGVlcDc1IGRhdGEgc2V0LgoKYGBge3IgbWF0cml4RX0KY29yX21hdHJpeCA8LSBjb3Ioc2xlZXA3NSkgICAgICAgICAgICAgICAgICAgICAgCmNvcl9tYXRyaXhfcm0gPC0gY29yX21hdHJpeCAgICAgICAgICAgICAgICAgCmNvcl9tYXRyaXhfcm1bdXBwZXIudHJpKGNvcl9tYXRyaXhfcm0pXSA8LSAwCmRpYWcoY29yX21hdHJpeF9ybSkgPC0gMApkYXRhX25ldyA8LSBzbGVlcDc1WyAsICFhcHBseShjb3JfbWF0cml4X3JtLDIsIGZ1bmN0aW9uKHgpIGFueShhYnMoeCkgPiAwLjk5LCBuYS5ybSA9IFRSVUUpKV0KI2NvcnJwbG90KGNvcihkYXRhX25ldyx1c2U9InBhaXJ3aXNlLmNvbXBsZXRlLm9icyIpLCBtZXRob2QgPSAnY2lyY2xlJywgdHlwZT0idXBwZXIiLCBvcmRlciA9ICJhbHBoYWJldCIpCmdnY29ycihkYXRhX25ldywgbWV0aG9kID0gYygicGFpcndpc2UiLCAicGVhcnNvbiIpLCBkaWdpdHMgPSAyLCBsYWJlbF9hbHBoYSA9IFRSVUUpCmBgYAoKIyMgQ3JlYXRpbmcgYSBiYXNpYyByZWdyZXNzaW9uIG1vZGVsCgpGcm9tIHRoZSBtYXRyaXgsIHRoZSBzdHJvbmdlc3QgY29ycmVsYXRpb24gSSBmb3VuZCBmb3Igc2xwbmFwcyB3YXMgd2l0aCB0b3R3cmsuIFRoZSBjb2VmZmljaWVudCBvZiBjb3JyZWxhdGlvbiBpczoKCmBgYHtyIGNvcjF9CmF0dGFjaChzbGVlcDc1KQpjb3IodG90d3JrLHNscG5hcHMpCmBgYAoKClRoZW4gSSBjcmVhdGVkIGEgbGluZWFyIG1vZGVsIGZvciBzbGVlcCZuYXAgdGltZSBhbmQgdG90YWwgd29yayB0aW1lLgoKYGBge3IgbGluZWFyIG1vZGVsLGVjaG89VFJVRX0KbW9kZWwxIDwtIGxtKHNscG5hcHN+dG90d3JrLCBkYXRhID0gc2xlZXA3NSkKc3VtbWFyeShtb2RlbDEpCmBgYAoKVGhlIGludGVyY2VwdCB0ZWxscyB1cyB0aGF0IHRoZSBhcHByb3hpbWF0ZSBzbGVlcCBhbmQgbmFwIHRpbWUgZm9yIGEgcGVyc29uIHdobyBkb2VzIG5vdCB3b3JrIGlzIDM3NjYuMTI0NiBtaW51dGVzICg2MiBob3VycyBhbmQgNDYgbWludXRlcykgcGVyIHdlZWsuCgpUaGUgZXF1YXRpb24gb2Ygc2xlZXAgYW5kIG5hcCB0aW1lIGxvb2tzIGxpa2UgdGhpczoKc2xwbmFwcyA9IDM3NjYuMTI0NjEgLSAwLjE4MDQqdG90d3JrCgpUaGF0IG1lYW5zIGluY3JlYXNpbmcgdGhlIHRvdGFsIHdvcmsgdGltZSBieSBvbmUgaG91ciB3b3VsZCBkZWNyZWFzZSB0aGUgc2xlZXAgYW5kIG5hcCB0aW1lIGJ5IDAuMTgwNCo2MCA9IDEwLjgyNCBtaW51dGVzIHBlciB3ZWVrICh3aGljaCBpcyBub3QgYSBsb3QgcGVyIG5pZ2h0KSAgIAoKUmVzaWR1YWwgc3RhbmRhcmQgZXJyb3I6IDQ2OS4yIG9uIDcwNCBkZWdyZWVzIG9mIGZyZWVkb20KTXVsdGlwbGUgUi1zcXVhcmVkOiAwLjExNzMKCiMjIFNjYXR0ZXJwbG90IG9mIHNsZWVwIHRpbWUgYW5kIHRvdGFsIHdvcmsKCmBgYHtyIHNjYXR0ZXIxLCBlY2hvPVRSVUV9CmdncGxvdChkYXRhPXNsZWVwNzUsIGFlcyh0b3R3cmssc2xwbmFwcykpICsKICBnZW9tX3BvaW50KCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9IGxtKSsKICBsYWJzKHg9InRvdGFsIHdvcmsgdGltZSIsIHk9InNsZWVwIGFuZCBuYXAgdGltZSIpCmBgYAoKIyMgVG90YWwgd29yayB0aW1lIGFuYWx5c2lzIAoKYGBge3Igd29yaywgZWNobz1UUlVFfQpnZ3Bsb3QoZGF0YT1zbGVlcDc1LCBhZXMoZmFjdG9yKG1hbGUpLHRvdHdyaykpICsKICBnZW9tX2JveHBsb3QoKSArCiAgZ2d0aXRsZSgiVG90YWwgd29yayB0aW1lIGdyb3VwZWQgYnkgc2V4IikgKwogIGxhYnMoeD0iMCAtIGZlbWFsZSwgMSAtIG1hbGUiLCB5PSJ0b3RhbCB3b3JrIHRpbWUiKQpgYGAKCkFzIHlvdSBjYW4gc2VlLCB0aGUgc2xlZXAgYW5kIG5hcCB0aW1lIHdhcyBzbGlnaHRseSBoaWdoZXIgZm9yIG1lbiB0aGFuIGZvciB3b21lbiBpbiB0aGUgNzBzLiBUaGlzIGJyaW5ncyBvbiBhIHF1ZXN0aW9uIC0gSXMgdGhlIHNsZWVwIHRpbWUgYWZmZWN0ZWQgYnkgZ2VuZGVyPwoKYGBge3IgbWVuIGNvciwgZWNobyA9IFRSVUV9CmJpc2VyaWFsLmNvcihzbHBuYXBzLCBtYWxlKQpgYGAKVGhlIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50IGJldHdlZW4gc2xlZXAgdGltZSBhbmQgZ2VuZGVyIGlzIHZlcnkgbG93LCB3aGljaCBpbmRpY2F0ZXMgdGhhdCBnZW5kZXIgaGFzIHByZXR0eSBtdWNoIG5vIGluZmx1ZW5jZSBvbiB0aGUgbGVuZ3RoIG9mIHNsZWVwIGFuZCBuYXBzLiAKCiMjIENvbnNpZGVyaW5nIHdhZ2UgaW4gdGhlIG1vZGVsCgpBcyBCaWRkbGUgYW5kIEhhbWVybWVzaCBtZW50aW9uZWQgaW4gdGhlaXIgYXJ0aWNsZSwgc2xlZXAgYW5kIG5hcCB0aW1lIGlzIGFsc28gYWZmZWN0ZWQgYnkgdGhlIGVhcm5pbmdzIG9mIGEgd29ya2luZyBwZXJzb24uCgpgYGB7ciBtMiwgZWNobz1UUlVFfQptb2RlbDI8LWxtKHNscG5hcHMgfiB0b3R3cmsgKyBlYXJuczc0LCBkYXRhID0gc2xlZXA3NSwgIG5hLmFjdGlvbiA9IG5hLm9taXQpCnN1bW1hcnkobW9kZWwyKQpgYGAKVGhpcyBtb2RlbCBzZWVtcyB0byBiZSBzbGlnaHRseSBiZXR0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lLiBUaGUgUi1zcXVhcmVkIGlzIHNsaWdodGx5IGhpZ2hlciBhbmQgdGhlIGVycm9yIHJhdGUgaXMgbG93ZXIuIEhvd2V2ZXIsIHRoZSBwcm9ibGVtIHdpdGggdGhlIGluY29tZSBpcyB0aGF0IGl0IGlzIGRlcGVuZGVudCBvbiBvdGhlciB2YXJpYWJsZXMuCgojIyBUaGUgYW5hbHlzaXMgb2YgaW5jb21lIAoKYGBge3IgY29ybWF0fQpjb3JfbWF0cml4IDwtIGNvcihzbGVlcDc1KSAgICAgICAgICAgICAgICAgICAgICAKY29yX21hdHJpeF9ybSA8LSBjb3JfbWF0cml4ICAgICAgICAgICAgICAgICAKY29yX21hdHJpeF9ybVt1cHBlci50cmkoY29yX21hdHJpeF9ybSldIDwtIDAKZGlhZyhjb3JfbWF0cml4X3JtKSA8LSAwCmRhdGFfbmV3IDwtIHNsZWVwNzVbICwgIWFwcGx5KGNvcl9tYXRyaXhfcm0sMiwgZnVuY3Rpb24oeCkgYW55KGFicyh4KSA+IDAuOTksIG5hLnJtID0gVFJVRSkpXQojY29ycnBsb3QoY29yKGRhdGFfbmV3LHVzZT0icGFpcndpc2UuY29tcGxldGUub2JzIiksIG1ldGhvZCA9ICdjaXJjbGUnLCB0eXBlPSJ1cHBlciIsIG9yZGVyID0gImFscGhhYmV0IikKZ2djb3JyKGRhdGFfbmV3LCBtZXRob2QgPSBjKCJwYWlyd2lzZSIsICJwZWFyc29uIiksIGRpZ2l0cyA9IDIsIGxhYmVsX2FscGhhID0gVFJVRSkKYGBgCgpGcm9tIHRoZSBjb3JyZWxhcmlvbiBtYXRyaXgsIHdlIGNhbiBvYnNlcnZlIGEgY29ycmVsYXRpb24gYmV0d2VlbiBpbmNvbWUgYW5kIHNwc2VwYXkgYXMgd2VsbCBhcyBvdGhpbmMuIExldCdzIGFuYWx5emUgdGhlbS4KCgpgYGB7ciBpbmMxLCBlY2hvPVRSVUV9CmdncGxvdChkYXRhPXNsZWVwNzUsYWVzKGxvdGhpbmMsIGVhcm5zNzQsIGNvbG9yID0gZmFjdG9yKG1hbGUpKSkgKwogIGdlb21fcG9pbnQoKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gbG0pCmBgYAoKVGhlcmUgaXMgc29tZSBuZWdhdGl2ZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZXNlIHZhcmlhYmxlcywgYnV0IGl0IGlzIG5vdCB2ZXJ5IHN0cm9uZzoKCmBgYHtyIG90aGNvciwgZWNobz1UUlVFfQpjb3IobG90aGluYyxlYXJuczc0KQpgYGAKCgpgYGB7ciBpbmMyLCBlY2hvPVRSVUV9CmdncGxvdChkYXRhPXNsZWVwNzUsYWVzKHNwc2VwYXksIGVhcm5zNzQpKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSBsbSkgKwogIGdndGl0bGUoIlNwb3VzZSBwYXkgdnMgaW5jb21lIikKYGBgCgpUaGUgY29ycmVsYXRpb24gYmV0d2VlbiBlYXJuaW5ncyBhbmQgc3BvdXNlJ3MgZWFybmluZ3MgaXMganVzdCAwLjI0MzMuCmBgYHtyIHNwc2NvciwgZWNobyA9VFJVRX0KY29yKHNwc2VwYXksZWFybnM3NCkKYGBgCgpUbyBzdW0gaXQgdXAsIGl0IGlzIHF1aXRlIGRpZmZpY3VsdCB0byBzdGF0ZSB3aGF0IGltcGFjdHMgdGhlIGluY29tZSBhcyBpdCBpcyBpbmZsdWVuY2VkIGJ5IG1hbnkgdmFyaWFibGVzLiBJdCBpcyBhbHNvIGhhcmQgdG8gY3JlYXRlIGFuIGFjY3VyYXRlIGxpbmVhciBtb2RlbCBmb3IgaXQuCgojIyBDcmVhdGluZyBhIGZpbmFsIHZlcnNpb24gb2YgdGhlIG1vZGVsCgpJbiB0aGlzIGNhc2UgSSB3YW50IHRvIGNvbnNpZGVyIGEgbW9kZWwgZGVmaW5lZCBieSB0aGUgZXF1YXRpb246CnNsZWVwID0gIM6yMCArIM6yMSB4IHRvdHdvcmsgKyDOsjIgeCBlZHVjICsgzrIgeCBhZ2UgKyB1CgpgYGB7ciBjb21wIG1vZGVsLCBlY2hvPVRSVUV9Cm1vZGVsMzwtbG0oc2xwbmFwcyB+IHRvdHdyayArIGVkdWMgKyBhZ2UsIGRhdGEgPSBzbGVlcDc1KQpzdW1tYXJ5KG1vZGVsMykKYGBgCkFzIHlvdSBjYW4gc2VlLCBtb3JlIGVkdWNhdGlvbiBsZWFkcyB0byBsZXNzIHNsZWVwIGFuZCBuYXAgdGltZS4gSWYgd2UgYXNzdW1lIHRoYXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBoaWdoIHNjaG9vbCBhbmQgY29sbGVnZSBpcyBmb3VyIHllYXJzLCB0aGFuIHRoZSBzbGVlcCB0aW1lIG9mIGEgcGVyc29uIHdobyBncmFkdWF0ZWQgZnJvbSBjb2xsZWdlIHdvdWxkIGJlIDQqMTYsODcgPSA2Nyw0OCBtaW51dGVzIHBlciB3ZWVrIGxvd2VyIHRoYW4gYSBwZXJzb24ncyB3aG8gZ3JhZHVhdGVkIGZyb20gaGlnaCBzY2hvb2wuCgpUaGUgY29lZmZpY2llbnQgZm9yIGFnZSBpcyBwb3NpdGl2ZSwgc28gdGhlIGluY3JlYXNlIGluIGFnZSBsZWFkcyB0byBhbiBpbmNyZWFzZSBpbiB0aGUgc2xlZXAgdGltZShhbHRob3VnaCBpdCBpcyBub3QgdmVyeSBzaWduaWZpY2FudCkuIAoKYGBge3IgYWdlfQpnZ3Bsb3QoZGF0YT1zbGVlcDc1LGFlcyhhZ2Usc2xwbmFwcyxjb2xvciA9IGZhY3RvcihtYWxlKSkgKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSBsbSkgKwogIGdndGl0bGUoIkFnZSB2cyBzbGVlcCBhbmQgbmFwIHRpbWUgZm9yIGJvdGggc2V4ZXMiKQogIApgYGAKCkluY2x1ZGluZyBhZ2UgYW5kIGVkdWNhdGlvbiBpbiB0aGUgbW9kZWwgaW5jcmVhc2VkIHRoZSBSLXNxdWFyZWQgZnJvbSAwLjExNzMgdG8gMC4xMzU0LiBIb3dldmVyLCBpdCBpcyBzdGlsbCBhIHByZXR0eSB3ZWFrIGNvcnJlbGF0aW9uIHNpbmNlIHRoZSB0aHJlZSB2YXJpYWJsZXMgb25seSBleHBsYWluIGFyb3VuZCAxMyw1JSB2YXJpYXRpb24gaW4gc2xlZXAgYW5kIG5hcCB0aW1lLgoKVGhlIFJTRSBvZiB0aGlzIG1vZGVsIGlzIDQ2NS4xLCB3aGljaCBnaXZlcyB1cyB0aGUgZXJyb3IgcmF0ZSBvZiB2YWx1ZSAxMyw3JS4KSXQgaXMgYSBsaXR0bGUgYml0IGJldHRlciB0aGFuIGluIHRoZSBzaW1wbGUgbW9kZWwsIHdoZXJlIHRoZSBlcnJvciByYXRlIHdhcyB+MTMsODUlCmBgYHtyIHJzZTIsIGVjaG8gdHJ1ZX0Kc2lnbWEobW9kZWwzKS9tZWFuKHNsZWVwNzUkc2xwbmFwcykKYGBgCgojIyBEaWFnbm9zdGljIHBsb3RzIG9mIHRoZSByZWdyZXNzaW9uIG1vZGVsCgpgYGB7ciBtb2RlbDN9CnBsb3QobW9kZWwzKQpgYGAKCgpXaGVuIGl0IGNvbWVzIHRvIHRoZSBkaWFnbm9zdGljcyBwbG90cywgdGhlIFJlc2lkdWFscyB2cyBGaXR0ZWQgbG9va3MgT0sgYW5kIHNvIGRvZXMgdGhlIE5vcm1hbCBRLVEsIHdoaWNoIG1lYW5zIHRoZSByZXNpZHVhbHMgaGF2ZSBhIHJvdWdobHkgbGluZWFyIHBhdHRlcm4gYW5kIGFyZSBub3JtYWxseSBkaXN0cmlidXRlZC4gVGhlIFNjYWxlLUxvY2F0aW9uIGFuZCBSZXNpZHVhbHMgdnMgTGV2ZXJhZ2UgYXJlIGFsc28gbm90IGJhZC4KCk92ZXJhbGwsIGV2ZW4gdGhvdWdoIGl0IGlzIGZhciBmcm9tIHBlcmZlY3QsIHRoaXMgbW9kZWwgc2VlbXMgdG8gYmUgcXVpdGUgZ29vZC4gCgojIyBDb25jbHVzaW9uIAoKVGhlIG9ubHkgZmFjdG9yIHRoYXQgc2VlbXMgdG8gc2lnbmlmaWNhbnRseSBhZmZlY3Qgc2xlZXBpbmcgdGltZSBpcyB0aGUgdG90YWwgd29yayB0aW1lLiBCZWNhdXNlIG9mIHRoZSBsb3cgY29ycmVsYXRpb24gY29lZmZpY2llbnRzLCBpdCBpdCBoYXJkIHRvIHN0YXRlIHdoYXQgZWxzZSBtaWdodCBpbmZsdWVuY2UgdGhlIHNsZWVwIHRpbWUuIEhvd2V2ZXIsIHRoZXNlIG1vZGVscyBzaG93IHRoYXQgc2xlZXAgaXMgYXQgbGVhc3QgcGFydGlhbGx5IGEgY29uc3VtZXIncyBjaG9pY2UgYW5kIGlzIGluZmx1ZW5jZWQgYnkgdGhlIHNhbWUgdmFyaWFibGVzIGFzIG91ciBvdGhlciB1c2VzIG9mIHRpbWUu