Tema 4. T de Student

pagos <- c(107, 92, 97, 95, 105, 101, 91, 99, 95, 104)
t.test(pagos, y=NULL, alternative="two.sided", mu=100, paired=FALSE, var.equal=FALSE, conf.level=0.90)
##
## One Sample t-test
##
## data: pagos
## t = -0.79888, df = 9, p-value = 0.4449
## alternative hypothesis: true mean is not equal to 100
## 90 percent confidence interval:
## 95.38755 101.81245
## sample estimates:
## mean of x
## 98.6
# Si es de una cole, aletnative puede ser: "less" o "greater"
# Si p value es mayor a 0.10, no se rechaza H0
# Conclusión: No se rechaza H0
# Intervalo de Confianza: Entre 95 y 101 dólares
8-70
Drive-a-Lemon, renta automóviles en buenas condiciones mecánicas,
pero más antiguos que los que ofre- cen las grandes cadenas nacionales
de renta de coches. Como resultado, anuncia que sus tarifas son con-
siderablemente más bajas que las de sus competidores grandes. Una
encuesta de la industria estableció que el cargo total promedio por
renta en una de las compañías más importantes es $77.38. Una muestra
aleatoria de 18 transacciones realizadas por Drive-a-Lemon mostró un
cargo total promedio de $87.61, con una desviación estándar muestral de
$19.48. Verifique que para 0.025, el cargo total promedio de
Drive-a-Lemon es significativamente más alto que el de las compañías
grandes. ¿Indica este resultado que las tarifas de Drive-a-Lemon, en
efecto, no son más bajas que las de las cadenas nacionales importantes?
Explique su respuesta.
Respuesta:
Paso 1: Plantear Hipótesis
H0: µ = x̄
H1 : µ > x̄
Paso 2: Nivel de Significancia y Grados de Libertad
a = 0.025
GL: 17
Paso 3: Zona de Aceptación/Rechazo
t de tablas = 2.110
Paso 4: Función
t <- (87.61-77.38)/(19.48/sqrt(18))
t
## [1] 2.22804
Paso 5 Conclusión:
Se rechaza H0
Tema 5. ANOVA

resistencia <- read.csv("/Users/jenaromtzg/Downloads/ANOVA Mezclas.csv")
resistencia$Mezcla <- as.factor(resistencia$Mezcla)
qf(.95, df1=3, df=20)
## [1] 3.098391
anova1 <- aov(Valor ~ Mezcla, data=resistencia)
summary(anova1)
## Df Sum Sq Mean Sq F value Pr(>F)
## Mezcla 3 127375 42458 25.09 5.53e-07 ***
## Residuals 20 33839 1692
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
manchado <- read.csv("/Users/jenaromtzg/Downloads/ANOVA Grado.csv")
manchado$Manchado <- as.factor(manchado$Manchado)
qf(.99, df1=2, df=12)
## [1] 6.926608
anova2 <- aov(Valor ~ Manchado, data=manchado)
summary(anova2)
## Df Sum Sq Mean Sq F value Pr(>F)
## Manchado 2 0.0609 0.03043 0.987 0.401
## Residuals 12 0.3701 0.03084
Tema 6. Regresión Lineal

#Ejercico 1
x <- c(0.2,0.5,1,2,3)
y <- c(8,10,18,35,60)
regresion <- lm(y~x)
summary(regresion)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## 1 2 3 4 5
## 3.0591 -0.5354 -1.8596 -3.5079 2.8438
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.211 2.451 0.494 0.65510
## x 18.648 1.450 12.863 0.00101 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.341 on 3 degrees of freedom
## Multiple R-squared: 0.9822, Adjusted R-squared: 0.9763
## F-statistic: 165.5 on 1 and 3 DF, p-value: 0.001014
plot(x, y, pch = 16, cex = 1.3, col = "blue", main = "Ejercicio 1")
abline(lm(y~x))





# Ejercicio 2
a <- c(-6,-3,0,3,6,9,12,15,20,25)
b <- c(2,2.8,3.9,4.2,5.8,6.2,7.5,8.2,9.3,10.9)
regresion2 <- lm(b~a)
summary(regresion2)
##
## Call:
## lm(formula = b ~ a)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.41088 -0.12507 -0.03329 0.14807 0.32493
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.746694 0.101162 37.04 3.10e-10 ***
## a 0.288062 0.008087 35.62 4.22e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2438 on 8 degrees of freedom
## Multiple R-squared: 0.9937, Adjusted R-squared: 0.993
## F-statistic: 1269 on 1 and 8 DF, p-value: 4.223e-10
plot(a, b, pch = 16, cex = 1.3, col = "blue", main = "Ejercicio 2")
abline(lm(b~a))





Tema 7. Ejercicios del Mundo
Real
11-26 Un estudio compara el numer de horas de alivio
que proporcionan cinco marcas de antacidos administrados a 25 personas
diferentes, cada una con acidez estomacal considera fuerte. Los
resultados son los siguientes:
| 4.4 |
5.8 |
4.8 |
2.9 |
4.6 |
| 4.6 |
5.2 |
5.9 |
2.7 |
4.3 |
| 4.5 |
4.9 |
4.9 |
2.9 |
3.8 |
| 4.1 |
4.7 |
4.6 |
3.9 |
5.2 |
| 3.8 |
4.6 |
4.3 |
4.3 |
4.4 |
- Calcule el coeficiente F. para un nivel de significancia de 0.05 y
¿las marcas producen cantidades significativamente diferentes de alivio
a las personas con acidez estomacal fuerte?
antiacidos <- read.csv("/Users/jenaromtzg/Downloads/antiacidos.csv")
antiacidos$marca <- as.factor(antiacidos$marca)
qf(.95,df1=4,df2=20)
## [1] 2.866081
anova3 <- aov(horas ~ marca, data=antiacidos)
summary(anova3)
## Df Sum Sq Mean Sq F value Pr(>F)
## marca 4 9.006 2.2514 7.653 0.000655 ***
## Residuals 20 5.884 0.2942
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# F = 7.65, Fu = 2.87, de forma que rechazamos H0
# Las marcas producen una cantidad de alivio significantivamente diferente
11-38
En la ciudad de Bigville, una cadena de comida rápida está
adquiriendo una mala reputación debido a que tardan mucho en servir a
los clientes. Como la cadena tiene cuatro restaurantes en esa ciudad,
quiere sa- ber si los cuatro restaurantes tienen el mismo tiempo
promedio de servicio. Uno de los dueños de la ca- dena ha decidido
visitar cada local y registrar el tiempo de servicio para 5 clientes
escogidos al azar. En sus cuatro visitas al medio día registró los
siguientes tiempos de servicio en minutos:
| 3 |
3 |
2 |
3 |
| 4 |
3.5 |
3.5 |
4 |
| 5.5 |
4.5 |
5 |
5.5 |
| 3.5 |
4. |
6.5 |
2.5 |
| 4 |
5.5 |
6 |
3 |
Utilice un nivel de significancia de 0.05, ¿todos los
restaurantes tienen el mismo tiempo medio de ser- vicio?
Según sus resultados, ¿deberá el dueño hacer algunas
recomendaciones a cualquiera de los adminis- tradores de los
restaurantes?
restaurante <- read.csv("/Users/jenaromtzg/Downloads/restaurante.csv")
restaurante$restaurante <- as.factor(restaurante$restaurante)
qf(0.95, df1=3, df2=16)
## [1] 3.238872
anova4 <- aov(tiempo ~ restaurante, data=restaurante)
summary(anova4)
## Df Sum Sq Mean Sq F value Pr(>F)
## restaurante 3 2.538 0.8458 0.509 0.682
## Residuals 16 26.600 1.6625
# a)
# No rechazamos H0
# Los tiempos medio de espera no son significantes
# b)
# Debido a que ningun restaurante es peor que los otros, cualquier recomendacion tendria que hacerse a todos los admin.
12-68
Un arrendador está interesado en ver si las rentas de sus
departamentos son las comunes. Para esto tomó una muestra aleatoria de
11 rentas y tamaños de departamentos en complejos de departamentos
similares.
Los datos son los siguientes:
| 230 |
2 |
| 190 |
1 |
| 450 |
3 |
| 310 |
2 |
| 218 |
2 |
| 185 |
2 |
| 340 |
2 |
| 245 |
1 |
| 125 |
1 |
| 350 |
2 |
| 280 |
2 |
- Desarrolle la ecuación de estimación que mejor describa estos
datos.
- Calcule el coeficiente de determinación.
- Pronostique la renta para un departamento de dos recámaras
# a
renta <- c(230, 190, 450, 310, 218, 185, 340, 245, 125, 350, 280)
recamaras <- c(2, 1, 3, 2, 2, 2, 2, 1, 1, 2, 2)
regresion3 <- lm(renta~recamaras)
summary(regresion3)
##
## Call:
## lm(formula = renta ~ recamaras)
##
## Residuals:
## Min 1Q Median 3Q Max
## -101.80 -51.35 19.10 50.25 74.10
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 55.00 63.19 0.870 0.40667
## recamaras 115.90 33.13 3.498 0.00675 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 63.19 on 9 degrees of freedom
## Multiple R-squared: 0.5762, Adjusted R-squared: 0.5291
## F-statistic: 12.23 on 1 and 9 DF, p-value: 0.006746
# renta = 55.99 +115.90 recamaras
# b)
# r2 = 0.5762
# c
recamaras1 <- 2
renta1 <- 55+115.90*recamaras1
renta1
## [1] 286.8
LS0tCnRpdGxlOiAiV29ya3Nob3AyIgphdXRob3I6ICJKZW5hcm8gTWFydMOtbmV6IgpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCm91dHB1dDogCiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIHRoZW1lOiB1bml0ZWQKICAgIGhpZ2hsaWdodDogdGFuZ28KLS0tCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBncmVlbjsiPlRlbWEgNC4gVCBkZSBTdHVkZW50PC9zcGFuPgohW10oL1VzZXJzL2plbmFyb210emcvRG93bmxvYWRzL0Nhci1kZWFsZXJzaGlwLi1QaWN0dXJlLWNvdXJ0ZXN5LW9mLXNwZWVkZmFjdG9yeWNhcnMuY29tXy5qcGcpCgpgYGB7cn0KcGFnb3MgPC0gYygxMDcsIDkyLCA5NywgOTUsIDEwNSwgMTAxLCA5MSwgOTksIDk1LCAxMDQpCgp0LnRlc3QocGFnb3MsIHk9TlVMTCwgYWx0ZXJuYXRpdmU9InR3by5zaWRlZCIsIG11PTEwMCwgcGFpcmVkPUZBTFNFLCB2YXIuZXF1YWw9RkFMU0UsIGNvbmYubGV2ZWw9MC45MCkKCiMgU2kgZXMgZGUgdW5hIGNvbGUsIGFsZXRuYXRpdmUgcHVlZGUgc2VyOiAibGVzcyIgbyAiZ3JlYXRlciIKIyBTaSBwIHZhbHVlIGVzIG1heW9yIGEgMC4xMCwgbm8gc2UgcmVjaGF6YSBIMAojIENvbmNsdXNpw7NuOiBObyBzZSByZWNoYXphIEgwCiMgSW50ZXJ2YWxvIGRlIENvbmZpYW56YTogRW50cmUgOTUgeSAxMDEgZMOzbGFyZXMKYGBgCiMjICoqOC03MCoqCkRyaXZlLWEtTGVtb24sIHJlbnRhIGF1dG9tb8yBdmlsZXMgZW4gYnVlbmFzIGNvbmRpY2lvbmVzIG1lY2HMgW5pY2FzLCBwZXJvIG1hzIFzIGFudGlndW9zIHF1ZSBsb3MgcXVlIG9mcmUtIGNlbiBsYXMgZ3JhbmRlcyBjYWRlbmFzIG5hY2lvbmFsZXMgZGUgcmVudGEgZGUgY29jaGVzLiBDb21vIHJlc3VsdGFkbywgYW51bmNpYSBxdWUgc3VzIHRhcmlmYXMgc29uIGNvbi0gc2lkZXJhYmxlbWVudGUgbWHMgXMgYmFqYXMgcXVlIGxhcyBkZSBzdXMgY29tcGV0aWRvcmVzIGdyYW5kZXMuIFVuYSBlbmN1ZXN0YSBkZSBsYSBpbmR1c3RyaWEgZXN0YWJsZWNpb8yBIHF1ZSBlbCBjYXJnbyB0b3RhbCBwcm9tZWRpbyBwb3IgcmVudGEgZW4gdW5hIGRlIGxhcyBjb21wYW7Mg2nMgWFzIG1hzIFzIGltcG9ydGFudGVzIGVzICQ3Ny4zOC4gVW5hIG11ZXN0cmEgYWxlYXRvcmlhIGRlIDE4IHRyYW5zYWNjaW9uZXMgcmVhbGl6YWRhcyBwb3IgRHJpdmUtYS1MZW1vbiBtb3N0cm/MgSB1biBjYXJnbyB0b3RhbCBwcm9tZWRpbyBkZSAkODcuNjEsIGNvbiB1bmEgZGVzdmlhY2lvzIFuIGVzdGHMgW5kYXIgbXVlc3RyYWwgZGUgJDE5LjQ4LiBWZXJpZmlxdWUgcXVlIHBhcmEg9I+wjiD0j7CRIDAuMDI1LCBlbCBjYXJnbyB0b3RhbCBwcm9tZWRpbyBkZSBEcml2ZS1hLUxlbW9uIGVzIHNpZ25pZmljYXRpdmFtZW50ZSBtYcyBcyBhbHRvIHF1ZSBlbCBkZSBsYXMgY29tcGFuzINpzIFhcyBncmFuZGVzLiDCv0luZGljYSBlc3RlIHJlc3VsdGFkbyBxdWUgbGFzIHRhcmlmYXMgZGUgRHJpdmUtYS1MZW1vbiwgZW4gZWZlY3RvLCBubyBzb24gbWHMgXMgYmFqYXMgcXVlIGxhcyBkZSBsYXMgY2FkZW5hcyBuYWNpb25hbGVzIGltcG9ydGFudGVzPyBFeHBsaXF1ZSBzdSByZXNwdWVzdGEuCgojIyMjIyAqKlJlc3B1ZXN0YToqKgojIyMjIyMgUGFzbyAxOiBQbGFudGVhciBIaXDDs3Rlc2lzCiMjIyMjIyBIMDogwrUgPSB4zIQgCiMjIyMjIyBIMSA6IMK1ID4geMyECgojIyMjIyBQYXNvIDI6IE5pdmVsIGRlIFNpZ25pZmljYW5jaWEgeSBHcmFkb3MgZGUgTGliZXJ0YWQKIyMjIyMjIGEgPSAwLjAyNQojIyMjIyMgR0w6IDE3CgojIyMjIyMgUGFzbyAzOiBab25hIGRlIEFjZXB0YWNpw7NuL1JlY2hhem8KIyMjIyMjIHQgZGUgdGFibGFzID0gMi4xMTAKCiMjIyMjIyBQYXNvIDQ6IEZ1bmNpw7NuCgpgYGB7cn0KdCA8LSAoODcuNjEtNzcuMzgpLygxOS40OC9zcXJ0KDE4KSkKdApgYGAKIyMjIyMjIFBhc28gNSBDb25jbHVzacOzbjoKIyMjIyMjIFNlIHJlY2hhemEgSDAKCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+VGVtYSA1LiBBTk9WQTwvc3Bhbj4KIVtdKC9Vc2Vycy9qZW5hcm9tdHpnL0Rvd25sb2Fkcy9jaGVhcC1zaGlwcGluZy1ib3hlcy0xLmpwZykKCmBgYHtyfQpyZXNpc3RlbmNpYSA8LSByZWFkLmNzdigiL1VzZXJzL2plbmFyb210emcvRG93bmxvYWRzL0FOT1ZBIE1lemNsYXMuY3N2IikKcmVzaXN0ZW5jaWEkTWV6Y2xhIDwtIGFzLmZhY3RvcihyZXNpc3RlbmNpYSRNZXpjbGEpCnFmKC45NSwgZGYxPTMsIGRmPTIwKQphbm92YTEgPC0gYW92KFZhbG9yIH4gTWV6Y2xhLCBkYXRhPXJlc2lzdGVuY2lhKQpzdW1tYXJ5KGFub3ZhMSkKYGBgCmBgYHtyfQptYW5jaGFkbyA8LSByZWFkLmNzdigiL1VzZXJzL2plbmFyb210emcvRG93bmxvYWRzL0FOT1ZBIEdyYWRvLmNzdiIpCm1hbmNoYWRvJE1hbmNoYWRvIDwtIGFzLmZhY3RvcihtYW5jaGFkbyRNYW5jaGFkbykKcWYoLjk5LCBkZjE9MiwgZGY9MTIpCmFub3ZhMiA8LSBhb3YoVmFsb3IgfiBNYW5jaGFkbywgZGF0YT1tYW5jaGFkbykKc3VtbWFyeShhbm92YTIpCmBgYAojIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPlRlbWEgNi4gUmVncmVzacOzbiBMaW5lYWw8L3NwYW4+CiFbXSgvVXNlcnMvamVuYXJvbXR6Zy9Eb3dubG9hZHMvaG93LXRvLWNyZWF0ZS1hLXNpbXBsZS1saW5lYXItcmVncmVzc2lvbi1lcXVhdGlvbi5wbmcpCgpgYGB7cn0KI0VqZXJjaWNvIDEKeCA8LSBjKDAuMiwwLjUsMSwyLDMpCnkgPC0gYyg4LDEwLDE4LDM1LDYwKQpyZWdyZXNpb24gPC0gbG0oeX54KQpzdW1tYXJ5KHJlZ3Jlc2lvbikKcGxvdCh4LCB5LCBwY2ggPSAxNiwgY2V4ID0gMS4zLCBjb2wgPSAiYmx1ZSIsIG1haW4gPSAiRWplcmNpY2lvIDEiKQphYmxpbmUobG0oeX54KSkKcGxvdChyZWdyZXNpb24pCmBgYAoKYGBge3J9CiMgRWplcmNpY2lvIDIKYSA8LSBjKC02LC0zLDAsMyw2LDksMTIsMTUsMjAsMjUpCmIgPC0gYygyLDIuOCwzLjksNC4yLDUuOCw2LjIsNy41LDguMiw5LjMsMTAuOSkKcmVncmVzaW9uMiA8LSBsbShifmEpCnN1bW1hcnkocmVncmVzaW9uMikKcGxvdChhLCBiLCBwY2ggPSAxNiwgY2V4ID0gMS4zLCBjb2wgPSAiYmx1ZSIsIG1haW4gPSAiRWplcmNpY2lvIDIiKQphYmxpbmUobG0oYn5hKSkKcGxvdChyZWdyZXNpb24yKQpgYGAKCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogdmlvbGV0OyI+VGVtYSA3LiBFamVyY2ljaW9zIGRlbCBNdW5kbyBSZWFsPC9zcGFuPgoKICoqMTEtMjYqKgpVbiBlc3R1ZGlvIGNvbXBhcmEgZWwgbnVtZXIgZGUgaG9yYXMgZGUgYWxpdmlvIHF1ZSBwcm9wb3JjaW9uYW4gY2luY28gbWFyY2FzIGRlIGFudGFjaWRvcyBhZG1pbmlzdHJhZG9zIGEgMjUgcGVyc29uYXMgZGlmZXJlbnRlcywgY2FkYSB1bmEgY29uIGFjaWRleiBlc3RvbWFjYWwgY29uc2lkZXJhIGZ1ZXJ0ZS4gTG9zIHJlc3VsdGFkb3Mgc29uIGxvcyBzaWd1aWVudGVzOgoKQSB8IEIgfCBDIHwgRCB8IEUKOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06CjQuNCB8IDUuOCB8IDQuOCB8IDIuOSB8IDQuNgo0LjYgfCA1LjIgfCA1LjkgfCAyLjcgfCA0LjMKNC41IHwgNC45IHwgNC45IHwgMi45IHwgMy44CjQuMSB8IDQuNyB8IDQuNiB8IDMuOSB8IDUuMgozLjggfCA0LjYgfCA0LjMgfCA0LjMgfCA0LjQKCmEpIENhbGN1bGUgZWwgY29lZmljaWVudGUgRi4gcGFyYSB1biBuaXZlbCBkZSBzaWduaWZpY2FuY2lhIGRlIDAuMDUgeSDCv2xhcyBtYXJjYXMgcHJvZHVjZW4gY2FudGlkYWRlcyBzaWduaWZpY2F0aXZhbWVudGUgZGlmZXJlbnRlcyBkZSBhbGl2aW8gYSBsYXMgcGVyc29uYXMgY29uIGFjaWRleiBlc3RvbWFjYWwgZnVlcnRlPwpgYGB7cn0KYW50aWFjaWRvcyA8LSByZWFkLmNzdigiL1VzZXJzL2plbmFyb210emcvRG93bmxvYWRzL2FudGlhY2lkb3MuY3N2IikKYW50aWFjaWRvcyRtYXJjYSA8LSBhcy5mYWN0b3IoYW50aWFjaWRvcyRtYXJjYSkKcWYoLjk1LGRmMT00LGRmMj0yMCkKYW5vdmEzIDwtIGFvdihob3JhcyB+IG1hcmNhLCBkYXRhPWFudGlhY2lkb3MpCnN1bW1hcnkoYW5vdmEzKQojIEYgPSA3LjY1LCBGdSA9IDIuODcsIGRlIGZvcm1hIHF1ZSByZWNoYXphbW9zIEgwCiMgTGFzIG1hcmNhcyBwcm9kdWNlbiB1bmEgY2FudGlkYWQgZGUgYWxpdmlvIHNpZ25pZmljYW50aXZhbWVudGUgZGlmZXJlbnRlCmBgYAojIyMjICoqMTEtMzgqKgojIyMjIyBFbiBsYSBjaXVkYWQgZGUgQmlndmlsbGUsIHVuYSBjYWRlbmEgZGUgY29taWRhIHJhzIFwaWRhIGVzdGHMgSBhZHF1aXJpZW5kbyB1bmEgbWFsYSByZXB1dGFjaW/MgW4gZGViaWRvIGEgcXVlIHRhcmRhbiBtdWNobyBlbiBzZXJ2aXIgYSBsb3MgY2xpZW50ZXMuIENvbW8gbGEgY2FkZW5hIHRpZW5lIGN1YXRybyByZXN0YXVyYW50ZXMgZW4gZXNhIGNpdWRhZCwgcXVpZXJlIHNhLSBiZXIgc2kgbG9zIGN1YXRybyByZXN0YXVyYW50ZXMgdGllbmVuIGVsIG1pc21vIHRpZW1wbyBwcm9tZWRpbyBkZSBzZXJ2aWNpby4gVW5vIGRlIGxvcyBkdWVuzINvcyBkZSBsYSBjYS0gZGVuYSBoYSBkZWNpZGlkbyB2aXNpdGFyIGNhZGEgbG9jYWwgeSByZWdpc3RyYXIgZWwgdGllbXBvIGRlIHNlcnZpY2lvIHBhcmEgNSBjbGllbnRlcyBlc2NvZ2lkb3MgYWwgYXphci4gRW4gc3VzIGN1YXRybyB2aXNpdGFzIGFsIG1lZGlvIGRpzIFhIHJlZ2lzdHJvzIEgbG9zIHNpZ3VpZW50ZXMgdGllbXBvcyBkZSBzZXJ2aWNpbyBlbiBtaW51dG9zOgoKUmVzdGF1cmFudGUgMSB8IFJlc3RhdXJhbnRlIDIgfCBSZXN0YXVyYW50ZSAzIHwgUmVzdGF1cmFudGUgNCB8CjotLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLTogfAozICAgfCAzICAgfCAyICAgfCAzICAgfAo0ICAgfCAzLjUgfCAzLjUgfCA0ICAgfAo1LjUgfCA0LjUgfCA1ICAgfCA1LjUgfAozLjUgfCA0LiAgfCA2LjUgfCAyLjUgfAo0ICAgfCA1LjUgfCA2ICAgfCAzICAgfAoKYSkgVXRpbGljZSB1biBuaXZlbCBkZSBzaWduaWZpY2FuY2lhIGRlIDAuMDUsIMK/dG9kb3MgbG9zIHJlc3RhdXJhbnRlcyB0aWVuZW4gZWwgbWlzbW8gdGllbXBvIG1lZGlvIGRlIHNlci0gdmljaW8/CgoKYikgU2VndcyBbiBzdXMgcmVzdWx0YWRvcywgwr9kZWJlcmHMgSBlbCBkdWVuzINvIGhhY2VyIGFsZ3VuYXMgcmVjb21lbmRhY2lvbmVzIGEgY3VhbHF1aWVyYSBkZSBsb3MgYWRtaW5pcy0gdHJhZG9yZXMgZGUgbG9zIHJlc3RhdXJhbnRlcz8KCmBgYHtyfQpyZXN0YXVyYW50ZSA8LSByZWFkLmNzdigiL1VzZXJzL2plbmFyb210emcvRG93bmxvYWRzL3Jlc3RhdXJhbnRlLmNzdiIpCnJlc3RhdXJhbnRlJHJlc3RhdXJhbnRlIDwtIGFzLmZhY3RvcihyZXN0YXVyYW50ZSRyZXN0YXVyYW50ZSkKcWYoMC45NSwgZGYxPTMsIGRmMj0xNikKYW5vdmE0IDwtIGFvdih0aWVtcG8gfiByZXN0YXVyYW50ZSwgZGF0YT1yZXN0YXVyYW50ZSkKc3VtbWFyeShhbm92YTQpCiMgYSkKIyBObyByZWNoYXphbW9zIEgwCiMgTG9zIHRpZW1wb3MgbWVkaW8gZGUgZXNwZXJhIG5vIHNvbiBzaWduaWZpY2FudGVzCgojIGIpCiMgRGViaWRvIGEgcXVlIG5pbmd1biByZXN0YXVyYW50ZSBlcyBwZW9yIHF1ZSBsb3Mgb3Ryb3MsIGN1YWxxdWllciByZWNvbWVuZGFjaW9uIHRlbmRyaWEgcXVlIGhhY2Vyc2UgYSB0b2RvcyBsb3MgYWRtaW4uCmBgYAojIyMjICoqMTItNjgqKgpVbiBhcnJlbmRhZG9yIGVzdMOhIGludGVyZXNhZG8gZW4gdmVyIHNpIGxhcyByZW50YXMgZGUgc3VzIGRlcGFydGFtZW50b3Mgc29uIGxhcyBjb211bmVzLiBQYXJhIGVzdG8gdG9tw7MKdW5hIG11ZXN0cmEgYWxlYXRvcmlhIGRlIDExIHJlbnRhcyB5IHRhbWHDsW9zIGRlIGRlcGFydGFtZW50b3MgZW4gY29tcGxlam9zIGRlIGRlcGFydGFtZW50b3Mgc2ltaWxhcmVzLgoKTG9zIGRhdG9zIHNvbiBsb3Mgc2lndWllbnRlczoKClJlbnRhIHwgTsO6bWVybyBkZSBSZWPDoW1hcmFzCjotLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLTogCjIzMCB8IDIKMTkwIHwgMQo0NTAgfCAzCjMxMCB8IDIKMjE4IHwgMgoxODUgfCAyCjM0MCB8IDIKMjQ1IHwgMQoxMjUgfCAxCjM1MCB8IDIgCjI4MCB8IDIKCmEpIERlc2Fycm9sbGUgbGEgZWN1YWNpw7NuIGRlIGVzdGltYWNpw7NuIHF1ZSBtZWpvciBkZXNjcmliYSBlc3RvcyBkYXRvcy4KYikgQ2FsY3VsZSBlbCBjb2VmaWNpZW50ZSBkZSBkZXRlcm1pbmFjacOzbi4KYykgUHJvbm9zdGlxdWUgbGEgcmVudGEgcGFyYSB1biBkZXBhcnRhbWVudG8gZGUgZG9zIHJlY8OhbWFyYXMKCmBgYHtyfQojIGEKcmVudGEgPC0gYygyMzAsIDE5MCwgNDUwLCAzMTAsIDIxOCwgMTg1LCAzNDAsIDI0NSwgMTI1LCAzNTAsIDI4MCkKcmVjYW1hcmFzIDwtIGMoMiwgMSwgMywgMiwgMiwgMiwgMiwgMSwgMSwgMiwgMikKCnJlZ3Jlc2lvbjMgPC0gbG0ocmVudGF+cmVjYW1hcmFzKQpzdW1tYXJ5KHJlZ3Jlc2lvbjMpCiMgcmVudGEgPSA1NS45OSArMTE1LjkwIHJlY2FtYXJhcwoKCiMgYikKIyByMiA9IDAuNTc2MgoKIyBjCnJlY2FtYXJhczEgPC0gMgpyZW50YTEgPC0gNTUrMTE1LjkwKnJlY2FtYXJhczEKcmVudGExCmBgYAoK