Problema 2 - Propiedades de los Estimadores

Enunciado

La simulación ayuda a entender y validad las propiedades de los estimadores estadísticos como son. insesgadez, eficiencia y la consistencia principalmente. El siguiente problema permite evidenciar las principales características de un grupo de estimadores propuestos para la estimación de un parámetro asociado a un modelo de probabilidad.

Sean \(X_1,X_2,X_3\) y \(X_4\), una muestra aleatoria de tamaño \(n = 4\) cuya población la conforma una distribución exponencial con parámetro \(\theta\) desconocido. Determine las características de cada uno de los siguientes estimadores propuestos:

\[\hat{\theta_1} = \frac{X_1+X_2}{6} + \frac{X_3+X_4}{3}\] \[\hat{\theta_2} = \frac{X_1+2X_2+3X_3+4X_4}{5}\] \[\hat{\theta_3} = \frac{X_1+X_2+X_3+X_4}{4}\] \[\hat{\theta_4} = \frac{min{(X_1,X_2,X_3,X_4)}+max{(X_1,X_2,X_3,X_4)}}{2}\]

Nota

  • Genere una muestras de n=20, 50, 100 y 1000 para cada uno de los estimadores planteados.
  • En cada caso evalue las propiedades de insesgadez, eficiencia y consistencia
  • Suponga un valor para el parámetro θ
  • Funciones recomendadas : function(){}, rexp() , data.frame(), apply(), boxplot()
  • Entregable : enlace en RPubs con informe 2

Desarrollo

Se procede a evaluar la función con los diferentes tamaños de muestra propuestos, es decir, con 20, 50, 100 y 1000 y con \[\lambda = 1/5\], de lo cual se obtienen los graficos de cajas y bigotes que sirven para comparar los estimadores. También se imprimen el resumen estadístico que indica el mínimo, el máximo, cuartiles, media y mediana. De igual forma se muestran las varianzas en una matriz para realizar un analisis de dispersión.

#Definition of estimator's functions
#estimators = data.frame(
  theta1 <- function(x1,x2,x3,x4){
   return(((x1+x2)/6)+ (x3+x4)/3)
  }
  #,
  theta2 <- function(x1, x2, x3, x4){
   return((x1+2*x2+3*x3+4*x4)/5)
  }
  #,
  theta3 <- function(x1, x2, x3, x4){
    return((x1+x2+x3+x4)/4)
  }
  #,
  theta4 <- function(x1, x2, x3, x4){
    return(((min(x1,x2,x3,x4)+max(x1,x2,x3,x4))/2))
  }
#)

comparison_function <- function(n, sup_theta){
  # n <- number of records
  # sup_theta <- Initial value assumed for the exponential distribution

  # 1. Exponential distribution for each sample
  x1 <- rexp(n, sup_theta)
  x2 <- rexp(n, sup_theta)
  x3 <- rexp(n, sup_theta)
  x4 <- rexp(n, sup_theta)
  # 2. Dataframe creation
  base <- data.frame(x1, x2, x3, x4)
  # 3. Estimators calculation for the sample
  base$t1 <- apply(base, 1, function(row) theta1(row['x1'], row['x2'], row['x3'], row['x4']))
  base$t2 <- apply(base, 1, function(row) theta2(row['x1'], row['x2'], row['x3'], row['x4']))
  base$t3 <- apply(base, 1, function(row) theta3(row['x1'], row['x2'], row['x3'], row['x4']))
  base$t4 <- apply(base, 1, function(row) theta4(row['x1'], row['x2'], row['x3'], row['x4']))
  # 4. Estimators are extracted into a dataframe
  estimators<- base[c('t1', 't2', 't3', 't4')]
  # 5. Summary
  summary_data <- summary(estimators)
  # 6. The variance matrix is calculated
  varianza <- var(estimators)
  # 7.  Reorder estimators to graph
  estimators_2 <- melt(estimators, id.vars= NULL)
  # 8. Create the boxplots graph
  plot <- ggplot(estimators_2, aes(variable, value)) + 
  geom_boxplot() +
  labs(x = "Estimadores", y = "Valor", title = paste("Comparación de los estimadores con n = ", n)) +
  geom_hline(yintercept = 1/sup_theta, color = "blue", linetype = "dashed")
  # 9. Results
  resultados <- list(
    'summary' = summary_data,
    'grafico' = plot,  
    'varianza' = varianza
    )
  return(resultados)
}
## $summary
##        t1              t2               t3              t4        
##  Min.   :1.767   Min.   : 3.564   Min.   :1.598   Min.   : 1.537  
##  1st Qu.:2.506   1st Qu.: 5.391   1st Qu.:3.135   1st Qu.: 2.688  
##  Median :3.650   Median : 7.193   Median :3.450   Median : 4.277  
##  Mean   :4.474   Mean   : 8.650   Mean   :4.576   Mean   : 5.195  
##  3rd Qu.:6.600   3rd Qu.:12.496   3rd Qu.:6.313   3rd Qu.: 7.303  
##  Max.   :8.365   Max.   :15.158   Max.   :9.106   Max.   :11.348  
## 
## $grafico

## 
## $varianza
##          t1        t2        t3        t4
## t1 5.128421  9.515852  5.476037  6.250953
## t2 9.515852 18.079295 10.094433 11.115848
## t3 5.476037 10.094433  6.251125  6.910751
## t4 6.250953 11.115848  6.910751  9.045993
## $summary
##        t1                t2               t3               t4         
##  Min.   : 0.6387   Min.   : 1.344   Min.   : 0.695   Min.   : 0.8642  
##  1st Qu.: 3.2033   1st Qu.: 6.294   1st Qu.: 3.128   1st Qu.: 3.3655  
##  Median : 4.0621   Median : 8.225   Median : 3.969   Median : 4.6343  
##  Mean   : 4.8311   Mean   : 9.538   Mean   : 4.963   Mean   : 5.8067  
##  3rd Qu.: 5.6352   3rd Qu.:11.306   3rd Qu.: 6.106   3rd Qu.: 7.0321  
##  Max.   :12.1408   Max.   :23.493   Max.   :13.197   Max.   :16.0809  
## 
## $grafico

## 
## $varianza
##           t1       t2        t3        t4
## t1  7.286053 13.43935  7.612652  8.568259
## t2 13.439347 25.67221 13.688540 15.161435
## t3  7.612652 13.68854  8.505949 10.003452
## t4  8.568259 15.16144 10.003452 13.348050
## $summary
##        t1               t2               t3               t4        
##  Min.   : 1.002   Min.   : 1.599   Min.   : 1.182   Min.   : 1.310  
##  1st Qu.: 3.108   1st Qu.: 6.219   1st Qu.: 3.213   1st Qu.: 3.713  
##  Median : 4.255   Median : 8.979   Median : 4.510   Median : 4.959  
##  Mean   : 4.784   Mean   : 9.774   Mean   : 4.785   Mean   : 5.535  
##  3rd Qu.: 6.290   3rd Qu.:12.745   3rd Qu.: 6.043   3rd Qu.: 7.167  
##  Max.   :10.674   Max.   :24.096   Max.   :11.764   Max.   :16.065  
## 
## $grafico

## 
## $varianza
##           t1        t2       t3        t4
## t1  4.983959 10.544076 4.449238  5.217641
## t2 10.544076 23.111498 9.155749 10.943495
## t3  4.449238  9.155749 4.506484  5.146582
## t4  5.217641 10.943495 5.146582  7.437949
## $summary
##        t1                t2                t3                t4         
##  Min.   : 0.3342   Min.   : 0.7125   Min.   : 0.3602   Min.   : 0.4383  
##  1st Qu.: 3.0277   1st Qu.: 5.9151   1st Qu.: 3.1249   1st Qu.: 3.3968  
##  Median : 4.5293   Median : 8.9602   Median : 4.5741   Median : 5.3288  
##  Mean   : 4.9655   Mean   : 9.8837   Mean   : 5.0214   Mean   : 5.8549  
##  3rd Qu.: 6.3990   3rd Qu.:12.8492   3rd Qu.: 6.4421   3rd Qu.: 7.5653  
##  Max.   :17.0149   Max.   :39.4124   Max.   :14.8683   Max.   :23.4715  
## 
## $grafico

## 
## $varianza
##           t1       t2        t3        t4
## t1  6.647399 13.46979  6.128357  7.202934
## t2 13.469789 28.37501 12.148760 14.205786
## t3  6.128357 12.14876  6.299528  7.459181
## t4  7.202934 14.20579  7.459181 10.454047

Sezgo

Tanto en los gráficos como en las tablas se puede ver que los valores de los estimadores \(\theta_1, \theta_2,\) y \(\theta_3\) son cercanos a la media, lo cual indica que el sezgo es bajo, en contraste con \(\theta_4\). El estimador \(\theta_3\) tiene el valor medio más cercano al valor teórico indicado.

Dispersión

En las tablas se puede ver que el estimador \(\theta_3\) es el que presenta el menos grado de dispersión, lo que nos indica que es el estimador más eficiente. A este lo siguen \(\theta_1, \theta_4,\) y \(\theta_2\).

Consistencia

Los estimadores \(\theta_1\) y \(\theta_3\) son los que presentan una disminución del sezgo a medida en que se hace más grande el tamaño de la muestra, lo cual nos indica que son consistentes.

En Conclusión, el estimador \(\theta_3\), por todo lo mencionado anteriormente, es el que presenta menor grado de sezgo, es el más eficiente y el más consistente.

LS0tDQpzdWJ0aXRsZTogIkFjdGl2aWRhZCAyLiBNw6l0b2RvcyB5IFNpbXVsYWNpw7NuIg0KdGl0bGU6ICJQcm9ibGVtYSAyIg0KYXV0aG9yOiAiRW5yaXF1ZSBKb3PDqSBQZcOxYSB5IExlYW5kcm8gTXXDsW96Ig0KZGF0ZTogIjIwMjQtMDMtMDYiDQpvdXRwdXQ6ICANCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICB0b2M6IGZhbHNlDQogICAgdG9jX2RlcHRoOiA0DQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgY29sbGFwc2VkOiB0cnVlDQogICAgc21vb3RoX3Njcm9sbDogdHJ1ZQ0KICAgIHRoZW1lOiBmbGF0bHkNCiAgICBoaWdobGlnaHQ6IGthdGUNCiAgICBkZl9wcmludDogcGFnZWQNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQpudW1iZXItc2VjdGlvbnM6IHRydWUNCi0tLQ0KDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgZmlnLndpZHRoID0gNSwgZmlnLmhlaWdodCA9IDUpDQpSLnZlcnNpb24NCg0KaWYoIXJlcXVpcmVOYW1lc3BhY2UoImdncGxvdDIiLCBxdWlldGx5ID0gVFJVRSkpew0KICBpbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikNCn0NCmlmKCFyZXF1aXJlTmFtZXNwYWNlKCJyZXNoYXBlMiIsIHF1aWV0bHkgPSBUUlVFKSl7DQogIGluc3RhbGwucGFja2FnZXMoInJlc2hhcGUyIikNCn0NCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocmVzaGFwZTIpDQoNCnNldC5zZWVkKDY4OSkNCmBgYA0KDQojIyBQcm9ibGVtYSAyIC0gUHJvcGllZGFkZXMgZGUgbG9zIEVzdGltYWRvcmVzDQoNCiMjIyBFbnVuY2lhZG8NCg0KTGEgKipzaW11bGFjacOzbioqIGF5dWRhIGEgZW50ZW5kZXIgeSB2YWxpZGFkIGxhcyBwcm9waWVkYWRlcyBkZSBsb3MgZXN0aW1hZG9yZXMgZXN0YWTDrXN0aWNvcyBjb21vIHNvbi4gaW5zZXNnYWRleiwgZWZpY2llbmNpYSB5IGxhIGNvbnNpc3RlbmNpYSBwcmluY2lwYWxtZW50ZS4gRWwgc2lndWllbnRlIHByb2JsZW1hIHBlcm1pdGUgZXZpZGVuY2lhciBsYXMgcHJpbmNpcGFsZXMgY2FyYWN0ZXLDrXN0aWNhcyBkZSB1biBncnVwbyBkZSBlc3RpbWFkb3JlcyBwcm9wdWVzdG9zIHBhcmEgbGEgZXN0aW1hY2nDs24gZGUgdW4gcGFyw6FtZXRybyBhc29jaWFkbyBhIHVuIG1vZGVsbyBkZSBwcm9iYWJpbGlkYWQuDQoNCg0KU2VhbiAkWF8xLFhfMixYXzMkIHkgJFhfNCQsIHVuYSBtdWVzdHJhIGFsZWF0b3JpYSBkZSB0YW1hw7FvICRuID0gNCQgY3V5YSBwb2JsYWNpw7NuIGxhIGNvbmZvcm1hIHVuYSBkaXN0cmlidWNpw7NuIGV4cG9uZW5jaWFsIGNvbiBwYXLDoW1ldHJvICRcdGhldGEkIGRlc2Nvbm9jaWRvLiBEZXRlcm1pbmUgbGFzIGNhcmFjdGVyw61zdGljYXMgZGUgY2FkYSB1bm8gZGUgbG9zIHNpZ3VpZW50ZXMgZXN0aW1hZG9yZXMgcHJvcHVlc3RvczoNCg0KJCRcaGF0e1x0aGV0YV8xfSA9IFxmcmFje1hfMStYXzJ9ezZ9ICsgXGZyYWN7WF8zK1hfNH17M30kJA0KJCRcaGF0e1x0aGV0YV8yfSA9IFxmcmFje1hfMSsyWF8yKzNYXzMrNFhfNH17NX0kJA0KJCRcaGF0e1x0aGV0YV8zfSA9IFxmcmFje1hfMStYXzIrWF8zK1hfNH17NH0kJA0KJCRcaGF0e1x0aGV0YV80fSA9IFxmcmFje21pbnsoWF8xLFhfMixYXzMsWF80KX0rbWF4eyhYXzEsWF8yLFhfMyxYXzQpfX17Mn0kJA0KDQojIyMgTm90YQ0KKiBHZW5lcmUgdW5hIG11ZXN0cmFzIGRlIG49MjAsIDUwLCAxMDAgeSAxMDAwIHBhcmEgY2FkYSB1bm8gZGUgbG9zIGVzdGltYWRvcmVzIHBsYW50ZWFkb3MuDQoqIEVuIGNhZGEgY2FzbyBldmFsdWUgbGFzIHByb3BpZWRhZGVzIGRlIGluc2VzZ2FkZXosIGVmaWNpZW5jaWEgeSBjb25zaXN0ZW5jaWENCiogU3Vwb25nYSB1biB2YWxvciBwYXJhIGVsIHBhcsOhbWV0cm8gzrgNCiogRnVuY2lvbmVzIHJlY29tZW5kYWRhcyA6IGZ1bmN0aW9uKCl7fSwgcmV4cCgpICwgZGF0YS5mcmFtZSgpLCBhcHBseSgpLCBib3hwbG90KCkNCiogRW50cmVnYWJsZSA6IGVubGFjZSBlbiBSUHVicyBjb24gaW5mb3JtZSAyDQoNCg0KIyMjIERlc2Fycm9sbG8NCg0KDQpTZSBwcm9jZWRlIGEgZXZhbHVhciBsYSBmdW5jacOzbiBjb24gbG9zIGRpZmVyZW50ZXMgdGFtYcOxb3MgZGUgbXVlc3RyYSBwcm9wdWVzdG9zLCBlcyBkZWNpciwgY29uIDIwLCA1MCwgMTAwIHkgMTAwMCB5IGNvbiAkJFxsYW1iZGEgPSAxLzUkJCwgZGUgbG8gY3VhbCBzZSBvYnRpZW5lbiBsb3MgZ3JhZmljb3MgZGUgY2FqYXMgeSBiaWdvdGVzIHF1ZSBzaXJ2ZW4gcGFyYSBjb21wYXJhciBsb3MgZXN0aW1hZG9yZXMuIFRhbWJpw6luIHNlIGltcHJpbWVuIGVsIHJlc3VtZW4gZXN0YWTDrXN0aWNvIHF1ZSBpbmRpY2EgZWwgbcOtbmltbywgZWwgbcOheGltbywgY3VhcnRpbGVzLCBtZWRpYSB5IG1lZGlhbmEuICBEZSBpZ3VhbCBmb3JtYSBzZSBtdWVzdHJhbiBsYXMgdmFyaWFuemFzIGVuIHVuYSBtYXRyaXogcGFyYSByZWFsaXphciB1biBhbmFsaXNpcyBkZSBkaXNwZXJzacOzbi4NCg0KYGBge3IgZGVmaW5pdGlvbnMgLCBpbmNsdWRlID0gVFJVRSwgZWNobyA9IFRSVUV9DQoNCiNEZWZpbml0aW9uIG9mIGVzdGltYXRvcidzIGZ1bmN0aW9ucw0KI2VzdGltYXRvcnMgPSBkYXRhLmZyYW1lKA0KICB0aGV0YTEgPC0gZnVuY3Rpb24oeDEseDIseDMseDQpew0KICAgcmV0dXJuKCgoeDEreDIpLzYpKyAoeDMreDQpLzMpDQogIH0NCiAgIywNCiAgdGhldGEyIDwtIGZ1bmN0aW9uKHgxLCB4MiwgeDMsIHg0KXsNCiAgIHJldHVybigoeDErMip4MiszKngzKzQqeDQpLzUpDQogIH0NCiAgIywNCiAgdGhldGEzIDwtIGZ1bmN0aW9uKHgxLCB4MiwgeDMsIHg0KXsNCiAgICByZXR1cm4oKHgxK3gyK3gzK3g0KS80KQ0KICB9DQogICMsDQogIHRoZXRhNCA8LSBmdW5jdGlvbih4MSwgeDIsIHgzLCB4NCl7DQogICAgcmV0dXJuKCgobWluKHgxLHgyLHgzLHg0KSttYXgoeDEseDIseDMseDQpKS8yKSkNCiAgfQ0KIykNCg0KY29tcGFyaXNvbl9mdW5jdGlvbiA8LSBmdW5jdGlvbihuLCBzdXBfdGhldGEpew0KICAjIG4gPC0gbnVtYmVyIG9mIHJlY29yZHMNCiAgIyBzdXBfdGhldGEgPC0gSW5pdGlhbCB2YWx1ZSBhc3N1bWVkIGZvciB0aGUgZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uDQoNCiAgIyAxLiBFeHBvbmVudGlhbCBkaXN0cmlidXRpb24gZm9yIGVhY2ggc2FtcGxlDQogIHgxIDwtIHJleHAobiwgc3VwX3RoZXRhKQ0KICB4MiA8LSByZXhwKG4sIHN1cF90aGV0YSkNCiAgeDMgPC0gcmV4cChuLCBzdXBfdGhldGEpDQogIHg0IDwtIHJleHAobiwgc3VwX3RoZXRhKQ0KICAjIDIuIERhdGFmcmFtZSBjcmVhdGlvbg0KICBiYXNlIDwtIGRhdGEuZnJhbWUoeDEsIHgyLCB4MywgeDQpDQogICMgMy4gRXN0aW1hdG9ycyBjYWxjdWxhdGlvbiBmb3IgdGhlIHNhbXBsZQ0KICBiYXNlJHQxIDwtIGFwcGx5KGJhc2UsIDEsIGZ1bmN0aW9uKHJvdykgdGhldGExKHJvd1sneDEnXSwgcm93Wyd4MiddLCByb3dbJ3gzJ10sIHJvd1sneDQnXSkpDQogIGJhc2UkdDIgPC0gYXBwbHkoYmFzZSwgMSwgZnVuY3Rpb24ocm93KSB0aGV0YTIocm93Wyd4MSddLCByb3dbJ3gyJ10sIHJvd1sneDMnXSwgcm93Wyd4NCddKSkNCiAgYmFzZSR0MyA8LSBhcHBseShiYXNlLCAxLCBmdW5jdGlvbihyb3cpIHRoZXRhMyhyb3dbJ3gxJ10sIHJvd1sneDInXSwgcm93Wyd4MyddLCByb3dbJ3g0J10pKQ0KICBiYXNlJHQ0IDwtIGFwcGx5KGJhc2UsIDEsIGZ1bmN0aW9uKHJvdykgdGhldGE0KHJvd1sneDEnXSwgcm93Wyd4MiddLCByb3dbJ3gzJ10sIHJvd1sneDQnXSkpDQogICMgNC4gRXN0aW1hdG9ycyBhcmUgZXh0cmFjdGVkIGludG8gYSBkYXRhZnJhbWUNCiAgZXN0aW1hdG9yczwtIGJhc2VbYygndDEnLCAndDInLCAndDMnLCAndDQnKV0NCiAgIyA1LiBTdW1tYXJ5DQogIHN1bW1hcnlfZGF0YSA8LSBzdW1tYXJ5KGVzdGltYXRvcnMpDQogICMgNi4gVGhlIHZhcmlhbmNlIG1hdHJpeCBpcyBjYWxjdWxhdGVkDQogIHZhcmlhbnphIDwtIHZhcihlc3RpbWF0b3JzKQ0KICAjIDcuICBSZW9yZGVyIGVzdGltYXRvcnMgdG8gZ3JhcGgNCiAgZXN0aW1hdG9yc18yIDwtIG1lbHQoZXN0aW1hdG9ycywgaWQudmFycz0gTlVMTCkNCiAgIyA4LiBDcmVhdGUgdGhlIGJveHBsb3RzIGdyYXBoDQogIHBsb3QgPC0gZ2dwbG90KGVzdGltYXRvcnNfMiwgYWVzKHZhcmlhYmxlLCB2YWx1ZSkpICsgDQogIGdlb21fYm94cGxvdCgpICsNCiAgbGFicyh4ID0gIkVzdGltYWRvcmVzIiwgeSA9ICJWYWxvciIsIHRpdGxlID0gcGFzdGUoIkNvbXBhcmFjacOzbiBkZSBsb3MgZXN0aW1hZG9yZXMgY29uIG4gPSAiLCBuKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAxL3N1cF90aGV0YSwgY29sb3IgPSAiYmx1ZSIsIGxpbmV0eXBlID0gImRhc2hlZCIpDQogICMgOS4gUmVzdWx0cw0KICByZXN1bHRhZG9zIDwtIGxpc3QoDQogICAgJ3N1bW1hcnknID0gc3VtbWFyeV9kYXRhLA0KICAgICdncmFmaWNvJyA9IHBsb3QsICANCiAgICAndmFyaWFuemEnID0gdmFyaWFuemENCiAgICApDQogIHJldHVybihyZXN1bHRhZG9zKQ0KfQ0KDQpgYGANCg0KDQpgYGB7ciByZXN1bHRzfQ0KDQpsYW1iZGEgPSAxLzUNCmNhc2VfMSA8LSBjb21wYXJpc29uX2Z1bmN0aW9uKDIwLCBsYW1iZGEpDQpjYXNlXzIgPC0gY29tcGFyaXNvbl9mdW5jdGlvbig1MCwgbGFtYmRhKQ0KY2FzZV8zIDwtIGNvbXBhcmlzb25fZnVuY3Rpb24oMTAwLCBsYW1iZGEpDQpjYXNlXzQgPC0gY29tcGFyaXNvbl9mdW5jdGlvbigxMDAwLCBsYW1iZGEpIA0KY2FzZV8xDQpjYXNlXzINCmNhc2VfMw0KY2FzZV80DQpgYGANCiMjIyBTZXpnbw0KDQpUYW50byBlbiAgbG9zIGdyw6FmaWNvcyBjb21vIGVuIGxhcyB0YWJsYXMgc2UgcHVlZGUgdmVyIHF1ZSBsb3MgdmFsb3JlcyBkZSBsb3MgZXN0aW1hZG9yZXMgJFx0aGV0YV8xLCBcdGhldGFfMiwkIHkgJFx0aGV0YV8zJCBzb24gY2VyY2Fub3MgYSBsYSBtZWRpYSwgbG8gY3VhbCBpbmRpY2EgcXVlIGVsIHNlemdvIGVzIGJham8sIGVuIGNvbnRyYXN0ZSBjb24gJFx0aGV0YV80JC4gIEVsIGVzdGltYWRvciAkXHRoZXRhXzMkIHRpZW5lIGVsIHZhbG9yIG1lZGlvIG3DoXMgY2VyY2FubyBhbCB2YWxvciB0ZcOzcmljbyBpbmRpY2Fkby4NCg0KIyMjIERpc3BlcnNpw7NuDQoNCkVuIGxhcyB0YWJsYXMgc2UgcHVlZGUgdmVyIHF1ZSBlbCBlc3RpbWFkb3IgJFx0aGV0YV8zJCBlcyBlbCBxdWUgcHJlc2VudGEgZWwgbWVub3MgZ3JhZG8gZGUgZGlzcGVyc2nDs24sIGxvIHF1ZSBub3MgaW5kaWNhIHF1ZSBlcyBlbCBlc3RpbWFkb3IgbcOhcyBlZmljaWVudGUuIEEgZXN0ZSBsbyBzaWd1ZW4gJFx0aGV0YV8xLCBcdGhldGFfNCwkIHkgJFx0aGV0YV8yJC4NCg0KIyMjIENvbnNpc3RlbmNpYQ0KDQpMb3MgZXN0aW1hZG9yZXMgJFx0aGV0YV8xJCB5ICRcdGhldGFfMyQgc29uIGxvcyBxdWUgcHJlc2VudGFuIHVuYSBkaXNtaW51Y2nDs24gZGVsIHNlemdvIGEgbWVkaWRhIGVuIHF1ZSBzZSBoYWNlIG3DoXMgZ3JhbmRlIGVsIHRhbWHDsW8gZGUgbGEgbXVlc3RyYSwgbG8gY3VhbCBub3MgaW5kaWNhIHF1ZSBzb24gY29uc2lzdGVudGVzLg0KDQpFbiAqKkNvbmNsdXNpw7NuKiosIGVsIGVzdGltYWRvciAkXHRoZXRhXzMkLCBwb3IgdG9kbyBsbyBtZW5jaW9uYWRvIGFudGVyaW9ybWVudGUsIGVzIGVsIHF1ZSBwcmVzZW50YSBtZW5vciBncmFkbyBkZSBzZXpnbywgZXMgZWwgbcOhcyBlZmljaWVudGUgeSBlbCBtw6FzIGNvbnNpc3RlbnRlLg0K