.

titraina=data.frame(traina)
glimpse(titraina)
Rows: 950
Columns: 41
$ X1                              <dbl> 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357...
$ iso_code                        <chr> "ARG", "ARG", "ARG", "ARG", "ARG", "ARG", "ARG...
$ continent                       <chr> "South America", "South America", "South Ameri...
$ location                        <chr> "Argentina", "Argentina", "Argentina", "Argent...
$ date                            <date> 2020-02-11, 2020-02-12, 2020-02-13, 2020-02-1...
$ total_cases                     <dbl> 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ new_cases                       <dbl> 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ new_cases_smoothed              <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ total_deaths                    <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ new_deaths                      <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ new_deaths_smoothed             <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ total_cases_per_million         <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ new_cases_per_million           <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ new_cases_smoothed_per_million  <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ total_deaths_per_million        <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ new_deaths_per_million          <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ new_deaths_smoothed_per_million <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ new_tests                       <dbl> 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0...
$ total_tests                     <dbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 5, 5...
$ total_tests_per_thousand        <dbl> 0, NA, NA, NA, NA, NA, NA, NA, NA, 0, NA, NA, ...
$ new_tests_per_thousand          <dbl> 0, NA, NA, NA, NA, NA, NA, NA, NA, 0, NA, NA, ...
$ new_tests_smoothed              <dbl> NA, NA, NA, NA, NA, NA, NA, 0, 0, 0, 0, 0, 0, ...
$ new_tests_smoothed_per_thousand <dbl> NA, NA, NA, NA, NA, NA, NA, 0, 0, 0, 0, 0, 0, ...
$ tests_per_case                  <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ positive_rate                   <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ tests_units                     <chr> "people tested", "people tested", "people test...
$ stringency_index                <dbl> 11.11, 11.11, 11.11, 11.11, 11.11, 11.11, 11.1...
$ population                      <dbl> 45195777, 45195777, 45195777, 45195777, 451957...
$ population_density              <dbl> 16177, 16177, 16177, 16177, 16177, 16177, 1617...
$ median_age                      <dbl> 31.9, 31.9, 31.9, 31.9, 31.9, 31.9, 31.9, 31.9...
$ aged_65_older                   <dbl> 11198, 11198, 11198, 11198, 11198, 11198, 1119...
$ aged_70_older                   <dbl> 7441, 7441, 7441, 7441, 7441, 7441, 7441, 7441...
$ gdp_per_capita                  <dbl> 18933907, 18933907, 18933907, 18933907, 189339...
$ extreme_poverty                 <dbl> 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0...
$ cardiovasc_death_rate           <dbl> 191032, 191032, 191032, 191032, 191032, 191032...
$ diabetes_prevalence             <dbl> 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5...
$ female_smokers                  <dbl> 16.2, 16.2, 16.2, 16.2, 16.2, 16.2, 16.2, 16.2...
$ male_smokers                    <dbl> 27.7, 27.7, 27.7, 27.7, 27.7, 27.7, 27.7, 27.7...
$ handwashing_facilities          <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ hospital_beds_per_thousand      <dbl> 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5...
$ life_expectancy                 <dbl> 76.67, 76.67, 76.67, 76.67, 76.67, 76.67, 76.6...

se carga data set y se ve variables

unicos<-function(x)length(unique(x))
datounico <- titraina %>%
        dplyr::summarise_all(list(unicos = unicos)) %>%
             t()
datounico
                                       [,1]
X1_unicos                               950
iso_code_unicos                           4
continent_unicos                          2
location_unicos                           4
date_unicos                             248
total_cases_unicos                      725
new_cases_unicos                        665
new_cases_smoothed_unicos               723
total_deaths_unicos                     655
new_deaths_unicos                       398
new_deaths_smoothed_unicos              545
total_cases_per_million_unicos          746
new_cases_per_million_unicos            702
new_cases_smoothed_per_million_unicos   734
total_deaths_per_million_unicos         685
new_deaths_per_million_unicos           484
new_deaths_smoothed_per_million_unicos  586
new_tests_unicos                        733
total_tests_unicos                      771
total_tests_per_thousand_unicos         685
new_tests_per_thousand_unicos           461
new_tests_smoothed_unicos               706
new_tests_smoothed_per_thousand_unicos  450
tests_per_case_unicos                   673
positive_rate_unicos                    311
tests_units_unicos                        3
stringency_index_unicos                  41
population_unicos                         4
population_density_unicos                 4
median_age_unicos                         4
aged_65_older_unicos                      4
aged_70_older_unicos                      4
gdp_per_capita_unicos                     4
extreme_poverty_unicos                    4
cardiovasc_death_rate_unicos              4
diabetes_prevalence_unicos                4
female_smokers_unicos                     4
male_smokers_unicos                       4
handwashing_facilities_unicos             2
hospital_beds_per_thousand_unicos         4
life_expectancy_unicos                    4
sapply(titraina, function(x) sum(is.na(x)))
                             X1                        iso_code 
                              0                               0 
                      continent                        location 
                              0                               0 
                           date                     total_cases 
                              0                              29 
                      new_cases              new_cases_smoothed 
                             29                              46 
                   total_deaths                      new_deaths 
                             30                              30 
            new_deaths_smoothed         total_cases_per_million 
                             46                              33 
          new_cases_per_million  new_cases_smoothed_per_million 
                             33                              46 
       total_deaths_per_million          new_deaths_per_million 
                             33                              33 
new_deaths_smoothed_per_million                       new_tests 
                             46                             160 
                    total_tests        total_tests_per_thousand 
                            158                             177 
         new_tests_per_thousand              new_tests_smoothed 
                            183                             185 
new_tests_smoothed_per_thousand                  tests_per_case 
                            185                             259 
                  positive_rate                     tests_units 
                            207                             157 
               stringency_index                      population 
                             35                               0 
             population_density                      median_age 
                              0                               0 
                  aged_65_older                   aged_70_older 
                              0                               0 
                 gdp_per_capita                 extreme_poverty 
                              0                               0 
          cardiovasc_death_rate             diabetes_prevalence 
                              0                               0 
                 female_smokers                    male_smokers 
                              0                               0 
         handwashing_facilities      hospital_beds_per_thousand 
                            702                               0 
                life_expectancy 
                              0 
cant<-sapply(titraina, function(x) sum(is.na(x)))
sum(cant)
[1] 2842
glimpse(datofilt)
Rows: 950
Columns: 19
$ date                       <date> 2020-02-11, 2020-02-12, 2020-02-13, 2020-02-14, 2...
$ location                   <chr> "Argentina", "Argentina", "Argentina", "Argentina"...
$ total_cases                <dbl> 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ new_cases                  <dbl> 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
$ total_deaths               <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ new_deaths                 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ population_density         <dbl> 16177, 16177, 16177, 16177, 16177, 16177, 16177, 1...
$ new_tests                  <dbl> 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 5,...
$ total_tests                <dbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 5, 5, 10...
$ tests_per_case             <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
$ median_age                 <dbl> 31.9, 31.9, 31.9, 31.9, 31.9, 31.9, 31.9, 31.9, 31...
$ aged_65_older              <dbl> 11198, 11198, 11198, 11198, 11198, 11198, 11198, 1...
$ gdp_per_capita             <dbl> 18933907, 18933907, 18933907, 18933907, 18933907, ...
$ extreme_poverty            <dbl> 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, ...
$ cardiovasc_death_rate      <dbl> 191032, 191032, 191032, 191032, 191032, 191032, 19...
$ diabetes_prevalence        <dbl> 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, ...
$ female_smokers             <dbl> 16.2, 16.2, 16.2, 16.2, 16.2, 16.2, 16.2, 16.2, 16...
$ male_smokers               <dbl> 27.7, 27.7, 27.7, 27.7, 27.7, 27.7, 27.7, 27.7, 27...
$ hospital_beds_per_thousand <dbl> 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,...
rs<-round(cor(datofilt[,3:19],use="complete.obs"),3)
rs
                           total_cases new_cases total_deaths new_deaths
total_cases                      1.000     0.889        0.954      0.486
new_cases                        0.889     1.000        0.882      0.650
total_deaths                     0.954     0.882        1.000      0.570
new_deaths                       0.486     0.650        0.570      1.000
population_density               0.109     0.139        0.208      0.291
new_tests                        0.928     0.919        0.933      0.519
total_tests                      0.990     0.861        0.916      0.398
tests_per_case                  -0.070    -0.137       -0.079     -0.183
median_age                       0.261     0.270        0.236      0.133
aged_65_older                    0.286     0.303        0.243      0.130
gdp_per_capita                   0.534     0.589        0.545      0.440
extreme_poverty                  0.022     0.036        0.123      0.213
cardiovasc_death_rate            0.001     0.034       -0.028      0.003
diabetes_prevalence              0.251     0.288        0.365      0.416
female_smokers                   0.478     0.551        0.429      0.327
male_smokers                     0.192     0.250        0.161      0.158
hospital_beds_per_thousand      -0.071    -0.066       -0.172     -0.214
                           population_density new_tests total_tests tests_per_case
total_cases                             0.109     0.928       0.990         -0.070
new_cases                               0.139     0.919       0.861         -0.137
total_deaths                            0.208     0.933       0.916         -0.079
new_deaths                              0.291     0.519       0.398         -0.183
population_density                      1.000     0.065       0.050         -0.368
new_tests                               0.065     1.000       0.914         -0.043
total_tests                             0.050     0.914       1.000         -0.018
tests_per_case                         -0.368    -0.043      -0.018          1.000
median_age                             -0.675     0.347       0.298          0.457
aged_65_older                          -0.769     0.376       0.321          0.407
gdp_per_capita                         -0.353     0.633       0.535          0.281
extreme_poverty                         0.983    -0.028      -0.027         -0.297
cardiovasc_death_rate                   0.217    -0.037      -0.040         -0.482
diabetes_prevalence                     0.898     0.240       0.200         -0.183
female_smokers                         -0.492     0.556       0.464         -0.039
male_smokers                            0.107     0.185       0.146         -0.451
hospital_beds_per_thousand             -0.619    -0.064      -0.057         -0.097
                           median_age aged_65_older gdp_per_capita extreme_poverty
total_cases                     0.261         0.286          0.534           0.022
new_cases                       0.270         0.303          0.589           0.036
total_deaths                    0.236         0.243          0.545           0.123
new_deaths                      0.133         0.130          0.440           0.213
population_density             -0.675        -0.769         -0.353           0.983
new_tests                       0.347         0.376          0.633          -0.028
total_tests                     0.298         0.321          0.535          -0.027
tests_per_case                  0.457         0.407          0.281          -0.297
median_age                      1.000         0.975          0.887          -0.642
aged_65_older                   0.975         1.000          0.867          -0.767
gdp_per_capita                  0.887         0.867          1.000          -0.379
extreme_poverty                -0.642        -0.767         -0.379           1.000
cardiovasc_death_rate          -0.713        -0.542         -0.560           0.080
diabetes_prevalence            -0.287        -0.435          0.038           0.910
female_smokers                  0.443         0.613          0.580          -0.635
male_smokers                   -0.494        -0.302         -0.281          -0.059
hospital_beds_per_thousand     -0.028         0.185         -0.153          -0.718
                           cardiovasc_death_rate diabetes_prevalence female_smokers
total_cases                                0.001               0.251          0.478
new_cases                                  0.034               0.288          0.551
total_deaths                              -0.028               0.365          0.429
new_deaths                                 0.003               0.416          0.327
population_density                         0.217               0.898         -0.492
new_tests                                 -0.037               0.240          0.556
total_tests                               -0.040               0.200          0.464
tests_per_case                            -0.482              -0.183         -0.039
median_age                                -0.713              -0.287          0.443
aged_65_older                             -0.542              -0.435          0.613
gdp_per_capita                            -0.560               0.038          0.580
extreme_poverty                            0.080               0.910         -0.635
cardiovasc_death_rate                      1.000              -0.187          0.294
diabetes_prevalence                       -0.187               1.000         -0.446
female_smokers                             0.294              -0.446          1.000
male_smokers                               0.953              -0.218          0.558
hospital_beds_per_thousand                 0.632              -0.858          0.644
                           male_smokers hospital_beds_per_thousand
total_cases                       0.192                     -0.071
new_cases                         0.250                     -0.066
total_deaths                      0.161                     -0.172
new_deaths                        0.158                     -0.214
population_density                0.107                     -0.619
new_tests                         0.185                     -0.064
total_tests                       0.146                     -0.057
tests_per_case                   -0.451                     -0.097
median_age                       -0.494                     -0.028
aged_65_older                    -0.302                      0.185
gdp_per_capita                   -0.281                     -0.153
extreme_poverty                  -0.059                     -0.718
cardiovasc_death_rate             0.953                      0.632
diabetes_prevalence              -0.218                     -0.858
female_smokers                    0.558                      0.644
male_smokers                      1.000                      0.687
hospital_beds_per_thousand        0.687                      1.000

op <− par(mfrow = c(2, 2))


ggplot(arg, aes(arg$tests_per_case    , arg$new_deaths, color = "red")) +
  geom_point()
ggplot(mex, aes(mex$tests_per_case    , mex$new_deaths, color = "red")) +
  geom_point()

ggplot(can, aes(can$tests_per_case    , can$new_deaths, color = "red")) +
  geom_point()

ggplot(eu, aes(eu$tests_per_case    , eu$new_deaths, color = "red")) +
  geom_point()

Se observa una fuerte correlacion entre total muertes, total casos y total test -mayores de 65 mayor gdp -mayor total casos mas diabetes (al igual q DBT, muerte) -mayor pobreza, mayor DBT y fumadores -mayor camas, mayor tasa de hearth y menor DBT, mayores 65 menos fumadores

new case con new deaths, esta variable se seguira investigando (test per case al aumenta disminuye levemente new deaths)

sapply(datofilt[,4:19], function(x) quantile(x))
     new_cases total_deaths new_deaths population_density  new_tests
0%         0.0         0.00       0.00               4037       0.00
25%        3.0         0.25       0.00               4037      41.25
50%      704.5      1740.50      23.50              35608    6849.00
75%     5774.5     13101.25     338.25              66444   35932.50
100%   78427.0    185744.00    4928.00              66444 1194086.00
     total_tests tests_per_case median_age aged_65_older
0%           0.0         0.0000       29.3          6857
25%       1224.0         0.0000       29.3          6857
50%     264894.5        25.7075       38.3         15413
75%    1758582.8      9170.2500       41.4         16984
100%  83898416.0    148923.0000       41.4         16984
     gdp_per_capita extreme_poverty cardiovasc_death_rate
0%         17336469             0.5                105599
25%        17336469             0.5                105599
50%        44017591             1.2                151089
75%        54225446             2.5                152783
100%       54225446             2.5                191032
     diabetes_prevalence female_smokers male_smokers
0%                  5.50            6.9         16.6
25%                 7.37            6.9         16.6
50%                10.79           12.0         21.4
75%                13.06           19.1         24.6
100%               13.06           19.1         27.7
     hospital_beds_per_thousand
0%                         1.38
25%                        1.38
50%                        2.50
75%                        2.77
100%                       5.00

datofilt2 %>% 
  group_by(location) %>%
  summarise(mean = mean(new_deaths),
            primerq = quantile(new_deaths, 0.25),
            mediana = median(new_deaths),
            tercerq = quantile(new_deaths, 0.75),
            max = max(new_deaths)
            )
`summarise()` ungrouping output (override with `.groups` argument)
summary(modtest)

Call:
lm(formula = new_deaths ~ new_tests, data = datofilt2)

Residuals:
    Min      1Q  Median      3Q     Max 
-1296.0  -162.2  -158.2   -16.2  4544.9 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 1.622e+02  1.516e+01   10.69   <2e-16 ***
new_tests   1.261e-03  6.201e-05   20.34   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 429.4 on 948 degrees of freedom
Multiple R-squared:  0.3037,    Adjusted R-squared:  0.303 
F-statistic: 413.6 on 1 and 948 DF,  p-value: < 2.2e-16
summary(modpr4)

Call:
lm(formula = new_deaths ~ tests_per_case, data = mex)

Residuals:
    Min      1Q  Median      3Q     Max 
-383.31 -268.25  -82.41  264.59  727.81 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)    383.424306  23.657936  16.207  < 2e-16 ***
tests_per_case  -0.008011   0.002514  -3.187  0.00171 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 294.1 on 171 degrees of freedom
  (75 observations deleted due to missingness)
Multiple R-squared:  0.05606,   Adjusted R-squared:  0.05054 
F-statistic: 10.16 on 1 and 171 DF,  p-value: 0.00171
modcase1<-lm(new_deaths~new_cases, data=arg)#Adjusted R-squared:  0.7633
modtest1<-lm(new_deaths~new_tests, data=arg)#Adjusted R-squared:0.6969
modpr1<-lm(new_deaths~tests_per_case, data=arg)#R-squared:  0.08562 

modcase2<-lm(new_deaths~new_cases, data=can)#Adjusted R-squared:  0.6533 
modtest2<-lm(new_deaths~new_tests, data=can)#Adjusted R-squared:0.6969
modpr2<-lm(new_deaths~tests_per_case, data=can)#R-squared:   0.1725 

modcase3<-lm(new_deaths~new_cases, data=eu)#Adjusted R-squared:  0.2661  
modtest3<-lm(new_deaths~new_tests, data=eu)#Adjusted R-squared:-0.003952
modpr3<-lm(new_deaths~tests_per_case, data=eu)#R-squared:   0.09157  

modcase4<-lm(new_deaths~new_cases, data=mex)#Adjusted R-squared:  0.8574  
modtest4<-lm(new_deaths~new_tests, data=mex)#Adjusted R-squared:0.5993 
modpr4<-lm(new_deaths~tests_per_case, data=mex)#R-squared:   0.05054 


summary(modpr4)

1-Regresi?n Lineal M?ltiple a- Modelo para predecir precio con todas las covariables

Series temporales evaluamos autocorrelacion

op <- par(mfrow = c(2, 2))
op
$mfrow
[1] 1 1
ccf(x,y,lag.max = 50)
ccf(x1,y1,lag.max = 50)
ccf(x2,y2,lag.max = 50)
ccf(x3,y3,lag.max = 50)

Ahora probando ST

glimpse(shopping)
Rows: 248
Columns: 2
$ date       <date> 2019-12-31, 2020-01-01, 2020-01-02, 2020-01-0...
$ new_deaths <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...

my3 <- ts (x3,frequency = 1)

fit1 <- tslm(my3 ~ trend )
myy3 <- ts (y3,frequency = 1)

fit2 <- tslm(myy3 ~ trend )

op <- par(mfrow = c(1, 2))
op
$mfrow
[1] 1 1
plot(forecast(fit1, h=40))
plot(forecast(fit2, h=40))

#eu
tiempo2=eu["date"]
#x = runif(N,min = -2,max = 2)
y2=eu["new_deaths"]
y2[is.na(y2)] <- 0

x2=eu["new_cases"]
x2[is.na(x2)] <- 0

my3 <- ts (x3,frequency = 1)

fit1 <- tslm(my3 ~ trend )
myy3 <- ts (y3,frequency = 1)

fit2 <- tslm(myy3 ~ trend )

op <- par(mfrow = c(1, 2))
op

plot(forecast(fit1, h=40))
plot(forecast(fit2, h=40))
LS0tDQp0aXRsZTogIlNUIGFuw6FsaXNpcyBDT1ZJRCINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQouIA0KDQpgYGB7cn0NCg0KYGBge3J9DQppbnN0YWxsLnBhY2thZ2VzKCJyZWFkZXIiKQ0KbGlicmFyeSgicmVhZHIiKQ0KaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeSh0aWR5cikNCmluc3RhbGwucGFja2FnZXMoImdncGxvdDIiKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeSgicmVhZHIiKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShtYXJrZG93bikNCmluc3RhbGwucGFja2FnZXMoImNvcnJwbG90IikNCmxpYnJhcnkoImNvcnJwbG90IikNCmluc3RhbGwucGFja2FnZXMoImNhciIpDQpsaWJyYXJ5KCJjYXIiKQ0KaW5zdGFsbC5wYWNrYWdlcygiZ2dwdWJyIikNCmxpYnJhcnkoImdncHViciIpDQoNCmluc3RhbGwucGFja2FnZXMoIkdHYWxseSIpDQoNCmxpYnJhcnkoIkdHYWxseSIpDQoNCmluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJ0aWR5dmVyc2UiKQ0KbGlicmFyeShtb2RlbHIpDQppbnN0YWxsLnBhY2thZ2VzKCJwbG90bHkiKQ0KbGlicmFyeSgicGxvdGx5IikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShicm9vbSkNCmluc3RhbGwucGFja2FnZXMoIklTTFIiKQ0KbGlicmFyeShJU0xSKQ0KbGlicmFyeShHR2FsbHkpDQpsaWJyYXJ5KG1vZGVscikNCmluc3RhbGwucGFja2FnZXMoInBST0MiKQ0KbGlicmFyeShwUk9DKQ0KbGlicmFyeShjb3dwbG90KQ0KaW5zdGFsbC5wYWNrYWdlcygiT25lUiIpDQpsaWJyYXJ5KE9uZVIpDQpsaWJyYXJ5KHJsYW5nKQ0KaW5zdGFsbC5wYWNrYWdlcygiY2FyZXQiKQ0KbGlicmFyeShjYXJldCkNCg0KYGBgDQoNCnNlIGNhcmdhIGRhdGEgc2V0IHkgc2UgdmUgdmFyaWFibGVzDQpgYGB7cn0NCnRyYWluYTwtcmVhZF9jc3YoZmlsZT0iQzovVXNlcnMvUEMuREVTS1RPUC03SjEwRzcyL0Rlc2t0b3AvVEFSRUEgRklOQUwvQ09WSUQtMTkvZGF0YXNldC90cmF0YWRvL2FtZXJpY2EyLmNzdiIpDQoNCg0KdGl0cmFpbmE9ZGF0YS5mcmFtZSh0cmFpbmEpDQpnbGltcHNlKHRpdHJhaW5hKQ0KYGBgDQpgYGB7cn0NCnVuaWNvczwtZnVuY3Rpb24oeClsZW5ndGgodW5pcXVlKHgpKQ0KZGF0b3VuaWNvIDwtIHRpdHJhaW5hICU+JQ0KICAgICAgICBkcGx5cjo6c3VtbWFyaXNlX2FsbChsaXN0KHVuaWNvcyA9IHVuaWNvcykpICU+JQ0KICAgICAgICAgICAgIHQoKQ0KZGF0b3VuaWNvDQpgYGANCg0KYGBge3J9DQpzYXBwbHkodGl0cmFpbmEsIGZ1bmN0aW9uKHgpIHN1bShpcy5uYSh4KSkpDQpjYW50PC1zYXBwbHkodGl0cmFpbmEsIGZ1bmN0aW9uKHgpIHN1bShpcy5uYSh4KSkpDQpzdW0oY2FudCkNCmBgYA0KYGBge3J9DQpkYXRvZmlsdCA8LSB0aXRyYWluYSAlPiUNCiAgc2VsZWN0KCJkYXRlIiwibG9jYXRpb24iLCAidG90YWxfY2FzZXMiLCJuZXdfY2FzZXMiLCAidG90YWxfZGVhdGhzIiwibmV3X2RlYXRocyIsICJwb3B1bGF0aW9uX2RlbnNpdHkiLCAibmV3X3Rlc3RzIiwidG90YWxfdGVzdHMiLCJ0ZXN0c19wZXJfY2FzZSIsICJwb3B1bGF0aW9uX2RlbnNpdHkiLCJtZWRpYW5fYWdlIiwiYWdlZF82NV9vbGRlciIsImdkcF9wZXJfY2FwaXRhIiwiZXh0cmVtZV9wb3ZlcnR5IiwiZXh0cmVtZV9wb3ZlcnR5IiwiY2FyZGlvdmFzY19kZWF0aF9yYXRlIiwiZGlhYmV0ZXNfcHJldmFsZW5jZSIsCSJmZW1hbGVfc21va2VycyIsCSJtYWxlX3Ntb2tlcnMiLCJob3NwaXRhbF9iZWRzX3Blcl90aG91c2FuZCIpDQojdG90YWxfdGVzdHMJdG90YWxfdGVzdHNfcGVyX3Rob3VzYW5kCW5ld190ZXN0c19wZXJfdGhvdXNhbmQJbmV3X3Rlc3RzX3Ntb290aGVkCSNuZXdfdGVzdHNfc21vb3RoZWRfcGVyX3Rob3VzYW5kCXRlc3RzX3Blcl9jYXNlCXBvc2l0aXZlX3JhdGUJdGVzdHNfdW5pdHMJc3RyaW5nZW5jeV9pbmRleAkjcG9wdWxhdGlvbglwb3B1bGF0aW9uX2RlbnNpdHkJbWVkaWFuX2FnZQlhZ2VkXzY1X29sZGVyCWFnZWRfNzBfb2xkZXIJZ2RwX3Blcl9jYXBpdGEJI2V4dHJlbWVfcG92ZXJ0eQljYXJkaW92YXNjX2RlYXRoX3JhdGUJZGlhYmV0ZXNfcHJldmFsZW5jZQlmZW1hbGVfc21va2VycwltYWxlX3Ntb2tlcnMJI2hhbmR3YXNoaW5nX2ZhY2lsaXRpZXMJaG9zcGl0YWxfYmVkc19wZXJfdGhvdXNhbmQNCg0KZ2xpbXBzZShkYXRvZmlsdCkNCg0KYGBgDQoNCg0KYGBge3J9DQpyczwtcm91bmQoY29yKGRhdG9maWx0WywzOjE5XSx1c2U9ImNvbXBsZXRlLm9icyIpLDMpDQpycw0KDQoNCmBgYA0KU2Ugb2JzZXJ2YSB1bmEgZnVlcnRlIGNvcnJlbGFjaW9uIGVudHJlIHRvdGFsIG11ZXJ0ZXMsIHRvdGFsIGNhc29zIHkgdG90YWwgdGVzdCANCi1tYXlvcmVzIGRlIDY1IG1heW9yIGdkcA0KLW1heW9yIHRvdGFsIGNhc29zIG1hcyBkaWFiZXRlcyAoYWwgaWd1YWwgcSBEQlQsIG11ZXJ0ZSkNCi1tYXlvciBwb2JyZXphLCBtYXlvciBEQlQgeSBmdW1hZG9yZXMNCi1tYXlvciBjYW1hcywgbWF5b3IgdGFzYSBkZSBoZWFydGggeSBtZW5vciBEQlQsDQptYXlvcmVzIDY1IG1lbm9zIGZ1bWFkb3Jlcw0KDQpuZXcgY2FzZSBjb24gbmV3IGRlYXRocywgZXN0YSB2YXJpYWJsZSBzZSBzZWd1aXJhIGludmVzdGlnYW5kbyAodGVzdCBwZXIgY2FzZSBhbCBhdW1lbnRhIGRpc21pbnV5ZSBsZXZlbWVudGUgbmV3IGRlYXRocykNCg0KYGBge3J9DQphcmc9ZGF0b2ZpbHRbZGF0b2ZpbHQkbG9jYXRpb249PSJBcmdlbnRpbmEiLF0NCmFyZw0KDQptZXg9ZGF0b2ZpbHRbZGF0b2ZpbHQkbG9jYXRpb249PSJNZXhpY28iLF0NCm1leA0KY2FuPWRhdG9maWx0W2RhdG9maWx0JGxvY2F0aW9uPT0iQ2FuYWRhIixdDQpjYW4NCmV1PWRhdG9maWx0W2RhdG9maWx0JGxvY2F0aW9uPT0iVW5pdGVkIFN0YXRlcyIsXQ0KZXUNCm9wIDziiJIgcGFyKG1mcm93ID0gYygyLCAyKSkNCg0KDQpnZ3Bsb3QoYXJnLCBhZXMoYXJnJHRlc3RzX3Blcl9jYXNlICAgICwgYXJnJG5ld19kZWF0aHMsIGNvbG9yID0gInJlZCIpKSArDQogIGdlb21fcG9pbnQoKQ0KZ2dwbG90KG1leCwgYWVzKG1leCR0ZXN0c19wZXJfY2FzZSAgICAsIG1leCRuZXdfZGVhdGhzLCBjb2xvciA9ICJyZWQiKSkgKw0KICBnZW9tX3BvaW50KCkNCmdncGxvdChjYW4sIGFlcyhjYW4kdGVzdHNfcGVyX2Nhc2UgICAgLCBjYW4kbmV3X2RlYXRocywgY29sb3IgPSAicmVkIikpICsNCiAgZ2VvbV9wb2ludCgpDQpnZ3Bsb3QoZXUsIGFlcyhldSR0ZXN0c19wZXJfY2FzZSAgICAsIGV1JG5ld19kZWF0aHMsIGNvbG9yID0gInJlZCIpKSArDQogIGdlb21fcG9pbnQoKQ0KDQpnZ3Bsb3QoZGF0b2ZpbHQsIGFlcyhsb2coZGF0b2ZpbHQkdGVzdHNfcGVyX2Nhc2UvZGF0b2ZpbHQkcG9wdWxhdGlvbl9kZW5zaXR5KSAgICAsIGxvZyhkYXRvZmlsdCRuZXdfZGVhdGhzL2RhdG9maWx0JHBvcHVsYXRpb25fZGVuc2l0eSkgICAgLCBjb2xvciA9IGxvY2F0aW9uKSkgKw0KICBnZW9tX3BvaW50KCkNCmBgYA0KDQoNCmBgYHtyfQ0KZ2dwbG90KGRhdG9maWx0LCBhZXMobG9nKGRhdG9maWx0JG5ld19jYXNlcyksIGxvZyhkYXRvZmlsdCRuZXdfZGVhdGhzKSwgY29sb3IgPSBsb2NhdGlvbikpICsNCiAgZ2VvbV9wb2ludCgpDQoNCmBgYA0KDQoNCmBgYHtyfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dwbG90KGRhdG9maWx0LCBhZXMobG9nKGRhdG9maWx0JHRvdGFsX2Nhc2VzKSwgbG9nKGRhdG9maWx0JG5ld19jYXNlcyksIGNvbG9yID0gbG9jYXRpb24pKSArDQogIGdlb21fcG9pbnQoKQ0KYGBgDQoNCg0KDQoNCg0KYGBge3J9DQpkYXRvZmlsdFtpcy5uYShkYXRvZmlsdCldIDwtIDANCnNhcHBseShkYXRvZmlsdFssNDoxOV0sIGZ1bmN0aW9uKHgpIHF1YW50aWxlKHgpKQ0KYGBgDQoNCmBgYHtyfQ0KI0VsaWpvIGNpZXJ0YXMgdmFyaWFibGVzDQpkYXRvZmlsdDIgPC0gZGF0b2ZpbHQgJT4lDQogIHNlbGVjdCgiZGF0ZSIsImxvY2F0aW9uIiwgInRvdGFsX2Nhc2VzIiwibmV3X2Nhc2VzIiwgInRvdGFsX2RlYXRocyIsIm5ld19kZWF0aHMiLCAibmV3X3Rlc3RzIiwidG90YWxfdGVzdHMiLCJ0ZXN0c19wZXJfY2FzZSIsImFnZWRfNjVfb2xkZXIiLCJnZHBfcGVyX2NhcGl0YSIsImNhcmRpb3Zhc2NfZGVhdGhfcmF0ZSIsImRpYWJldGVzX3ByZXZhbGVuY2UiKQ0KDQpsaWJyYXJ5KEdHYWxseSkNCmRhdGEyPC1kYXRvZmlsdDJbLDI6MTNdDQpkYXRhMiU+JWdncGFpcnMoLiwgDQogICAgICAgICAgdGl0bGUgPSAiQ29ycmVsb2dyYW1hIiwNCiAgICAgICAgICBtYXBwaW5nID0gYWVzKGNvbG91cj0gbG9jYXRpb24pDQogICkNCmBgYA0KYGBge3J9DQpkYXRvZmlsdDIgJT4lIA0KICBncm91cF9ieShsb2NhdGlvbikgJT4lDQogIHN1bW1hcmlzZShtZWFuID0gbWVhbihuZXdfZGVhdGhzKSwNCiAgICAgICAgICAgIHByaW1lcnEgPSBxdWFudGlsZShuZXdfZGVhdGhzLCAwLjI1KSwNCiAgICAgICAgICAgIG1lZGlhbmEgPSBtZWRpYW4obmV3X2RlYXRocyksDQogICAgICAgICAgICB0ZXJjZXJxID0gcXVhbnRpbGUobmV3X2RlYXRocywgMC43NSksDQogICAgICAgICAgICBtYXggPSBtYXgobmV3X2RlYXRocykNCiAgICAgICAgICAgICkNCmBgYA0KDQpgYGB7cn0NCm1vZGNhc2U8LWxtKG5ld19kZWF0aHN+bmV3X2Nhc2VzLCBkYXRhPWRhdG9maWx0MikjQWRqdXN0ZWQgUi1zcXVhcmVkOiAgMC40Njc4IA0KbW9kdGVzdDwtbG0obmV3X2RlYXRoc35uZXdfdGVzdHMsIGRhdGE9ZGF0b2ZpbHQyKSNBZGp1c3RlZCBSLXNxdWFyZWQ6ICAwLjMwMyAgDQptb2RwcjwtbG0obmV3X2RlYXRoc350ZXN0c19wZXJfY2FzZSwgZGF0YT1kYXRvZmlsdDIpI1Itc3F1YXJlZDogIDAuMDA3MTYxIA0Kc3VtbWFyeShtb2R0ZXN0KQ0KYGBgDQoNCmBgYHtyfQ0KbW9kY2FzZTE8LWxtKG5ld19kZWF0aHN+bmV3X2Nhc2VzLCBkYXRhPWFyZykjQWRqdXN0ZWQgUi1zcXVhcmVkOiAgMC43NjMzDQptb2R0ZXN0MTwtbG0obmV3X2RlYXRoc35uZXdfdGVzdHMsIGRhdGE9YXJnKSNBZGp1c3RlZCBSLXNxdWFyZWQ6MC42OTY5DQptb2RwcjE8LWxtKG5ld19kZWF0aHN+dGVzdHNfcGVyX2Nhc2UsIGRhdGE9YXJnKSNSLXNxdWFyZWQ6ICAwLjA4NTYyIA0KDQptb2RjYXNlMjwtbG0obmV3X2RlYXRoc35uZXdfY2FzZXMsIGRhdGE9Y2FuKSNBZGp1c3RlZCBSLXNxdWFyZWQ6ICAwLjY1MzMgDQptb2R0ZXN0MjwtbG0obmV3X2RlYXRoc35uZXdfdGVzdHMsIGRhdGE9Y2FuKSNBZGp1c3RlZCBSLXNxdWFyZWQ6MC42OTY5DQptb2RwcjI8LWxtKG5ld19kZWF0aHN+dGVzdHNfcGVyX2Nhc2UsIGRhdGE9Y2FuKSNSLXNxdWFyZWQ6ICAgMC4xNzI1IA0KDQptb2RjYXNlMzwtbG0obmV3X2RlYXRoc35uZXdfY2FzZXMsIGRhdGE9ZXUpI0FkanVzdGVkIFItc3F1YXJlZDogIDAuMjY2MSAgDQptb2R0ZXN0MzwtbG0obmV3X2RlYXRoc35uZXdfdGVzdHMsIGRhdGE9ZXUpI0FkanVzdGVkIFItc3F1YXJlZDotMC4wMDM5NTINCm1vZHByMzwtbG0obmV3X2RlYXRoc350ZXN0c19wZXJfY2FzZSwgZGF0YT1ldSkjUi1zcXVhcmVkOiAgIDAuMDkxNTcgIA0KDQptb2RjYXNlNDwtbG0obmV3X2RlYXRoc35uZXdfY2FzZXMsIGRhdGE9bWV4KSNBZGp1c3RlZCBSLXNxdWFyZWQ6ICAwLjg1NzQgIA0KbW9kdGVzdDQ8LWxtKG5ld19kZWF0aHN+bmV3X3Rlc3RzLCBkYXRhPW1leCkjQWRqdXN0ZWQgUi1zcXVhcmVkOjAuNTk5MyANCm1vZHByNDwtbG0obmV3X2RlYXRoc350ZXN0c19wZXJfY2FzZSwgZGF0YT1tZXgpI1Itc3F1YXJlZDogICAwLjA1MDU0IA0KDQoNCnN1bW1hcnkobW9kcHI0KQ0KYGBgDQoNCg0KMS1SZWdyZXNpP24gTGluZWFsIE0/bHRpcGxlIGEtIE1vZGVsbyBwYXJhIHByZWRlY2lyIHByZWNpbyBjb24gdG9kYXMgbGFzIGNvdmFyaWFibGVzDQpgYGB7cn0NCg0KYGBgDQoNCmBgYHtyfQ0KbW9kcm08LWxtKG5ld19kZWF0aHN+bmV3X2Nhc2VzK25ld190ZXN0cyt0ZXN0c19wZXJfY2FzZSwgZGF0YT1kYXRvZmlsdDIpI0FkanVzdGVkIFItc3F1YXJlZCAwLjQ5MTEgLCB0ZXN0c19wZXJfY2FzZSBubyBzaWduaWYNCnN1bW1hcnkobW9kcm0pDQoNCm1vZHJtMTwtbG0obmV3X2RlYXRoc35uZXdfY2FzZXMrbmV3X3Rlc3RzK3Rlc3RzX3Blcl9jYXNlLGRhdGE9YXJnKSNBZGp1c3RlZCBSLXNxdWFyZWQgMC43Njk0ICwgdGVzdHNfcGVyX2Nhc2Ugbm8gc2lnbmlmDQoNCm1vZHJtMjwtbG0obmV3X2RlYXRoc35uZXdfY2FzZXMrbmV3X3Rlc3RzK3Rlc3RzX3Blcl9jYXNlLGRhdGE9Y2FuKSNBZGp1c3RlZCBSLXNxdWFyZWQgMC41NTM3ICAsIHRlc3RzX3Blcl9jYXNlIG5vIHNpZ25pZg0KDQptb2RybTM8LWxtKG5ld19kZWF0aHN+bmV3X2Nhc2VzK25ld190ZXN0cyt0ZXN0c19wZXJfY2FzZSxkYXRhPWV1KSNBZGp1c3RlZCBSLXNxdWFyZWQgMC4xNDI2ICwgdGVzdHNfcGVyX2Nhc2Ugbm8gc2lnbmlmDQptb2RybTQ8LWxtKG5ld19kZWF0aHN+bmV3X2Nhc2VzK25ld190ZXN0cyt0ZXN0c19wZXJfY2FzZSxkYXRhPW1leCkjQWRqdXN0ZWQgUi1zcXVhcmVkIDAuODAyICwgdGVzdHNfcGVyX2Nhc2Ugbm8gc2lnbmlmDQpzdW1tYXJ5KG1vZHJtNCkNCg0KYGBgDQoNCmBgYHtyfQ0KI0hpc3RvZ3JhbWENCmdncGxvdChhcmcsIGFlcyh4PXRlc3RzX3Blcl9jYXNlKSkgKw0KICBnZ3RpdGxlKCd0ZXN0c19wZXJfY2FzZScpICsNCiAgeGxhYignSW5kaWNlJykgKw0KICB5bGFiKCdmcmVxdWVuY3knKSArDQogIGdlb21faGlzdG9ncmFtKGZpbGw9J3JlZCcsIGFscGhhPTAuNzUsIGJpbnM9MzAgKQ0KYGBgDQoNCg0KU2VyaWVzIHRlbXBvcmFsZXMgZXZhbHVhbW9zIGF1dG9jb3JyZWxhY2lvbg0KYGBge3J9DQojQVJHDQp0aWVtcG89YXJnWyJkYXRlIl0NCiN4ID0gcnVuaWYoTixtaW4gPSAtMixtYXggPSAyKQ0KeT1hcmdbIm5ld19kZWF0aHMiXQ0KeVtpcy5uYSh5KV0gPC0gMA0KDQp4PWFyZ1sibmV3X2Nhc2VzIl0NCnhbaXMubmEoeCldIDwtIDANCg0KI0Nhbg0KdGllbXBvMT1jYW5bImRhdGUiXQ0KI3ggPSBydW5pZihOLG1pbiA9IC0yLG1heCA9IDIpDQp5MT1jYW5bIm5ld19kZWF0aHMiXQ0KeTFbaXMubmEoeTEpXSA8LSAwDQoNCngxPWNhblsibmV3X2Nhc2VzIl0NCngxW2lzLm5hKHgxKV0gPC0gMA0KDQojZXUNCnRpZW1wbzI9ZXVbImRhdGUiXQ0KI3ggPSBydW5pZihOLG1pbiA9IC0yLG1heCA9IDIpDQp5Mj1ldVsibmV3X2RlYXRocyJdDQp5Mltpcy5uYSh5MildIDwtIDANCg0KeDI9ZXVbIm5ld19jYXNlcyJdDQp4Mltpcy5uYSh4MildIDwtIDANCg0KI21leA0KdGllbXBvMz1tZXhbImRhdGUiXQ0KI3ggPSBydW5pZihOLG1pbiA9IC0yLG1heCA9IDIpDQp5Mz1tZXhbIm5ld19kZWF0aHMiXQ0KeTNbaXMubmEoeTMpXSA8LSAwDQoNCngzPW1leFsibmV3X2Nhc2VzIl0NCngzW2lzLm5hKHgzKV0gPC0gMA0KDQpvcCA8LSBwYXIobWZyb3cgPSBjKDIsIDIpKQ0Kb3ANCmFjZih4LCBsYWcubWF4ID0gTikNCmFjZih4MSwgbGFnLm1heCA9IE4pDQphY2YoeDIsIGxhZy5tYXggPSBOKQ0KYWNmKHgzLCBsYWcubWF4ID0gTikNCg0KDQoNCmNjZih4LHksbGFnLm1heCA9IDUwKQ0KYGBgDQoNCmBgYHtyfQ0Kb3AgPC0gcGFyKG1mcm93ID0gYygyLCAyKSkNCm9wDQpjY2YoeCx5LGxhZy5tYXggPSA1MCkNCmNjZih4MSx5MSxsYWcubWF4ID0gNTApDQpjY2YoeDIseTIsbGFnLm1heCA9IDUwKQ0KY2NmKHgzLHkzLGxhZy5tYXggPSA1MCkNCg0KDQpgYGANCg0KDQpBaG9yYSBwcm9iYW5kbyBTVA0KYGBge3J9DQpyZXF1aXJlKGFzdHNhLCBxdWlldGx5PVRSVUUsIHdhcm4uY29uZmxpY3RzPUZBTFNFKQ0KcmVxdWlyZShrbml0cikNCmxpYnJhcnkoZ2dwbG90MikNCnN0ZXVnbmQ9ZXUkbmV3X2RlYXRocw0KDQpzdGV1Z25kW2lzLm5hKHN0ZXVnbmQpXSA8LSAwDQojZXVfdHMgPSB0cyhzdGV1Z25kLCBzdGFydCA9IGMoMjAyMCwxLDEpLCBmcmVxdWVuY3kgPSAzNjUpDQpwcmludChldV90cykNCmV1X3RzMj10cyhzdGV1Z25kKQ0KcGxvdChldV90czIpDQojc3VtbWFyeShmaXQ8LSBsbShndGVtcH50aW1lKGd0ZW1wKSkpDQpgYGANCg0KDQoNCg0KDQpgYGB7cn0NCg0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmluc3RhbGwucGFja2FnZXMoInByb3BoZXQiKQ0KbGlicmFyeSgicHJvcGhldCIpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCg0KDQpldTI9ZXVbLCBjKDEsNildDQpzaG9wcGluZyA8LSBldTIlPiUgDQogIG11dGF0ZShkYXRlID0geW1kKGRhdGUpKQ0KZ2xpbXBzZShzaG9wcGluZykNCg0KYGBgDQoNCmBgYHtyfQ0Kb3AgPOKIkiBwYXIobWZyb3cgPSBjKDEsIDIpKQ0KcGxvdChzaG9wcGluZyRkYXRlLCBzaG9wcGluZyRuZXdfZGVhdGhzICwgdHlwZT0ibCIpDQpoaXN0KCBzaG9wcGluZyRuZXdfZGVhdGhzICkNCmBgYA0KDQpgYGB7cn0NCmdncGxvdChzaG9wcGluZywgYWVzKGRhdGUsIG5ld19kZWF0aHMpKSArIGdlb21fbGluZSgpICsgdGhlbWVfYncoKSArIGxhYnModGl0bGU9Im5ldyBkZWF0aHMiKQ0KYGBgDQpgYGB7cn0NCiNzdWF2aXphZG8NCmdncGxvdChzaG9wcGluZywgYWVzKGRhdGUsIG5ld19kZWF0aHMpKSArIGdlb21fcG9pbnQoY29sb3I9J2ZvcmVzdGdyZWVuJykgKyBnZW9tX3Ntb290aCgpICsgdGhlbWVfYncoKSArIGxhYnModGl0bGU9J25ldyBkZWF0aHMnKQ0KYGBgDQoNCg0KDQoNCmBgYHtyfQ0KI2V1DQp0aWVtcG8yPWV1WyJkYXRlIl0NCiN4ID0gcnVuaWYoTixtaW4gPSAtMixtYXggPSAyKQ0KeTI9ZXVbIm5ld19kZWF0aHMiXQ0KeTJbaXMubmEoeTIpXSA8LSAwDQoNCngyPWV1WyJuZXdfY2FzZXMiXQ0KeDJbaXMubmEoeDIpXSA8LSAwDQoNCm15MyA8LSB0cyAoeDMsZnJlcXVlbmN5ID0gMSkNCg0KZml0MSA8LSB0c2xtKG15MyB+IHRyZW5kICkNCm15eTMgPC0gdHMgKHkzLGZyZXF1ZW5jeSA9IDEpDQoNCmZpdDIgPC0gdHNsbShteXkzIH4gdHJlbmQgKQ0KDQpvcCA8LSBwYXIobWZyb3cgPSBjKDEsIDIpKQ0Kb3ANCg0KcGxvdChmb3JlY2FzdChmaXQxLCBoPTQwKSkNCnBsb3QoZm9yZWNhc3QoZml0MiwgaD00MCkpDQoNCmBgYA0KDQo=