
Teoria
Distribución normal de probabilidad
La Distribución de Probabilidad Continua pueden
tomar varias formas, pero un gran nĆŗmero de variables aleatorias
observadas en la naturaleza poseen una distribución de frecuencia, que
como se dirĆa en estadĆstica, es aproximadamente una distribución normal
de probabilidad.
Ćrea
El Ɣrea bajo la curva es igual a 1 Para variables aleatorias
continuas, Ɣrea = probabilidad El Ɣrea a la izquierda de la media es
igual a .5 El Ɣrea a la derecha de la media es igual a .5

Porcentaje
1-pnorm(30,25.5,4.5)
## [1] 0.1586553
X
qnorm(.95,25.5,4.5)
## [1] 32.90184
Ejercicio 4
Un estudio demostró que el uso de gasolina para autos compactos
vendidos en Estados Unidos estĆ” distribuido normalmente, con una media
de 25.5 millas per gallón (mpg) y una desviación estÔndar de 45 mpg.
¿Qué porcentaje de autos recorre 30 mpg o mÔs?
(30-25.5)/4.5
## [1] 1
1-0.8413
## [1] 0.1587
#Representa el 15.9% de autos recorre 30 mpg o mƔs
Si un fabricante desea desarrollar un auto que supere el 95% de los
compactos actuales. ĀæCual debe ser el rendimiento mpg?
25.5+1.645*4.5
## [1] 32.9025
#El auto compacto debe recorrer 32.9 mpg para superar el 95% de autos actuales
Ejercico 4.1
Suponga que los diƔmetros de tallos no soportados en la base, de una
especie particular de girasol, tienen una distribución normal con un
diÔmetro de 35 mm y una desviación estÔndar de 3 mm.
- ĀæCual es la probabilidad de que una planta de girasol tenga un
diƔmetro de base de mƔs de 40 mm?
z41 <- (40-35)/3
z41
## [1] 1.666667
p41 <- 1-pnorm(40,35,3)
p41
## [1] 0.04779035
Funcion de densidad de probabilidad normal
x <- 40
promedio <- 35
desviacion_estandar <- 3
x_densidad <- seq(promedio-3*desviacion_estandar, promedio+3*desviacion_estandar, length=1000)
y_densidad <- dnorm(x_densidad,promedio,desviacion_estandar)
plot(x_densidad, y_densidad,type="l", lty=1, xlab="x", ylab= "f(x)",main="Función de Densidad de Probabilidad (Normal)", col="skyblue")

Función de distribución de probabilidad
(normal)
x_distribucion <- seq(promedio-3*desviacion_estandar, promedio+3*desviacion_estandar, length=1000)
y_distribucion <- pnorm(x_distribucion,promedio,desviacion_estandar)
plot(x_distribucion, y_distribucion,type="l", lty=1, xlab="x", ylab= "f(x)",main="Función de Distribución de Probabilidad (Normal)", col="skyblue")

- Si 2 plantas de girasol se seleccionan al azar, Āæcual es la
posibilidad de que ambas plantas tengan un diƔmetro de base sƩ mƔs de 40
mm?
p42 <- p41*p41
p42
## [1] 0.002283918
#(1-pnorm(40,35,3)) * (1-pnorm(40,35,3))
- ĀæDentro de que limites esperaria usted que se encuentren los
diametros de base, con probabilidad de 0.95?
p43<- 35-(1.96*3)
p43<- 35+(1.96*3)
- ¿Que diametro representa el 90% de la distribución de
diƔmetros?
p44<- qnorm(.90,35,3)
p44
## [1] 38.84465
Shiny App para visualización de grÔfica para distribución y
densidad normal
Shiny applications not supported in static R Markdown documents
Ejercicio 5
Un nuevo proceso para producir diamantes sintƩticos es rentable solo
si el peso de estos es mayor a 0.5 quilates para evaluarlo se generaron
con los siguientes pesos: 0.46,0.61, 0.52,0.48,0.57,0.54. El proceso es
rentable? 1)Ho: m >= 0.5 / H1= m > 0.5
α= 0.05
Zona de aceptación 
4)Estadistica de prueba
peso_diamante<- c(0.46,0.61, 0.52,0.48,0.57,0.54)
peso_diamante
## [1] 0.46 0.61 0.52 0.48 0.57 0.54
promedio <- mean(peso_diamante)
promedio
## [1] 0.53
desviacion<- sqrt(var(peso_diamante))
desviacion
## [1] 0.05585696
n<- 6
miu <- 0.5
t1<- (promedio-miu)/(desviacion/sqrt(n))
t1
## [1] 1.315587
- No se rechaza H0, los datos no presentan suficiente evidencia para
indicar que el peso medio de los diamantes exceda los 0.5 quilates
Graficas generales de t de Studen
Función de densidad de probabilidad (t de studen)
x_densidad2<- seq(-4,4,length=1000)
y_densidad2<- dt(x_densidad2, df=5)
plot(x_densidad2, y_densidad2,type="l", lty=1, xlab="t", ylab="f(t)" , main="Función de densidad de probabilidad(t de Student)")

Función de distribución de probabilidad (t de studen)
x_densidad3<- seq(-4,4,length=1000)
y_densidad3<- pt(x_densidad3, df=5)
plot(x_densidad3, y_densidad3,type="l", lty=1, xlab="t", ylab="f(t)" , main="Función de densidad de probabilidad(t de Student)")

Ejercicio 5.1
Los desechos industriales y residuales descargados en nuestros rĆos y
arroyos absorben oxĆgeno y, por tanto, reducen la cantidad de oxĆgeno
disuelto disponible para peces y otras formas de fauna acuƔtica. Una
agencia estatal requiere un mĆnimo de 5 partes por millón (ppm) de
oxĆgeno disuelto para que el contenido de oxĆgeno sea suficiente para
sostener vida acuĆ”tica. Seis especĆmenes de agua tomados de un rĆo en un
lugar especĆfico durante la estación de aguas bajas (julio) dio lecturas
de 4.9, 5.1, 4.9, 5, 5 y 4.7 de oxĆgeno disuelto. ĀæLos datos dan
suficiente evidencia para indicar que el contenido de oxĆgeno disuelto
es menor a 5 ppm) Pruebe usando a=.05
Ho: m >= 0.5 / H1: m > 0.5
- α= 0.05
Zona de acceptación 
Estadistico de prueba t
oxigeno <- c(4.9, 5.1, 4.9, 5, 5, 4.7)
promedio1 <- mean(oxigeno)
promedio1
## [1] 4.933333
desviacion1<- sqrt(var(oxigeno))
desviacion1
## [1] 0.136626
n1<- 6
miu1 <- 5
t2<- (promedio1-miu1)/(desviacion1/sqrt(n1))
t2
## [1] -1.195229
- No se rechaza
Winsorization vs Trimming
error_peso_diamante<- c(0.46,0.61, 0.52,0.48,0.57,54)
boxplot(error_peso_diamante, horizontal=TRUE)
library(DescTools)

peso_diamante_winsorize <- Winsorize(error_peso_diamante, 0.10)
peso_diamante_winsorize
## [1] 0.4600 0.6100 0.5200 0.4800 0.5700 40.6525
peso_diamante_trim <- Trim(error_peso_diamante, 1)
peso_diamante_trim
## [1] 0.61 0.52 0.48 0.57
## attr(,"trim")
## [1] 1 6
LS0tCnRpdGxlOiAiQWN0aXZpZGFkIDMuMl9EaXN0cmlidWNpw7NuIE5vcm1hbCIKYXV0aG9yOiAiRmVybmFuZG8gTW9yYWxlcyBEaWFydGVfQTAxNzQwNTY3IgpkYXRlOiAiMjAyMy0wOC0yOCIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUKICAgIHRoZW1lOiAiY29zbW8iCi0tLQohW10oL1VzZXJzL3NwZWVkeW1kMjMvRGVza3RvcC9mb3Rvc19yL2Rpc3Rub3JtLmdpZikKCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKIyMgKipUZW9yaWEqKgojIyMgKipEaXN0cmlidWNpw7NuIG5vcm1hbCBkZSBwcm9iYWJpbGlkYWQqKgpMYSAqKkRpc3RyaWJ1Y2nDs24gZGUgUHJvYmFiaWxpZGFkIENvbnRpbnVhKiogcHVlZGVuIHRvbWFyIHZhcmlhcyBmb3JtYXMsIHBlcm8gdW4gZ3JhbiBuw7ptZXJvIGRlIHZhcmlhYmxlcyBhbGVhdG9yaWFzIG9ic2VydmFkYXMgZW4gbGEgbmF0dXJhbGV6YSBwb3NlZW4gdW5hIGRpc3RyaWJ1Y2nDs24gZGUgZnJlY3VlbmNpYSwgcXVlIGNvbW8gc2UgZGlyw61hIGVuIGVzdGFkw61zdGljYSwgZXMgYXByb3hpbWFkYW1lbnRlIHVuYSBkaXN0cmlidWNpw7NuIG5vcm1hbCBkZSBwcm9iYWJpbGlkYWQuCgojIyMgKipGb3JtdWxhKioKIVtdKC9Vc2Vycy9zcGVlZHltZDIzL0Rlc2t0b3AvZm90b3Nfci9SZXYgQ2hpbCBBbmVzdCAyMDE0LmpwZWcpCgojIyMgKirDgHJlYSoqCkVsIMOhcmVhIGJham8gbGEgY3VydmEgZXMgaWd1YWwgYSAxClBhcmEgdmFyaWFibGVzIGFsZWF0b3JpYXMgY29udGludWFzLCDDoXJlYSA9IHByb2JhYmlsaWRhZApFbCDDoXJlYSBhIGxhIGl6cXVpZXJkYSBkZSBsYSBtZWRpYSBlcyBpZ3VhbCBhIC41CkVsIMOhcmVhIGEgbGEgZGVyZWNoYSBkZSBsYSBtZWRpYSBlcyBpZ3VhbCBhIC41CgohW10oL1VzZXJzL3NwZWVkeW1kMjMvRGVza3RvcC9mb3Rvc19yL0N1cnZhLmpwZWcpCgojIyMgKipQb3JjZW50YWplKioKYGBge3J9CjEtcG5vcm0oMzAsMjUuNSw0LjUpCmBgYAoKIyMjICoqWCoqCmBgYHtyfQpxbm9ybSguOTUsMjUuNSw0LjUpCmBgYAojIyAqKkVqZXJjaWNpbyA0KioKVW4gZXN0dWRpbyBkZW1vc3Ryw7MgcXVlIGVsIHVzbyBkZSBnYXNvbGluYSBwYXJhIGF1dG9zIGNvbXBhY3RvcyB2ZW5kaWRvcyBlbiBFc3RhZG9zIFVuaWRvcyBlc3TDoSBkaXN0cmlidWlkbyBub3JtYWxtZW50ZSwgY29uIHVuYSBtZWRpYSBkZSAyNS41IG1pbGxhcyBwZXIgZ2FsbMOzbiAobXBnKSB5IHVuYSBkZXN2aWFjacOzbiBlc3TDoW5kYXIgZGUgNDUgbXBnLiDCv1F1w6kgcG9yY2VudGFqZSBkZSBhdXRvcyByZWNvcnJlIDMwIG1wZyBvIG3DoXM/CmBgYHtyfQooMzAtMjUuNSkvNC41CjEtMC44NDEzCiNSZXByZXNlbnRhIGVsIDE1LjklIGRlIGF1dG9zIHJlY29ycmUgMzAgbXBnIG8gbcOhcwpgYGAKU2kgdW4gZmFicmljYW50ZSBkZXNlYSBkZXNhcnJvbGxhciB1biBhdXRvIHF1ZSBzdXBlcmUgZWwgOTUlIGRlIGxvcyBjb21wYWN0b3MgYWN0dWFsZXMuIMK/Q3VhbCBkZWJlIHNlciBlbCByZW5kaW1pZW50byBtcGc/CmBgYHtyfQoyNS41KzEuNjQ1KjQuNQoKI0VsIGF1dG8gY29tcGFjdG8gZGViZSByZWNvcnJlciAzMi45IG1wZyBwYXJhIHN1cGVyYXIgZWwgOTUlIGRlIGF1dG9zIGFjdHVhbGVzCmBgYAoKCiMjICoqRWplcmNpY28gNC4xKioKU3Vwb25nYSBxdWUgbG9zIGRpw6FtZXRyb3MgZGUgdGFsbG9zIG5vIHNvcG9ydGFkb3MgZW4gbGEgYmFzZSwgZGUgdW5hIGVzcGVjaWUgcGFydGljdWxhciBkZSBnaXJhc29sLCB0aWVuZW4gdW5hIGRpc3RyaWJ1Y2nDs24gbm9ybWFsIGNvbiB1biBkacOhbWV0cm8gZGUgMzUgbW0geSB1bmEgZGVzdmlhY2nDs24gZXN0w6FuZGFyIGRlIDMgbW0uCgphKSDCv0N1YWwgZXMgbGEgcHJvYmFiaWxpZGFkIGRlIHF1ZSB1bmEgcGxhbnRhIGRlIGdpcmFzb2wgdGVuZ2EgdW4gZGnDoW1ldHJvIGRlIGJhc2UgZGUgbcOhcyBkZSA0MCBtbT8KCmBgYHtyfQp6NDEgPC0gKDQwLTM1KS8zCno0MQpwNDEgPC0gMS1wbm9ybSg0MCwzNSwzKQpwNDEKYGBgCgojIyMgKipGdW5jaW9uIGRlIGRlbnNpZGFkIGRlIHByb2JhYmlsaWRhZCBub3JtYWwqKgpgYGB7cn0KeCA8LSA0MAoKcHJvbWVkaW8gPC0gMzUKCmRlc3ZpYWNpb25fZXN0YW5kYXIgPC0gMwoKeF9kZW5zaWRhZCA8LSBzZXEocHJvbWVkaW8tMypkZXN2aWFjaW9uX2VzdGFuZGFyLCBwcm9tZWRpbyszKmRlc3ZpYWNpb25fZXN0YW5kYXIsIGxlbmd0aD0xMDAwKQoKeV9kZW5zaWRhZCA8LSBkbm9ybSh4X2RlbnNpZGFkLHByb21lZGlvLGRlc3ZpYWNpb25fZXN0YW5kYXIpCgpwbG90KHhfZGVuc2lkYWQsIHlfZGVuc2lkYWQsdHlwZT0ibCIsIGx0eT0xLCB4bGFiPSJ4IiwgeWxhYj0gImYoeCkiLG1haW49IkZ1bmNpw7NuIGRlIERlbnNpZGFkIGRlIFByb2JhYmlsaWRhZCAoTm9ybWFsKSIsIGNvbD0ic2t5Ymx1ZSIpCmBgYAoKCiMjIyAqKkZ1bmNpw7NuIGRlIGRpc3RyaWJ1Y2nDs24gZGUgcHJvYmFiaWxpZGFkIChub3JtYWwpKioKYGBge3J9CnhfZGlzdHJpYnVjaW9uIDwtIHNlcShwcm9tZWRpby0zKmRlc3ZpYWNpb25fZXN0YW5kYXIsIHByb21lZGlvKzMqZGVzdmlhY2lvbl9lc3RhbmRhciwgbGVuZ3RoPTEwMDApCnlfZGlzdHJpYnVjaW9uIDwtIHBub3JtKHhfZGlzdHJpYnVjaW9uLHByb21lZGlvLGRlc3ZpYWNpb25fZXN0YW5kYXIpCnBsb3QoeF9kaXN0cmlidWNpb24sIHlfZGlzdHJpYnVjaW9uLHR5cGU9ImwiLCBsdHk9MSwgeGxhYj0ieCIsIHlsYWI9ICJmKHgpIixtYWluPSJGdW5jacOzbiBkZSBEaXN0cmlidWNpw7NuIGRlIFByb2JhYmlsaWRhZCAoTm9ybWFsKSIsIGNvbD0ic2t5Ymx1ZSIpCmBgYAoKCmIpIFNpIDIgcGxhbnRhcyBkZSBnaXJhc29sIHNlIHNlbGVjY2lvbmFuIGFsIGF6YXIsIMK/Y3VhbCBlcyBsYSBwb3NpYmlsaWRhZCBkZSBxdWUgYW1iYXMgcGxhbnRhcyB0ZW5nYW4gdW4gZGnDoW1ldHJvIGRlIGJhc2Ugc8OpIG3DoXMgZGUgNDAgbW0/CmBgYHtyfQpwNDIgPC0gcDQxKnA0MQpwNDIKIygxLXBub3JtKDQwLDM1LDMpKSAqICgxLXBub3JtKDQwLDM1LDMpKQpgYGAKCmMpIMK/RGVudHJvIGRlIHF1ZSBsaW1pdGVzIGVzcGVyYXJpYSB1c3RlZCBxdWUgc2UgZW5jdWVudHJlbiBsb3MgZGlhbWV0cm9zIGRlIGJhc2UsIGNvbiBwcm9iYWJpbGlkYWQgZGUgMC45NT8KYGBge3J9CnA0MzwtIDM1LSgxLjk2KjMpCgpwNDM8LSAzNSsoMS45NiozKQpgYGAKCmQpIMK/UXVlIGRpYW1ldHJvIHJlcHJlc2VudGEgZWwgOTAlIGRlIGxhIGRpc3RyaWJ1Y2nDs24gZGUgZGnDoW1ldHJvcz8KYGBge3J9CnA0NDwtIHFub3JtKC45MCwzNSwzKQpwNDQKYGBgCgojIyAqKlNoaW55IEFwcCBwYXJhIHZpc3VhbGl6YWNpw7NuIGRlIGdyw6FmaWNhIHBhcmEgZGlzdHJpYnVjacOzbiB5IGRlbnNpZGFkIG5vcm1hbCoqCmBgYHtyLCBlY2hvPUZBTFNFfQpsaWJyYXJ5KHNoaW55KQpsaWJyYXJ5KHNoaW55dGhlbWVzKQpzaGlueUFwcCgKCnVpIDwtIGZsdWlkUGFnZSh0aGVtZSA9IHNoaW55dGhlbWUoImNlcnVsZWFuIiksCiAgICAgICAgICAgICAgICBuYXZiYXJQYWdlKCJBcGxpY2FjaW9uZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJQYW5lbCgiRGlzdHJpYnVjacOzbiBOb3JtYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGViYXJQYW5lbCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MkaDMoIkluZ3Jlc2EgbG9zIHNpZ3VpZW50ZXMgZGF0b3M6IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljSW5wdXQoInhfZnVuY2lvbiIsIng6IiwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljSW5wdXQoInByb21lZGlvMSIsInByb21lZGlvOiIsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY0lucHV0KCJkZXNfZXN0IiwiRGVzdmlhY2nDs24gRXN0YW5kYXI6IiwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluUGFuZWwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMSgiRnVuY2nDs24gZGUgRGlzdHJpYnVjacOzbiB5IERlbnNpZGFkIE5vcm1hbCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdE91dHB1dCgiZGVuc2lkYWQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsb3RPdXRwdXQoImRpc3RyaWJ1Y2lvbjEiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiUGFuZWwoIlRhYiAyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYlBhbmVsKCJUYWIgMyIpCiAgICAgICAgICAgICAgICApCiksICAgCnNlcnZlciA8LSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0KSB7CiAgb3V0cHV0JGRlbnNpZGFkIDwtIHJlbmRlclBsb3QoewogICAgeF9kZW5zaWRhZDEgPC0gc2VxKGlucHV0JHByb21lZGlvMS0zKmlucHV0JGRlc19lc3QsIGlucHV0JHByb21lZGlvMSszKmlucHV0JGRlc19lc3QsIGxlbmd0aD0xMDAwKQogICAgeV9kZW5zaWRhZDEgPC0gZG5vcm0oeF9kZW5zaWRhZDEsaW5wdXQkcHJvbWVkaW8xLGlucHV0JGRlc19lc3QpCiAgICBkZW5zaWRhZDwtIHBsb3QoeF9kZW5zaWRhZDEsIHlfZGVuc2lkYWQxLHR5cGU9ImwiLCBsdHk9MSwgeGxhYj0ieCIsIHlsYWI9ICJmKHgpIixtYWluPSJGdW5jacOzbiBkZSBEZW5zaWRhZCBkZSBQcm9iYWJpbGlkYWQgKE5vcm1hbCkiLCBjb2w9InNreWJsdWUiKQogICAgfSkKICBvdXRwdXQkZGlzdHJpYnVjaW9uMSA8LSByZW5kZXJQbG90KHsKICAgIHhfZGlzdHJpYnVjaW9uMSA8LSBzZXEoaW5wdXQkcHJvbWVkaW8xLTMqaW5wdXQkZGVzX2VzdCwgaW5wdXQkcHJvbWVkaW8xKzMqaW5wdXQkZGVzX2VzdCwgbGVuZ3RoPTEwMDApCiAgICB5X2Rpc3RyaWJ1Y2lvbjEgPC0gcG5vcm0oeF9kaXN0cmlidWNpb24xLGlucHV0JHByb21lZGlvMSxpbnB1dCRkZXNfZXN0KQogICAgZGlzdHJpYnVjaW9uMSA8LXBsb3QoeF9kaXN0cmlidWNpb24xLCB5X2Rpc3RyaWJ1Y2lvbjEsdHlwZT0ibCIsIGx0eT0xLCB4bGFiPSJ4IiwgeWxhYj0gImYoeCkiLG1haW49IkZ1bmNpw7NuIGRlIERpc3RyaWJ1Y2nDs24gZGUgUHJvYmFiaWxpZGFkIChOb3JtYWwpIiwgY29sPSJyZWQiKQogICAgCiAgfSkKfSkKYGBgCgojIyBFamVyY2ljaW8gNQpVbiBudWV2byBwcm9jZXNvIHBhcmEgcHJvZHVjaXIgZGlhbWFudGVzIHNpbnTDqXRpY29zIGVzIHJlbnRhYmxlIHNvbG8gc2kgZWwgcGVzbyBkZSBlc3RvcyBlcyBtYXlvciBhIDAuNSBxdWlsYXRlcyBwYXJhIGV2YWx1YXJsbyBzZSBnZW5lcmFyb24gY29uIGxvcyBzaWd1aWVudGVzIHBlc29zOiAwLjQ2LDAuNjEsIDAuNTIsMC40OCwwLjU3LDAuNTQuCkVsIHByb2Nlc28gZXMgcmVudGFibGU/CjEpSG86IG0gPj0gMC41IC8gSDE9IG0gPiAwLjUKCjIpIM6xPSAwLjA1CgozKSBab25hIGRlIGFjZXB0YWNpw7NuCiFbXSgvVXNlcnMvc3BlZWR5bWQyMy9EZXNrdG9wL0FuYWxpc2lzIGRlIGRhdG9zIC0gY29uY2VudHJhY2lvzIFuL01vZCAzL09uZVRhaWwuanBnKQoKNClFc3RhZGlzdGljYSBkZSBwcnVlYmEKYGBge3J9CnBlc29fZGlhbWFudGU8LSBjKDAuNDYsMC42MSwgMC41MiwwLjQ4LDAuNTcsMC41NCkKcGVzb19kaWFtYW50ZQpwcm9tZWRpbyA8LSBtZWFuKHBlc29fZGlhbWFudGUpCnByb21lZGlvCmRlc3ZpYWNpb248LSBzcXJ0KHZhcihwZXNvX2RpYW1hbnRlKSkKZGVzdmlhY2lvbgoKbjwtIDYKCm1pdSA8LSAwLjUKCnQxPC0gKHByb21lZGlvLW1pdSkvKGRlc3ZpYWNpb24vc3FydChuKSkKdDEKCmBgYAo1KSBObyBzZSByZWNoYXphIEgwLCBsb3MgZGF0b3Mgbm8gcHJlc2VudGFuIHN1ZmljaWVudGUgZXZpZGVuY2lhIHBhcmEgaW5kaWNhciBxdWUgZWwgcGVzbyBtZWRpbyBkZSBsb3MgZGlhbWFudGVzIGV4Y2VkYSBsb3MgMC41IHF1aWxhdGVzCgojIyBHcmFmaWNhcyBnZW5lcmFsZXMgZGUgdCBkZSBTdHVkZW4KIyMjIEZ1bmNpw7NuIGRlIGRlbnNpZGFkIGRlIHByb2JhYmlsaWRhZCAodCBkZSBzdHVkZW4pCmBgYHtyfQp4X2RlbnNpZGFkMjwtIHNlcSgtNCw0LGxlbmd0aD0xMDAwKQp5X2RlbnNpZGFkMjwtIGR0KHhfZGVuc2lkYWQyLCBkZj01KQoKcGxvdCh4X2RlbnNpZGFkMiwgeV9kZW5zaWRhZDIsdHlwZT0ibCIsIGx0eT0xLCB4bGFiPSJ0IiwgeWxhYj0iZih0KSIgLCBtYWluPSJGdW5jacOzbiBkZSBkZW5zaWRhZCBkZSBwcm9iYWJpbGlkYWQodCBkZSBTdHVkZW50KSIpCmBgYAoKIyMjIEZ1bmNpw7NuIGRlIGRpc3RyaWJ1Y2nDs24gZGUgcHJvYmFiaWxpZGFkICh0IGRlIHN0dWRlbikKYGBge3J9CnhfZGVuc2lkYWQzPC0gc2VxKC00LDQsbGVuZ3RoPTEwMDApCnlfZGVuc2lkYWQzPC0gcHQoeF9kZW5zaWRhZDMsIGRmPTUpCgpwbG90KHhfZGVuc2lkYWQzLCB5X2RlbnNpZGFkMyx0eXBlPSJsIiwgbHR5PTEsIHhsYWI9InQiLCB5bGFiPSJmKHQpIiAsIG1haW49IkZ1bmNpw7NuIGRlIGRlbnNpZGFkIGRlIHByb2JhYmlsaWRhZCh0IGRlIFN0dWRlbnQpIikKYGBgCgojIyMgRWplcmNpY2lvIDUuMQpMb3MgZGVzZWNob3MgaW5kdXN0cmlhbGVzIHkgcmVzaWR1YWxlcyBkZXNjYXJnYWRvcyBlbiBudWVzdHJvcyByw61vcyB5IGFycm95b3MgYWJzb3JiZW4gb3jDrWdlbm8geSwgcG9yIHRhbnRvLCByZWR1Y2VuIGxhIGNhbnRpZGFkIGRlIG94w61nZW5vIGRpc3VlbHRvIGRpc3BvbmlibGUgcGFyYSBwZWNlcyB5IG90cmFzIGZvcm1hcyBkZSBmYXVuYSBhY3XDoXRpY2EuIFVuYSBhZ2VuY2lhIGVzdGF0YWwgcmVxdWllcmUgdW4gbcOtbmltbyBkZSA1IHBhcnRlcyBwb3IgbWlsbMOzbiAocHBtKSBkZSBveMOtZ2VubyBkaXN1ZWx0byBwYXJhIHF1ZSBlbCBjb250ZW5pZG8gZGUgb3jDrWdlbm8gc2VhIHN1ZmljaWVudGUgcGFyYSBzb3N0ZW5lciB2aWRhIGFjdcOhdGljYS4gU2VpcyBlc3BlY8OtbWVuZXMgZGUgYWd1YSB0b21hZG9zIGRlIHVuIHLDrW8gZW4gdW4gbHVnYXIgZXNwZWPDrWZpY28gZHVyYW50ZSBsYSBlc3RhY2nDs24gZGUgYWd1YXMgYmFqYXMgKGp1bGlvKSBkaW8gbGVjdHVyYXMgZGUgNC45LCA1LjEsIDQuOSwgNSwgNSB5IDQuNyBkZSBveMOtZ2VubyBkaXN1ZWx0by4gwr9Mb3MgZGF0b3MgZGFuIHN1ZmljaWVudGUgZXZpZGVuY2lhIHBhcmEgaW5kaWNhciBxdWUgZWwgY29udGVuaWRvIGRlIG94w61nZW5vIGRpc3VlbHRvIGVzIG1lbm9yIGEgNSBwcG0pIFBydWViZSB1c2FuZG8gYT0uMDUKCjEpIEhvOiBtID49IDAuNSAvIEgxOiBtID4gMC41CgoyKSAyKSDOsT0gMC4wNQoKMykgWm9uYSBkZSBhY2NlcHRhY2nDs24KIVtdKC9Vc2Vycy9zcGVlZHltZDIzL0Rlc2t0b3AvQW5hbGlzaXMgZGUgZGF0b3MgLSBjb25jZW50cmFjaW/MgW4vTW9kIDMvT25lVGFpbC5qcGcpCgo0KSBFc3RhZGlzdGljbyBkZSBwcnVlYmEgdApgYGB7cn0Kb3hpZ2VubyA8LSBjKDQuOSwgNS4xLCA0LjksIDUsIDUsIDQuNykKCnByb21lZGlvMSA8LSBtZWFuKG94aWdlbm8pCnByb21lZGlvMQpkZXN2aWFjaW9uMTwtIHNxcnQodmFyKG94aWdlbm8pKQpkZXN2aWFjaW9uMQpuMTwtIDYKCm1pdTEgPC0gNQoKdDI8LSAocHJvbWVkaW8xLW1pdTEpLyhkZXN2aWFjaW9uMS9zcXJ0KG4xKSkKdDIKYGBgCgo1KSBObyBzZSByZWNoYXphCgojIyBXaW5zb3JpemF0aW9uIHZzIFRyaW1taW5nCmBgYHtyfQplcnJvcl9wZXNvX2RpYW1hbnRlPC0gYygwLjQ2LDAuNjEsIDAuNTIsMC40OCwwLjU3LDU0KQpib3hwbG90KGVycm9yX3Blc29fZGlhbWFudGUsIGhvcml6b250YWw9VFJVRSkKbGlicmFyeShEZXNjVG9vbHMpCgpwZXNvX2RpYW1hbnRlX3dpbnNvcml6ZSA8LSBXaW5zb3JpemUoZXJyb3JfcGVzb19kaWFtYW50ZSwgMC4xMCkKcGVzb19kaWFtYW50ZV93aW5zb3JpemUKCnBlc29fZGlhbWFudGVfdHJpbSA8LSBUcmltKGVycm9yX3Blc29fZGlhbWFudGUsIDEpCnBlc29fZGlhbWFudGVfdHJpbQpgYGAKCgo=