Recientemente, la diputada Camila Vallejos propuso disminuir la jornada laboral. Apoyó su proyecto de ley con el gráfico que expuso en su twitter

El gráfico que presenta sugiere una relación entre la productividad y las horas trabajadas. Aun cuando es conocido el hecho que correlación no establece causalidad, en este caso más que correlación lo que hay es un ajuste de las escalas de los ejes para sugerir visualmente una correlación.

Bueno, revisé la web citada por la diputada, pero no pude encontrar los datos del gráfico.

Afortunadamente, hay un paquete en R que permite extraer los datos de la imagen del gráfico, así que allá vamos.

Se puede desmontar el gráfico mediante el paquete WebPlotDigitizer

Paquetes

# install.packages("devtools")
# devtools::install_github("ankitrohatgi/digitizeR")
library('digitizeR')
library("tidyverse")

Extracción de datos del gráfico

Abro localmente una instancia del visualizador

app <- wpd.launch()

Cierro

wpd.close(app)

Extraigo y limpio los dos valores negativos datos de productividad

productividad <- read_csv("productividad.csv")
Parsed with column specification:
cols(
  anno = col_integer(),
  productividad = col_double()
)
summary(productividad)
      anno      productividad   
 Min.   :1955   Min.   : 4.435  
 1st Qu.:1972   1st Qu.: 7.639  
 Median :1986   Median : 8.592  
 Mean   :1986   Mean   :10.209  
 3rd Qu.:2001   3rd Qu.:13.297  
 Max.   :2015   Max.   :18.767  
productividad$anno <- as.factor(productividad$anno)
plot(productividad)

Repito para horas trabajadas

app <- wpd.launch()

Cierro

wpd.close(app)
horas <- read_csv("horas.csv")
Parsed with column specification:
cols(
  anno = col_integer(),
  hrs = col_double()
)

Cambio año a factor

summary(horas)
      anno           hrs      
 Min.   :1955   Min.   :1991  
 1st Qu.:1970   1st Qu.:2204  
 Median :1985   Median :2237  
 Mean   :1985   Mean   :2241  
 3rd Qu.:1999   3rd Qu.:2277  
 Max.   :2015   Max.   :2500  
horas$anno <- as.factor(horas$anno)
plot(horas)

Ahora junto

prod_hrs <- left_join(productividad, horas, by = "anno")
joining factors with different levels, coercing to character vector
rm(productividad, horas)
prod_hrs

Limpieza de datos

Por alguna razón hay datos duplicados, limpio

duplicated(prod_hrs$anno)
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[10]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[19]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
[28] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
[37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[46] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
[55] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
[64] FALSE  TRUE FALSE FALSE FALSE  TRUE

Elimino duplicados

prod_hrs <- prod_hrs[!duplicated(prod_hrs$anno), ]

Ahora veo en tabla, no debería quedar ningún duplicado

table(prod_hrs$anno)

1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 
   1    1    1    1    1    1    1    1    1    1    1 
1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 
   1    1    1    1    1    1    1    1    1    1    1 
1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 
   1    1    1    1    1    1    1    1    1    1    1 
1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 
   1    1    1    1    1    1    1    1    1    1    1 
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 
   1    1    1    1    1    1    1    1    1    1    1 
2011 2012 2013 2015 
   1    1    1    1 

Ahora si! :) Grafico uno y otro por separado

plot(prod_hrs$anno, prod_hrs$productividad, type="o", col="blue")

plot(prod_hrs$anno, prod_hrs$hrs, type="o", col="red")

So far, so good. Ahora corrijo los ejes

plot(prod_hrs$anno, prod_hrs$productividad, 
     ylim = c(0,20), ylab = "Productividad", xlab = "Año" , type="o", col="blue")

plot(prod_hrs$anno, prod_hrs$hrs, 
     ylim = c(0,2500), ylab = "Horas trabajadas", xlab = "Año", type="o", col="red")

Excelente Smithers.

Ahora todo junto

par(mar=c(5,4,4,5)+.1)
plot(prod_hrs$anno, prod_hrs$productividad,
     type = "l",col = "blue", ylab = "Productividad", xlab = "Año")
par(new=TRUE)
plot(prod_hrs$anno,prod_hrs$hrs,,type="l",col="red",xaxt="n",yaxt="n",xlab="",ylab="")
axis(4)
mtext("Horas",side=4,line=3)

Muy bien, es el mismo gráfico de la diputada. Veamos…

Comparación de gráficos

Comparación de gráficos

Ahora vamos a corregir los ejes, porque un truco usual es ocultar el cero. En este caso vamos a fijar ambos ejes a cero.

par(mar=c(5,4,4,5)+.1)
plot(prod_hrs$anno, prod_hrs$productividad,
     type = "l",col = "blue", ylab = "Productividad", xlab = "Año", ylim = c(0,20))
par(new=TRUE)
plot(prod_hrs$anno,prod_hrs$hrs,,type="l",col="red",xaxt="n",yaxt="n",xlab="",ylab="", ylim = c(0,2500))
axis(4)
mtext("Horas",side=4,line=3)
abline(h=NULL, v=2000)
legend(1955, 2000, legend=c("Productividad", "Hrs trabajadas"),
       col=c("blue", "red"), lty=1:1, cex=0.8)
text(2008, 500, "Reforma Jornada Laboral", cex = 0.6)
text(2008, 400, "48 a 45 hrs", cex = 0.6)

Parece que el efecto ha sido marginal. De hecho la productividad ha aumentado de manera casi continua desde mediados de los 80. Tendrá algo que ver con la automatización de procesos, incorporación de máquinas al trabajo, disponibilidad de mayor y mejor potencia de procesamiento en los computadores, aumento de la población femenina en el trabajo y tantos cientos de otras variables?

Para la diputada Vallejos esto se explica el aumento de la productividad se explica por la disminución de horas trabajadas. Desafortunadamente ni siquiera los mismos datos que provee apoyan su afirmación.

Así que el marcador final queda así Datos 1: Diputada 0.

Quizás una interpretación más apropiada sería: “saben, podemos disminuir la jornada laboral, porque la productividad vienen aumentando en los últimos 30 años, incluso cuando disminuimos la jornada laboral”.

Sin embargo el mayor problema es que este aumento de productividad parece estar explicado, no solo en Chile sino en todo el mundo, por el incremento de la automatización, inteligencia artificial y robots. Hay algunos empleos que tienen los días contados, como los cajeros de supermercados. Ya hay supermercados donde uno mismo marca y paga la leche extraída por un robot de una vaca que vive en una granja automatizada. Todo esto con tarjeta de crédito, en una transacción operada por algoritmos y computadores.

¿Qué pasa con la gente cuando las máquinas ocupan su trabajo? Pues que los trabajadores de baja especialización se mueven a otra área de baja especialización.

¿Cómo se soluciona esto? Pues entregando las competencias necesarias para el futuro: codigo, algoritmos, ciencia, en el fondo las competencias básicas para que un ciudadano pueda desenvolverse en un mundo con cada vez más información, y donde pueda interpretar, o crear, correctamente un gráfico.


Para el que se está preguntando como se haría esto con ggplot, pues no se puede. O sea, si se puede, pero mejor no. Ver http://stackoverflow.com/a/3101876/4930967

LS0tCnRpdGxlOiAiQ29tbyBtZW50aXIgY29uIGVzdGFkw61zdGljYXM6IGdyw6FmaWNvcyB5IHVzbyBtYcOxb3NvIGRlIGVqZXMgc2VjdW5kYXJpb3MiCm91dHB1dDogCiAgaHRtbF9ub3RlYm9vazogCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB0cnVlCi0tLQpSZWNpZW50ZW1lbnRlLCBsYSBkaXB1dGFkYSBDYW1pbGEgVmFsbGVqb3MgcHJvcHVzbyBkaXNtaW51aXIgbGEgam9ybmFkYSBsYWJvcmFsLiAKQXBvecOzIHN1IHByb3llY3RvIGRlIGxleSBjb24gZWwgZ3LDoWZpY28gcXVlIGV4cHVzbyBlbiBzdSB0d2l0dGVyCgohW2h0dHBzOi8vdHdpdHRlci5jb20vY2FtaWxhX3ZhbGxlam8vc3RhdHVzLzg0Mjc1MjA2OTA4MTcxNDY4OV0oZmlndXJlcy90dWl0LnBuZykKCkVsIGdyw6FmaWNvIHF1ZSBwcmVzZW50YSBzdWdpZXJlIHVuYSByZWxhY2nDs24gZW50cmUgbGEgcHJvZHVjdGl2aWRhZCB5IGxhcyBob3JhcyB0cmFiYWphZGFzLiBBdW4gY3VhbmRvIGVzIGNvbm9jaWRvIGVsIGhlY2hvIHF1ZSBjb3JyZWxhY2nDs24gbm8gZXN0YWJsZWNlIGNhdXNhbGlkYWQsIGVuIGVzdGUgY2FzbyBtw6FzIHF1ZSBjb3JyZWxhY2nDs24gbG8gcXVlIGhheSBlcyB1biBhanVzdGUgZGUgbGFzIGVzY2FsYXMgZGUgbG9zIGVqZXMgcGFyYSBzdWdlcmlyIHZpc3VhbG1lbnRlIHVuYSBjb3JyZWxhY2nDs24uIAoKQnVlbm8sIHJldmlzw6kgbGEgd2ViIGNpdGFkYSBwb3IgbGEgZGlwdXRhZGEsIHBlcm8gbm8gcHVkZSBlbmNvbnRyYXIgbG9zIGRhdG9zIGRlbCBncsOhZmljby4gCgpBZm9ydHVuYWRhbWVudGUsIGhheSB1biBwYXF1ZXRlIGVuIFIgcXVlIHBlcm1pdGUgZXh0cmFlciBsb3MgZGF0b3MgZGUgbGEgaW1hZ2VuIGRlbCBncsOhZmljbywgYXPDrSBxdWUgYWxsw6EgdmFtb3MuCgpTZSBwdWVkZSBkZXNtb250YXIgZWwgZ3LDoWZpY28gbWVkaWFudGUgZWwgcGFxdWV0ZSAqKldlYlBsb3REaWdpdGl6ZXIqKgoKIyMgUGFxdWV0ZXMKYGBge3IsIGV2YWw9RkFMU0V9CiMgaW5zdGFsbC5wYWNrYWdlcygiZGV2dG9vbHMiKQojIGRldnRvb2xzOjppbnN0YWxsX2dpdGh1YigiYW5raXRyb2hhdGdpL2RpZ2l0aXplUiIpCmxpYnJhcnkoJ2RpZ2l0aXplUicpCmxpYnJhcnkoInRpZHl2ZXJzZSIpCmBgYAoKIyMgRXh0cmFjY2nDs24gZGUgZGF0b3MgZGVsIGdyw6FmaWNvCkFicm8gbG9jYWxtZW50ZSB1bmEgaW5zdGFuY2lhIGRlbCB2aXN1YWxpemFkb3IKYGBge3IsIGV2YWw9RkFMU0V9CmFwcCA8LSB3cGQubGF1bmNoKCkKYGBgCgpDaWVycm8KYGBge3IsIGV2YWw9RkFMU0V9CndwZC5jbG9zZShhcHApCmBgYAoKRXh0cmFpZ28geSBsaW1waW8gbG9zIGRvcyB2YWxvcmVzIG5lZ2F0aXZvcyBkYXRvcyBkZSBwcm9kdWN0aXZpZGFkCmBgYHtyfQpwcm9kdWN0aXZpZGFkIDwtIHJlYWRfY3N2KCJwcm9kdWN0aXZpZGFkLmNzdiIpCmBgYApgYGB7cn0Kc3VtbWFyeShwcm9kdWN0aXZpZGFkKQpwcm9kdWN0aXZpZGFkJGFubm8gPC0gYXMuZmFjdG9yKHByb2R1Y3RpdmlkYWQkYW5ubykKYGBgCmBgYHtyfQpwbG90KHByb2R1Y3RpdmlkYWQpCmBgYAoKUmVwaXRvIHBhcmEgaG9yYXMgdHJhYmFqYWRhcwpgYGB7ciwgZXZhbD1GQUxTRX0KYXBwIDwtIHdwZC5sYXVuY2goKQpgYGAKCkNpZXJybwpgYGB7ciwgZXZhbD1GQUxTRX0Kd3BkLmNsb3NlKGFwcCkKYGBgCmBgYHtyfQpob3JhcyA8LSByZWFkX2NzdigiaG9yYXMuY3N2IikKYGBgCkNhbWJpbyBhw7FvIGEgZmFjdG9yCmBgYHtyfQpzdW1tYXJ5KGhvcmFzKQpob3JhcyRhbm5vIDwtIGFzLmZhY3Rvcihob3JhcyRhbm5vKQpgYGAKYGBge3J9CnBsb3QoaG9yYXMpCmBgYApBaG9yYSBqdW50bwpgYGB7cn0KcHJvZF9ocnMgPC0gbGVmdF9qb2luKHByb2R1Y3RpdmlkYWQsIGhvcmFzLCBieSA9ICJhbm5vIikKcm0ocHJvZHVjdGl2aWRhZCwgaG9yYXMpCmBgYAoKYGBge3J9CnByb2RfaHJzCmBgYAojIyBMaW1waWV6YSBkZSBkYXRvcwpQb3IgYWxndW5hIHJhesOzbiBoYXkgZGF0b3MgZHVwbGljYWRvcywgbGltcGlvCmBgYHtyfQpkdXBsaWNhdGVkKHByb2RfaHJzJGFubm8pCgpgYGAKRWxpbWlubyBkdXBsaWNhZG9zCmBgYHtyfQpwcm9kX2hycyA8LSBwcm9kX2hyc1shZHVwbGljYXRlZChwcm9kX2hycyRhbm5vKSwgXQpgYGAKCkFob3JhIHZlbyBlbiB0YWJsYSwgbm8gZGViZXLDrWEgcXVlZGFyIG5pbmfDum4gZHVwbGljYWRvCgpgYGB7cn0KdGFibGUocHJvZF9ocnMkYW5ubykKYGBgCgpBaG9yYSBzaSEgOikKR3JhZmljbyB1bm8geSBvdHJvIHBvciBzZXBhcmFkbwpgYGB7cn0KcGxvdChwcm9kX2hycyRhbm5vLCBwcm9kX2hycyRwcm9kdWN0aXZpZGFkLCB0eXBlPSJvIiwgY29sPSJibHVlIikKYGBgCgpgYGB7cn0KcGxvdChwcm9kX2hycyRhbm5vLCBwcm9kX2hycyRocnMsIHR5cGU9Im8iLCBjb2w9InJlZCIpCmBgYAoKU28gZmFyLCBzbyBnb29kLiBBaG9yYSBjb3JyaWpvIGxvcyBlamVzCmBgYHtyfQpwbG90KHByb2RfaHJzJGFubm8sIHByb2RfaHJzJHByb2R1Y3RpdmlkYWQsIAogICAgIHlsaW0gPSBjKDAsMjApLCB5bGFiID0gIlByb2R1Y3RpdmlkYWQiLCB4bGFiID0gIkHDsW8iICwgdHlwZT0ibyIsIGNvbD0iYmx1ZSIpCmBgYAoKYGBge3J9CnBsb3QocHJvZF9ocnMkYW5ubywgcHJvZF9ocnMkaHJzLCAKICAgICB5bGltID0gYygwLDI1MDApLCB5bGFiID0gIkhvcmFzIHRyYWJhamFkYXMiLCB4bGFiID0gIkHDsW8iLCB0eXBlPSJvIiwgY29sPSJyZWQiKQpgYGAgCgpFeGNlbGVudGUgU21pdGhlcnMuIAoKCiMjIEFob3JhIHRvZG8ganVudG8KCmBgYHtyfQoKcGFyKG1hcj1jKDUsNCw0LDUpKy4xKQpwbG90KHByb2RfaHJzJGFubm8sIHByb2RfaHJzJHByb2R1Y3RpdmlkYWQsCiAgICAgdHlwZSA9ICJsIixjb2wgPSAiYmx1ZSIsIHlsYWIgPSAiUHJvZHVjdGl2aWRhZCIsIHhsYWIgPSAiQcOxbyIpCnBhcihuZXc9VFJVRSkKcGxvdChwcm9kX2hycyRhbm5vLHByb2RfaHJzJGhycywsdHlwZT0ibCIsY29sPSJyZWQiLHhheHQ9Im4iLHlheHQ9Im4iLHhsYWI9IiIseWxhYj0iIikKYXhpcyg0KQptdGV4dCgiSG9yYXMiLHNpZGU9NCxsaW5lPTMpCgpgYGAKCk11eSBiaWVuLCBlcyBlbCBtaXNtbyBncsOhZmljbyBkZSBsYSBkaXB1dGFkYS4gIFZlYW1vcy4uLgoKIVtDb21wYXJhY2nDs24gZGUgZ3LDoWZpY29zXShmaWd1cmVzL2NvbXBhcmFjaW9uMS5wbmcpCgpBaG9yYSB2YW1vcyBhIGNvcnJlZ2lyIGxvcyBlamVzLCBwb3JxdWUgdW4gdHJ1Y28gdXN1YWwgZXMgb2N1bHRhciBlbCBjZXJvLiBFbiBlc3RlIGNhc28gdmFtb3MgYSBmaWphciBhbWJvcyBlamVzIGEgY2Vyby4gCgpgYGB7cn0KcGFyKG1hcj1jKDUsNCw0LDUpKy4xKQpwbG90KHByb2RfaHJzJGFubm8sIHByb2RfaHJzJHByb2R1Y3RpdmlkYWQsCiAgICAgdHlwZSA9ICJsIixjb2wgPSAiYmx1ZSIsIHlsYWIgPSAiUHJvZHVjdGl2aWRhZCIsIHhsYWIgPSAiQcOxbyIsIHlsaW0gPSBjKDAsMjApKQpwYXIobmV3PVRSVUUpCnBsb3QocHJvZF9ocnMkYW5ubyxwcm9kX2hycyRocnMsLHR5cGU9ImwiLGNvbD0icmVkIix4YXh0PSJuIix5YXh0PSJuIix4bGFiPSIiLHlsYWI9IiIsIHlsaW0gPSBjKDAsMjUwMCkpCmF4aXMoNCkKbXRleHQoIkhvcmFzIixzaWRlPTQsbGluZT0zKQphYmxpbmUoaD1OVUxMLCB2PTIwMDApCmxlZ2VuZCgxOTU1LCAyMDAwLCBsZWdlbmQ9YygiUHJvZHVjdGl2aWRhZCIsICJIcnMgdHJhYmFqYWRhcyIpLAogICAgICAgY29sPWMoImJsdWUiLCAicmVkIiksIGx0eT0xOjEsIGNleD0wLjgpCnRleHQoMjAwOCwgNTAwLCAiUmVmb3JtYSBKb3JuYWRhIExhYm9yYWwiLCBjZXggPSAwLjYpCnRleHQoMjAwOCwgNDAwLCAiNDggYSA0NSBocnMiLCBjZXggPSAwLjYpCmBgYAoKUGFyZWNlIHF1ZSBlbCBlZmVjdG8gaGEgc2lkbyBtYXJnaW5hbC4gRGUgaGVjaG8gbGEgcHJvZHVjdGl2aWRhZCBoYSBhdW1lbnRhZG8gZGUgbWFuZXJhIGNhc2kgY29udGludWEgZGVzZGUgbWVkaWFkb3MgZGUgbG9zIDgwLiBUZW5kcsOhIGFsZ28gcXVlIHZlciBjb24gbGEgYXV0b21hdGl6YWNpw7NuIGRlIHByb2Nlc29zLCBpbmNvcnBvcmFjacOzbiBkZSBtw6FxdWluYXMgYWwgdHJhYmFqbywgZGlzcG9uaWJpbGlkYWQgZGUgbWF5b3IgeSBtZWpvciBwb3RlbmNpYSBkZSBwcm9jZXNhbWllbnRvIGVuIGxvcyBjb21wdXRhZG9yZXMsIGF1bWVudG8gZGUgbGEgcG9ibGFjacOzbiBmZW1lbmluYSBlbiBlbCB0cmFiYWpvIHkgdGFudG9zIGNpZW50b3MgZGUgb3RyYXMgdmFyaWFibGVzPyAKClBhcmEgbGEgZGlwdXRhZGEgVmFsbGVqb3MgZXN0byBzZSBleHBsaWNhIGVsIGF1bWVudG8gZGUgbGEgcHJvZHVjdGl2aWRhZCBzZSBleHBsaWNhIHBvciBsYSBkaXNtaW51Y2nDs24gZGUgaG9yYXMgdHJhYmFqYWRhcy4gRGVzYWZvcnR1bmFkYW1lbnRlIG5pIHNpcXVpZXJhIGxvcyBtaXNtb3MgZGF0b3MgcXVlIHByb3ZlZSBhcG95YW4gc3UgYWZpcm1hY2nDs24uIAoKQXPDrSBxdWUgZWwgbWFyY2Fkb3IgZmluYWwgcXVlZGEgYXPDrSAqKkRhdG9zIDE6IERpcHV0YWRhIDAuKioKClF1aXrDoXMgdW5hIGludGVycHJldGFjacOzbiBtw6FzIGFwcm9waWFkYSBzZXLDrWE6ICJzYWJlbiwgcG9kZW1vcyBkaXNtaW51aXIgbGEgam9ybmFkYSBsYWJvcmFsLCBwb3JxdWUgbGEgcHJvZHVjdGl2aWRhZCB2aWVuZW4gYXVtZW50YW5kbyBlbiBsb3Mgw7psdGltb3MgMzAgYcOxb3MsIGluY2x1c28gY3VhbmRvIGRpc21pbnVpbW9zIGxhIGpvcm5hZGEgbGFib3JhbCIuCgpTaW4gZW1iYXJnbyBlbCBtYXlvciBwcm9ibGVtYSBlcyBxdWUgZXN0ZSBhdW1lbnRvIGRlIHByb2R1Y3RpdmlkYWQgcGFyZWNlIGVzdGFyIGV4cGxpY2Fkbywgbm8gc29sbyBlbiBDaGlsZSBzaW5vIGVuIHRvZG8gZWwgbXVuZG8sIHBvciBlbCBpbmNyZW1lbnRvIGRlIGxhIGF1dG9tYXRpemFjacOzbiwgaW50ZWxpZ2VuY2lhIGFydGlmaWNpYWwgeSByb2JvdHMuIEhheSBhbGd1bm9zIGVtcGxlb3MgcXVlIHRpZW5lbiBsb3MgZMOtYXMgY29udGFkb3MsIGNvbW8gbG9zIGNhamVyb3MgZGUgc3VwZXJtZXJjYWRvcy4gWWEgaGF5IHN1cGVybWVyY2Fkb3MgZG9uZGUgdW5vIG1pc21vIG1hcmNhIHkgcGFnYSBsYSBsZWNoZSBleHRyYcOtZGEgcG9yIHVuIHJvYm90IGRlIHVuYSB2YWNhIHF1ZSB2aXZlIGVuIHVuYSBncmFuamEgYXV0b21hdGl6YWRhLiBUb2RvIGVzdG8gY29uIHRhcmpldGEgZGUgY3LDqWRpdG8sIGVuIHVuYSB0cmFuc2FjY2nDs24gb3BlcmFkYSBwb3IgYWxnb3JpdG1vcyB5IGNvbXB1dGFkb3Jlcy4gCgrCv1F1w6kgcGFzYSBjb24gbGEgZ2VudGUgY3VhbmRvIGxhcyBtw6FxdWluYXMgb2N1cGFuIHN1IHRyYWJham8/IFB1ZXMgcXVlIGxvcyB0cmFiYWphZG9yZXMgZGUgYmFqYSBlc3BlY2lhbGl6YWNpw7NuIHNlIG11ZXZlbiBhIG90cmEgw6FyZWEgZGUgYmFqYSBlc3BlY2lhbGl6YWNpw7NuLiAKCsK/Q8OzbW8gc2Ugc29sdWNpb25hIGVzdG8/IFB1ZXMgZW50cmVnYW5kbyBsYXMgY29tcGV0ZW5jaWFzIG5lY2VzYXJpYXMgcGFyYSBlbCBmdXR1cm86IGNvZGlnbywgYWxnb3JpdG1vcywgY2llbmNpYSwgZW4gZWwgZm9uZG8gbGFzIGNvbXBldGVuY2lhcyBiw6FzaWNhcyBwYXJhIHF1ZSB1biBjaXVkYWRhbm8gcHVlZGEgZGVzZW52b2x2ZXJzZSBlbiB1biBtdW5kbyBjb24gY2FkYSB2ZXogbcOhcyBpbmZvcm1hY2nDs24sIHkgZG9uZGUgcHVlZGEgaW50ZXJwcmV0YXIsIG8gY3JlYXIsIGNvcnJlY3RhbWVudGUgdW4gZ3LDoWZpY28uIAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKUGFyYSBlbCBxdWUgc2UgZXN0w6EgcHJlZ3VudGFuZG8gY29tbyBzZSBoYXLDrWEgZXN0byBjb24gZ2dwbG90LCBwdWVzIG5vIHNlIHB1ZWRlLiBPIHNlYSwgc2kgc2UgcHVlZGUsIHBlcm8gbWVqb3IgIG5vLiBWZXIgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzEwMTg3Ni80OTMwOTY3CgojIyBSZXN1bWVuOiBhbnRlcyB5IGRlc3B1ZXMKCiFbaHR0cHM6Ly90d2l0dGVyLmNvbS9jYW1pbGFfdmFsbGVqby9zdGF0dXMvODQyNzUyMDY5MDgxNzE0Njg5XShmaWd1cmVzL2NvbXBhcmFjaW9uLnBuZykKCiMjIExlY3R1cmEgY29tcGxlbWVudGFyaWEKW0R1YWwtU2NhbGVkIEF4ZXMgaW4gR3JhcGhzIEFyZSBUaGV5IEV2ZXIgdGhlIEJlc3QgU29sdXRpb24/XShodHRwOi8vd3d3LnBlcmNlcHR1YWxlZGdlLmNvbS9hcnRpY2xlcy92aXN1YWxfYnVzaW5lc3NfaW50ZWxsaWdlbmNlL2R1YWwtc2NhbGVkX2F4ZXMucGRmKQoKCg==