In this script, I perform meta-analyses for the models with the independent variables

rm(list=ls())
library(meta)
library(metafor)
library(here)
library(dplyr)
library(kableExtra)
set.seed(1)
load("./data/meta_analysis/total_indep_var_results_new.RData")

# Effects of mu's 
# Gender 
gender_gen <- metagen(TE = mu_sex_est,
                 seTE = mu_sex_sd,
                 data = total_indep_var_results,
                 fixed = FALSE,
                 random = TRUE,
                 method.tau = "REML",
                 hakn = TRUE)

summary(gender_gen)

# Age 
age_gen <- metagen(TE = mu_age_est,
                 seTE = mu_age_sd,
                 data = total_indep_var_results,
                 fixed = FALSE,
                 random = TRUE,
                 method.tau = "REML",
                 hakn = TRUE)

summary(age_gen)

# Educational level. 
edu_med_gen <- metagen(TE = mu_isced_med_est,
                 seTE = mu_isced_med_sd,
                 data = total_indep_var_results,
                 fixed = FALSE,
                 random = TRUE,
                 method.tau = "REML",
                 hakn = TRUE)

summary(edu_med_gen)

edu_high_gen <- metagen(TE = mu_isced_high_est,
                 seTE = mu_isced_high_sd,
                 data = total_indep_var_results,
                 fixed = FALSE,
                 random = TRUE,
                 method.tau = "REML",
                 hakn = TRUE)

summary(edu_high_gen)

# Now for variance
# Gender
gender_var_gen <- metagen(TE = sig_sex_est,
                 seTE = sig_sex_sd,
                 data = total_indep_var_results,
                 fixed = FALSE,
                 random = TRUE,
                 method.tau = "REML",
                 hakn = TRUE)

summary(gender_var_gen)

# Age
age_var_gen <- metagen(TE = sig_age_est,
                 seTE = sig_age_sd,
                 data = total_indep_var_results,
                 fixed = FALSE,
                 random = TRUE,
                 method.tau = "REML",
                 hakn = TRUE)

summary(age_var_gen)

# Education

edu_var_med_gen <- metagen(TE = sig_isced_med_est,
                 seTE = sig_isced_med_sd,
                 data = total_indep_var_results,
                 fixed = FALSE,
                 random = TRUE,
                 method.tau = "REML",
                 hakn = TRUE)

summary(edu_var_med_gen)

edu_var_high_gen <- metagen(TE = sig_isced_high_est,
                 seTE = sig_isced_high_sd,
                 data = total_indep_var_results,
                 fixed = FALSE,
                 random = TRUE,
                 method.tau = "REML",
                 hakn = TRUE)

summary(edu_var_high_gen)
# Perform the meta-regression with meta-level variables on independent variables to see if there is something interesting

# For this dataset, the meta-level variables were not created yet, so that's needed first
total_indep_var_results$data[total_indep_var_results$dep_var=="climate5"] <- "EVS"
total_indep_var_results$data[total_indep_var_results$dep_var=="cause" | total_indep_var_results$dep_var == "cause" | total_indep_var_results$dep_var == "worry"] <- "ESS"
total_indep_var_results$data[total_indep_var_results$dep_var=="worried" | total_indep_var_results$dep_var == "frontrunner" | total_indep_var_results$dep_var == "worry_future" | total_indep_var_results$dep_var == "resp_citiz" | total_indep_var_results$dep_var == "dk_start" | total_indep_var_results$dep_var == "do_gov" | total_indep_var_results$dep_var == "buss_help" | total_indep_var_results$dep_var == "min_contr" | total_indep_var_results$dep_var == "human_resp"] <- "I&O"
total_indep_var_results$data[total_indep_var_results$dep_var=="worry" | total_indep_var_results$dep_var == "lifeharm" | total_indep_var_results$dep_var == "progharm" | total_indep_var_results$dep_var == "econprotect" | total_indep_var_results$dep_var == "growharm" | total_indep_var_results$dep_var == "willing_price" | total_indep_var_results$dep_var == "willing_tax" | total_indep_var_results$dep_var == "willing_living" | total_indep_var_results$dep_var == "dodiff" | total_indep_var_results$dep_var=="do_right" | total_indep_var_results$dep_var == "people_decide" | total_indep_var_results$dep_var == "moreimp" | total_indep_var_results$dep_var == "othersame" | total_indep_var_results$dep_var == "exag" | total_indep_var_results$dep_var == "country_effort"]  <- "ISSP"
total_indep_var_results$data[is.na(total_indep_var_results$data)] <- "EB"


total_indep_var_results$data[total_indep_var_results$dep_var=="cchange_mot" | total_indep_var_results$dep_var == "worried_mot" | total_indep_var_results$dep_var == "futuregen" | total_indep_var_results$dep_var == "nowor" | total_indep_var_results$dep_var == "ontime" | total_indep_var_results$dep_var == "gov" | total_indep_var_results$dep_var == "resp_gov" | total_indep_var_results$dep_var == "resp_comp" | total_indep_var_results$dep_var == "resp_mkb" | total_indep_var_results$dep_var=="resp_citiz_mot" | total_indep_var_results$dep_var == "resp_you" | total_indep_var_results$dep_var == "pers_resp_mot" | total_indep_var_results$dep_var == "sust_choice" | total_indep_var_results$dep_var == "contr" | total_indep_var_results$dep_var == "energy" | total_indep_var_results$dep_var == "energy" | total_indep_var_results$dep_var == "noidea" | total_indep_var_results$dep_var == "motiv"]  <- "MOT"
total_indep_var_results$data[total_indep_var_results$dep_var=="fut_gen_socon"] <- "SOCON"
total_indep_var_results$data[total_indep_var_results$dep_var=="lifestyle"] <- "LISS"

total_indep_var_results$dep_var[total_indep_var_results$dep_var == "worry" & total_indep_var_results$data == "ISSP"] <- "worry_issp"

total_indep_var_results$attitude_cat[total_indep_var_results$dep_var == "dodiff" 
                               | total_indep_var_results$dep_var == "pers_resp"
                               | total_indep_var_results$dep_var == "worry"
                               | total_indep_var_results$dep_var == "worried"
                               | total_indep_var_results$dep_var == "worry_future"
                               | total_indep_var_results$dep_var == "frontrunner"
                               | total_indep_var_results$dep_var == "min_contr"
                               | total_indep_var_results$dep_var == "worried_mot"
                               | total_indep_var_results$dep_var == "futuregen"
                               | total_indep_var_results$dep_var == "nowor"
                               | total_indep_var_results$dep_var == "motivr"
                               | total_indep_var_results$dep_var == "fut_gen_socon"
                               | total_indep_var_results$dep_var == "pers_resp_mot"] <- "affective"

total_indep_var_results$attitude_cat[total_indep_var_results$dep_var == "willing_price" 
                               | total_indep_var_results$dep_var == "willing_tax"
                               | total_indep_var_results$dep_var == "willing_living"
                               | total_indep_var_results$dep_var == "do_right"
                               | total_indep_var_results$dep_var == "people_decide"
                               | total_indep_var_results$dep_var == "climate5"
                               | total_indep_var_results$dep_var == "prsaction"
                               | total_indep_var_results$dep_var == "cc_prsact"
                               | total_indep_var_results$dep_var == "buyprod"
                                | total_indep_var_results$dep_var == "sust_choice"
                                | total_indep_var_results$dep_var == "energy"
                                | total_indep_var_results$dep_var == "lifestyle"] <- "behavioral"

total_indep_var_results$attitude_cat[total_indep_var_results$dep_var == "worry_issp" 
                               | total_indep_var_results$dep_var == "lifeharm"
                               | total_indep_var_results$dep_var == "progharm"
                               | total_indep_var_results$dep_var == "econprotect"
                               | total_indep_var_results$dep_var == "growharm"
                               | total_indep_var_results$dep_var == "bus_decide"
                               | total_indep_var_results$dep_var == "moreimp"
                               | total_indep_var_results$dep_var == "othersame"
                               | total_indep_var_results$dep_var == "exag"
                               | total_indep_var_results$dep_var == "country_effort" 
                               | total_indep_var_results$dep_var == "cause"
                               | total_indep_var_results$dep_var == "resp_citiz"
                               | total_indep_var_results$dep_var == "dk_start"
                               | total_indep_var_results$dep_var == "do_gov"
                               | total_indep_var_results$dep_var == "buss_help"
                               | total_indep_var_results$dep_var == "human_resp"
                               | total_indep_var_results$dep_var == "env_ec_stat"
                               | total_indep_var_results$dep_var == "env_prsimp"
                                | total_indep_var_results$dep_var == "envp_eg"
                               | total_indep_var_results$dep_var == "effr_eg"
                               | total_indep_var_results$dep_var == "cchange"
                               | total_indep_var_results$dep_var == "cchange2"
                               | total_indep_var_results$dep_var == "cchangetot" 
                               | total_indep_var_results$dep_var == "ccpercept"
                               | total_indep_var_results$dep_var == "env_quallife"
                               | total_indep_var_results$dep_var == "doprot_comp"
                               | total_indep_var_results$dep_var == "doprot_region"
                               | total_indep_var_results$dep_var == "doprot_natgov"
                               | total_indep_var_results$dep_var == "doprot_city"
                               | total_indep_var_results$dep_var == "doprot_citiz"
                               | total_indep_var_results$dep_var == "doprot_eu"
                              | total_indep_var_results$dep_var == "cc_unstop"
                               | total_indep_var_results$dep_var == "cc_exag"
                               | total_indep_var_results$dep_var == "cc_poseu"
                               | total_indep_var_results$dep_var == "role_ind"
                               | total_indep_var_results$dep_var == "big_pol"
                               | total_indep_var_results$dep_var == "eff_daily"
                               | total_indep_var_results$dep_var == "pers_imp"
                              | total_indep_var_results$dep_var == "cchange_mot"
                              | total_indep_var_results$dep_var == "ontime"
                              | total_indep_var_results$dep_var == "gov"
                              | total_indep_var_results$dep_var == "resp_gov"
                              | total_indep_var_results$dep_var == "resp_comp"
                              | total_indep_var_results$dep_var == "resp_mkb"
                              | total_indep_var_results$dep_var == "resp_citiz_mot"
                              | total_indep_var_results$dep_var == "resp_you"
                              | total_indep_var_results$dep_var == "contr"
                              | total_indep_var_results$dep_var == "noidea"] <- "cognitive"

#Create a variable that indicates whether the dependent variable can be interpreted in 2 ways (ambiguous)

total_indep_var_results$ambiguous[total_indep_var_results$dep_var != "dodiff" 
                               | total_indep_var_results$dep_var != "frontrunner"
                               | total_indep_var_results$dep_var != "min_contr"
                               | total_indep_var_results$dep_var != "people_decide"
                               | total_indep_var_results$dep_var != "econprotect"
                               | total_indep_var_results$dep_var != "growharm"
                               | total_indep_var_results$dep_var != "bus_decide"
                            | total_indep_var_results$dep_var != "othersame"
                            | total_indep_var_results$dep_var != "resp_citiz"
                            | total_indep_var_results$dep_var != "dk_start"
                            | total_indep_var_results$dep_var != "buss_help"
                            | total_indep_var_results$dep_var != "envp_eg"
                            | total_indep_var_results$dep_var != "effr_eg"
                            | total_indep_var_results$dep_var != "env_quallife"
                            | total_indep_var_results$dep_var != "cc_unstop"
                            | total_indep_var_results$dep_var != "cc_poseu"
                            | total_indep_var_results$dep_var != "big_pol"
                            | total_indep_var_results$dep_var == "noidea"] <- "No"
total_indep_var_results$ambiguous[total_indep_var_results$dep_var == "dodiff" 
                               | total_indep_var_results$dep_var == "frontrunner"
                               | total_indep_var_results$dep_var == "min_contr"
                               | total_indep_var_results$dep_var == "people_decide"
                               | total_indep_var_results$dep_var == "econprotect"
                               | total_indep_var_results$dep_var == "growharm"
                               | total_indep_var_results$dep_var == "bus_decide"
                            | total_indep_var_results$dep_var == "othersame"
                            | total_indep_var_results$dep_var == "resp_citiz"
                            | total_indep_var_results$dep_var == "dk_start"
                            | total_indep_var_results$dep_var == "buss_help"
                            | total_indep_var_results$dep_var == "envp_eg"
                            | total_indep_var_results$dep_var == "effr_eg"
                            | total_indep_var_results$dep_var == "env_quallife"
                            | total_indep_var_results$dep_var == "cc_unstop"
                            | total_indep_var_results$dep_var == "cc_poseu"
                            | total_indep_var_results$dep_var == "big_pol"
                            | total_indep_var_results$dep_var == "noidea"] <- "Yes"



# This time, year is a bit more difficult, so I have to assign that per dep_var
# And the average year 
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "role_ind"] <- 2012
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "big_pol"] <- 2012
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "cc_unstop"] <- 2008
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "cc_exag"] <- 2008
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "cc_poseu"] <- 2008
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "cc_prsact"] <- 2008
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "cc_poseu"] <- 2008
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "ccpercept"] <- 2014
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "cchange"] <- 2015
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "cchange2"] <- 2015
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "cchangetot"] <- 2015
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "envp_eg"] <- 2013
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "effr_eg"] <- 2013
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "buyprod"] <- 2010
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "doprot_natgov"] <- 2013
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "doprot_eu"] <- 2013
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "doprot_region"] <- 2013
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "doprot_comp"] <- 2013
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "doprot_citiz"] <- 2013
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "doprot_city"] <- 2015
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "eff_daily"] <- 2012
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "pers_imp"] <- 2009
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "env_quallife"] <- 2009
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "env_ec_stat"] <- 1991
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "env_prsimp"] <- 1991
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "prsaction"] <- 2014


total_indep_var_results$mean_year[total_indep_var_results$data == "I&O"] <- 2020
total_indep_var_results$mean_year[total_indep_var_results$data == "EVS"] <- 1999
total_indep_var_results$mean_year[total_indep_var_results$data == "ESS"] <- 2018
total_indep_var_results$mean_year[total_indep_var_results$data == "MOT"] <- 2020
total_indep_var_results$mean_year[total_indep_var_results$data == "SOCON"] <- 2021
total_indep_var_results$mean_year[total_indep_var_results$data == "LISS"] <- 2020
# For the ISSP, have to specify it per dependent variable
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "exag"] <- 2005
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "moreimp"] <- 2005
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "othersame"] <- 2005
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "country_effort"] <- 2005
total_indep_var_results$mean_year[total_indep_var_results$dep_var == "growharm"] <- 2005
total_indep_var_results$mean_year[is.na(total_indep_var_results$mean_year)] <- 2002

total_indep_var_results$mean_year_centered <- total_indep_var_results$mean_year - mean(total_indep_var_results$mean_year)

save(total_indep_var_results, file= "./data/meta_analysis/total_indep_var_results_new.RData" )
m1_gender <- rma(yi = mu_sex_est,
              sei = mu_sex_sd,
              data = total_indep_var_results,
              mods = ~ mean_year_centered + attitude_cat + ambiguous,
              method = "REML",
              test = "knha")

m1_gender 

m1_age <- rma(yi = mu_age_est,
              sei = mu_age_sd,
              data = total_indep_var_results,
              mods = ~ mean_year_centered + attitude_cat + ambiguous,
              method = "REML",
              test = "knha")

m1_age

m1_isced_med <- rma(yi = mu_isced_med_est,
              sei = mu_isced_med_sd,
              data = total_indep_var_results,
              mods = ~ mean_year_centered + attitude_cat + ambiguous,
              method = "REML",
              test = "knha")

m1_isced_med

m1_isced_high <- rma(yi = mu_isced_high_est,
              sei = mu_isced_high_sd,
              data = total_indep_var_results,
              mods = ~ mean_year_centered + attitude_cat + ambiguous,
              method = "REML",
              test = "knha")

m1_isced_high

# Same for variance/polarization
m1_gender_var <- rma(yi = sig_sex_est,
              sei = sig_sex_sd,
              data = total_indep_var_results,
              mods = ~ mean_year_centered + attitude_cat + ambiguous,
              method = "REML",
              test = "knha")

m1_gender_var 

m1_age_var <- rma(yi = sig_age_est,
              sei = sig_age_sd,
              data = total_indep_var_results,
              mods = ~ mean_year_centered + attitude_cat + ambiguous,
              method = "REML",
              test = "knha")

m1_age_var

m1_isced_med_var <- rma(yi = sig_isced_med_est,
              sei = sig_isced_med_sd,
              data = total_indep_var_results,
              mods = ~ mean_year_centered + attitude_cat + ambiguous,
              method = "REML",
              test = "knha")

m1_isced_med_var

m1_isced_high_var <- rma(yi = sig_isced_high_est,
              sei = sig_isced_high_sd,
              data = total_indep_var_results,
              mods = ~ mean_year_centered + attitude_cat + ambiguous,
              method = "REML",
              test = "knha")

m1_isced_high_var
# Run this piece of code so that in the Table beneath it will not show NAs
options(knitr.kable.NA = '')
# Make a table of the above regression output
indep_df <- data.frame(matrix(ncol = 14, nrow = 5))
colnames(indep_df) <- c("Mu/Sigma", "Variable", "Estimate", "SE", "p", "Estimate_1", "SE_1", "p_1", "Estimate_2", "SE_2", "p_2", "Estimate_3", "SE_3", "p_3")
indep_df$Variable <- c("Intercept", "Mean year (centered around mean)", "Attitude affective (ref = behavioral)", "Attitude cognitive", "Ambiguous (ref = no)")
indep_df$`Mu/Sigma` <- c("Mean attitudes", "", "", "", "")

indep_df$Estimate <- as.numeric(m1_gender$beta) #estimate
indep_df$SE <- m1_gender$se #se indeed but as a row
indep_df$p <- m1_gender$pval # same as for SE

indep_df$Estimate_1 <- as.numeric(m1_age$beta) #estimate
indep_df$SE_1 <- m1_age$se #se indeed but as a row
indep_df$p_1 <- m1_age$pval # same as for SE

indep_df$Estimate_2 <- as.numeric(m1_isced_med$beta) #estimate
indep_df$SE_2 <- m1_isced_med$se #se indeed but as a row
indep_df$p_2 <- m1_isced_med$pval # same as for SE

indep_df$Estimate_3 <- as.numeric(m1_isced_high$beta) #estimate
indep_df$SE_3 <- m1_isced_high$se #se indeed but as a row
indep_df$p_3 <- m1_isced_high$pval # same as for SE

indep_df$p_text <- case_when(
indep_df$p >= 0.05 ~ "",
indep_df$p < 0.001 ~ "***",
indep_df$p < 0.01 ~ "**",
indep_df$p < 0.05 ~ "*"
)

indep_df$p_text_1 <- case_when(
indep_df$p_1 >= 0.05 ~ "",
indep_df$p_1 < 0.001 ~ "***",
indep_df$p_1 < 0.01 ~ "**",
indep_df$p_1 < 0.05 ~ "*"
)

indep_df$p_text_2 <- case_when(
indep_df$p_2 >= 0.05 ~ "",
indep_df$p_2 < 0.001 ~ "***",
indep_df$p_2 < 0.01 ~ "**",
indep_df$p_2 < 0.05 ~ "*"
)

indep_df$p_text_3 <- case_when(
indep_df$p_3 >= 0.05 ~ "",
indep_df$p_3 < 0.001 ~ "***",
indep_df$p_3 < 0.01 ~ "**",
indep_df$p_3 < 0.05 ~ "*"
)

# I also want the R2, I2 and QE in the table
model_1_fit  <- data.frame(matrix(ncol = 14, nrow = 3))
colnames(model_1_fit) <- c("Mu/Sigma", "Variable", "Estimate", "SE", "p_text", "Estimate_1", "SE_1", "p_text_1", "Estimate_2", "SE_2", "p_text_2", "Estimate_3", "SE_3", "p_text_3")
model_1_fit$Variable <- c("R2", "I2", "QE")
model_1_fit$Estimate <- c(m1_gender$R2, m1_gender$I2, m1_gender$QE)
model_1_fit$Estimate_1 <- c(m1_age$R2, m1_age$I2, m1_age$QE)
model_1_fit$Estimate_2 <- c(m1_isced_med$R2, m1_isced_med$I2, m1_isced_med$QE)
model_1_fit$Estimate_3 <- c(m1_isced_high$R2, m1_isced_high$I2, m1_isced_high$QE)

indep_df <- select(indep_df, `Mu/Sigma`, Variable, Estimate, SE, p_text, Estimate_1, SE_1, p_text_1, Estimate_2, SE_2, p_text_2, Estimate_3, SE_3, p_text_3)
indep_df <- rbind(indep_df, model_1_fit)

# Variance
indep_var_df <- data.frame(matrix(ncol = 14, nrow = 5))
colnames(indep_var_df) <- c("Mu/Sigma", "Variable", "Estimate", "SE", "p", "Estimate_1", "SE_1", "p_1", "Estimate_2", "SE_2", "p_2", "Estimate_3", "SE_3", "p_3")
indep_var_df$Variable <- c("Intercept", "Mean year (centered around mean)", "Attitude affective (ref = behavioral)", "Attitude cognitive", "Ambiguous (ref = no)")
indep_var_df$`Mu/Sigma` <- c("Polarization in attitudes", "", "", "", "")

indep_var_df$Estimate <- as.numeric(m1_gender_var$beta) #estimate
indep_var_df$SE <- m1_gender_var$se #se indeed but as a row
indep_var_df$p <- m1_gender_var$pval # same as for SE

indep_var_df$Estimate_1 <- as.numeric(m1_age_var$beta) #estimate
indep_var_df$SE_1 <- m1_age_var$se #se indeed but as a row
indep_var_df$p_1 <- m1_age_var$pval # same as for SE

indep_var_df$Estimate_2 <- as.numeric(m1_isced_med_var$beta) #estimate
indep_var_df$SE_2 <- m1_isced_med_var$se #se indeed but as a row
indep_var_df$p_2 <- m1_isced_med_var$pval # same as for SE

indep_var_df$Estimate_3 <- as.numeric(m1_isced_high_var$beta) #estimate
indep_var_df$SE_3 <- m1_isced_high_var$se #se indeed but as a row
indep_var_df$p_3 <- m1_isced_high_var$pval # same as for SE

indep_var_df$p_text <- case_when(
indep_var_df$p >= 0.05 ~ "",
indep_var_df$p < 0.001 ~ "***",
indep_var_df$p < 0.01 ~ "**",
indep_var_df$p < 0.05 ~ "*"
)

indep_var_df$p_text_1 <- case_when(
indep_var_df$p_1 >= 0.05 ~ "",
indep_var_df$p_1 < 0.001 ~ "***",
indep_var_df$p_1 < 0.01 ~ "**",
indep_var_df$p_1 < 0.05 ~ "*"
)

indep_var_df$p_text_2 <- case_when(
indep_var_df$p_2 >= 0.05 ~ "",
indep_var_df$p_2 < 0.001 ~ "***",
indep_var_df$p_2 < 0.01 ~ "**",
indep_var_df$p_2 < 0.05 ~ "*"
)

indep_var_df$p_text_3 <- case_when(
indep_var_df$p_3 >= 0.05 ~ "",
indep_var_df$p_3 < 0.001 ~ "***",
indep_var_df$p_3 < 0.01 ~ "**",
indep_var_df$p_3 < 0.05 ~ "*"
)

# I also want the R2, I2 and QE in the table
model_1_fit_var  <- data.frame(matrix(ncol = 14, nrow = 3))
colnames(model_1_fit_var) <- c("Mu/Sigma", "Variable", "Estimate", "SE", "p_text", "Estimate_1", "SE_1", "p_text_1", "Estimate_2", "SE_2", "p_text_2", "Estimate_3", "SE_3", "p_text_3")
model_1_fit_var$Variable <- c("R2", "I2", "QE")
model_1_fit_var$Estimate <- c(m1_gender_var$R2, m1_gender_var$I2, m1_gender_var$QE)
model_1_fit_var$Estimate_1 <- c(m1_age_var$R2, m1_age_var$I2, m1_age_var$QE)
model_1_fit_var$Estimate_2 <- c(m1_isced_med_var$R2, m1_isced_med_var$I2, m1_isced_med_var$QE)
model_1_fit_var$Estimate_3 <- c(m1_isced_high_var$R2, m1_isced_high_var$I2, m1_isced_high_var$QE)

indep_var_df <- select(indep_var_df, `Mu/Sigma`, Variable, Estimate, SE, p_text, Estimate_1, SE_1, p_text_1, Estimate_2, SE_2, p_text_2, Estimate_3, SE_3, p_text_3)
indep_var_df <- rbind(indep_var_df, model_1_fit_var)

#Now a total dataframe with both models together, and then make some changes before making the table 
indep_df_total <- rbind(indep_df, indep_var_df)

indep_df_total <- dplyr::mutate(indep_df_total, across(.cols =c(-`Mu/Sigma`, -Variable, -p_text, -p_text_1, -p_text_2, -p_text_3), .fns = as.numeric))

numeric_cols <- sapply(indep_df_total, is.numeric)
indep_df_total[, numeric_cols] <- round(indep_df_total[, numeric_cols], digits = 3)

kable(indep_df_total, digits = 3, caption = "Appendix E. Meta-regression on climate change attitudes and polarization", 
      col.names = c( "", "Variables", "Estimate", "Std. Error", "", "Estimate", "Std. Error", "", "Estimate", "Std. Error", "", "Estimate", "Std. Error", "")) %>%
  kable_classic_2(html_font = "Times", fixed_thead = T, full_width = F) %>%
  add_header_above(c(" " = 2, "Gender" = 3, "Age" = 3, "Isced intermediate (ref=basic)" = 3, "Isced advanced (ref=basic)" = 3)) %>%
   footnote(
    general_title = "Note.",
    general = "*** = p < 0.001, ** = p < 0.01, * = p < 0.05",
    threeparttable = TRUE,
    footnote_as_chunk = TRUE
    ) %>%
    save_kable("./output/meta_regression_indepvar_table_NOVEMBER.html")

`

LS0tDQp0aXRsZTogIk1ldGEgYW5hbHlzaXMgZm9yIGluZGVwZW5kZW50IHZhcmlhYmxlcyINCmF1dGhvcjogIkFudXNjaGthIFBlZWxlbiINCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCINCm91dHB1dDogaHRtbF9kb2N1bWVudA0KLS0tDQpgYGB7ciwgZWNobz1GQUxTRX0NCiNrbml0cjo6b3B0c19jaHVuayRzZXQoZXZhbCA9IEZBTFNFKQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KG51bWJlcl9zZWN0aW9ucyA9IEZBTFNFKQ0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkNCmNvbG9yaXplIDwtIGZ1bmN0aW9uKHgsIGNvbG9yKSB7c3ByaW50ZigiPHNwYW4gc3R5bGU9J2NvbG9yOiAlczsnPiVzPC9zcGFuPiIsIGNvbG9yLCB4KSB9DQpgYGANCg0KYGBge2NzcywgZWNobz1GQUxTRX0NCnByZSB7DQogIG1heC1oZWlnaHQ6IDMwMHB4Ow0KICBvdmVyZmxvdy15OiBhdXRvOw0KfQ0KDQpwcmVbY2xhc3NdIHsNCiAgbWF4LWhlaWdodDogMTAwcHg7DQp9DQpgYGANCg0KSW4gdGhpcyBzY3JpcHQsIEkgcGVyZm9ybSBtZXRhLWFuYWx5c2VzIGZvciB0aGUgbW9kZWxzIHdpdGggdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlcw0KDQpgYGB7cixyZXN1bHRzPSdoaWRlJywgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCnJtKGxpc3Q9bHMoKSkNCmxpYnJhcnkobWV0YSkNCmxpYnJhcnkobWV0YWZvcikNCmxpYnJhcnkoaGVyZSkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQpzZXQuc2VlZCgxKQ0KDQpgYGANCg0KYGBge3IsIHJlc3VsdHM9J2hpZGUnLCB3YXJuaW5nPUZBTFNFfQ0KbG9hZCgiLi9kYXRhL21ldGFfYW5hbHlzaXMvdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHNfbmV3LlJEYXRhIikNCg0KIyBFZmZlY3RzIG9mIG11J3MgDQojIEdlbmRlciANCmdlbmRlcl9nZW4gPC0gbWV0YWdlbihURSA9IG11X3NleF9lc3QsDQogICAgICAgICAgICAgICAgIHNlVEUgPSBtdV9zZXhfc2QsDQogICAgICAgICAgICAgICAgIGRhdGEgPSB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgZml4ZWQgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgcmFuZG9tID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgbWV0aG9kLnRhdSA9ICJSRU1MIiwNCiAgICAgICAgICAgICAgICAgaGFrbiA9IFRSVUUpDQoNCnN1bW1hcnkoZ2VuZGVyX2dlbikNCg0KIyBBZ2UgDQphZ2VfZ2VuIDwtIG1ldGFnZW4oVEUgPSBtdV9hZ2VfZXN0LA0KICAgICAgICAgICAgICAgICBzZVRFID0gbXVfYWdlX3NkLA0KICAgICAgICAgICAgICAgICBkYXRhID0gdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMsDQogICAgICAgICAgICAgICAgIGZpeGVkID0gRkFMU0UsDQogICAgICAgICAgICAgICAgIHJhbmRvbSA9IFRSVUUsDQogICAgICAgICAgICAgICAgIG1ldGhvZC50YXUgPSAiUkVNTCIsDQogICAgICAgICAgICAgICAgIGhha24gPSBUUlVFKQ0KDQpzdW1tYXJ5KGFnZV9nZW4pDQoNCiMgRWR1Y2F0aW9uYWwgbGV2ZWwuIA0KZWR1X21lZF9nZW4gPC0gbWV0YWdlbihURSA9IG11X2lzY2VkX21lZF9lc3QsDQogICAgICAgICAgICAgICAgIHNlVEUgPSBtdV9pc2NlZF9tZWRfc2QsDQogICAgICAgICAgICAgICAgIGRhdGEgPSB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgZml4ZWQgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgcmFuZG9tID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgbWV0aG9kLnRhdSA9ICJSRU1MIiwNCiAgICAgICAgICAgICAgICAgaGFrbiA9IFRSVUUpDQoNCnN1bW1hcnkoZWR1X21lZF9nZW4pDQoNCmVkdV9oaWdoX2dlbiA8LSBtZXRhZ2VuKFRFID0gbXVfaXNjZWRfaGlnaF9lc3QsDQogICAgICAgICAgICAgICAgIHNlVEUgPSBtdV9pc2NlZF9oaWdoX3NkLA0KICAgICAgICAgICAgICAgICBkYXRhID0gdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMsDQogICAgICAgICAgICAgICAgIGZpeGVkID0gRkFMU0UsDQogICAgICAgICAgICAgICAgIHJhbmRvbSA9IFRSVUUsDQogICAgICAgICAgICAgICAgIG1ldGhvZC50YXUgPSAiUkVNTCIsDQogICAgICAgICAgICAgICAgIGhha24gPSBUUlVFKQ0KDQpzdW1tYXJ5KGVkdV9oaWdoX2dlbikNCg0KIyBOb3cgZm9yIHZhcmlhbmNlDQojIEdlbmRlcg0KZ2VuZGVyX3Zhcl9nZW4gPC0gbWV0YWdlbihURSA9IHNpZ19zZXhfZXN0LA0KICAgICAgICAgICAgICAgICBzZVRFID0gc2lnX3NleF9zZCwNCiAgICAgICAgICAgICAgICAgZGF0YSA9IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzLA0KICAgICAgICAgICAgICAgICBmaXhlZCA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICByYW5kb20gPSBUUlVFLA0KICAgICAgICAgICAgICAgICBtZXRob2QudGF1ID0gIlJFTUwiLA0KICAgICAgICAgICAgICAgICBoYWtuID0gVFJVRSkNCg0Kc3VtbWFyeShnZW5kZXJfdmFyX2dlbikNCg0KIyBBZ2UNCmFnZV92YXJfZ2VuIDwtIG1ldGFnZW4oVEUgPSBzaWdfYWdlX2VzdCwNCiAgICAgICAgICAgICAgICAgc2VURSA9IHNpZ19hZ2Vfc2QsDQogICAgICAgICAgICAgICAgIGRhdGEgPSB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgZml4ZWQgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgcmFuZG9tID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgbWV0aG9kLnRhdSA9ICJSRU1MIiwNCiAgICAgICAgICAgICAgICAgaGFrbiA9IFRSVUUpDQoNCnN1bW1hcnkoYWdlX3Zhcl9nZW4pDQoNCiMgRWR1Y2F0aW9uDQoNCmVkdV92YXJfbWVkX2dlbiA8LSBtZXRhZ2VuKFRFID0gc2lnX2lzY2VkX21lZF9lc3QsDQogICAgICAgICAgICAgICAgIHNlVEUgPSBzaWdfaXNjZWRfbWVkX3NkLA0KICAgICAgICAgICAgICAgICBkYXRhID0gdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMsDQogICAgICAgICAgICAgICAgIGZpeGVkID0gRkFMU0UsDQogICAgICAgICAgICAgICAgIHJhbmRvbSA9IFRSVUUsDQogICAgICAgICAgICAgICAgIG1ldGhvZC50YXUgPSAiUkVNTCIsDQogICAgICAgICAgICAgICAgIGhha24gPSBUUlVFKQ0KDQpzdW1tYXJ5KGVkdV92YXJfbWVkX2dlbikNCg0KZWR1X3Zhcl9oaWdoX2dlbiA8LSBtZXRhZ2VuKFRFID0gc2lnX2lzY2VkX2hpZ2hfZXN0LA0KICAgICAgICAgICAgICAgICBzZVRFID0gc2lnX2lzY2VkX2hpZ2hfc2QsDQogICAgICAgICAgICAgICAgIGRhdGEgPSB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgZml4ZWQgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgcmFuZG9tID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgbWV0aG9kLnRhdSA9ICJSRU1MIiwNCiAgICAgICAgICAgICAgICAgaGFrbiA9IFRSVUUpDQoNCnN1bW1hcnkoZWR1X3Zhcl9oaWdoX2dlbikNCg0KYGBgDQoNCg0KYGBge3IsIHJlc3VsdHM9J2hpZGUnLCB3YXJuaW5nPUZBTFNFfQ0KIyBQZXJmb3JtIHRoZSBtZXRhLXJlZ3Jlc3Npb24gd2l0aCBtZXRhLWxldmVsIHZhcmlhYmxlcyBvbiBpbmRlcGVuZGVudCB2YXJpYWJsZXMgdG8gc2VlIGlmIHRoZXJlIGlzIHNvbWV0aGluZyBpbnRlcmVzdGluZw0KDQojIEZvciB0aGlzIGRhdGFzZXQsIHRoZSBtZXRhLWxldmVsIHZhcmlhYmxlcyB3ZXJlIG5vdCBjcmVhdGVkIHlldCwgc28gdGhhdCdzIG5lZWRlZCBmaXJzdA0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGF0YVt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyPT0iY2xpbWF0ZTUiXSA8LSAiRVZTIg0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGF0YVt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyPT0iY2F1c2UiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2F1c2UiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAid29ycnkiXSA8LSAiRVNTIg0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGF0YVt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyPT0id29ycmllZCIgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJmcm9udHJ1bm5lciIgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJ3b3JyeV9mdXR1cmUiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAicmVzcF9jaXRpeiIgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJka19zdGFydCIgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJkb19nb3YiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiYnVzc19oZWxwIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIm1pbl9jb250ciIgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJodW1hbl9yZXNwIl0gPC0gIkkmTyINCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRhdGFbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3Zhcj09IndvcnJ5IiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImxpZmVoYXJtIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gInByb2doYXJtIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImVjb25wcm90ZWN0IiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImdyb3doYXJtIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIndpbGxpbmdfcHJpY2UiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAid2lsbGluZ190YXgiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAid2lsbGluZ19saXZpbmciIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiZG9kaWZmIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXI9PSJkb19yaWdodCIgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJwZW9wbGVfZGVjaWRlIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIm1vcmVpbXAiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAib3RoZXJzYW1lIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImV4YWciIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY291bnRyeV9lZmZvcnQiXSAgPC0gIklTU1AiDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkYXRhW2lzLm5hKHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRhdGEpXSA8LSAiRUIiDQoNCg0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGF0YVt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyPT0iY2NoYW5nZV9tb3QiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAid29ycmllZF9tb3QiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiZnV0dXJlZ2VuIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIm5vd29yIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIm9udGltZSIgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJnb3YiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAicmVzcF9nb3YiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAicmVzcF9jb21wIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gInJlc3BfbWtiIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXI9PSJyZXNwX2NpdGl6X21vdCIgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJyZXNwX3lvdSIgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJwZXJzX3Jlc3BfbW90IiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gInN1c3RfY2hvaWNlIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImNvbnRyIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImVuZXJneSIgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJlbmVyZ3kiIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAibm9pZGVhIiB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIm1vdGl2Il0gIDwtICJNT1QiDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkYXRhW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXI9PSJmdXRfZ2VuX3NvY29uIl0gPC0gIlNPQ09OIg0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGF0YVt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyPT0ibGlmZXN0eWxlIl0gPC0gIkxJU1MiDQoNCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAid29ycnkiICYgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGF0YSA9PSAiSVNTUCJdIDwtICJ3b3JyeV9pc3NwIg0KDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRhdHRpdHVkZV9jYXRbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiZG9kaWZmIiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gInBlcnNfcmVzcCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIndvcnJ5Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAid29ycmllZCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIndvcnJ5X2Z1dHVyZSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImZyb250cnVubmVyIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAibWluX2NvbnRyIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAid29ycmllZF9tb3QiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJmdXR1cmVnZW4iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJub3dvciINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIm1vdGl2ciINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImZ1dF9nZW5fc29jb24iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJwZXJzX3Jlc3BfbW90Il0gPC0gImFmZmVjdGl2ZSINCg0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkYXR0aXR1ZGVfY2F0W3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIndpbGxpbmdfcHJpY2UiIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAid2lsbGluZ190YXgiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJ3aWxsaW5nX2xpdmluZyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImRvX3JpZ2h0Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAicGVvcGxlX2RlY2lkZSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImNsaW1hdGU1Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAicHJzYWN0aW9uIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2NfcHJzYWN0Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiYnV5cHJvZCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJzdXN0X2Nob2ljZSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJlbmVyZ3kiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAibGlmZXN0eWxlIl0gPC0gImJlaGF2aW9yYWwiDQoNCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGF0dGl0dWRlX2NhdFt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJ3b3JyeV9pc3NwIiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImxpZmVoYXJtIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAicHJvZ2hhcm0iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJlY29ucHJvdGVjdCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImdyb3doYXJtIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiYnVzX2RlY2lkZSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIm1vcmVpbXAiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJvdGhlcnNhbWUiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJleGFnIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY291bnRyeV9lZmZvcnQiIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2F1c2UiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJyZXNwX2NpdGl6Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiZGtfc3RhcnQiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJkb19nb3YiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJidXNzX2hlbHAiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJodW1hbl9yZXNwIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiZW52X2VjX3N0YXQiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJlbnZfcHJzaW1wIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImVudnBfZWciDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJlZmZyX2VnIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2NoYW5nZSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImNjaGFuZ2UyIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2NoYW5nZXRvdCIgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJjY3BlcmNlcHQiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJlbnZfcXVhbGxpZmUiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJkb3Byb3RfY29tcCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImRvcHJvdF9yZWdpb24iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJkb3Byb3RfbmF0Z292Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiZG9wcm90X2NpdHkiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJkb3Byb3RfY2l0aXoiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJkb3Byb3RfZXUiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImNjX3Vuc3RvcCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImNjX2V4YWciDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJjY19wb3NldSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gInJvbGVfaW5kIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiYmlnX3BvbCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImVmZl9kYWlseSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gInBlcnNfaW1wIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJjY2hhbmdlX21vdCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAib250aW1lIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJnb3YiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gInJlc3BfZ292Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJyZXNwX2NvbXAiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gInJlc3BfbWtiIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJyZXNwX2NpdGl6X21vdCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAicmVzcF95b3UiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImNvbnRyIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJub2lkZWEiXSA8LSAiY29nbml0aXZlIg0KDQojQ3JlYXRlIGEgdmFyaWFibGUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgZGVwZW5kZW50IHZhcmlhYmxlIGNhbiBiZSBpbnRlcnByZXRlZCBpbiAyIHdheXMgKGFtYmlndW91cykNCg0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkYW1iaWd1b3VzW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgIT0gImRvZGlmZiIgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyICE9ICJmcm9udHJ1bm5lciINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgIT0gIm1pbl9jb250ciINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgIT0gInBlb3BsZV9kZWNpZGUiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyICE9ICJlY29ucHJvdGVjdCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgIT0gImdyb3doYXJtIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciAhPSAiYnVzX2RlY2lkZSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgIT0gIm90aGVyc2FtZSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgIT0gInJlc3BfY2l0aXoiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyICE9ICJka19zdGFydCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgIT0gImJ1c3NfaGVscCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgIT0gImVudnBfZWciDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyICE9ICJlZmZyX2VnIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciAhPSAiZW52X3F1YWxsaWZlIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciAhPSAiY2NfdW5zdG9wIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciAhPSAiY2NfcG9zZXUiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyICE9ICJiaWdfcG9sIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAibm9pZGVhIl0gPC0gIk5vIg0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkYW1iaWd1b3VzW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImRvZGlmZiIgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJmcm9udHJ1bm5lciINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIm1pbl9jb250ciINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gInBlb3BsZV9kZWNpZGUiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJlY29ucHJvdGVjdCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImdyb3doYXJtIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiYnVzX2RlY2lkZSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gIm90aGVyc2FtZSINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gInJlc3BfY2l0aXoiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJka19zdGFydCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImJ1c3NfaGVscCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImVudnBfZWciDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJlZmZyX2VnIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiZW52X3F1YWxsaWZlIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2NfdW5zdG9wIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2NfcG9zZXUiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJiaWdfcG9sIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAibm9pZGVhIl0gPC0gIlllcyINCg0KDQoNCiMgVGhpcyB0aW1lLCB5ZWFyIGlzIGEgYml0IG1vcmUgZGlmZmljdWx0LCBzbyBJIGhhdmUgdG8gYXNzaWduIHRoYXQgcGVyIGRlcF92YXINCiMgQW5kIHRoZSBhdmVyYWdlIHllYXIgDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAicm9sZV9pbmQiXSA8LSAyMDEyDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiYmlnX3BvbCJdIDwtIDIwMTINCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJG1lYW5feWVhclt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJjY191bnN0b3AiXSA8LSAyMDA4DQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2NfZXhhZyJdIDwtIDIwMDgNCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJG1lYW5feWVhclt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJjY19wb3NldSJdIDwtIDIwMDgNCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJG1lYW5feWVhclt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJjY19wcnNhY3QiXSA8LSAyMDA4DQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2NfcG9zZXUiXSA8LSAyMDA4DQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2NwZXJjZXB0Il0gPC0gMjAxNA0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkbWVhbl95ZWFyW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImNjaGFuZ2UiXSA8LSAyMDE1DQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2NoYW5nZTIiXSA8LSAyMDE1DQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY2NoYW5nZXRvdCJdIDwtIDIwMTUNCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJG1lYW5feWVhclt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJlbnZwX2VnIl0gPC0gMjAxMw0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkbWVhbl95ZWFyW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImVmZnJfZWciXSA8LSAyMDEzDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiYnV5cHJvZCJdIDwtIDIwMTANCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJG1lYW5feWVhclt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJkb3Byb3RfbmF0Z292Il0gPC0gMjAxMw0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkbWVhbl95ZWFyW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImRvcHJvdF9ldSJdIDwtIDIwMTMNCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJG1lYW5feWVhclt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJkb3Byb3RfcmVnaW9uIl0gPC0gMjAxMw0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkbWVhbl95ZWFyW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImRvcHJvdF9jb21wIl0gPC0gMjAxMw0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkbWVhbl95ZWFyW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImRvcHJvdF9jaXRpeiJdIDwtIDIwMTMNCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJG1lYW5feWVhclt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJkb3Byb3RfY2l0eSJdIDwtIDIwMTUNCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJG1lYW5feWVhclt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJlZmZfZGFpbHkiXSA8LSAyMDEyDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAicGVyc19pbXAiXSA8LSAyMDA5DQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiZW52X3F1YWxsaWZlIl0gPC0gMjAwOQ0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkbWVhbl95ZWFyW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImVudl9lY19zdGF0Il0gPC0gMTk5MQ0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkbWVhbl95ZWFyW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImVudl9wcnNpbXAiXSA8LSAxOTkxDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAicHJzYWN0aW9uIl0gPC0gMjAxNA0KDQoNCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJG1lYW5feWVhclt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkYXRhID09ICJJJk8iXSA8LSAyMDIwDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGF0YSA9PSAiRVZTIl0gPC0gMTk5OQ0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkbWVhbl95ZWFyW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRhdGEgPT0gIkVTUyJdIDwtIDIwMTgNCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJG1lYW5feWVhclt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkYXRhID09ICJNT1QiXSA8LSAyMDIwDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGF0YSA9PSAiU09DT04iXSA8LSAyMDIxDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGF0YSA9PSAiTElTUyJdIDwtIDIwMjANCiMgRm9yIHRoZSBJU1NQLCBoYXZlIHRvIHNwZWNpZnkgaXQgcGVyIGRlcGVuZGVudCB2YXJpYWJsZQ0KdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkbWVhbl95ZWFyW3RvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJGRlcF92YXIgPT0gImV4YWciXSA8LSAyMDA1DQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAibW9yZWltcCJdIDwtIDIwMDUNCnRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzJG1lYW5feWVhclt0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRkZXBfdmFyID09ICJvdGhlcnNhbWUiXSA8LSAyMDA1DQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiY291bnRyeV9lZmZvcnQiXSA8LSAyMDA1DQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkZGVwX3ZhciA9PSAiZ3Jvd2hhcm0iXSA8LSAyMDA1DQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJbaXMubmEodG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkbWVhbl95ZWFyKV0gPC0gMjAwMg0KDQp0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXJfY2VudGVyZWQgPC0gdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMkbWVhbl95ZWFyIC0gbWVhbih0b3RhbF9pbmRlcF92YXJfcmVzdWx0cyRtZWFuX3llYXIpDQoNCnNhdmUodG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMsIGZpbGU9ICIuL2RhdGEvbWV0YV9hbmFseXNpcy90b3RhbF9pbmRlcF92YXJfcmVzdWx0c19uZXcuUkRhdGEiICkNCg0KYGBgDQoNCg0KYGBge3IsIHJlc3VsdHM9J2hpZGUnLCB3YXJuaW5nPUZBTFNFfQ0KDQoNCg0KbTFfZ2VuZGVyIDwtIHJtYSh5aSA9IG11X3NleF9lc3QsDQogICAgICAgICAgICAgIHNlaSA9IG11X3NleF9zZCwNCiAgICAgICAgICAgICAgZGF0YSA9IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzLA0KICAgICAgICAgICAgICBtb2RzID0gfiBtZWFuX3llYXJfY2VudGVyZWQgKyBhdHRpdHVkZV9jYXQgKyBhbWJpZ3VvdXMsDQogICAgICAgICAgICAgIG1ldGhvZCA9ICJSRU1MIiwNCiAgICAgICAgICAgICAgdGVzdCA9ICJrbmhhIikNCg0KbTFfZ2VuZGVyIA0KDQptMV9hZ2UgPC0gcm1hKHlpID0gbXVfYWdlX2VzdCwNCiAgICAgICAgICAgICAgc2VpID0gbXVfYWdlX3NkLA0KICAgICAgICAgICAgICBkYXRhID0gdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMsDQogICAgICAgICAgICAgIG1vZHMgPSB+IG1lYW5feWVhcl9jZW50ZXJlZCArIGF0dGl0dWRlX2NhdCArIGFtYmlndW91cywNCiAgICAgICAgICAgICAgbWV0aG9kID0gIlJFTUwiLA0KICAgICAgICAgICAgICB0ZXN0ID0gImtuaGEiKQ0KDQptMV9hZ2UNCg0KbTFfaXNjZWRfbWVkIDwtIHJtYSh5aSA9IG11X2lzY2VkX21lZF9lc3QsDQogICAgICAgICAgICAgIHNlaSA9IG11X2lzY2VkX21lZF9zZCwNCiAgICAgICAgICAgICAgZGF0YSA9IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzLA0KICAgICAgICAgICAgICBtb2RzID0gfiBtZWFuX3llYXJfY2VudGVyZWQgKyBhdHRpdHVkZV9jYXQgKyBhbWJpZ3VvdXMsDQogICAgICAgICAgICAgIG1ldGhvZCA9ICJSRU1MIiwNCiAgICAgICAgICAgICAgdGVzdCA9ICJrbmhhIikNCg0KbTFfaXNjZWRfbWVkDQoNCm0xX2lzY2VkX2hpZ2ggPC0gcm1hKHlpID0gbXVfaXNjZWRfaGlnaF9lc3QsDQogICAgICAgICAgICAgIHNlaSA9IG11X2lzY2VkX2hpZ2hfc2QsDQogICAgICAgICAgICAgIGRhdGEgPSB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cywNCiAgICAgICAgICAgICAgbW9kcyA9IH4gbWVhbl95ZWFyX2NlbnRlcmVkICsgYXR0aXR1ZGVfY2F0ICsgYW1iaWd1b3VzLA0KICAgICAgICAgICAgICBtZXRob2QgPSAiUkVNTCIsDQogICAgICAgICAgICAgIHRlc3QgPSAia25oYSIpDQoNCm0xX2lzY2VkX2hpZ2gNCg0KIyBTYW1lIGZvciB2YXJpYW5jZS9wb2xhcml6YXRpb24NCm0xX2dlbmRlcl92YXIgPC0gcm1hKHlpID0gc2lnX3NleF9lc3QsDQogICAgICAgICAgICAgIHNlaSA9IHNpZ19zZXhfc2QsDQogICAgICAgICAgICAgIGRhdGEgPSB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cywNCiAgICAgICAgICAgICAgbW9kcyA9IH4gbWVhbl95ZWFyX2NlbnRlcmVkICsgYXR0aXR1ZGVfY2F0ICsgYW1iaWd1b3VzLA0KICAgICAgICAgICAgICBtZXRob2QgPSAiUkVNTCIsDQogICAgICAgICAgICAgIHRlc3QgPSAia25oYSIpDQoNCm0xX2dlbmRlcl92YXIgDQoNCm0xX2FnZV92YXIgPC0gcm1hKHlpID0gc2lnX2FnZV9lc3QsDQogICAgICAgICAgICAgIHNlaSA9IHNpZ19hZ2Vfc2QsDQogICAgICAgICAgICAgIGRhdGEgPSB0b3RhbF9pbmRlcF92YXJfcmVzdWx0cywNCiAgICAgICAgICAgICAgbW9kcyA9IH4gbWVhbl95ZWFyX2NlbnRlcmVkICsgYXR0aXR1ZGVfY2F0ICsgYW1iaWd1b3VzLA0KICAgICAgICAgICAgICBtZXRob2QgPSAiUkVNTCIsDQogICAgICAgICAgICAgIHRlc3QgPSAia25oYSIpDQoNCm0xX2FnZV92YXINCg0KbTFfaXNjZWRfbWVkX3ZhciA8LSBybWEoeWkgPSBzaWdfaXNjZWRfbWVkX2VzdCwNCiAgICAgICAgICAgICAgc2VpID0gc2lnX2lzY2VkX21lZF9zZCwNCiAgICAgICAgICAgICAgZGF0YSA9IHRvdGFsX2luZGVwX3Zhcl9yZXN1bHRzLA0KICAgICAgICAgICAgICBtb2RzID0gfiBtZWFuX3llYXJfY2VudGVyZWQgKyBhdHRpdHVkZV9jYXQgKyBhbWJpZ3VvdXMsDQogICAgICAgICAgICAgIG1ldGhvZCA9ICJSRU1MIiwNCiAgICAgICAgICAgICAgdGVzdCA9ICJrbmhhIikNCg0KbTFfaXNjZWRfbWVkX3Zhcg0KDQptMV9pc2NlZF9oaWdoX3ZhciA8LSBybWEoeWkgPSBzaWdfaXNjZWRfaGlnaF9lc3QsDQogICAgICAgICAgICAgIHNlaSA9IHNpZ19pc2NlZF9oaWdoX3NkLA0KICAgICAgICAgICAgICBkYXRhID0gdG90YWxfaW5kZXBfdmFyX3Jlc3VsdHMsDQogICAgICAgICAgICAgIG1vZHMgPSB+IG1lYW5feWVhcl9jZW50ZXJlZCArIGF0dGl0dWRlX2NhdCArIGFtYmlndW91cywNCiAgICAgICAgICAgICAgbWV0aG9kID0gIlJFTUwiLA0KICAgICAgICAgICAgICB0ZXN0ID0gImtuaGEiKQ0KDQptMV9pc2NlZF9oaWdoX3Zhcg0KDQpgYGANCg0KYGBge3IsIHJlc3VsdHM9J2hpZGUnLCB3YXJuaW5nPUZBTFNFfQ0KIyBSdW4gdGhpcyBwaWVjZSBvZiBjb2RlIHNvIHRoYXQgaW4gdGhlIFRhYmxlIGJlbmVhdGggaXQgd2lsbCBub3Qgc2hvdyBOQXMNCm9wdGlvbnMoa25pdHIua2FibGUuTkEgPSAnJykNCmBgYA0KDQoNCmBgYHtyfQ0KIyBNYWtlIGEgdGFibGUgb2YgdGhlIGFib3ZlIHJlZ3Jlc3Npb24gb3V0cHV0DQppbmRlcF9kZiA8LSBkYXRhLmZyYW1lKG1hdHJpeChuY29sID0gMTQsIG5yb3cgPSA1KSkNCmNvbG5hbWVzKGluZGVwX2RmKSA8LSBjKCJNdS9TaWdtYSIsICJWYXJpYWJsZSIsICJFc3RpbWF0ZSIsICJTRSIsICJwIiwgIkVzdGltYXRlXzEiLCAiU0VfMSIsICJwXzEiLCAiRXN0aW1hdGVfMiIsICJTRV8yIiwgInBfMiIsICJFc3RpbWF0ZV8zIiwgIlNFXzMiLCAicF8zIikNCmluZGVwX2RmJFZhcmlhYmxlIDwtIGMoIkludGVyY2VwdCIsICJNZWFuIHllYXIgKGNlbnRlcmVkIGFyb3VuZCBtZWFuKSIsICJBdHRpdHVkZSBhZmZlY3RpdmUgKHJlZiA9IGJlaGF2aW9yYWwpIiwgIkF0dGl0dWRlIGNvZ25pdGl2ZSIsICJBbWJpZ3VvdXMgKHJlZiA9IG5vKSIpDQppbmRlcF9kZiRgTXUvU2lnbWFgIDwtIGMoIk1lYW4gYXR0aXR1ZGVzIiwgIiIsICIiLCAiIiwgIiIpDQoNCmluZGVwX2RmJEVzdGltYXRlIDwtIGFzLm51bWVyaWMobTFfZ2VuZGVyJGJldGEpICNlc3RpbWF0ZQ0KaW5kZXBfZGYkU0UgPC0gbTFfZ2VuZGVyJHNlICNzZSBpbmRlZWQgYnV0IGFzIGEgcm93DQppbmRlcF9kZiRwIDwtIG0xX2dlbmRlciRwdmFsICMgc2FtZSBhcyBmb3IgU0UNCg0KaW5kZXBfZGYkRXN0aW1hdGVfMSA8LSBhcy5udW1lcmljKG0xX2FnZSRiZXRhKSAjZXN0aW1hdGUNCmluZGVwX2RmJFNFXzEgPC0gbTFfYWdlJHNlICNzZSBpbmRlZWQgYnV0IGFzIGEgcm93DQppbmRlcF9kZiRwXzEgPC0gbTFfYWdlJHB2YWwgIyBzYW1lIGFzIGZvciBTRQ0KDQppbmRlcF9kZiRFc3RpbWF0ZV8yIDwtIGFzLm51bWVyaWMobTFfaXNjZWRfbWVkJGJldGEpICNlc3RpbWF0ZQ0KaW5kZXBfZGYkU0VfMiA8LSBtMV9pc2NlZF9tZWQkc2UgI3NlIGluZGVlZCBidXQgYXMgYSByb3cNCmluZGVwX2RmJHBfMiA8LSBtMV9pc2NlZF9tZWQkcHZhbCAjIHNhbWUgYXMgZm9yIFNFDQoNCmluZGVwX2RmJEVzdGltYXRlXzMgPC0gYXMubnVtZXJpYyhtMV9pc2NlZF9oaWdoJGJldGEpICNlc3RpbWF0ZQ0KaW5kZXBfZGYkU0VfMyA8LSBtMV9pc2NlZF9oaWdoJHNlICNzZSBpbmRlZWQgYnV0IGFzIGEgcm93DQppbmRlcF9kZiRwXzMgPC0gbTFfaXNjZWRfaGlnaCRwdmFsICMgc2FtZSBhcyBmb3IgU0UNCg0KaW5kZXBfZGYkcF90ZXh0IDwtIGNhc2Vfd2hlbigNCmluZGVwX2RmJHAgPj0gMC4wNSB+ICIiLA0KaW5kZXBfZGYkcCA8IDAuMDAxIH4gIioqKiIsDQppbmRlcF9kZiRwIDwgMC4wMSB+ICIqKiIsDQppbmRlcF9kZiRwIDwgMC4wNSB+ICIqIg0KKQ0KDQppbmRlcF9kZiRwX3RleHRfMSA8LSBjYXNlX3doZW4oDQppbmRlcF9kZiRwXzEgPj0gMC4wNSB+ICIiLA0KaW5kZXBfZGYkcF8xIDwgMC4wMDEgfiAiKioqIiwNCmluZGVwX2RmJHBfMSA8IDAuMDEgfiAiKioiLA0KaW5kZXBfZGYkcF8xIDwgMC4wNSB+ICIqIg0KKQ0KDQppbmRlcF9kZiRwX3RleHRfMiA8LSBjYXNlX3doZW4oDQppbmRlcF9kZiRwXzIgPj0gMC4wNSB+ICIiLA0KaW5kZXBfZGYkcF8yIDwgMC4wMDEgfiAiKioqIiwNCmluZGVwX2RmJHBfMiA8IDAuMDEgfiAiKioiLA0KaW5kZXBfZGYkcF8yIDwgMC4wNSB+ICIqIg0KKQ0KDQppbmRlcF9kZiRwX3RleHRfMyA8LSBjYXNlX3doZW4oDQppbmRlcF9kZiRwXzMgPj0gMC4wNSB+ICIiLA0KaW5kZXBfZGYkcF8zIDwgMC4wMDEgfiAiKioqIiwNCmluZGVwX2RmJHBfMyA8IDAuMDEgfiAiKioiLA0KaW5kZXBfZGYkcF8zIDwgMC4wNSB+ICIqIg0KKQ0KDQojIEkgYWxzbyB3YW50IHRoZSBSMiwgSTIgYW5kIFFFIGluIHRoZSB0YWJsZQ0KbW9kZWxfMV9maXQgIDwtIGRhdGEuZnJhbWUobWF0cml4KG5jb2wgPSAxNCwgbnJvdyA9IDMpKQ0KY29sbmFtZXMobW9kZWxfMV9maXQpIDwtIGMoIk11L1NpZ21hIiwgIlZhcmlhYmxlIiwgIkVzdGltYXRlIiwgIlNFIiwgInBfdGV4dCIsICJFc3RpbWF0ZV8xIiwgIlNFXzEiLCAicF90ZXh0XzEiLCAiRXN0aW1hdGVfMiIsICJTRV8yIiwgInBfdGV4dF8yIiwgIkVzdGltYXRlXzMiLCAiU0VfMyIsICJwX3RleHRfMyIpDQptb2RlbF8xX2ZpdCRWYXJpYWJsZSA8LSBjKCJSMiIsICJJMiIsICJRRSIpDQptb2RlbF8xX2ZpdCRFc3RpbWF0ZSA8LSBjKG0xX2dlbmRlciRSMiwgbTFfZ2VuZGVyJEkyLCBtMV9nZW5kZXIkUUUpDQptb2RlbF8xX2ZpdCRFc3RpbWF0ZV8xIDwtIGMobTFfYWdlJFIyLCBtMV9hZ2UkSTIsIG0xX2FnZSRRRSkNCm1vZGVsXzFfZml0JEVzdGltYXRlXzIgPC0gYyhtMV9pc2NlZF9tZWQkUjIsIG0xX2lzY2VkX21lZCRJMiwgbTFfaXNjZWRfbWVkJFFFKQ0KbW9kZWxfMV9maXQkRXN0aW1hdGVfMyA8LSBjKG0xX2lzY2VkX2hpZ2gkUjIsIG0xX2lzY2VkX2hpZ2gkSTIsIG0xX2lzY2VkX2hpZ2gkUUUpDQoNCmluZGVwX2RmIDwtIHNlbGVjdChpbmRlcF9kZiwgYE11L1NpZ21hYCwgVmFyaWFibGUsIEVzdGltYXRlLCBTRSwgcF90ZXh0LCBFc3RpbWF0ZV8xLCBTRV8xLCBwX3RleHRfMSwgRXN0aW1hdGVfMiwgU0VfMiwgcF90ZXh0XzIsIEVzdGltYXRlXzMsIFNFXzMsIHBfdGV4dF8zKQ0KaW5kZXBfZGYgPC0gcmJpbmQoaW5kZXBfZGYsIG1vZGVsXzFfZml0KQ0KDQojIFZhcmlhbmNlDQppbmRlcF92YXJfZGYgPC0gZGF0YS5mcmFtZShtYXRyaXgobmNvbCA9IDE0LCBucm93ID0gNSkpDQpjb2xuYW1lcyhpbmRlcF92YXJfZGYpIDwtIGMoIk11L1NpZ21hIiwgIlZhcmlhYmxlIiwgIkVzdGltYXRlIiwgIlNFIiwgInAiLCAiRXN0aW1hdGVfMSIsICJTRV8xIiwgInBfMSIsICJFc3RpbWF0ZV8yIiwgIlNFXzIiLCAicF8yIiwgIkVzdGltYXRlXzMiLCAiU0VfMyIsICJwXzMiKQ0KaW5kZXBfdmFyX2RmJFZhcmlhYmxlIDwtIGMoIkludGVyY2VwdCIsICJNZWFuIHllYXIgKGNlbnRlcmVkIGFyb3VuZCBtZWFuKSIsICJBdHRpdHVkZSBhZmZlY3RpdmUgKHJlZiA9IGJlaGF2aW9yYWwpIiwgIkF0dGl0dWRlIGNvZ25pdGl2ZSIsICJBbWJpZ3VvdXMgKHJlZiA9IG5vKSIpDQppbmRlcF92YXJfZGYkYE11L1NpZ21hYCA8LSBjKCJQb2xhcml6YXRpb24gaW4gYXR0aXR1ZGVzIiwgIiIsICIiLCAiIiwgIiIpDQoNCmluZGVwX3Zhcl9kZiRFc3RpbWF0ZSA8LSBhcy5udW1lcmljKG0xX2dlbmRlcl92YXIkYmV0YSkgI2VzdGltYXRlDQppbmRlcF92YXJfZGYkU0UgPC0gbTFfZ2VuZGVyX3ZhciRzZSAjc2UgaW5kZWVkIGJ1dCBhcyBhIHJvdw0KaW5kZXBfdmFyX2RmJHAgPC0gbTFfZ2VuZGVyX3ZhciRwdmFsICMgc2FtZSBhcyBmb3IgU0UNCg0KaW5kZXBfdmFyX2RmJEVzdGltYXRlXzEgPC0gYXMubnVtZXJpYyhtMV9hZ2VfdmFyJGJldGEpICNlc3RpbWF0ZQ0KaW5kZXBfdmFyX2RmJFNFXzEgPC0gbTFfYWdlX3ZhciRzZSAjc2UgaW5kZWVkIGJ1dCBhcyBhIHJvdw0KaW5kZXBfdmFyX2RmJHBfMSA8LSBtMV9hZ2VfdmFyJHB2YWwgIyBzYW1lIGFzIGZvciBTRQ0KDQppbmRlcF92YXJfZGYkRXN0aW1hdGVfMiA8LSBhcy5udW1lcmljKG0xX2lzY2VkX21lZF92YXIkYmV0YSkgI2VzdGltYXRlDQppbmRlcF92YXJfZGYkU0VfMiA8LSBtMV9pc2NlZF9tZWRfdmFyJHNlICNzZSBpbmRlZWQgYnV0IGFzIGEgcm93DQppbmRlcF92YXJfZGYkcF8yIDwtIG0xX2lzY2VkX21lZF92YXIkcHZhbCAjIHNhbWUgYXMgZm9yIFNFDQoNCmluZGVwX3Zhcl9kZiRFc3RpbWF0ZV8zIDwtIGFzLm51bWVyaWMobTFfaXNjZWRfaGlnaF92YXIkYmV0YSkgI2VzdGltYXRlDQppbmRlcF92YXJfZGYkU0VfMyA8LSBtMV9pc2NlZF9oaWdoX3ZhciRzZSAjc2UgaW5kZWVkIGJ1dCBhcyBhIHJvdw0KaW5kZXBfdmFyX2RmJHBfMyA8LSBtMV9pc2NlZF9oaWdoX3ZhciRwdmFsICMgc2FtZSBhcyBmb3IgU0UNCg0KaW5kZXBfdmFyX2RmJHBfdGV4dCA8LSBjYXNlX3doZW4oDQppbmRlcF92YXJfZGYkcCA+PSAwLjA1IH4gIiIsDQppbmRlcF92YXJfZGYkcCA8IDAuMDAxIH4gIioqKiIsDQppbmRlcF92YXJfZGYkcCA8IDAuMDEgfiAiKioiLA0KaW5kZXBfdmFyX2RmJHAgPCAwLjA1IH4gIioiDQopDQoNCmluZGVwX3Zhcl9kZiRwX3RleHRfMSA8LSBjYXNlX3doZW4oDQppbmRlcF92YXJfZGYkcF8xID49IDAuMDUgfiAiIiwNCmluZGVwX3Zhcl9kZiRwXzEgPCAwLjAwMSB+ICIqKioiLA0KaW5kZXBfdmFyX2RmJHBfMSA8IDAuMDEgfiAiKioiLA0KaW5kZXBfdmFyX2RmJHBfMSA8IDAuMDUgfiAiKiINCikNCg0KaW5kZXBfdmFyX2RmJHBfdGV4dF8yIDwtIGNhc2Vfd2hlbigNCmluZGVwX3Zhcl9kZiRwXzIgPj0gMC4wNSB+ICIiLA0KaW5kZXBfdmFyX2RmJHBfMiA8IDAuMDAxIH4gIioqKiIsDQppbmRlcF92YXJfZGYkcF8yIDwgMC4wMSB+ICIqKiIsDQppbmRlcF92YXJfZGYkcF8yIDwgMC4wNSB+ICIqIg0KKQ0KDQppbmRlcF92YXJfZGYkcF90ZXh0XzMgPC0gY2FzZV93aGVuKA0KaW5kZXBfdmFyX2RmJHBfMyA+PSAwLjA1IH4gIiIsDQppbmRlcF92YXJfZGYkcF8zIDwgMC4wMDEgfiAiKioqIiwNCmluZGVwX3Zhcl9kZiRwXzMgPCAwLjAxIH4gIioqIiwNCmluZGVwX3Zhcl9kZiRwXzMgPCAwLjA1IH4gIioiDQopDQoNCiMgSSBhbHNvIHdhbnQgdGhlIFIyLCBJMiBhbmQgUUUgaW4gdGhlIHRhYmxlDQptb2RlbF8xX2ZpdF92YXIgIDwtIGRhdGEuZnJhbWUobWF0cml4KG5jb2wgPSAxNCwgbnJvdyA9IDMpKQ0KY29sbmFtZXMobW9kZWxfMV9maXRfdmFyKSA8LSBjKCJNdS9TaWdtYSIsICJWYXJpYWJsZSIsICJFc3RpbWF0ZSIsICJTRSIsICJwX3RleHQiLCAiRXN0aW1hdGVfMSIsICJTRV8xIiwgInBfdGV4dF8xIiwgIkVzdGltYXRlXzIiLCAiU0VfMiIsICJwX3RleHRfMiIsICJFc3RpbWF0ZV8zIiwgIlNFXzMiLCAicF90ZXh0XzMiKQ0KbW9kZWxfMV9maXRfdmFyJFZhcmlhYmxlIDwtIGMoIlIyIiwgIkkyIiwgIlFFIikNCm1vZGVsXzFfZml0X3ZhciRFc3RpbWF0ZSA8LSBjKG0xX2dlbmRlcl92YXIkUjIsIG0xX2dlbmRlcl92YXIkSTIsIG0xX2dlbmRlcl92YXIkUUUpDQptb2RlbF8xX2ZpdF92YXIkRXN0aW1hdGVfMSA8LSBjKG0xX2FnZV92YXIkUjIsIG0xX2FnZV92YXIkSTIsIG0xX2FnZV92YXIkUUUpDQptb2RlbF8xX2ZpdF92YXIkRXN0aW1hdGVfMiA8LSBjKG0xX2lzY2VkX21lZF92YXIkUjIsIG0xX2lzY2VkX21lZF92YXIkSTIsIG0xX2lzY2VkX21lZF92YXIkUUUpDQptb2RlbF8xX2ZpdF92YXIkRXN0aW1hdGVfMyA8LSBjKG0xX2lzY2VkX2hpZ2hfdmFyJFIyLCBtMV9pc2NlZF9oaWdoX3ZhciRJMiwgbTFfaXNjZWRfaGlnaF92YXIkUUUpDQoNCmluZGVwX3Zhcl9kZiA8LSBzZWxlY3QoaW5kZXBfdmFyX2RmLCBgTXUvU2lnbWFgLCBWYXJpYWJsZSwgRXN0aW1hdGUsIFNFLCBwX3RleHQsIEVzdGltYXRlXzEsIFNFXzEsIHBfdGV4dF8xLCBFc3RpbWF0ZV8yLCBTRV8yLCBwX3RleHRfMiwgRXN0aW1hdGVfMywgU0VfMywgcF90ZXh0XzMpDQppbmRlcF92YXJfZGYgPC0gcmJpbmQoaW5kZXBfdmFyX2RmLCBtb2RlbF8xX2ZpdF92YXIpDQoNCiNOb3cgYSB0b3RhbCBkYXRhZnJhbWUgd2l0aCBib3RoIG1vZGVscyB0b2dldGhlciwgYW5kIHRoZW4gbWFrZSBzb21lIGNoYW5nZXMgYmVmb3JlIG1ha2luZyB0aGUgdGFibGUgDQppbmRlcF9kZl90b3RhbCA8LSByYmluZChpbmRlcF9kZiwgaW5kZXBfdmFyX2RmKQ0KDQppbmRlcF9kZl90b3RhbCA8LSBkcGx5cjo6bXV0YXRlKGluZGVwX2RmX3RvdGFsLCBhY3Jvc3MoLmNvbHMgPWMoLWBNdS9TaWdtYWAsIC1WYXJpYWJsZSwgLXBfdGV4dCwgLXBfdGV4dF8xLCAtcF90ZXh0XzIsIC1wX3RleHRfMyksIC5mbnMgPSBhcy5udW1lcmljKSkNCg0KbnVtZXJpY19jb2xzIDwtIHNhcHBseShpbmRlcF9kZl90b3RhbCwgaXMubnVtZXJpYykNCmluZGVwX2RmX3RvdGFsWywgbnVtZXJpY19jb2xzXSA8LSByb3VuZChpbmRlcF9kZl90b3RhbFssIG51bWVyaWNfY29sc10sIGRpZ2l0cyA9IDMpDQoNCmthYmxlKGluZGVwX2RmX3RvdGFsLCBkaWdpdHMgPSAzLCBjYXB0aW9uID0gIkFwcGVuZGl4IEUuIE1ldGEtcmVncmVzc2lvbiBvbiBjbGltYXRlIGNoYW5nZSBhdHRpdHVkZXMgYW5kIHBvbGFyaXphdGlvbiIsIA0KICAgICAgY29sLm5hbWVzID0gYyggIiIsICJWYXJpYWJsZXMiLCAiRXN0aW1hdGUiLCAiU3RkLiBFcnJvciIsICIiLCAiRXN0aW1hdGUiLCAiU3RkLiBFcnJvciIsICIiLCAiRXN0aW1hdGUiLCAiU3RkLiBFcnJvciIsICIiLCAiRXN0aW1hdGUiLCAiU3RkLiBFcnJvciIsICIiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihodG1sX2ZvbnQgPSAiVGltZXMiLCBmaXhlZF90aGVhZCA9IFQsIGZ1bGxfd2lkdGggPSBGKSAlPiUNCiAgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiA9IDIsICJHZW5kZXIiID0gMywgIkFnZSIgPSAzLCAiSXNjZWQgaW50ZXJtZWRpYXRlIChyZWY9YmFzaWMpIiA9IDMsICJJc2NlZCBhZHZhbmNlZCAocmVmPWJhc2ljKSIgPSAzKSkgJT4lDQogICBmb290bm90ZSgNCiAgICBnZW5lcmFsX3RpdGxlID0gIk5vdGUuIiwNCiAgICBnZW5lcmFsID0gIioqKiA9IHAgPCAwLjAwMSwgKiogPSBwIDwgMC4wMSwgKiA9IHAgPCAwLjA1IiwNCiAgICB0aHJlZXBhcnR0YWJsZSA9IFRSVUUsDQogICAgZm9vdG5vdGVfYXNfY2h1bmsgPSBUUlVFDQogICAgKSAlPiUNCiAgICBzYXZlX2thYmxlKCIuL291dHB1dC9tZXRhX3JlZ3Jlc3Npb25faW5kZXB2YXJfdGFibGVfTk9WRU1CRVIuaHRtbCIpDQoNCmBgYA0KDQoNCg0KDQoNCg0KDQoNCmA=