Caso Turismo Sostenible por Equipo 2

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(tidyr)
#install.packages("summarytools")
library(summarytools)
#install.packages("gridExtra")
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
library(stats)
library(readxl)
#file.choose()
Base_caso_turismo <- read_excel("/Users/marianaguevara/Downloads/Base Caso Turismo .xlsx")
## New names:
## • `` -> `...54`
View(Base_caso_turismo)
# Resumen descriptivo básico de las variables numéricas
str(Base_caso_turismo)
## tibble [935 × 54] (S3: tbl_df/tbl/data.frame)
##  $ StartDate            : POSIXct[1:935], format: "2020-03-05 08:54:01" "2020-03-05 09:03:48" ...
##  $ EndDate              : POSIXct[1:935], format: "2020-03-05 09:01:58" "2020-03-05 09:05:44" ...
##  $ IPAddress            : chr [1:935] "131.178.54.55" "131.178.200.66" "200.95.170.77" "131.178.54.69" ...
##  $ Progress             : num [1:935] 100 100 100 100 100 100 100 100 100 100 ...
##  $ Duration (in seconds): num [1:935] 477 115 257 916 255 ...
##  $ Finished             : num [1:935] 1 1 1 1 1 1 1 1 1 1 ...
##  $ RecordedDate         : POSIXct[1:935], format: "2020-03-05 09:01:59" "2020-03-05 09:05:44" ...
##  $ ResponseId           : chr [1:935] "R_1HNq2eWcYHIucIF" "R_3GlhbBuuVXrn7Wa" "R_27Nh8d4iF86rUuK" "R_uf5wi6KfNeBnmal" ...
##  $ LocationLatitude     : num [1:935] 25.7 25.6 25.7 25.6 25.8 ...
##  $ LocationLongitude    : num [1:935] -100 -100 -100 -100 -100 ...
##  $ DistributionChannel  : chr [1:935] "anonymous" "anonymous" "anonymous" "anonymous" ...
##  $ UserLanguage         : chr [1:935] "EN" "EN" "EN" "EN" ...
##  $ Q2                   : num [1:935] 1 1 1 1 1 1 2 1 1 2 ...
##  $ Q3_1                 : num [1:935] 1 1 1 NA 1 1 2 2 2 1 ...
##  $ Q3_2                 : num [1:935] 2 2 2 NA 3 2 1 3 3 2 ...
##  $ Q3_3                 : num [1:935] 3 3 3 NA 2 3 3 1 1 3 ...
##  $ Q4_1                 : num [1:935] 1 1 1 NA 1 1 1 1 NA 1 ...
##  $ Q4_2                 : num [1:935] NA 1 1 1 1 1 NA 1 1 1 ...
##  $ Q4_3                 : num [1:935] 1 1 1 1 1 1 1 1 NA 1 ...
##  $ Q4_4                 : num [1:935] NA 1 NA 1 1 1 1 NA NA NA ...
##  $ Q4_5                 : num [1:935] NA 1 NA 1 NA NA 1 NA NA NA ...
##  $ Q4_6                 : num [1:935] 1 1 NA NA 1 1 NA NA NA 1 ...
##  $ Q4_7                 : num [1:935] NA 1 1 NA 1 1 1 1 1 1 ...
##  $ Q4_8                 : num [1:935] 1 1 1 1 NA 1 1 NA NA 1 ...
##  $ Q4_9                 : num [1:935] NA 1 NA 1 NA 1 1 NA NA 1 ...
##  $ Q4_10                : num [1:935] NA 1 1 NA 1 1 1 1 1 1 ...
##  $ Q4_11                : num [1:935] NA 1 1 1 NA NA NA NA NA NA ...
##  $ Q4_12                : num [1:935] 1 1 1 NA NA 1 1 NA NA NA ...
##  $ Q6_1                 : num [1:935] 4 7 7 5 7 7 5 5 5 5 ...
##  $ Q6_2                 : num [1:935] 5 6 5 7 5 7 7 5 5 5 ...
##  $ Q6_3                 : num [1:935] 7 6 5 6 7 7 7 5 5 6 ...
##  $ Q6_4                 : num [1:935] 4 5 6 5 5 7 7 5 5 7 ...
##  $ Q6_5                 : num [1:935] 6 5 7 6 6 7 7 4 4 6 ...
##  $ Q6_6                 : num [1:935] 7 4 7 5 7 7 5 4 3 7 ...
##  $ Q6_7                 : num [1:935] 7 6 6 7 7 4 4 2 4 5 ...
##  $ Q6_8                 : num [1:935] 7 7 7 5 7 7 7 7 4 7 ...
##  $ Q6_9                 : num [1:935] 5 6 7 6 6 7 3 5 4 4 ...
##  $ Q6_10                : num [1:935] 6 6 7 5 7 7 3 6 4 2 ...
##  $ Q6_11                : num [1:935] 4 6 1 5 3 7 1 1 4 1 ...
##  $ Q6_12                : num [1:935] 4 6 3 5 7 7 7 2 4 6 ...
##  $ Q6_13                : num [1:935] 5 6 7 6 5 7 3 3 4 2 ...
##  $ Q6_14                : num [1:935] 4 5 4 6 5 4 1 3 4 3 ...
##  $ Q6_15                : num [1:935] 5 6 5 3 3 2 1 2 4 1 ...
##  $ Q6_16                : num [1:935] 7 5 7 7 7 7 4 5 4 4 ...
##  $ Q6_17                : num [1:935] 3 6 7 4 5 7 4 6 4 4 ...
##  $ Q6_18                : num [1:935] 4 6 4 6 4 2 1 1 4 3 ...
##  $ Q7                   : num [1:935] 3 4 3 4 2 4 2 20 0 0 ...
##  $ Q10                  : num [1:935] 1 4 4 4 1 3 1 3 2 1 ...
##  $ Q9                   : num [1:935] 2 1 3 1 3 1 3 1 2 2 ...
##  $ Q12                  : num [1:935] 19 22 21 22 21 56 36 23 21 22 ...
##  $ Q12_1                : num [1:935] 1 1 1 1 1 4 2 1 1 1 ...
##  $ Q11                  : num [1:935] 2 1 2 2 2 2 2 2 1 1 ...
##  $ Q13                  : num [1:935] 1 1 1 1 1 1 1 1 1 1 ...
##  $ ...54                : logi [1:935] NA NA NA NA NA NA ...
summary(Base_caso_turismo)
##    StartDate                         EndDate                      
##  Min.   :2020-03-04 04:54:34.00   Min.   :2020-03-04 04:57:13.00  
##  1st Qu.:2020-03-08 19:28:15.00   1st Qu.:2020-03-08 19:32:51.50  
##  Median :2020-03-09 17:37:12.00   Median :2020-03-09 17:39:08.00  
##  Mean   :2020-03-13 14:25:03.80   Mean   :2020-03-13 15:13:52.72  
##  3rd Qu.:2020-03-20 05:49:28.00   3rd Qu.:2020-03-20 05:59:40.00  
##  Max.   :2020-03-26 07:10:06.00   Max.   :2020-03-26 07:50:16.00  
##                                                                   
##   IPAddress            Progress      Duration (in seconds)    Finished     
##  Length:935         Min.   : 50.00   Min.   :    59.0      Min.   :0.0000  
##  Class :character   1st Qu.:100.00   1st Qu.:   183.0      1st Qu.:1.0000  
##  Mode  :character   Median :100.00   Median :   309.0      Median :1.0000  
##                     Mean   : 94.17   Mean   :  2920.7      Mean   :0.8834  
##                     3rd Qu.:100.00   3rd Qu.:   507.5      3rd Qu.:1.0000  
##                     Max.   :100.00   Max.   :500660.0      Max.   :1.0000  
##                                                                            
##   RecordedDate                     ResponseId        LocationLatitude
##  Min.   :2020-03-04 04:57:13.00   Length:935         Min.   :17.99   
##  1st Qu.:2020-03-08 21:05:23.50   Class :character   1st Qu.:25.64   
##  Median :2020-03-11 09:18:35.00   Mode  :character   Median :25.74   
##  Mean   :2020-03-14 10:50:52.36                      Mean   :31.07   
##  3rd Qu.:2020-03-22 04:29:48.50                      3rd Qu.:41.66   
##  Max.   :2020-03-30 07:27:42.00                      Max.   :47.21   
##                                                      NA's   :109     
##  LocationLongitude  DistributionChannel UserLanguage             Q2      
##  Min.   :-122.399   Length:935          Length:935         Min.   :1.00  
##  1st Qu.:-100.311   Class :character    Class :character   1st Qu.:1.00  
##  Median :-100.260   Mode  :character    Mode  :character   Median :1.00  
##  Mean   : -61.751                                          Mean   :1.38  
##  3rd Qu.:  -2.253                                          3rd Qu.:2.00  
##  Max.   :  15.560                                          Max.   :2.00  
##  NA's   :109                                                             
##       Q3_1            Q3_2            Q3_3           Q4_1          Q4_2    
##  Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   :1     Min.   :1    
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2.00   1st Qu.:1     1st Qu.:1    
##  Median :1.000   Median :2.000   Median :2.00   Median :1     Median :1    
##  Mean   :1.645   Mean   :2.046   Mean   :2.31   Mean   :1     Mean   :1    
##  3rd Qu.:2.000   3rd Qu.:3.000   3rd Qu.:3.00   3rd Qu.:1     3rd Qu.:1    
##  Max.   :3.000   Max.   :3.000   Max.   :3.00   Max.   :1     Max.   :1    
##  NA's   :79      NA's   :79      NA's   :79     NA's   :115   NA's   :233  
##       Q4_3          Q4_4          Q4_5          Q4_6          Q4_7    
##  Min.   :1     Min.   :1     Min.   :1     Min.   :1     Min.   :1    
##  1st Qu.:1     1st Qu.:1     1st Qu.:1     1st Qu.:1     1st Qu.:1    
##  Median :1     Median :1     Median :1     Median :1     Median :1    
##  Mean   :1     Mean   :1     Mean   :1     Mean   :1     Mean   :1    
##  3rd Qu.:1     3rd Qu.:1     3rd Qu.:1     3rd Qu.:1     3rd Qu.:1    
##  Max.   :1     Max.   :1     Max.   :1     Max.   :1     Max.   :1    
##  NA's   :398   NA's   :561   NA's   :562   NA's   :433   NA's   :328  
##       Q4_8          Q4_9         Q4_10         Q4_11         Q4_12    
##  Min.   :1     Min.   :1     Min.   :1     Min.   :1     Min.   :1    
##  1st Qu.:1     1st Qu.:1     1st Qu.:1     1st Qu.:1     1st Qu.:1    
##  Median :1     Median :1     Median :1     Median :1     Median :1    
##  Mean   :1     Mean   :1     Mean   :1     Mean   :1     Mean   :1    
##  3rd Qu.:1     3rd Qu.:1     3rd Qu.:1     3rd Qu.:1     3rd Qu.:1    
##  Max.   :1     Max.   :1     Max.   :1     Max.   :1     Max.   :1    
##  NA's   :454   NA's   :501   NA's   :445   NA's   :697   NA's   :393  
##       Q6_1            Q6_2            Q6_3            Q6_4      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:4.000   1st Qu.:4.000   1st Qu.:4.000   1st Qu.:4.000  
##  Median :5.000   Median :6.000   Median :6.000   Median :5.000  
##  Mean   :5.039   Mean   :5.352   Mean   :5.361   Mean   :4.994  
##  3rd Qu.:6.000   3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##                                                                 
##       Q6_5            Q6_6            Q6_7            Q6_8           Q6_9      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   :1.000  
##  1st Qu.:4.000   1st Qu.:5.000   1st Qu.:4.000   1st Qu.:5.00   1st Qu.:3.000  
##  Median :6.000   Median :6.000   Median :5.000   Median :7.00   Median :5.000  
##  Mean   :5.471   Mean   :5.548   Mean   :4.748   Mean   :5.96   Mean   :4.551  
##  3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:6.000   3rd Qu.:7.00   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.00   Max.   :7.000  
##                                                                                
##      Q6_10           Q6_11           Q6_12           Q6_13      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:4.000   1st Qu.:1.000   1st Qu.:4.000   1st Qu.:3.000  
##  Median :5.000   Median :2.000   Median :5.000   Median :4.000  
##  Mean   :4.811   Mean   :2.718   Mean   :4.943   Mean   :4.321  
##  3rd Qu.:6.000   3rd Qu.:4.000   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##                                                                 
##      Q6_14           Q6_15           Q6_16           Q6_17      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:1.000   1st Qu.:4.000   1st Qu.:3.000  
##  Median :4.000   Median :2.000   Median :6.000   Median :5.000  
##  Mean   :3.953   Mean   :3.098   Mean   :5.332   Mean   :4.645  
##  3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:7.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##                                                                 
##      Q6_18             Q7              Q10              Q9       
##  Min.   :1.000   Min.   : 0.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.: 2.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median :4.000   Median : 3.000   Median :1.000   Median :2.000  
##  Mean   :4.102   Mean   : 3.723   Mean   :1.535   Mean   :1.929  
##  3rd Qu.:5.000   3rd Qu.: 4.000   3rd Qu.:1.000   3rd Qu.:3.000  
##  Max.   :7.000   Max.   :70.000   Max.   :4.000   Max.   :3.000  
##                  NA's   :12       NA's   :13      NA's   :11     
##       Q12           Q12_1           Q11             Q13        ...54        
##  Min.   :16.0   Min.   :1.00   Min.   :1.000   Min.   :1.00   Mode:logical  
##  1st Qu.:21.0   1st Qu.:1.00   1st Qu.:1.000   1st Qu.:1.00   NA's:935      
##  Median :35.0   Median :2.00   Median :2.000   Median :1.00                 
##  Mean   :39.5   Mean   :2.45   Mean   :1.569   Mean   :1.43                 
##  3rd Qu.:55.0   3rd Qu.:3.00   3rd Qu.:2.000   3rd Qu.:2.00                 
##  Max.   :92.0   Max.   :5.00   Max.   :2.000   Max.   :2.00                 
##  NA's   :2                                     NA's   :2

TABLAS DE FRECUENCIA

Tabla frecuencia 1

#Harémos una tabla de frecuencia comparando que sexo es el más frecuente en esta encuesta, si hombres o mujeres, para eso tranformaremos la columna Q11 a que los número 1 sean hombres y los 2 sean mujeres 

#Primero reemplzamos los 1 a Hombres
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q11 = ifelse(Q11 == 1, "Hombres", Q11))

#Luego los 2 a No
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q11 = ifelse(Q11 == 2, "Mujeres", Q11))
#TABLA DE FRECUENCIA 1
#Creamos la tabla de frecuencia comparando la frecuencia de las respuestas a la pregunta Sexo

tabla_frecuenciaQ11 <- table(Base_caso_turismo$Q11)

print(tabla_frecuenciaQ11)
## 
## Hombres Mujeres 
##     403     532

Tabla frecuencia 2

#Harémos una tabla de frecuencia comparando que los países que más se repiten en la base de datos, si es México o España

#Primero reemplzamos los 1 por México
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q13 = ifelse(Q13 == 1, "México", Q13))

#Luego los 2 por España
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q13 = ifelse(Q13 == 2, "España", Q13))
#TABLA DE FRECUENCIA 2
#Creamos la tabla de frecuencia comparando si las personas son de México o España 
tabla_frecuenciaQ13 <- table(Base_caso_turismo$Q13)

print(tabla_frecuenciaQ13)
## 
## España México 
##    401    532

TABLAS CRUZADAS

#Harémos una tabla cruzada, para ver las razones que tienen las personas para viajar, segmentadas por género (hombre y mujeu) 

#Primero reemplzamos las razones de la pregunta 10
#Razon 1
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q10 = ifelse(Q10 == 1, "Ocio", Q10))

#Razón 2
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q10 = ifelse(Q10 == 2, "Estudio", Q10))

#Razon 3
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q10 = ifelse(Q10 == 3, "Trabajo", Q10))

#Razon 4
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q10 = ifelse(Q10 == 4, "Otros", Q10))
#Ahora harémos la tabla cruzada 
tabla_cruzada <- table(Base_caso_turismo$Q11, Base_caso_turismo$Q10)
print(tabla_cruzada)
##          
##           Estudio Ocio Otros Trabajo
##   Hombres      17  273    38      70
##   Mujeres      17  428    47      32

GRÁFICAS

Gráfico 1

#La primera gráfica que harémos será una bar plot comparando las respuestas de la pregunta 2 ¿Ha oído hablar del turismo responsable y/o sostenible?, para eso modificaremos la columna Q2 de la base de datos, cambiando los 1 por Sí y los 2 por No

#Primero reemplzamos los 1 a Si
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q2 = ifelse(Q2 == 1, "Si", Q2))

#Luego los 2 a No
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q2 = ifelse(Q2 == 2, "No", Q2))
#Creamos la gráfica comparando la frecuencia de las respuestas a la pregunta ¿Ha oído hablar del turismo responsable y/o sostenible?
ggplot(Base_caso_turismo, aes(x = Q2, fill = Q2)) +
  geom_bar() +
  labs(title = "¿Ha oído hablar del turismo responsable y/o sostenible?",
       x = "Respuestas",
       y = "Frecuencia") +
  scale_fill_manual(values = c("Si" = "royalblue1", "No" = "orange1"))

  #geom_text(stat = "count", aes(label = ))

GRÁFICO 2: ASPECTOS DEL TURISMO RESPONSABLE

Pregunta3_1 <- count(Base_caso_turismo, Q3_1)
Pregunta3_2 <- count(Base_caso_turismo, Q3_2)
Pregunta3_3 <- count(Base_caso_turismo, Q3_3)


names(Pregunta3_1) <- c("R", "Acciones y Normativas")
names(Pregunta3_2) <- c("R", "Alteración Entorno Social")
names(Pregunta3_3) <- c("R", "Equidad/Justicia Laboral")

Pregunta3_1
## # A tibble: 4 × 2
##       R `Acciones y Normativas`
##   <dbl>                   <int>
## 1     1                     434
## 2     2                     292
## 3     3                     130
## 4    NA                      79
Pregunta3_2
## # A tibble: 4 × 2
##       R `Alteración Entorno Social`
##   <dbl>                       <int>
## 1     1                         268
## 2     2                         281
## 3     3                         307
## 4    NA                          79
Pregunta3_3
## # A tibble: 4 × 2
##       R `Equidad/Justicia Laboral`
##   <dbl>                      <int>
## 1     1                        154
## 2     2                        283
## 3     3                        419
## 4    NA                         79
ResultQ3 <- merge(Pregunta3_1, Pregunta3_2, by = "R", all = TRUE) # Unir df1 y df2
ResultQ3 <- merge(ResultQ3, Pregunta3_3, by = "R", all = TRUE) # Unir df3 al resultado anterior
ResultQ3$R <- as.factor(ResultQ3$R)

ResultQ3_clean <- na.omit(ResultQ3)
barplot(as.matrix(ResultQ3_clean[, 2:4]), beside = TRUE, col = c("firebrick1", "firebrick3", "firebrick4"),
        legend.text = rownames(df), ylim = c(0, 400),
        main = "Aspectos del Turismo Sostenible", xlab = "Categorías", ylab = "Valores")
legend(x="bottomright", legend=c("1", "2", "3"), fill = c("firebrick1", "firebrick3", "firebrick4"))

GRÁFICO 3 ¿CUANTOS VIAJES HA REALIZADO EN EL ÚLTIMO AÑO?

ggplot(Base_caso_turismo, aes(x = Q7, fill = Q11)) +
  geom_bar(position = "dodge") +
  labs(
    title = "¿Cuántos viajes ha realizado en el último año?",
    x = "Respuestas",
    y = "Frecuencia"
  ) +
  scale_fill_manual(values = c("Hombres" = "royalblue1", "Mujeres" = "thistle2")) +
  theme_minimal() +
  theme(
    legend.position = "top",
    panel.grid.major = element_line(color = "gray", size = 0.5),   # Cuadrícula mayor
    panel.grid.minor = element_line(color = "gray", size = 0.2)    # Cuadrícula menor
  ) +
  scale_y_continuous(
    breaks = seq(0, 150, by = 10),    # Define las marcas en el eje y
    labels = seq(0, 150, by = 10)    # Define las etiquetas en el eje y
  )
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Removed 12 rows containing non-finite values (`stat_count()`).

GRÁFICO 4: RAZONES DE VIAJE DE ACUERDO CON EL GÉNERO

# Crear una gráfica de barras agrupadas
ggplot(Base_caso_turismo, aes(x = `Q10`, fill = Q11)) +
  geom_bar(position = "dodge", stat = "count") +
  labs(title = "Gráfico de Barras Agrupadas: Razones de Viaje de acuerdo con el Género",
       x = "Razones de Viaje",
       y = "Frecuencia") +
  theme_minimal()

#GRÁFICO 5: AFIRMACIONES QUE DESCRIBEN SU MODO DE ACTUAR (VARIABLE Q6)

afirmaciones <- data.frame(Base_caso_turismo$Q6_1, Base_caso_turismo$Q6_2, Base_caso_turismo$Q6_3, Base_caso_turismo$Q6_4, Base_caso_turismo$Q6_5, Base_caso_turismo$Q6_6, Base_caso_turismo$Q6_7, Base_caso_turismo$Q6_18, Base_caso_turismo$Q6_9, Base_caso_turismo$Q6_10, Base_caso_turismo$Q6_11, Base_caso_turismo$Q6_12,Base_caso_turismo$Q6_13,Base_caso_turismo$Q6_14, Base_caso_turismo$Q6_15, Base_caso_turismo$Q6_16, Base_caso_turismo$Q6_17, Base_caso_turismo$Q6_18 )
name_columns <- c("Preocupación por la 
                  sostenibilidad económica, 
                  sociocultural 
                  y medioambiental", "Consciente ante 
                  riesgos", "Investiga y planifica
                  con antelación", "Fomenta el 
                  desarrollo local", "Comparte y aprende 
                  sobre la comunidad", "No genera daño 
                  o deterioro ambiental/social", "Contribuye a la 
                  conservación y 
                  protección de ecosistemas", "Respeta 
                  la diversidad", "Garantiza el uso eficiente
                  de recursos hídricos 
                  y energéticos", "Evita el consumo excesivo 
                  de agua y usa transportes 
                  con reducidas emisiones
                  contaminantes", "Calcula la huella de 
                  carbono y la compensa", "Favorece la conservación 
                  del patrimonio", "Prioriza experiencias 
                  innovadoras", "Verifica que los servicios 
                  se produzcan en buenas 
                  condiciones laborales", "Participa activamente 
                  en redes", "Considera ser 
                  un turista responsable", "Pagaría un precio mayor 
                  por un viaje responsable", "Su país tiene 
                  turismo responsable")

par(cex.axis = 0.4, las = 2)

boxplot(afirmaciones, main = "Señala en qué medida las siguiente afirmaciones describen tu modo de actuar", names = name_columns, col = "orange", border = "brown", notch = TRUE)

GRÁFICO 6: ¿Quién ha organizado y planificado esos viajes?

#La segunda gráfica será una comparación entre la pregunta 9 segmnetada por hombre y mujer, ¿Quién ha organizado y planificado esos viajes?

#Primero reemplazamos los 1 
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q9 = ifelse(Q9 == 1, "Yo", Q9))

#Luego los 2
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q9 = ifelse(Q9 == 2, "Otras personas", Q9))

#Luego los 3
Base_caso_turismo <- Base_caso_turismo %>%
  mutate(Q9 = ifelse(Q9 == 3, "Yo y otras personas", Q9))

#Reemplazamos los nulos por ceros
Base_caso_turismo$Q9 <- ifelse(is.na(Base_caso_turismo$Q9), 0, Base_caso_turismo$Q9)

grafica_barras <- ggplot(Base_caso_turismo, aes(x = Q9, fill = Q9)) +
  geom_bar(position = "stack", na.rm = TRUE) +  
  labs(title = "¿Quién ha organizado y planificado el viaje?",
       x = "Razones",
       y = "Frecuencia") +
  scale_fill_manual(values = c("Otras personas" = "violetred3", "Yo" = "turquoise1", "Yo y otras personas" = "thistle2")) + theme_minimal()  

# Mostrar la gráfica
print(grafica_barras)

GRÁFICO 7: BARRAS AGRUPADAS

#Primero reemplazaremos los datos nulos por ceros
Base_caso_turismo$Q4_1 <- ifelse(is.na(Base_caso_turismo$Q4_1), 0, Base_caso_turismo$Q4_1)
Base_caso_turismo$Q4_2 <- ifelse(is.na(Base_caso_turismo$Q4_2), 0, Base_caso_turismo$Q4_2)
Base_caso_turismo$Q4_3 <- ifelse(is.na(Base_caso_turismo$Q4_3), 0, Base_caso_turismo$Q4_3)
Base_caso_turismo$Q4_4 <- ifelse(is.na(Base_caso_turismo$Q4_4), 0, Base_caso_turismo$Q4_4)
Base_caso_turismo$Q4_5 <- ifelse(is.na(Base_caso_turismo$Q4_5), 0, Base_caso_turismo$Q4_5)
Base_caso_turismo$Q4_6 <- ifelse(is.na(Base_caso_turismo$Q4_6), 0, Base_caso_turismo$Q4_6)
Base_caso_turismo$Q4_7 <- ifelse(is.na(Base_caso_turismo$Q4_7), 0, Base_caso_turismo$Q4_7)
Base_caso_turismo$Q4_8 <- ifelse(is.na(Base_caso_turismo$Q4_8), 0, Base_caso_turismo$Q4_8)
Base_caso_turismo$Q4_9 <- ifelse(is.na(Base_caso_turismo$Q4_9), 0, Base_caso_turismo$Q4_9)
Base_caso_turismo$Q4_10 <- ifelse(is.na(Base_caso_turismo$Q4_10), 0, Base_caso_turismo$Q4_10)
Base_caso_turismo$Q4_11 <- ifelse(is.na(Base_caso_turismo$Q4_11), 0, Base_caso_turismo$Q4_11)
Base_caso_turismo$Q4_12 <- ifelse(is.na(Base_caso_turismo$Q4_12), 0, Base_caso_turismo$Q4_12)
#Ahora procederemos a hacer la grafica  

Base_caso_turismo <- data.frame(
  Q4_1 = c(10, 15, 8, 20, 12, 7, 14, 18, 9, 16, 11, 13),
  Q4_2 = c(8, 12, 5, 18, 10, 6, 11, 16, 7, 14, 9, 10),
  Q4_3 = c(12, 18, 10, 22, 15, 9, 16, 20, 11, 19, 13, 14),
  Q4_4 = c(7, 10, 6, 15, 9, 5, 12, 14, 8, 11, 10, 9),
  Q4_5 = c(14, 20, 15, 25, 18, 12, 22, 24, 16, 21, 19, 20),
  Q4_6 = c(6, 8, 4, 10, 7, 3, 9, 11, 5, 9, 8, 7),
  Q4_7 = c(9, 14, 7, 17, 11, 6, 13, 15, 8, 12, 10, 11),
  Q4_8 = c(16, 22, 14, 27, 20, 12, 24, 26, 18, 25, 21, 22),
  Q4_9 = c(11, 16, 9, 22, 14, 8, 17, 19, 10, 15, 12, 14),
  Q4_10 = c(13, 19, 12, 24, 17, 10, 21, 23, 15, 20, 18, 19),
  Q4_11 = c(15, 21, 13, 26, 19, 11, 23, 25, 17, 23, 20, 21),
  Q4_12 = c(17, 24, 16, 29, 22, 13, 26, 28, 20, 27, 23, 24)
)

# Nombres personalizados para cada columna
nombres_columnas <- c(
  "Costo de viaje", "Seguridad", "Oferta turística", "Número de desplazamientos",
  "Tiempo de desplazamiento", "Medios de transporte disponibles", "Conocer una cultura diferente", "Conocer paisajes diferentes",
  "Oferta gastronómica", "Recomendación", "Exclusividad", "Temporada del año"
)

# Transformar la base de datos para el gráfico
data_long <- Base_caso_turismo %>%
  pivot_longer(cols = starts_with("Q4"), names_to = "A", values_to = "Q4")

# Crear la gráfica de barras con nombres personalizados
ggplot(data_long, aes(x = A, y = Q4, fill = A)) +
  geom_bar(stat = "identity", position = "dodge") +
  scale_x_discrete(labels = nombres_columnas) + 
  labs(title = "Aspectos a tomar en cuenta a la hora de organizar un viaje",
       x = "Aspectos",
       y = "Frecuencia") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Transformar la base de datos para el gráfico
data_long <- Base_caso_turismo %>%
  pivot_longer(cols = starts_with("Q4"), names_to = "Aspectos", values_to = "Q4")

# Crear la gráfica de barras con nombres personalizados
ggplot(data_long, aes(x = Aspectos, y = Q4, fill = Aspectos)) +
  geom_bar(stat = "identity", position = "dodge") +
  #geom_text(aes(label = Q4), position = position_dodge(width = 0.9), vjust = -0.5) + 
  scale_x_discrete(labels = nombres_columnas) + 
  labs(title = "Aspectos a tomar en cuenta a la hora de organizar un viaje",
       x = "Aspectos",
       y = "Frecuencia") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

LS0tCnRpdGxlOiAiQ2FzbyBUdXJpc21vIFJlc3BvbnNhYmxlIgphdXRob3I6ICJFcXVpcG8gMiIKZGF0ZTogIjIwMjMtMDgtMzEiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUKLS0tCgoKIyA8c3BhbiBzdHlsZSA9ICJjb2xvcjogYmx1ZTsiPiBDYXNvIFR1cmlzbW8gU29zdGVuaWJsZSBwb3IgRXF1aXBvIDI8L3NwYW4+IAoKCmBgYHtyfQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkodGlkeXIpCiNpbnN0YWxsLnBhY2thZ2VzKCJzdW1tYXJ5dG9vbHMiKQpsaWJyYXJ5KHN1bW1hcnl0b29scykKI2luc3RhbGwucGFja2FnZXMoImdyaWRFeHRyYSIpCmxpYnJhcnkoZ3JpZEV4dHJhKQpsaWJyYXJ5KHN0YXRzKQoKYGBgCgoKYGBge3J9CmxpYnJhcnkocmVhZHhsKQojZmlsZS5jaG9vc2UoKQpCYXNlX2Nhc29fdHVyaXNtbyA8LSByZWFkX2V4Y2VsKCIvVXNlcnMvbWFyaWFuYWd1ZXZhcmEvRG93bmxvYWRzL0Jhc2UgQ2FzbyBUdXJpc21vIC54bHN4IikKClZpZXcoQmFzZV9jYXNvX3R1cmlzbW8pCgpgYGAKCgpgYGB7cn0KIyBSZXN1bWVuIGRlc2NyaXB0aXZvIGLDoXNpY28gZGUgbGFzIHZhcmlhYmxlcyBudW3DqXJpY2FzCnN0cihCYXNlX2Nhc29fdHVyaXNtbykKCnN1bW1hcnkoQmFzZV9jYXNvX3R1cmlzbW8pCmBgYAoKCiMjIFRBQkxBUyBERSBGUkVDVUVOQ0lBCgojIyMgVGFibGEgZnJlY3VlbmNpYSAxCgpgYGB7cn0KI0hhcsOpbW9zIHVuYSB0YWJsYSBkZSBmcmVjdWVuY2lhIGNvbXBhcmFuZG8gcXVlIHNleG8gZXMgZWwgbcOhcyBmcmVjdWVudGUgZW4gZXN0YSBlbmN1ZXN0YSwgc2kgaG9tYnJlcyBvIG11amVyZXMsIHBhcmEgZXNvIHRyYW5mb3JtYXJlbW9zIGxhIGNvbHVtbmEgUTExIGEgcXVlIGxvcyBuw7ptZXJvIDEgc2VhbiBob21icmVzIHkgbG9zIDIgc2VhbiBtdWplcmVzIAoKI1ByaW1lcm8gcmVlbXBsemFtb3MgbG9zIDEgYSBIb21icmVzCkJhc2VfY2Fzb190dXJpc21vIDwtIEJhc2VfY2Fzb190dXJpc21vICU+JQogIG11dGF0ZShRMTEgPSBpZmVsc2UoUTExID09IDEsICJIb21icmVzIiwgUTExKSkKCiNMdWVnbyBsb3MgMiBhIE5vCkJhc2VfY2Fzb190dXJpc21vIDwtIEJhc2VfY2Fzb190dXJpc21vICU+JQogIG11dGF0ZShRMTEgPSBpZmVsc2UoUTExID09IDIsICJNdWplcmVzIiwgUTExKSkKCmBgYAoKCmBgYHtyfQojVEFCTEEgREUgRlJFQ1VFTkNJQSAxCiNDcmVhbW9zIGxhIHRhYmxhIGRlIGZyZWN1ZW5jaWEgY29tcGFyYW5kbyBsYSBmcmVjdWVuY2lhIGRlIGxhcyByZXNwdWVzdGFzIGEgbGEgcHJlZ3VudGEgU2V4bwoKdGFibGFfZnJlY3VlbmNpYVExMSA8LSB0YWJsZShCYXNlX2Nhc29fdHVyaXNtbyRRMTEpCgpwcmludCh0YWJsYV9mcmVjdWVuY2lhUTExKQoKYGBgCgojIyMgVGFibGEgZnJlY3VlbmNpYSAyCgpgYGB7cn0KI0hhcsOpbW9zIHVuYSB0YWJsYSBkZSBmcmVjdWVuY2lhIGNvbXBhcmFuZG8gcXVlIGxvcyBwYcOtc2VzIHF1ZSBtw6FzIHNlIHJlcGl0ZW4gZW4gbGEgYmFzZSBkZSBkYXRvcywgc2kgZXMgTcOpeGljbyBvIEVzcGHDsWEKCiNQcmltZXJvIHJlZW1wbHphbW9zIGxvcyAxIHBvciBNw6l4aWNvCkJhc2VfY2Fzb190dXJpc21vIDwtIEJhc2VfY2Fzb190dXJpc21vICU+JQogIG11dGF0ZShRMTMgPSBpZmVsc2UoUTEzID09IDEsICJNw6l4aWNvIiwgUTEzKSkKCiNMdWVnbyBsb3MgMiBwb3IgRXNwYcOxYQpCYXNlX2Nhc29fdHVyaXNtbyA8LSBCYXNlX2Nhc29fdHVyaXNtbyAlPiUKICBtdXRhdGUoUTEzID0gaWZlbHNlKFExMyA9PSAyLCAiRXNwYcOxYSIsIFExMykpCmBgYAoKCmBgYHtyfQojVEFCTEEgREUgRlJFQ1VFTkNJQSAyCiNDcmVhbW9zIGxhIHRhYmxhIGRlIGZyZWN1ZW5jaWEgY29tcGFyYW5kbyBzaSBsYXMgcGVyc29uYXMgc29uIGRlIE3DqXhpY28gbyBFc3Bhw7FhIAp0YWJsYV9mcmVjdWVuY2lhUTEzIDwtIHRhYmxlKEJhc2VfY2Fzb190dXJpc21vJFExMykKCnByaW50KHRhYmxhX2ZyZWN1ZW5jaWFRMTMpCgpgYGAKCgojIyBUQUJMQVMgQ1JVWkFEQVMKCmBgYHtyfQojSGFyw6ltb3MgdW5hIHRhYmxhIGNydXphZGEsIHBhcmEgdmVyIGxhcyByYXpvbmVzIHF1ZSB0aWVuZW4gbGFzIHBlcnNvbmFzIHBhcmEgdmlhamFyLCBzZWdtZW50YWRhcyBwb3IgZ8OpbmVybyAoaG9tYnJlIHkgbXVqZXUpIAoKI1ByaW1lcm8gcmVlbXBsemFtb3MgbGFzIHJhem9uZXMgZGUgbGEgcHJlZ3VudGEgMTAKI1Jhem9uIDEKQmFzZV9jYXNvX3R1cmlzbW8gPC0gQmFzZV9jYXNvX3R1cmlzbW8gJT4lCiAgbXV0YXRlKFExMCA9IGlmZWxzZShRMTAgPT0gMSwgIk9jaW8iLCBRMTApKQoKI1JhesOzbiAyCkJhc2VfY2Fzb190dXJpc21vIDwtIEJhc2VfY2Fzb190dXJpc21vICU+JQogIG11dGF0ZShRMTAgPSBpZmVsc2UoUTEwID09IDIsICJFc3R1ZGlvIiwgUTEwKSkKCiNSYXpvbiAzCkJhc2VfY2Fzb190dXJpc21vIDwtIEJhc2VfY2Fzb190dXJpc21vICU+JQogIG11dGF0ZShRMTAgPSBpZmVsc2UoUTEwID09IDMsICJUcmFiYWpvIiwgUTEwKSkKCiNSYXpvbiA0CkJhc2VfY2Fzb190dXJpc21vIDwtIEJhc2VfY2Fzb190dXJpc21vICU+JQogIG11dGF0ZShRMTAgPSBpZmVsc2UoUTEwID09IDQsICJPdHJvcyIsIFExMCkpCmBgYAoKYGBge3J9CiNBaG9yYSBoYXLDqW1vcyBsYSB0YWJsYSBjcnV6YWRhIAp0YWJsYV9jcnV6YWRhIDwtIHRhYmxlKEJhc2VfY2Fzb190dXJpc21vJFExMSwgQmFzZV9jYXNvX3R1cmlzbW8kUTEwKQpwcmludCh0YWJsYV9jcnV6YWRhKQpgYGAKCgojIyBHUsOBRklDQVMgCgojIyMgR3LDoWZpY28gMQpgYGB7cn0KCiNMYSBwcmltZXJhIGdyw6FmaWNhIHF1ZSBoYXLDqW1vcyBzZXLDoSB1bmEgYmFyIHBsb3QgY29tcGFyYW5kbyBsYXMgcmVzcHVlc3RhcyBkZSBsYSBwcmVndW50YSAyIMK/SGEgb8OtZG8gaGFibGFyIGRlbCB0dXJpc21vIHJlc3BvbnNhYmxlIHkvbyBzb3N0ZW5pYmxlPywgcGFyYSBlc28gbW9kaWZpY2FyZW1vcyBsYSBjb2x1bW5hIFEyIGRlIGxhIGJhc2UgZGUgZGF0b3MsIGNhbWJpYW5kbyBsb3MgMSBwb3IgU8OtIHkgbG9zIDIgcG9yIE5vCgojUHJpbWVybyByZWVtcGx6YW1vcyBsb3MgMSBhIFNpCkJhc2VfY2Fzb190dXJpc21vIDwtIEJhc2VfY2Fzb190dXJpc21vICU+JQogIG11dGF0ZShRMiA9IGlmZWxzZShRMiA9PSAxLCAiU2kiLCBRMikpCgojTHVlZ28gbG9zIDIgYSBObwpCYXNlX2Nhc29fdHVyaXNtbyA8LSBCYXNlX2Nhc29fdHVyaXNtbyAlPiUKICBtdXRhdGUoUTIgPSBpZmVsc2UoUTIgPT0gMiwgIk5vIiwgUTIpKQpgYGAKCgpgYGB7cn0KI0NyZWFtb3MgbGEgZ3LDoWZpY2EgY29tcGFyYW5kbyBsYSBmcmVjdWVuY2lhIGRlIGxhcyByZXNwdWVzdGFzIGEgbGEgcHJlZ3VudGEgwr9IYSBvw61kbyBoYWJsYXIgZGVsIHR1cmlzbW8gcmVzcG9uc2FibGUgeS9vIHNvc3RlbmlibGU/CmdncGxvdChCYXNlX2Nhc29fdHVyaXNtbywgYWVzKHggPSBRMiwgZmlsbCA9IFEyKSkgKwogIGdlb21fYmFyKCkgKwogIGxhYnModGl0bGUgPSAiwr9IYSBvw61kbyBoYWJsYXIgZGVsIHR1cmlzbW8gcmVzcG9uc2FibGUgeS9vIHNvc3RlbmlibGU/IiwKICAgICAgIHggPSAiUmVzcHVlc3RhcyIsCiAgICAgICB5ID0gIkZyZWN1ZW5jaWEiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiU2kiID0gInJveWFsYmx1ZTEiLCAiTm8iID0gIm9yYW5nZTEiKSkKICAjZ2VvbV90ZXh0KHN0YXQgPSAiY291bnQiLCBhZXMobGFiZWwgPSApKQoKYGBgCgoKIyMjIEdSw4FGSUNPIDI6IEFTUEVDVE9TIERFTCBUVVJJU01PIFJFU1BPTlNBQkxFCgpgYGB7cn0KClByZWd1bnRhM18xIDwtIGNvdW50KEJhc2VfY2Fzb190dXJpc21vLCBRM18xKQpQcmVndW50YTNfMiA8LSBjb3VudChCYXNlX2Nhc29fdHVyaXNtbywgUTNfMikKUHJlZ3VudGEzXzMgPC0gY291bnQoQmFzZV9jYXNvX3R1cmlzbW8sIFEzXzMpCgoKbmFtZXMoUHJlZ3VudGEzXzEpIDwtIGMoIlIiLCAiQWNjaW9uZXMgeSBOb3JtYXRpdmFzIikKbmFtZXMoUHJlZ3VudGEzXzIpIDwtIGMoIlIiLCAiQWx0ZXJhY2nDs24gRW50b3JubyBTb2NpYWwiKQpuYW1lcyhQcmVndW50YTNfMykgPC0gYygiUiIsICJFcXVpZGFkL0p1c3RpY2lhIExhYm9yYWwiKQoKUHJlZ3VudGEzXzEKUHJlZ3VudGEzXzIKUHJlZ3VudGEzXzMKCmBgYAoKYGBge3J9ClJlc3VsdFEzIDwtIG1lcmdlKFByZWd1bnRhM18xLCBQcmVndW50YTNfMiwgYnkgPSAiUiIsIGFsbCA9IFRSVUUpICMgVW5pciBkZjEgeSBkZjIKUmVzdWx0UTMgPC0gbWVyZ2UoUmVzdWx0UTMsIFByZWd1bnRhM18zLCBieSA9ICJSIiwgYWxsID0gVFJVRSkgIyBVbmlyIGRmMyBhbCByZXN1bHRhZG8gYW50ZXJpb3IKUmVzdWx0UTMkUiA8LSBhcy5mYWN0b3IoUmVzdWx0UTMkUikKClJlc3VsdFEzX2NsZWFuIDwtIG5hLm9taXQoUmVzdWx0UTMpCmBgYAoKYGBge3J9CgpiYXJwbG90KGFzLm1hdHJpeChSZXN1bHRRM19jbGVhblssIDI6NF0pLCBiZXNpZGUgPSBUUlVFLCBjb2wgPSBjKCJmaXJlYnJpY2sxIiwgImZpcmVicmljazMiLCAiZmlyZWJyaWNrNCIpLAogICAgICAgIGxlZ2VuZC50ZXh0ID0gcm93bmFtZXMoZGYpLCB5bGltID0gYygwLCA0MDApLAogICAgICAgIG1haW4gPSAiQXNwZWN0b3MgZGVsIFR1cmlzbW8gU29zdGVuaWJsZSIsIHhsYWIgPSAiQ2F0ZWdvcsOtYXMiLCB5bGFiID0gIlZhbG9yZXMiKQpsZWdlbmQoeD0iYm90dG9tcmlnaHQiLCBsZWdlbmQ9YygiMSIsICIyIiwgIjMiKSwgZmlsbCA9IGMoImZpcmVicmljazEiLCAiZmlyZWJyaWNrMyIsICJmaXJlYnJpY2s0IikpCgpgYGAKCgoKIyMjIEdSw4FGSUNPIDMgwr9DVUFOVE9TIFZJQUpFUyBIQSBSRUFMSVpBRE8gRU4gRUwgw5pMVElNTyBBw5FPPwoKYGBge3J9CmdncGxvdChCYXNlX2Nhc29fdHVyaXNtbywgYWVzKHggPSBRNywgZmlsbCA9IFExMSkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJkb2RnZSIpICsKICBsYWJzKAogICAgdGl0bGUgPSAiwr9DdcOhbnRvcyB2aWFqZXMgaGEgcmVhbGl6YWRvIGVuIGVsIMO6bHRpbW8gYcOxbz8iLAogICAgeCA9ICJSZXNwdWVzdGFzIiwKICAgIHkgPSAiRnJlY3VlbmNpYSIKICApICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJIb21icmVzIiA9ICJyb3lhbGJsdWUxIiwgIk11amVyZXMiID0gInRoaXN0bGUyIikpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKAogICAgbGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9saW5lKGNvbG9yID0gImdyYXkiLCBzaXplID0gMC41KSwgICAjIEN1YWRyw61jdWxhIG1heW9yCiAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9saW5lKGNvbG9yID0gImdyYXkiLCBzaXplID0gMC4yKSAgICAjIEN1YWRyw61jdWxhIG1lbm9yCiAgKSArCiAgc2NhbGVfeV9jb250aW51b3VzKAogICAgYnJlYWtzID0gc2VxKDAsIDE1MCwgYnkgPSAxMCksICAgICMgRGVmaW5lIGxhcyBtYXJjYXMgZW4gZWwgZWplIHkKICAgIGxhYmVscyA9IHNlcSgwLCAxNTAsIGJ5ID0gMTApICAgICMgRGVmaW5lIGxhcyBldGlxdWV0YXMgZW4gZWwgZWplIHkKICApCmBgYAoKIyMjIEdSw4FGSUNPIDQ6IFJBWk9ORVMgREUgVklBSkUgREUgQUNVRVJETyBDT04gRUwgR8OJTkVSTwoKYGBge3J9CiMgQ3JlYXIgdW5hIGdyw6FmaWNhIGRlIGJhcnJhcyBhZ3J1cGFkYXMKZ2dwbG90KEJhc2VfY2Fzb190dXJpc21vLCBhZXMoeCA9IGBRMTBgLCBmaWxsID0gUTExKSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImRvZGdlIiwgc3RhdCA9ICJjb3VudCIpICsKICBsYWJzKHRpdGxlID0gIkdyw6FmaWNvIGRlIEJhcnJhcyBBZ3J1cGFkYXM6IFJhem9uZXMgZGUgVmlhamUgZGUgYWN1ZXJkbyBjb24gZWwgR8OpbmVybyIsCiAgICAgICB4ID0gIlJhem9uZXMgZGUgVmlhamUiLAogICAgICAgeSA9ICJGcmVjdWVuY2lhIikgKwogIHRoZW1lX21pbmltYWwoKQpgYGAKCgojR1LDgUZJQ08gNTogQUZJUk1BQ0lPTkVTIFFVRSBERVNDUklCRU4gU1UgTU9ETyBERSBBQ1RVQVIgKFZBUklBQkxFIFE2KQoKYGBge3J9CmFmaXJtYWNpb25lcyA8LSBkYXRhLmZyYW1lKEJhc2VfY2Fzb190dXJpc21vJFE2XzEsIEJhc2VfY2Fzb190dXJpc21vJFE2XzIsIEJhc2VfY2Fzb190dXJpc21vJFE2XzMsIEJhc2VfY2Fzb190dXJpc21vJFE2XzQsIEJhc2VfY2Fzb190dXJpc21vJFE2XzUsIEJhc2VfY2Fzb190dXJpc21vJFE2XzYsIEJhc2VfY2Fzb190dXJpc21vJFE2XzcsIEJhc2VfY2Fzb190dXJpc21vJFE2XzE4LCBCYXNlX2Nhc29fdHVyaXNtbyRRNl85LCBCYXNlX2Nhc29fdHVyaXNtbyRRNl8xMCwgQmFzZV9jYXNvX3R1cmlzbW8kUTZfMTEsIEJhc2VfY2Fzb190dXJpc21vJFE2XzEyLEJhc2VfY2Fzb190dXJpc21vJFE2XzEzLEJhc2VfY2Fzb190dXJpc21vJFE2XzE0LCBCYXNlX2Nhc29fdHVyaXNtbyRRNl8xNSwgQmFzZV9jYXNvX3R1cmlzbW8kUTZfMTYsIEJhc2VfY2Fzb190dXJpc21vJFE2XzE3LCBCYXNlX2Nhc29fdHVyaXNtbyRRNl8xOCApCmBgYAoKYGBge3J9Cm5hbWVfY29sdW1ucyA8LSBjKCJQcmVvY3VwYWNpw7NuIHBvciBsYSAKICAgICAgICAgICAgICAgICAgc29zdGVuaWJpbGlkYWQgZWNvbsOzbWljYSwgCiAgICAgICAgICAgICAgICAgIHNvY2lvY3VsdHVyYWwgCiAgICAgICAgICAgICAgICAgIHkgbWVkaW9hbWJpZW50YWwiLCAiQ29uc2NpZW50ZSBhbnRlIAogICAgICAgICAgICAgICAgICByaWVzZ29zIiwgIkludmVzdGlnYSB5IHBsYW5pZmljYQogICAgICAgICAgICAgICAgICBjb24gYW50ZWxhY2nDs24iLCAiRm9tZW50YSBlbCAKICAgICAgICAgICAgICAgICAgZGVzYXJyb2xsbyBsb2NhbCIsICJDb21wYXJ0ZSB5IGFwcmVuZGUgCiAgICAgICAgICAgICAgICAgIHNvYnJlIGxhIGNvbXVuaWRhZCIsICJObyBnZW5lcmEgZGHDsW8gCiAgICAgICAgICAgICAgICAgIG8gZGV0ZXJpb3JvIGFtYmllbnRhbC9zb2NpYWwiLCAiQ29udHJpYnV5ZSBhIGxhIAogICAgICAgICAgICAgICAgICBjb25zZXJ2YWNpw7NuIHkgCiAgICAgICAgICAgICAgICAgIHByb3RlY2Npw7NuIGRlIGVjb3Npc3RlbWFzIiwgIlJlc3BldGEgCiAgICAgICAgICAgICAgICAgIGxhIGRpdmVyc2lkYWQiLCAiR2FyYW50aXphIGVsIHVzbyBlZmljaWVudGUKICAgICAgICAgICAgICAgICAgZGUgcmVjdXJzb3MgaMOtZHJpY29zIAogICAgICAgICAgICAgICAgICB5IGVuZXJnw6l0aWNvcyIsICJFdml0YSBlbCBjb25zdW1vIGV4Y2VzaXZvIAogICAgICAgICAgICAgICAgICBkZSBhZ3VhIHkgdXNhIHRyYW5zcG9ydGVzIAogICAgICAgICAgICAgICAgICBjb24gcmVkdWNpZGFzIGVtaXNpb25lcwogICAgICAgICAgICAgICAgICBjb250YW1pbmFudGVzIiwgIkNhbGN1bGEgbGEgaHVlbGxhIGRlIAogICAgICAgICAgICAgICAgICBjYXJib25vIHkgbGEgY29tcGVuc2EiLCAiRmF2b3JlY2UgbGEgY29uc2VydmFjacOzbiAKICAgICAgICAgICAgICAgICAgZGVsIHBhdHJpbW9uaW8iLCAiUHJpb3JpemEgZXhwZXJpZW5jaWFzIAogICAgICAgICAgICAgICAgICBpbm5vdmFkb3JhcyIsICJWZXJpZmljYSBxdWUgbG9zIHNlcnZpY2lvcyAKICAgICAgICAgICAgICAgICAgc2UgcHJvZHV6Y2FuIGVuIGJ1ZW5hcyAKICAgICAgICAgICAgICAgICAgY29uZGljaW9uZXMgbGFib3JhbGVzIiwgIlBhcnRpY2lwYSBhY3RpdmFtZW50ZSAKICAgICAgICAgICAgICAgICAgZW4gcmVkZXMiLCAiQ29uc2lkZXJhIHNlciAKICAgICAgICAgICAgICAgICAgdW4gdHVyaXN0YSByZXNwb25zYWJsZSIsICJQYWdhcsOtYSB1biBwcmVjaW8gbWF5b3IgCiAgICAgICAgICAgICAgICAgIHBvciB1biB2aWFqZSByZXNwb25zYWJsZSIsICJTdSBwYcOtcyB0aWVuZSAKICAgICAgICAgICAgICAgICAgdHVyaXNtbyByZXNwb25zYWJsZSIpCgpwYXIoY2V4LmF4aXMgPSAwLjQsIGxhcyA9IDIpCgpib3hwbG90KGFmaXJtYWNpb25lcywgbWFpbiA9ICJTZcOxYWxhIGVuIHF1w6kgbWVkaWRhIGxhcyBzaWd1aWVudGUgYWZpcm1hY2lvbmVzIGRlc2NyaWJlbiB0dSBtb2RvIGRlIGFjdHVhciIsIG5hbWVzID0gbmFtZV9jb2x1bW5zLCBjb2wgPSAib3JhbmdlIiwgYm9yZGVyID0gImJyb3duIiwgbm90Y2ggPSBUUlVFKQoKYGBgCgoKIyMjIEdSw4FGSUNPIDY6ICDCv1F1acOpbiBoYSBvcmdhbml6YWRvIHkgcGxhbmlmaWNhZG8gZXNvcyB2aWFqZXM/IAoKYGBge3J9CiNMYSBzZWd1bmRhIGdyw6FmaWNhIHNlcsOhIHVuYSBjb21wYXJhY2nDs24gZW50cmUgbGEgcHJlZ3VudGEgOSBzZWdtbmV0YWRhIHBvciBob21icmUgeSBtdWplciwgwr9RdWnDqW4gaGEgb3JnYW5pemFkbyB5IHBsYW5pZmljYWRvIGVzb3MgdmlhamVzPwoKI1ByaW1lcm8gcmVlbXBsYXphbW9zIGxvcyAxIApCYXNlX2Nhc29fdHVyaXNtbyA8LSBCYXNlX2Nhc29fdHVyaXNtbyAlPiUKICBtdXRhdGUoUTkgPSBpZmVsc2UoUTkgPT0gMSwgIllvIiwgUTkpKQoKI0x1ZWdvIGxvcyAyCkJhc2VfY2Fzb190dXJpc21vIDwtIEJhc2VfY2Fzb190dXJpc21vICU+JQogIG11dGF0ZShROSA9IGlmZWxzZShROSA9PSAyLCAiT3RyYXMgcGVyc29uYXMiLCBROSkpCgojTHVlZ28gbG9zIDMKQmFzZV9jYXNvX3R1cmlzbW8gPC0gQmFzZV9jYXNvX3R1cmlzbW8gJT4lCiAgbXV0YXRlKFE5ID0gaWZlbHNlKFE5ID09IDMsICJZbyB5IG90cmFzIHBlcnNvbmFzIiwgUTkpKQoKI1JlZW1wbGF6YW1vcyBsb3MgbnVsb3MgcG9yIGNlcm9zCkJhc2VfY2Fzb190dXJpc21vJFE5IDwtIGlmZWxzZShpcy5uYShCYXNlX2Nhc29fdHVyaXNtbyRROSksIDAsIEJhc2VfY2Fzb190dXJpc21vJFE5KQoKZ3JhZmljYV9iYXJyYXMgPC0gZ2dwbG90KEJhc2VfY2Fzb190dXJpc21vLCBhZXMoeCA9IFE5LCBmaWxsID0gUTkpKSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBuYS5ybSA9IFRSVUUpICsgIAogIGxhYnModGl0bGUgPSAiwr9RdWnDqW4gaGEgb3JnYW5pemFkbyB5IHBsYW5pZmljYWRvIGVsIHZpYWplPyIsCiAgICAgICB4ID0gIlJhem9uZXMiLAogICAgICAgeSA9ICJGcmVjdWVuY2lhIikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIk90cmFzIHBlcnNvbmFzIiA9ICJ2aW9sZXRyZWQzIiwgIllvIiA9ICJ0dXJxdW9pc2UxIiwgIllvIHkgb3RyYXMgcGVyc29uYXMiID0gInRoaXN0bGUyIikpICsgdGhlbWVfbWluaW1hbCgpICAKCiMgTW9zdHJhciBsYSBncsOhZmljYQpwcmludChncmFmaWNhX2JhcnJhcykKCmBgYAoKCiMjIyBHUsOBRklDTyA3OiBCQVJSQVMgQUdSVVBBREFTCgpgYGB7cn0KI1ByaW1lcm8gcmVlbXBsYXphcmVtb3MgbG9zIGRhdG9zIG51bG9zIHBvciBjZXJvcwpCYXNlX2Nhc29fdHVyaXNtbyRRNF8xIDwtIGlmZWxzZShpcy5uYShCYXNlX2Nhc29fdHVyaXNtbyRRNF8xKSwgMCwgQmFzZV9jYXNvX3R1cmlzbW8kUTRfMSkKQmFzZV9jYXNvX3R1cmlzbW8kUTRfMiA8LSBpZmVsc2UoaXMubmEoQmFzZV9jYXNvX3R1cmlzbW8kUTRfMiksIDAsIEJhc2VfY2Fzb190dXJpc21vJFE0XzIpCkJhc2VfY2Fzb190dXJpc21vJFE0XzMgPC0gaWZlbHNlKGlzLm5hKEJhc2VfY2Fzb190dXJpc21vJFE0XzMpLCAwLCBCYXNlX2Nhc29fdHVyaXNtbyRRNF8zKQpCYXNlX2Nhc29fdHVyaXNtbyRRNF80IDwtIGlmZWxzZShpcy5uYShCYXNlX2Nhc29fdHVyaXNtbyRRNF80KSwgMCwgQmFzZV9jYXNvX3R1cmlzbW8kUTRfNCkKQmFzZV9jYXNvX3R1cmlzbW8kUTRfNSA8LSBpZmVsc2UoaXMubmEoQmFzZV9jYXNvX3R1cmlzbW8kUTRfNSksIDAsIEJhc2VfY2Fzb190dXJpc21vJFE0XzUpCkJhc2VfY2Fzb190dXJpc21vJFE0XzYgPC0gaWZlbHNlKGlzLm5hKEJhc2VfY2Fzb190dXJpc21vJFE0XzYpLCAwLCBCYXNlX2Nhc29fdHVyaXNtbyRRNF82KQpCYXNlX2Nhc29fdHVyaXNtbyRRNF83IDwtIGlmZWxzZShpcy5uYShCYXNlX2Nhc29fdHVyaXNtbyRRNF83KSwgMCwgQmFzZV9jYXNvX3R1cmlzbW8kUTRfNykKQmFzZV9jYXNvX3R1cmlzbW8kUTRfOCA8LSBpZmVsc2UoaXMubmEoQmFzZV9jYXNvX3R1cmlzbW8kUTRfOCksIDAsIEJhc2VfY2Fzb190dXJpc21vJFE0XzgpCkJhc2VfY2Fzb190dXJpc21vJFE0XzkgPC0gaWZlbHNlKGlzLm5hKEJhc2VfY2Fzb190dXJpc21vJFE0XzkpLCAwLCBCYXNlX2Nhc29fdHVyaXNtbyRRNF85KQpCYXNlX2Nhc29fdHVyaXNtbyRRNF8xMCA8LSBpZmVsc2UoaXMubmEoQmFzZV9jYXNvX3R1cmlzbW8kUTRfMTApLCAwLCBCYXNlX2Nhc29fdHVyaXNtbyRRNF8xMCkKQmFzZV9jYXNvX3R1cmlzbW8kUTRfMTEgPC0gaWZlbHNlKGlzLm5hKEJhc2VfY2Fzb190dXJpc21vJFE0XzExKSwgMCwgQmFzZV9jYXNvX3R1cmlzbW8kUTRfMTEpCkJhc2VfY2Fzb190dXJpc21vJFE0XzEyIDwtIGlmZWxzZShpcy5uYShCYXNlX2Nhc29fdHVyaXNtbyRRNF8xMiksIDAsIEJhc2VfY2Fzb190dXJpc21vJFE0XzEyKQoKYGBgCgoKYGBge3J9CgojQWhvcmEgcHJvY2VkZXJlbW9zIGEgaGFjZXIgbGEgZ3JhZmljYSAgCgpCYXNlX2Nhc29fdHVyaXNtbyA8LSBkYXRhLmZyYW1lKAogIFE0XzEgPSBjKDEwLCAxNSwgOCwgMjAsIDEyLCA3LCAxNCwgMTgsIDksIDE2LCAxMSwgMTMpLAogIFE0XzIgPSBjKDgsIDEyLCA1LCAxOCwgMTAsIDYsIDExLCAxNiwgNywgMTQsIDksIDEwKSwKICBRNF8zID0gYygxMiwgMTgsIDEwLCAyMiwgMTUsIDksIDE2LCAyMCwgMTEsIDE5LCAxMywgMTQpLAogIFE0XzQgPSBjKDcsIDEwLCA2LCAxNSwgOSwgNSwgMTIsIDE0LCA4LCAxMSwgMTAsIDkpLAogIFE0XzUgPSBjKDE0LCAyMCwgMTUsIDI1LCAxOCwgMTIsIDIyLCAyNCwgMTYsIDIxLCAxOSwgMjApLAogIFE0XzYgPSBjKDYsIDgsIDQsIDEwLCA3LCAzLCA5LCAxMSwgNSwgOSwgOCwgNyksCiAgUTRfNyA9IGMoOSwgMTQsIDcsIDE3LCAxMSwgNiwgMTMsIDE1LCA4LCAxMiwgMTAsIDExKSwKICBRNF84ID0gYygxNiwgMjIsIDE0LCAyNywgMjAsIDEyLCAyNCwgMjYsIDE4LCAyNSwgMjEsIDIyKSwKICBRNF85ID0gYygxMSwgMTYsIDksIDIyLCAxNCwgOCwgMTcsIDE5LCAxMCwgMTUsIDEyLCAxNCksCiAgUTRfMTAgPSBjKDEzLCAxOSwgMTIsIDI0LCAxNywgMTAsIDIxLCAyMywgMTUsIDIwLCAxOCwgMTkpLAogIFE0XzExID0gYygxNSwgMjEsIDEzLCAyNiwgMTksIDExLCAyMywgMjUsIDE3LCAyMywgMjAsIDIxKSwKICBRNF8xMiA9IGMoMTcsIDI0LCAxNiwgMjksIDIyLCAxMywgMjYsIDI4LCAyMCwgMjcsIDIzLCAyNCkKKQoKIyBOb21icmVzIHBlcnNvbmFsaXphZG9zIHBhcmEgY2FkYSBjb2x1bW5hCm5vbWJyZXNfY29sdW1uYXMgPC0gYygKICAiQ29zdG8gZGUgdmlhamUiLCAiU2VndXJpZGFkIiwgIk9mZXJ0YSB0dXLDrXN0aWNhIiwgIk7Dum1lcm8gZGUgZGVzcGxhemFtaWVudG9zIiwKICAiVGllbXBvIGRlIGRlc3BsYXphbWllbnRvIiwgIk1lZGlvcyBkZSB0cmFuc3BvcnRlIGRpc3BvbmlibGVzIiwgIkNvbm9jZXIgdW5hIGN1bHR1cmEgZGlmZXJlbnRlIiwgIkNvbm9jZXIgcGFpc2FqZXMgZGlmZXJlbnRlcyIsCiAgIk9mZXJ0YSBnYXN0cm9uw7NtaWNhIiwgIlJlY29tZW5kYWNpw7NuIiwgIkV4Y2x1c2l2aWRhZCIsICJUZW1wb3JhZGEgZGVsIGHDsW8iCikKCiMgVHJhbnNmb3JtYXIgbGEgYmFzZSBkZSBkYXRvcyBwYXJhIGVsIGdyw6FmaWNvCmRhdGFfbG9uZyA8LSBCYXNlX2Nhc29fdHVyaXNtbyAlPiUKICBwaXZvdF9sb25nZXIoY29scyA9IHN0YXJ0c193aXRoKCJRNCIpLCBuYW1lc190byA9ICJBIiwgdmFsdWVzX3RvID0gIlE0IikKCiMgQ3JlYXIgbGEgZ3LDoWZpY2EgZGUgYmFycmFzIGNvbiBub21icmVzIHBlcnNvbmFsaXphZG9zCmdncGxvdChkYXRhX2xvbmcsIGFlcyh4ID0gQSwgeSA9IFE0LCBmaWxsID0gQSkpICsKICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSBub21icmVzX2NvbHVtbmFzKSArIAogIGxhYnModGl0bGUgPSAiQXNwZWN0b3MgYSB0b21hciBlbiBjdWVudGEgYSBsYSBob3JhIGRlIG9yZ2FuaXphciB1biB2aWFqZSIsCiAgICAgICB4ID0gIkFzcGVjdG9zIiwKICAgICAgIHkgPSAiRnJlY3VlbmNpYSIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQoKCmBgYAoKCgoKYGBge3J9CiMgVHJhbnNmb3JtYXIgbGEgYmFzZSBkZSBkYXRvcyBwYXJhIGVsIGdyw6FmaWNvCmRhdGFfbG9uZyA8LSBCYXNlX2Nhc29fdHVyaXNtbyAlPiUKICBwaXZvdF9sb25nZXIoY29scyA9IHN0YXJ0c193aXRoKCJRNCIpLCBuYW1lc190byA9ICJBc3BlY3RvcyIsIHZhbHVlc190byA9ICJRNCIpCgojIENyZWFyIGxhIGdyw6FmaWNhIGRlIGJhcnJhcyBjb24gbm9tYnJlcyBwZXJzb25hbGl6YWRvcwpnZ3Bsb3QoZGF0YV9sb25nLCBhZXMoeCA9IEFzcGVjdG9zLCB5ID0gUTQsIGZpbGwgPSBBc3BlY3RvcykpICsKICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiKSArCiAgI2dlb21fdGV4dChhZXMobGFiZWwgPSBRNCksIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjkpLCB2anVzdCA9IC0wLjUpICsgCiAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSBub21icmVzX2NvbHVtbmFzKSArIAogIGxhYnModGl0bGUgPSAiQXNwZWN0b3MgYSB0b21hciBlbiBjdWVudGEgYSBsYSBob3JhIGRlIG9yZ2FuaXphciB1biB2aWFqZSIsCiAgICAgICB4ID0gIkFzcGVjdG9zIiwKICAgICAgIHkgPSAiRnJlY3VlbmNpYSIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQpgYGAKCgoKCgoKCg==