cat("\014")     # clean terminal

rm(list = ls()) # clean workspace
try(dev.off(), silent = TRUE) # close all plots
library(tidyverse)
library(GGally)
library(afex)
library(emmeans)
my_dodge <- .3
theme_set(theme_minimal())

a_posteriori <- function(afex_aov, sig_level = .05) {
  factors  <- as.list(rownames(afex_aov$anova_table))
  for (j in 1:length(factors)) {
    if (grepl(':', factors[[j]])) {
      factors[[j]] <- unlist(strsplit(factors[[j]], ':'))
    }
  }
  p_values <- afex_aov$anova_table$`Pr(>F)`
  for (i in 1:length(p_values)) {
    if (p_values[i] <= sig_level) {
      cat(rep('_', 60), '\n', sep = '')
      base::print(emmeans(afex_aov, factors[[i]], contr = 'pairwise'))
    }
  }
}
data_dir       <- '~/Insync/OneDrive/00LABWORKS_onedrive/Pernia/Estabilometria_parkinson_alzheimer_y_controles_Antiguo/data/'
emo_data_clean <- read.csv(paste0(data_dir, 'emo_data_clean_30s.csv'), header = TRUE) |> 
  # select(Group:sampen_delta_phi) |>
  filter(Group != 'Parkinson') |> 
  mutate_if(is.character, as.factor) |> 
  mutate(Stimulus       = factor(Stimulus, levels = c('Unpleasant', 'Neutral', 'Pleasant')),
         log10_area     = log10(area),
         log10_axis1    = log10(axis1),
         log10_axis2    = log10(axis2),
         log10_mdist    = log10(mdist),
         log10_rmv      = log10(rmv),
         log10_rmsx     = log10(rmsx),
         log10_rmsy     = log10(rmsy),
         log10_MPFx     = log10(MPFx),
         log10_MPFy     = log10(MPFy),
         log10_PEAKx    = log10(PEAKx),
         log10_PEAKy    = log10(PEAKy),
         log10_F50x     = log10(F50x),
         log10_F50y     = log10(F50y),
         log10_F95x     = log10(F95x),
         log10_F95y     = log10(F95y),
         log10_sampen_x = log10(sampen_x),
         log10_sampen_y = log10(sampen_y),
         log10_rmssd    = log10(rMSSD),
         log10_ave_phasic_eda = log10(ave_phasic_eda))
write.csv(emo_data_clean,  'data_alz_ctr_30s.csv',  row.names = FALSE)

1 General Description

options(width = 100)
summary(emo_data_clean)
       Group     Paradigm        Stimulus   Emotion         ID     
 Alzheimer:135   Old:315   Unpleasant:105   Yes:315   AD_02  :  3  
 Control  :180             Neutral   :105             AD_03  :  3  
                           Pleasant  :105             AD_05  :  3  
                                                      AD_06  :  3  
                                                      AD_08  :  3  
                                                      AD_09  :  3  
                                                      (Other):297  
                                           filename        area             axis1       
 4_CARGA_EMOCIONAL-1._CONDICION_NEUTRA-AD-AD_02:  1   Min.   :  25.08   Min.   : 4.623  
 4_CARGA_EMOCIONAL-1._CONDICION_NEUTRA-AD-AD_03:  1   1st Qu.: 117.02   1st Qu.: 8.893  
 4_CARGA_EMOCIONAL-1._CONDICION_NEUTRA-AD-AD_05:  1   Median : 190.21   Median :11.511  
 4_CARGA_EMOCIONAL-1._CONDICION_NEUTRA-AD-AD_06:  1   Mean   : 266.47   Mean   :12.366  
 4_CARGA_EMOCIONAL-1._CONDICION_NEUTRA-AD-AD_08:  1   3rd Qu.: 331.46   3rd Qu.:14.544  
 4_CARGA_EMOCIONAL-1._CONDICION_NEUTRA-AD-AD_09:  1   Max.   :1837.15   Max.   :31.254  
 (Other)                                       :309   NA's   :4         NA's   :4       
     axis2            angle            mdist             rmv              rmsx        
 Min.   : 1.274   Min.   :-3.125   Min.   : 1.745   Min.   : 5.328   Min.   : 0.6956  
 1st Qu.: 3.838   1st Qu.: 1.380   1st Qu.: 3.678   1st Qu.: 9.680   1st Qu.: 1.6770  
 Median : 5.733   Median : 1.564   Median : 4.492   Median :12.388   Median : 2.4610  
 Mean   : 6.113   Mean   : 1.440   Mean   : 4.855   Mean   :14.149   Mean   : 2.8290  
 3rd Qu.: 7.610   3rd Qu.: 1.689   3rd Qu.: 5.787   3rd Qu.:16.243   3rd Qu.: 3.3661  
 Max.   :19.538   Max.   : 3.141   Max.   :12.610   Max.   :52.891   Max.   :10.9854  
 NA's   :4        NA's   :4        NA's   :4        NA's   :4        NA's   :4        
      rmsy             MPFx               PEAKx                F50x                F95x         
 Min.   : 1.888   Min.   :0.0005555   Min.   :0.0002441   Min.   :0.0004883   Min.   :0.001953  
 1st Qu.: 3.475   1st Qu.:0.0017418   1st Qu.:0.0002441   1st Qu.:0.0007324   1st Qu.:0.005371  
 Median : 4.493   Median :0.0023966   Median :0.0002441   Median :0.0014648   Median :0.006836  
 Mean   : 4.809   Mean   :0.0026206   Mean   :0.0009138   Mean   :0.0018754   Mean   :0.007595  
 3rd Qu.: 5.694   3rd Qu.:0.0032021   3rd Qu.:0.0007324   3rd Qu.:0.0025635   3rd Qu.:0.009033  
 Max.   :12.276   Max.   :0.0082088   Max.   :0.0109863   Max.   :0.0083008   Max.   :0.030029  
 NA's   :4        NA's   :4           NA's   :4           NA's   :4           NA's   :4         
      MPFy               PEAKy                F50y                F95y           forward_mov     
 Min.   :0.0005804   Min.   :0.0002441   Min.   :0.0004883   Min.   :0.001709   Min.   :0.07765  
 1st Qu.:0.0019828   1st Qu.:0.0002441   1st Qu.:0.0012207   1st Qu.:0.006348   1st Qu.:0.44945  
 Median :0.0024855   Median :0.0004883   Median :0.0017090   Median :0.008301   Median :0.49765  
 Mean   :0.0027483   Mean   :0.0008706   Mean   :0.0018157   Mean   :0.008717   Mean   :0.49939  
 3rd Qu.:0.0032883   3rd Qu.:0.0012207   3rd Qu.:0.0021973   3rd Qu.:0.010254   3rd Qu.:0.54883  
 Max.   :0.0082241   Max.   :0.0053711   Max.   :0.0051270   Max.   :0.036621   Max.   :0.76150  
 NA's   :4           NA's   :4           NA's   :4           NA's   :4          NA's   :4        
    sampen_x            sampen_y       sampen_resul_vect sampen_phi_rad   sampen_delta_phi
 Min.   :0.0002597   Min.   :0.01035   Min.   :0.07414   Min.   :0.5713   Min.   :1.017   
 1st Qu.:0.1566272   1st Qu.:0.09490   1st Qu.:1.50654   1st Qu.:0.9634   1st Qu.:1.444   
 Median :0.2942996   Median :0.17092   Median :1.78023   Median :1.0710   Median :1.598   
 Mean   :0.3738033   Mean   :0.19577   Mean   :1.81725   Mean   :1.0764   Mean   :1.606   
 3rd Qu.:0.5082125   3rd Qu.:0.27101   3rd Qu.:2.10425   3rd Qu.:1.1985   3rd Qu.:1.761   
 Max.   :1.4886615   Max.   :0.65212   Max.   :3.63054   Max.   :1.5714   Max.   :2.384   
 NA's   :4           NA's   :4         NA's   :31        NA's   :4        NA's   :4       
   heart_rate         rMSSD         ave_phasic_eda      ave_tonic_eda        num_ID     
 Min.   : 47.88   Min.   :  2.606   Min.   :-0.005402   Min.   :-2.167   Min.   :  1.0  
 1st Qu.: 64.78   1st Qu.:  8.954   1st Qu.: 0.015605   1st Qu.: 2.730   1st Qu.: 23.0  
 Median : 72.71   Median : 14.394   Median : 0.050931   Median : 5.071   Median : 49.0  
 Mean   : 72.58   Mean   : 39.579   Mean   : 0.179517   Mean   : 5.583   Mean   :175.5  
 3rd Qu.: 78.85   3rd Qu.: 28.761   3rd Qu.: 0.206522   3rd Qu.: 6.946   3rd Qu.:342.0  
 Max.   :119.19   Max.   :402.162   Max.   : 3.446827   Max.   :27.694   Max.   :554.0  
 NA's   :97       NA's   :97        NA's   :104         NA's   :104                     
   log10_area     log10_axis1      log10_axis2      log10_mdist       log10_rmv     
 Min.   :1.399   Min.   :0.6649   Min.   :0.1053   Min.   :0.2418   Min.   :0.7266  
 1st Qu.:2.068   1st Qu.:0.9490   1st Qu.:0.5840   1st Qu.:0.5656   1st Qu.:0.9859  
 Median :2.279   Median :1.0611   Median :0.7584   Median :0.6525   Median :1.0930  
 Mean   :2.295   Mean   :1.0640   Mean   :0.7341   Mean   :0.6590   Mean   :1.1146  
 3rd Qu.:2.520   3rd Qu.:1.1627   3rd Qu.:0.8814   3rd Qu.:0.7625   3rd Qu.:1.2107  
 Max.   :3.264   Max.   :1.4949   Max.   :1.2909   Max.   :1.1007   Max.   :1.7234  
 NA's   :4       NA's   :4        NA's   :4        NA's   :4        NA's   :4       
   log10_rmsx        log10_rmsy       log10_MPFx       log10_MPFy      log10_PEAKx    
 Min.   :-0.1576   Min.   :0.2759   Min.   :-3.255   Min.   :-3.236   Min.   :-3.612  
 1st Qu.: 0.2245   1st Qu.:0.5409   1st Qu.:-2.759   1st Qu.:-2.703   1st Qu.:-3.612  
 Median : 0.3911   Median :0.6525   Median :-2.620   Median :-2.605   Median :-3.612  
 Mean   : 0.3895   Mean   :0.6552   Mean   :-2.630   Mean   :-2.598   Mean   :-3.320  
 3rd Qu.: 0.5271   3rd Qu.:0.7554   3rd Qu.:-2.495   3rd Qu.:-2.483   3rd Qu.:-3.135  
 Max.   : 1.0408   Max.   :1.0890   Max.   :-2.086   Max.   :-2.085   Max.   :-1.959  
 NA's   :4         NA's   :4        NA's   :4        NA's   :4        NA's   :4       
  log10_PEAKy       log10_F50x       log10_F50y       log10_F95x       log10_F95y    
 Min.   :-3.612   Min.   :-3.311   Min.   :-3.311   Min.   :-2.709   Min.   :-2.767  
 1st Qu.:-3.612   1st Qu.:-3.135   1st Qu.:-2.913   1st Qu.:-2.270   1st Qu.:-2.197  
 Median :-3.311   Median :-2.834   Median :-2.767   Median :-2.165   Median :-2.081  
 Mean   :-3.239   Mean   :-2.852   Mean   :-2.800   Mean   :-2.159   Mean   :-2.097  
 3rd Qu.:-2.913   3rd Qu.:-2.592   3rd Qu.:-2.658   3rd Qu.:-2.044   3rd Qu.:-1.989  
 Max.   :-2.270   Max.   :-2.081   Max.   :-2.290   Max.   :-1.522   Max.   :-1.436  
 NA's   :4        NA's   :4        NA's   :4        NA's   :4        NA's   :4       
 log10_sampen_x    log10_sampen_y     log10_rmssd    log10_ave_phasic_eda
 Min.   :-3.5856   Min.   :-1.9852   Min.   :0.416   Min.   :-3.4024     
 1st Qu.:-0.8051   1st Qu.:-1.0228   1st Qu.:0.952   1st Qu.:-1.7072     
 Median :-0.5312   Median :-0.7672   Median :1.158   Median :-1.2592     
 Mean   :-0.6003   Mean   :-0.8110   Mean   :1.262   Mean   :-1.2759     
 3rd Qu.:-0.2940   3rd Qu.:-0.5670   3rd Qu.:1.459   3rd Qu.:-0.6654     
 Max.   : 0.1728   Max.   :-0.1857   Max.   :2.604   Max.   : 0.5374     
 NA's   :4         NA's   :4         NA's   :97      NA's   :114         

1.1 Time-distance parameters

options(width = 100)
time_distance <- c('log10_area', 'log10_axis1', 'log10_axis2', 'log10_mdist', 'log10_rmv', 'log10_rmsx', 'log10_rmsy')
time_distance_pairs <- ggpairs(emo_data_clean,
                       columns = time_distance,
                       aes(colour = Group, alpha = .25),
                       progress = FALSE,
                       lower = list(continuous = wrap("points")))
suppressWarnings(base::print(time_distance_pairs))

summary(emo_data_clean[time_distance])
   log10_area     log10_axis1      log10_axis2      log10_mdist       log10_rmv     
 Min.   :1.399   Min.   :0.6649   Min.   :0.1053   Min.   :0.2418   Min.   :0.7266  
 1st Qu.:2.068   1st Qu.:0.9490   1st Qu.:0.5840   1st Qu.:0.5656   1st Qu.:0.9859  
 Median :2.279   Median :1.0611   Median :0.7584   Median :0.6525   Median :1.0930  
 Mean   :2.295   Mean   :1.0640   Mean   :0.7341   Mean   :0.6590   Mean   :1.1146  
 3rd Qu.:2.520   3rd Qu.:1.1627   3rd Qu.:0.8814   3rd Qu.:0.7625   3rd Qu.:1.2107  
 Max.   :3.264   Max.   :1.4949   Max.   :1.2909   Max.   :1.1007   Max.   :1.7234  
 NA's   :4       NA's   :4        NA's   :4        NA's   :4        NA's   :4       
   log10_rmsx        log10_rmsy    
 Min.   :-0.1576   Min.   :0.2759  
 1st Qu.: 0.2245   1st Qu.:0.5409  
 Median : 0.3911   Median :0.6525  
 Mean   : 0.3895   Mean   :0.6552  
 3rd Qu.: 0.5271   3rd Qu.:0.7554  
 Max.   : 1.0408   Max.   :1.0890  
 NA's   :4         NA's   :4       

1.2 Frequency parameters

options(width = 100)
frequency <- c('log10_MPFx', 'log10_MPFy', 'log10_F50x', 'log10_F50y', 'log10_F95x', 'log10_F95y')
frequency_pairs <- ggpairs(emo_data_clean,
                       columns = frequency,
                       aes(colour = Group, alpha = .25),
                       progress = FALSE,
                       lower = list(continuous = wrap("points")))
suppressWarnings(base::print(frequency_pairs))

summary(emo_data_clean[frequency])
   log10_MPFx       log10_MPFy       log10_F50x       log10_F50y       log10_F95x    
 Min.   :-3.255   Min.   :-3.236   Min.   :-3.311   Min.   :-3.311   Min.   :-2.709  
 1st Qu.:-2.759   1st Qu.:-2.703   1st Qu.:-3.135   1st Qu.:-2.913   1st Qu.:-2.270  
 Median :-2.620   Median :-2.605   Median :-2.834   Median :-2.767   Median :-2.165  
 Mean   :-2.630   Mean   :-2.598   Mean   :-2.852   Mean   :-2.800   Mean   :-2.159  
 3rd Qu.:-2.495   3rd Qu.:-2.483   3rd Qu.:-2.592   3rd Qu.:-2.658   3rd Qu.:-2.044  
 Max.   :-2.086   Max.   :-2.085   Max.   :-2.081   Max.   :-2.290   Max.   :-1.522  
 NA's   :4        NA's   :4        NA's   :4        NA's   :4        NA's   :4       
   log10_F95y    
 Min.   :-2.767  
 1st Qu.:-2.197  
 Median :-2.081  
 Mean   :-2.097  
 3rd Qu.:-1.989  
 Max.   :-1.436  
 NA's   :4       

1.3 Entropy

options(width = 100)
entropy <- c('forward_mov', 'log10_sampen_x', 'log10_sampen_y', 'sampen_resul_vect', 'sampen_phi_rad', 'sampen_delta_phi')
entropy_pairs <- ggpairs(emo_data_clean,
                       columns = entropy,
                       aes(colour = Group, alpha = .25),
                       progress = FALSE,
                       lower = list(continuous = wrap("points")))
suppressWarnings(base::print(entropy_pairs))

summary(emo_data_clean[entropy])
  forward_mov      log10_sampen_x    log10_sampen_y    sampen_resul_vect sampen_phi_rad  
 Min.   :0.07765   Min.   :-3.5856   Min.   :-1.9852   Min.   :0.07414   Min.   :0.5713  
 1st Qu.:0.44945   1st Qu.:-0.8051   1st Qu.:-1.0228   1st Qu.:1.50654   1st Qu.:0.9634  
 Median :0.49765   Median :-0.5312   Median :-0.7672   Median :1.78023   Median :1.0710  
 Mean   :0.49939   Mean   :-0.6003   Mean   :-0.8110   Mean   :1.81725   Mean   :1.0764  
 3rd Qu.:0.54883   3rd Qu.:-0.2940   3rd Qu.:-0.5670   3rd Qu.:2.10425   3rd Qu.:1.1985  
 Max.   :0.76150   Max.   : 0.1728   Max.   :-0.1857   Max.   :3.63054   Max.   :1.5714  
 NA's   :4         NA's   :4         NA's   :4         NA's   :31        NA's   :4       
 sampen_delta_phi
 Min.   :1.017   
 1st Qu.:1.444   
 Median :1.598   
 Mean   :1.606   
 3rd Qu.:1.761   
 Max.   :2.384   
 NA's   :4       

2 Classic Center of Pressure

2.1 Area (log10)

options(width = 100)
area_rep_anova = aov_ez("ID", "log10_area", emo_data_clean, within = c("Stimulus"), between = c("Group"))
area_afex_plot <-
  afex_plot(
    area_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(area_afex_plot))

base::print(area_rep_anova)
Anova Table (Type 3 tests)

Response: log10_area
          Effect           df  MSE         F  ges p.value
1          Group       1, 101 0.25  10.19 ** .077    .002
2       Stimulus 1.77, 178.81 0.03 13.49 *** .023   <.001
3 Group:Stimulus 1.77, 178.81 0.03    4.64 * .008    .014
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(area_rep_anova)
____________________________________________________________
$emmeans
 Group     emmean     SE  df lower.CL upper.CL
 Alzheimer   2.40 0.0429 101     2.32     2.49
 Control     2.22 0.0378 101     2.14     2.29

Results are averaged over the levels of: Stimulus 
Confidence level used: 0.95 

$contrasts
 contrast            estimate     SE  df t.ratio p.value
 Alzheimer - Control    0.183 0.0572 101   3.192  0.0019

Results are averaged over the levels of: Stimulus 

____________________________________________________________
$emmeans
 Stimulus   emmean     SE  df lower.CL upper.CL
 Unpleasant   2.33 0.0306 101     2.27     2.39
 Neutral      2.24 0.0315 101     2.18     2.30
 Pleasant     2.36 0.0324 101     2.29     2.42

Results are averaged over the levels of: Group 
Confidence level used: 0.95 

$contrasts
 contrast              estimate     SE  df t.ratio p.value
 Unpleasant - Neutral     0.086 0.0248 101   3.465  0.0022
 Unpleasant - Pleasant   -0.029 0.0184 101  -1.576  0.2606
 Neutral - Pleasant      -0.115 0.0252 101  -4.562  <.0001

Results are averaged over the levels of: Group 
P value adjustment: tukey method for comparing a family of 3 estimates 

____________________________________________________________
$emmeans
 Group     Stimulus   emmean     SE  df lower.CL upper.CL
 Alzheimer Unpleasant   2.39 0.0460 101     2.30     2.48
 Control   Unpleasant   2.27 0.0405 101     2.19     2.35
 Alzheimer Neutral      2.37 0.0473 101     2.28     2.46
 Control   Neutral      2.11 0.0417 101     2.03     2.20
 Alzheimer Pleasant     2.44 0.0487 101     2.35     2.54
 Control   Pleasant     2.27 0.0429 101     2.19     2.36

Confidence level used: 0.95 

$contrasts
 contrast                                  estimate     SE  df t.ratio p.value
 Alzheimer Unpleasant - Control Unpleasant  0.11834 0.0613 101   1.932  0.3891
 Alzheimer Unpleasant - Alzheimer Neutral   0.01641 0.0372 101   0.441  0.9978
 Alzheimer Unpleasant - Control Neutral     0.27384 0.0620 101   4.414  0.0004
 Alzheimer Unpleasant - Alzheimer Pleasant -0.05588 0.0277 101  -2.020  0.3383
 Alzheimer Unpleasant - Control Pleasant    0.11612 0.0629 101   1.847  0.4409
 Control Unpleasant - Alzheimer Neutral    -0.10192 0.0623 101  -1.637  0.5764
 Control Unpleasant - Control Neutral       0.15551 0.0328 101   4.741  0.0001
 Control Unpleasant - Alzheimer Pleasant   -0.17421 0.0633 101  -2.751  0.0742
 Control Unpleasant - Control Pleasant     -0.00222 0.0244 101  -0.091  1.0000
 Alzheimer Neutral - Control Neutral        0.25743 0.0630 101   4.084  0.0012
 Alzheimer Neutral - Alzheimer Pleasant    -0.07229 0.0378 101  -1.911  0.4018
 Alzheimer Neutral - Control Pleasant       0.09970 0.0639 101   1.561  0.6256
 Control Neutral - Alzheimer Pleasant      -0.32972 0.0641 101  -5.145  <.0001
 Control Neutral - Control Pleasant        -0.15773 0.0333 101  -4.733  0.0001
 Alzheimer Pleasant - Control Pleasant      0.17199 0.0649 101   2.650  0.0948

P value adjustment: tukey method for comparing a family of 6 estimates 

2.2 Ellipse Major Axis (log10)

options(width = 100)
log10_axis1_rep_anova = aov_ez("ID", "log10_axis1", emo_data_clean, within = c("Stimulus"), between = c("Group"))
log10_axis1_afex_plot <-
  afex_plot(
    log10_axis1_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(log10_axis1_afex_plot))

base::print(log10_axis1_rep_anova)
Anova Table (Type 3 tests)

Response: log10_axis1
          Effect           df  MSE         F  ges p.value
1          Group       1, 101 0.05  11.48 ** .077    .001
2       Stimulus 1.96, 198.09 0.01 21.96 *** .054   <.001
3 Group:Stimulus 1.96, 198.09 0.01      0.56 .001    .571
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(log10_axis1_rep_anova)
____________________________________________________________
$emmeans
 Group     emmean     SE  df lower.CL upper.CL
 Alzheimer   1.11 0.0187 101    1.075     1.15
 Control     1.03 0.0164 101    0.995     1.06

Results are averaged over the levels of: Stimulus 
Confidence level used: 0.95 

$contrasts
 contrast            estimate     SE  df t.ratio p.value
 Alzheimer - Control   0.0843 0.0249 101   3.388  0.0010

Results are averaged over the levels of: Stimulus 

____________________________________________________________
$emmeans
 Stimulus   emmean     SE  df lower.CL upper.CL
 Unpleasant   1.08 0.0145 101    1.055     1.11
 Neutral      1.02 0.0140 101    0.995     1.05
 Pleasant     1.10 0.0150 101    1.075     1.13

Results are averaged over the levels of: Group 
Confidence level used: 0.95 

$contrasts
 contrast              estimate     SE  df t.ratio p.value
 Unpleasant - Neutral    0.0609 0.0129 101   4.742  <.0001
 Unpleasant - Pleasant  -0.0214 0.0121 101  -1.766  0.1862
 Neutral - Pleasant     -0.0823 0.0137 101  -6.022  <.0001

Results are averaged over the levels of: Group 
P value adjustment: tukey method for comparing a family of 3 estimates 

2.3 Ellipse Minor Axis (log10)

options(width = 100)
log10_axis2_rep_anova = aov_ez("ID", "log10_axis2", emo_data_clean, within = c("Stimulus"), between = c("Group"))
log10_axis2_afex_plot <-
  afex_plot(
    log10_axis2_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(log10_axis2_afex_plot))

base::print(log10_axis2_rep_anova)
Anova Table (Type 3 tests)

Response: log10_axis2
          Effect           df  MSE       F  ges p.value
1          Group       1, 101 0.10 7.27 ** .052    .008
2       Stimulus 1.82, 183.71 0.02    1.95 .004    .149
3 Group:Stimulus 1.82, 183.71 0.02 5.35 ** .012    .007
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(log10_axis2_rep_anova)
____________________________________________________________
$emmeans
 Group     emmean     SE  df lower.CL upper.CL
 Alzheimer  0.791 0.0273 101    0.737    0.845
 Control    0.693 0.0241 101    0.645    0.740

Results are averaged over the levels of: Stimulus 
Confidence level used: 0.95 

$contrasts
 contrast            estimate     SE  df t.ratio p.value
 Alzheimer - Control   0.0983 0.0364 101   2.697  0.0082

Results are averaged over the levels of: Stimulus 

____________________________________________________________
$emmeans
 Group     Stimulus   emmean     SE  df lower.CL upper.CL
 Alzheimer Unpleasant  0.771 0.0303 101    0.711    0.831
 Control   Unpleasant  0.724 0.0267 101    0.671    0.777
 Alzheimer Neutral     0.802 0.0312 101    0.740    0.864
 Control   Neutral     0.643 0.0275 101    0.589    0.698
 Alzheimer Pleasant    0.800 0.0320 101    0.736    0.863
 Control   Pleasant    0.711 0.0282 101    0.655    0.767

Confidence level used: 0.95 

$contrasts
 contrast                                  estimate     SE  df t.ratio p.value
 Alzheimer Unpleasant - Control Unpleasant  0.04682 0.0404 101   1.160  0.8544
 Alzheimer Unpleasant - Alzheimer Neutral  -0.03101 0.0273 101  -1.137  0.8646
 Alzheimer Unpleasant - Control Neutral     0.12786 0.0409 101   3.126  0.0272
 Alzheimer Unpleasant - Alzheimer Pleasant -0.02883 0.0216 101  -1.337  0.7636
 Alzheimer Unpleasant - Control Pleasant    0.06030 0.0414 101   1.457  0.6920
 Control Unpleasant - Alzheimer Neutral    -0.07782 0.0411 101  -1.896  0.4108
 Control Unpleasant - Control Neutral       0.08104 0.0240 101   3.375  0.0131
 Control Unpleasant - Alzheimer Pleasant   -0.07565 0.0417 101  -1.815  0.4608
 Control Unpleasant - Control Pleasant      0.01348 0.0190 101   0.710  0.9803
 Alzheimer Neutral - Control Neutral        0.15886 0.0416 101   3.820  0.0031
 Alzheimer Neutral - Alzheimer Pleasant     0.00217 0.0285 101   0.076  1.0000
 Alzheimer Neutral - Control Pleasant       0.09131 0.0421 101   2.171  0.2607
 Control Neutral - Alzheimer Pleasant      -0.15669 0.0422 101  -3.713  0.0044
 Control Neutral - Control Pleasant        -0.06755 0.0251 101  -2.690  0.0861
 Alzheimer Pleasant - Control Pleasant      0.08914 0.0427 101   2.089  0.3016

P value adjustment: tukey method for comparing a family of 6 estimates 

2.4 Mean Distance (log10)

options(width = 100)
mdist_rep_anova = aov_ez("ID", "log10_mdist", emo_data_clean, within = c("Stimulus"), between = c("Group"))
mdist_afex_plot <-
  afex_plot(
    mdist_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(mdist_afex_plot))

base::print(mdist_rep_anova)
Anova Table (Type 3 tests)

Response: log10_mdist
          Effect           df  MSE         F  ges p.value
1          Group       1, 101 0.05 11.90 *** .086   <.001
2       Stimulus 1.95, 197.32 0.01 23.42 *** .045   <.001
3 Group:Stimulus 1.95, 197.32 0.01      2.27 .005    .108
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(mdist_rep_anova)
____________________________________________________________
$emmeans
 Group     emmean     SE  df lower.CL upper.CL
 Alzheimer  0.709 0.0191 101    0.672    0.747
 Control    0.622 0.0168 101    0.588    0.655

Results are averaged over the levels of: Stimulus 
Confidence level used: 0.95 

$contrasts
 contrast            estimate     SE  df t.ratio p.value
 Alzheimer - Control   0.0878 0.0254 101   3.450  0.0008

Results are averaged over the levels of: Stimulus 

____________________________________________________________
$emmeans
 Stimulus   emmean     SE  df lower.CL upper.CL
 Unpleasant  0.678 0.0142 101    0.650    0.706
 Neutral     0.623 0.0137 101    0.595    0.650
 Pleasant    0.696 0.0149 101    0.667    0.726

Results are averaged over the levels of: Group 
Confidence level used: 0.95 

$contrasts
 contrast              estimate     SE  df t.ratio p.value
 Unpleasant - Neutral    0.0555 0.0111 101   5.022  <.0001
 Unpleasant - Pleasant  -0.0181 0.0105 101  -1.717  0.2039
 Neutral - Pleasant     -0.0736 0.0120 101  -6.138  <.0001

Results are averaged over the levels of: Group 
P value adjustment: tukey method for comparing a family of 3 estimates 

2.5 Root Mean Velocity (log10)

options(width = 100)
rmv_rep_anova = aov_ez("ID", "log10_rmv", emo_data_clean, within = c("Stimulus"), between = c("Group"))
rmv_afex_plot <-
  afex_plot(
    rmv_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(rmv_afex_plot))

base::print(rmv_rep_anova)
Anova Table (Type 3 tests)

Response: log10_rmv
          Effect           df  MSE         F  ges p.value
1          Group       1, 101 0.07      2.03 .017    .157
2       Stimulus 1.91, 193.09 0.01 41.35 *** .052   <.001
3 Group:Stimulus 1.91, 193.09 0.01    3.45 * .005    .036
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(rmv_rep_anova)
____________________________________________________________
$emmeans
 Stimulus   emmean     SE  df lower.CL upper.CL
 Unpleasant   1.13 0.0167 101     1.10     1.17
 Neutral      1.07 0.0150 101     1.04     1.10
 Pleasant     1.16 0.0169 101     1.12     1.19

Results are averaged over the levels of: Group 
Confidence level used: 0.95 

$contrasts
 contrast              estimate      SE  df t.ratio p.value
 Unpleasant - Neutral    0.0673 0.01060 101   6.333  <.0001
 Unpleasant - Pleasant  -0.0231 0.00918 101  -2.512  0.0360
 Neutral - Pleasant     -0.0903 0.01110 101  -8.163  <.0001

Results are averaged over the levels of: Group 
P value adjustment: tukey method for comparing a family of 3 estimates 

____________________________________________________________
$emmeans
 Group     Stimulus   emmean     SE  df lower.CL upper.CL
 Alzheimer Unpleasant   1.15 0.0250 101     1.10     1.20
 Control   Unpleasant   1.12 0.0220 101     1.08     1.16
 Alzheimer Neutral      1.10 0.0225 101     1.06     1.15
 Control   Neutral      1.03 0.0198 101     0.99     1.07
 Alzheimer Pleasant     1.17 0.0254 101     1.12     1.22
 Control   Pleasant     1.14 0.0223 101     1.10     1.19

Confidence level used: 0.95 

$contrasts
 contrast                                  estimate     SE  df t.ratio p.value
 Alzheimer Unpleasant - Control Unpleasant  0.02852 0.0333 101   0.856  0.9559
 Alzheimer Unpleasant - Alzheimer Neutral   0.04440 0.0159 101   2.785  0.0681
 Alzheimer Unpleasant - Control Neutral     0.11864 0.0319 101   3.718  0.0043
 Alzheimer Unpleasant - Alzheimer Pleasant -0.02187 0.0138 101  -1.587  0.6091
 Alzheimer Unpleasant - Control Pleasant    0.00426 0.0335 101   0.127  1.0000
 Control Unpleasant - Alzheimer Neutral     0.01588 0.0315 101   0.504  0.9959
 Control Unpleasant - Control Neutral       0.09012 0.0140 101   6.419  <.0001
 Control Unpleasant - Alzheimer Pleasant   -0.05038 0.0336 101  -1.500  0.6649
 Control Unpleasant - Control Pleasant     -0.02425 0.0121 101  -1.998  0.3507
 Alzheimer Neutral - Control Neutral        0.07424 0.0300 101   2.475  0.1414
 Alzheimer Neutral - Alzheimer Pleasant    -0.06626 0.0166 101  -3.991  0.0017
 Alzheimer Neutral - Control Pleasant      -0.04013 0.0317 101  -1.266  0.8028
 Control Neutral - Alzheimer Pleasant      -0.14050 0.0322 101  -4.365  0.0004
 Control Neutral - Control Pleasant        -0.11437 0.0146 101  -7.820  <.0001
 Alzheimer Pleasant - Control Pleasant      0.02613 0.0338 101   0.773  0.9714

P value adjustment: tukey method for comparing a family of 6 estimates 

2.6 Root Mean Square X (log10)

options(width = 100)
rmsx_rep_anova = aov_ez("ID", "log10_rmsx", emo_data_clean, within = c("Stimulus"), between = c("Group"))
rmsx_afex_plot <-
  afex_plot(
    rmsx_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(rmsx_afex_plot))

base::print(rmsx_rep_anova)
Anova Table (Type 3 tests)

Response: log10_rmsx
          Effect           df  MSE       F   ges p.value
1          Group       1, 101 0.11 8.74 **  .061    .004
2       Stimulus 1.82, 183.47 0.02    0.15 <.001    .839
3 Group:Stimulus 1.82, 183.47 0.02  3.75 *  .009    .029
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(rmsx_rep_anova)
____________________________________________________________
$emmeans
 Group     emmean     SE  df lower.CL upper.CL
 Alzheimer  0.455 0.0288 101    0.398    0.512
 Control    0.342 0.0254 101    0.291    0.392

Results are averaged over the levels of: Stimulus 
Confidence level used: 0.95 

$contrasts
 contrast            estimate     SE  df t.ratio p.value
 Alzheimer - Control    0.114 0.0384 101   2.956  0.0039

Results are averaged over the levels of: Stimulus 

____________________________________________________________
$emmeans
 Group     Stimulus   emmean     SE  df lower.CL upper.CL
 Alzheimer Unpleasant  0.436 0.0323 101    0.371    0.500
 Control   Unpleasant  0.363 0.0285 101    0.307    0.420
 Alzheimer Neutral     0.479 0.0350 101    0.410    0.549
 Control   Neutral     0.306 0.0309 101    0.245    0.367
 Alzheimer Pleasant    0.451 0.0326 101    0.386    0.516
 Control   Pleasant    0.355 0.0287 101    0.299    0.412

Confidence level used: 0.95 

$contrasts
 contrast                                  estimate     SE  df t.ratio p.value
 Alzheimer Unpleasant - Control Unpleasant  0.07226 0.0431 101   1.678  0.5497
 Alzheimer Unpleasant - Alzheimer Neutral  -0.04364 0.0301 101  -1.452  0.6951
 Alzheimer Unpleasant - Control Neutral     0.12942 0.0447 101   2.896  0.0512
 Alzheimer Unpleasant - Alzheimer Pleasant -0.01540 0.0241 101  -0.639  0.9877
 Alzheimer Unpleasant - Control Pleasant    0.08014 0.0432 101   1.855  0.4361
 Control Unpleasant - Alzheimer Neutral    -0.11590 0.0451 101  -2.567  0.1150
 Control Unpleasant - Control Neutral       0.05716 0.0265 101   2.159  0.2662
 Control Unpleasant - Alzheimer Pleasant   -0.08766 0.0433 101  -2.027  0.3348
 Control Unpleasant - Control Pleasant      0.00788 0.0212 101   0.371  0.9991
 Alzheimer Neutral - Control Neutral        0.17306 0.0467 101   3.707  0.0045
 Alzheimer Neutral - Alzheimer Pleasant     0.02824 0.0320 101   0.881  0.9502
 Alzheimer Neutral - Control Pleasant       0.12379 0.0453 101   2.734  0.0774
 Control Neutral - Alzheimer Pleasant      -0.14482 0.0449 101  -3.228  0.0203
 Control Neutral - Control Pleasant        -0.04927 0.0282 101  -1.746  0.5054
 Alzheimer Pleasant - Control Pleasant      0.09555 0.0434 101   2.202  0.2461

P value adjustment: tukey method for comparing a family of 6 estimates 

2.7 Root Mean Square Y (log10)

options(width = 100)
rmsy_rep_anova = aov_ez("ID", "log10_rmsy", emo_data_clean, within = c("Stimulus"), between = c("Group"))
rmsy_afex_plot <-
  afex_plot(
    rmsy_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(rmsy_afex_plot))

base::print(rmsy_rep_anova)
Anova Table (Type 3 tests)

Response: log10_rmsy
          Effect           df  MSE         F   ges p.value
1          Group       1, 101 0.05   7.87 **  .055    .006
2       Stimulus 1.98, 199.86 0.01 38.05 ***  .086   <.001
3 Group:Stimulus 1.98, 199.86 0.01      0.39 <.001    .675
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(rmsy_rep_anova)
____________________________________________________________
$emmeans
 Group     emmean     SE  df lower.CL upper.CL
 Alzheimer  0.694 0.0183 101    0.658    0.731
 Control    0.626 0.0161 101    0.594    0.658

Results are averaged over the levels of: Stimulus 
Confidence level used: 0.95 

$contrasts
 contrast            estimate     SE  df t.ratio p.value
 Alzheimer - Control   0.0683 0.0243 101   2.806  0.0060

Results are averaged over the levels of: Stimulus 

____________________________________________________________
$emmeans
 Stimulus   emmean     SE  df lower.CL upper.CL
 Unpleasant  0.677 0.0145 101    0.649    0.706
 Neutral     0.601 0.0126 101    0.576    0.626
 Pleasant    0.703 0.0149 101    0.673    0.733

Results are averaged over the levels of: Group 
Confidence level used: 0.95 

$contrasts
 contrast              estimate     SE  df t.ratio p.value
 Unpleasant - Neutral    0.0765 0.0117 101   6.508  <.0001
 Unpleasant - Pleasant  -0.0256 0.0120 101  -2.140  0.0870
 Neutral - Pleasant     -0.1021 0.0128 101  -7.990  <.0001

Results are averaged over the levels of: Group 
P value adjustment: tukey method for comparing a family of 3 estimates 

2.8 Mean Power Frequency X (log10)

options(width = 100)
MPFx_rep_anova = aov_ez("ID", "log10_MPFx", emo_data_clean, within = c("Stimulus"), between = c("Group"))
MPFx_afex_plot <-
  afex_plot(
    MPFx_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(MPFx_afex_plot))

base::print(MPFx_rep_anova)
Anova Table (Type 3 tests)

Response: log10_MPFx
          Effect           df  MSE    F  ges p.value
1          Group       1, 101 0.08 1.38 .008    .242
2       Stimulus 1.95, 196.95 0.03 0.98 .004    .377
3 Group:Stimulus 1.95, 196.95 0.03 0.46 .002    .624
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(MPFx_rep_anova)

2.9 Mean Power Frequency Y (log10)

options(width = 100)
MPFy_rep_anova = aov_ez("ID", "log10_MPFy", emo_data_clean, within = c("Stimulus"), between = c("Group"))
MPFy_afex_plot <-
  afex_plot(
    MPFy_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(MPFy_afex_plot))

base::print(MPFy_rep_anova)
Anova Table (Type 3 tests)

Response: log10_MPFy
          Effect           df  MSE      F  ges p.value
1          Group       1, 101 0.07 3.82 + .025    .053
2       Stimulus 1.88, 189.91 0.02 3.53 * .011    .034
3 Group:Stimulus 1.88, 189.91 0.02   1.94 .006    .149
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(MPFy_rep_anova)
____________________________________________________________
$emmeans
 Stimulus   emmean     SE  df lower.CL upper.CL
 Unpleasant  -2.60 0.0164 101    -2.63    -2.57
 Neutral     -2.62 0.0181 101    -2.66    -2.59
 Pleasant    -2.58 0.0183 101    -2.61    -2.54

Results are averaged over the levels of: Group 
Confidence level used: 0.95 

$contrasts
 contrast              estimate     SE  df t.ratio p.value
 Unpleasant - Neutral    0.0255 0.0163 101   1.567  0.2645
 Unpleasant - Pleasant  -0.0196 0.0156 101  -1.259  0.4219
 Neutral - Pleasant     -0.0451 0.0190 101  -2.372  0.0508

Results are averaged over the levels of: Group 
P value adjustment: tukey method for comparing a family of 3 estimates 

2.10 Forward Movement

options(width = 100)
forward_mov_rep_anova = aov_ez("ID", "forward_mov", emo_data_clean, within = c("Stimulus"), between = c("Group"))
forward_mov_afex_plot <-
  afex_plot(
    forward_mov_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(forward_mov_afex_plot))

base::print(forward_mov_rep_anova)
Anova Table (Type 3 tests)

Response: forward_mov
          Effect           df  MSE    F  ges p.value
1          Group       1, 101 0.01 0.32 .001    .575
2       Stimulus 1.91, 192.56 0.01 0.17 .001    .830
3 Group:Stimulus 1.91, 192.56 0.01 0.71 .005    .488
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(forward_mov_rep_anova)

3 Entropy and Center of Pressure

3.1 Sample Entropy X (log10)

options(width = 100)
log10_sampen_x_rep_anova = aov_ez("ID", "log10_sampen_x", emo_data_clean, within = c("Stimulus"), between = c("Group"))
log10_sampen_x_afex_plot <-
  afex_plot(
    log10_sampen_x_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(log10_sampen_x_afex_plot))

base::print(log10_sampen_x_rep_anova)
Anova Table (Type 3 tests)

Response: log10_sampen_x
          Effect           df  MSE       F  ges p.value
1          Group       1, 101 0.38 7.68 ** .044    .007
2       Stimulus 1.79, 181.04 0.14    0.59 .002    .536
3 Group:Stimulus 1.79, 181.04 0.14    1.23 .005    .292
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(log10_sampen_x_rep_anova)
____________________________________________________________
$emmeans
 Group     emmean     SE  df lower.CL upper.CL
 Alzheimer -0.712 0.0529 101   -0.817   -0.607
 Control   -0.517 0.0466 101   -0.609   -0.424

Results are averaged over the levels of: Stimulus 
Confidence level used: 0.95 

$contrasts
 contrast            estimate     SE  df t.ratio p.value
 Alzheimer - Control   -0.195 0.0705 101  -2.771  0.0067

Results are averaged over the levels of: Stimulus 

3.2 Sample Entropy Y (log10)

options(width = 100)
log10_sampen_y_rep_anova = aov_ez("ID", "log10_sampen_y", emo_data_clean, within = c("Stimulus"), between = c("Group"))
log10_sampen_y_afex_plot <-
  afex_plot(
    log10_sampen_y_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(log10_sampen_y_afex_plot))

base::print(log10_sampen_y_rep_anova)
Anova Table (Type 3 tests)

Response: log10_sampen_y
          Effect           df  MSE         F  ges p.value
1          Group       1, 101 0.19   9.85 ** .061    .002
2       Stimulus 1.99, 200.81 0.05 10.19 *** .032   <.001
3 Group:Stimulus 1.99, 200.81 0.05      0.48 .002    .618
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(log10_sampen_y_rep_anova)
____________________________________________________________
$emmeans
 Group     emmean     SE  df lower.CL upper.CL
 Alzheimer -0.900 0.0379 101   -0.976   -0.825
 Control   -0.742 0.0334 101   -0.808   -0.675

Results are averaged over the levels of: Stimulus 
Confidence level used: 0.95 

$contrasts
 contrast            estimate     SE  df t.ratio p.value
 Alzheimer - Control   -0.159 0.0506 101  -3.138  0.0022

Results are averaged over the levels of: Stimulus 

____________________________________________________________
$emmeans
 Stimulus   emmean     SE  df lower.CL upper.CL
 Unpleasant -0.844 0.0310 101   -0.906   -0.783
 Neutral    -0.742 0.0289 101   -0.800   -0.685
 Pleasant   -0.876 0.0328 101   -0.941   -0.811

Results are averaged over the levels of: Group 
Confidence level used: 0.95 

$contrasts
 contrast              estimate     SE  df t.ratio p.value
 Unpleasant - Neutral   -0.1017 0.0302 101  -3.366  0.0031
 Unpleasant - Pleasant   0.0318 0.0304 101   1.047  0.5493
 Neutral - Pleasant      0.1335 0.0321 101   4.164  0.0002

Results are averaged over the levels of: Group 
P value adjustment: tukey method for comparing a family of 3 estimates 

3.3 Angle Sample Entropy

options(width = 100)
sampen_phi_rad_rep_anova = aov_ez("ID", "sampen_phi_rad", emo_data_clean, within = c("Stimulus"), between = c("Group"))
sampen_phi_rad_afex_plot <-
  afex_plot(
    sampen_phi_rad_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(sampen_phi_rad_afex_plot))

base::print(sampen_phi_rad_rep_anova)
Anova Table (Type 3 tests)

Response: sampen_phi_rad
          Effect           df  MSE    F  ges p.value
1          Group       1, 101 0.06 0.26 .002    .613
2       Stimulus 1.96, 197.56 0.01 0.68 .002    .504
3 Group:Stimulus 1.96, 197.56 0.01 2.28 .006    .106
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(sampen_phi_rad_rep_anova)

3.4 Resultant Vector Sample Entropy

options(width = 100)
sampen_resul_vect_rep_anova = aov_ez("ID", "sampen_resul_vect", emo_data_clean, within = c("Stimulus"), between = c("Group"))
sampen_resul_vect_afex_plot <-
  afex_plot(
    sampen_resul_vect_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(sampen_resul_vect_afex_plot))

base::print(sampen_resul_vect_rep_anova)
Anova Table (Type 3 tests)

Response: sampen_resul_vect
          Effect           df  MSE    F  ges p.value
1          Group        1, 79 0.41 2.57 .015    .113
2       Stimulus 1.74, 137.38 0.28 1.45 .010    .239
3 Group:Stimulus 1.74, 137.38 0.28 0.85 .006    .415
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(sampen_resul_vect_rep_anova)

3.5 Angle Change Sample Entropy

options(width = 100)
sampen_delta_phi_rep_anova = aov_ez("ID", "sampen_delta_phi", emo_data_clean, within = c("Stimulus"), between = c("Group"))
sampen_delta_phi_afex_plot <-
  afex_plot(
    sampen_delta_phi_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(sampen_delta_phi_afex_plot))

base::print(sampen_delta_phi_rep_anova)
Anova Table (Type 3 tests)

Response: sampen_delta_phi
          Effect           df  MSE      F   ges p.value
1          Group       1, 101 0.10   0.00 <.001    .987
2       Stimulus 1.99, 200.68 0.04 2.46 +  .011    .088
3 Group:Stimulus 1.99, 200.68 0.04   0.94  .004    .394
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(sampen_delta_phi_rep_anova)

4 Heart Activity

4.1 Heart Rate

options(width = 100)
heart_rate_rep_anova = aov_ez("ID", "heart_rate", emo_data_clean, within = c("Stimulus"), between = c("Group"))
heart_rate_afex_plot <-
  afex_plot(
    heart_rate_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(heart_rate_afex_plot))

base::print(heart_rate_rep_anova)
Anova Table (Type 3 tests)

Response: heart_rate
          Effect          df    MSE    F  ges p.value
1          Group       1, 67 411.66 0.44 .006    .510
2       Stimulus 1.42, 94.84  17.91 1.57 .001    .216
3 Group:Stimulus 1.42, 94.84  17.91 1.25 .001    .281
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(heart_rate_rep_anova)

4.2 Root Mean Square of the Successive Differences (log10)

options(width = 100)
log10_rmssd_rep_anova = aov_ez("ID", "log10_rmssd", emo_data_clean, within = c("Stimulus"), between = c("Group"))
log10_rmssd_afex_plot <-
  afex_plot(
    log10_rmssd_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(log10_rmssd_afex_plot))

base::print(log10_rmssd_rep_anova)
Anova Table (Type 3 tests)

Response: log10_rmssd
          Effect           df  MSE      F  ges p.value
1          Group        1, 67 0.62   1.26 .016    .265
2       Stimulus 1.90, 127.36 0.06 4.36 * .009    .016
3 Group:Stimulus 1.90, 127.36 0.06   1.11 .002    .330
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(log10_rmssd_rep_anova)
____________________________________________________________
$emmeans
 Stimulus   emmean     SE df lower.CL upper.CL
 Unpleasant   1.24 0.0565 67     1.13     1.35
 Neutral      1.22 0.0574 67     1.11     1.34
 Pleasant     1.33 0.0646 67     1.20     1.46

Results are averaged over the levels of: Group 
Confidence level used: 0.95 

$contrasts
 contrast              estimate     SE df t.ratio p.value
 Unpleasant - Neutral    0.0168 0.0348 67   0.481  0.8804
 Unpleasant - Pleasant  -0.0919 0.0418 67  -2.201  0.0783
 Neutral - Pleasant     -0.1087 0.0419 67  -2.593  0.0309

Results are averaged over the levels of: Group 
P value adjustment: tukey method for comparing a family of 3 estimates 

5 Electrodermal Activity

5.1 Mean Phasic Component (log10)

options(width = 100)
log10_ave_phasic_eda_rep_anova = aov_ez("ID", "log10_ave_phasic_eda", emo_data_clean, within = c("Stimulus"), between = c("Group"))
log10_ave_phasic_eda_afex_plot <-
  afex_plot(
    log10_ave_phasic_eda_rep_anova,
    x = "Stimulus",
    trace = "Group",
    error = "between",
    error_arg = list(width = .15),
    dodge     = my_dodge,
    data_arg  = list(
      position = 
        position_jitterdodge(
          jitter.width  = .1, 
          dodge.width   = my_dodge
        )),
    mapping   = c('color'),
    point_arg = list(size = 4)
  )
suppressWarnings(base::print(log10_ave_phasic_eda_afex_plot))

base::print(log10_ave_phasic_eda_rep_anova)
Anova Table (Type 3 tests)

Response: log10_ave_phasic_eda
          Effect          df  MSE         F  ges p.value
1          Group       1, 58 1.17   7.20 ** .088    .009
2       Stimulus 1.57, 91.01 0.22 15.81 *** .058   <.001
3 Group:Stimulus 1.57, 91.01 0.22      0.41 .002    .618
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

Sphericity correction method: GG 
a_posteriori(log10_ave_phasic_eda_rep_anova)
____________________________________________________________
$emmeans
 Group     emmean    SE df lower.CL upper.CL
 Alzheimer  -1.45 0.116 58    -1.68    -1.22
 Control    -1.02 0.112 58    -1.24    -0.79

Results are averaged over the levels of: Stimulus 
Confidence level used: 0.95 

$contrasts
 contrast            estimate    SE df t.ratio p.value
 Alzheimer - Control   -0.434 0.162 58  -2.684  0.0095

Results are averaged over the levels of: Stimulus 

____________________________________________________________
$emmeans
 Stimulus   emmean     SE df lower.CL upper.CL
 Unpleasant  -1.03 0.0771 58    -1.19   -0.879
 Neutral     -1.46 0.1040 58    -1.66   -1.248
 Pleasant    -1.21 0.0924 58    -1.39   -1.022

Results are averaged over the levels of: Group 
Confidence level used: 0.95 

$contrasts
 contrast              estimate     SE df t.ratio p.value
 Unpleasant - Neutral     0.422 0.0822 58   5.138  <.0001
 Unpleasant - Pleasant    0.174 0.0524 58   3.317  0.0044
 Neutral - Pleasant      -0.248 0.0871 58  -2.850  0.0164

Results are averaged over the levels of: Group 
P value adjustment: tukey method for comparing a family of 3 estimates 
LS0tCnRpdGxlOiAiUG9zdHVyYWwgU3RhYmlsaXR5IGFuZCBFbW90aW9ucyIKYXV0aG9yOiAiQWx2YXJvIFJpdmVyYS1SZWkiCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGhpZ2hsaWdodDogdGFuZ28KICAgIG51bWJlcl9zZWN0aW9uczogeWVzCiAgICB0aGVtZTogY2VydWxlYW4KICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogbm8KICAgICAgc21vb3RoX3Njcm9sbDogbm8KICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwpzdWJ0aXRsZTogQ29udHJvbCAmIEFsemhlaW1lciBncm91cHMsIDMwIHNlY29uZHMKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0gCmtuaXRyOjpvcHRzX2NodW5rJHNldCh3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSkgCmBgYAoKYGBge3IgQ2xlYW4gYW5kIExvYWQgTGlicmFyaWVzfQpjYXQoIlwwMTQiKSAgICAgIyBjbGVhbiB0ZXJtaW5hbApybShsaXN0ID0gbHMoKSkgIyBjbGVhbiB3b3Jrc3BhY2UKdHJ5KGRldi5vZmYoKSwgc2lsZW50ID0gVFJVRSkgIyBjbG9zZSBhbGwgcGxvdHMKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoR0dhbGx5KQpsaWJyYXJ5KGFmZXgpCmxpYnJhcnkoZW1tZWFucykKYGBgCgpgYGB7ciB0aGVtZSAmIGN1c3RvbSBmdW5jdGlvbnN9Cm15X2RvZGdlIDwtIC4zCnRoZW1lX3NldCh0aGVtZV9taW5pbWFsKCkpCgphX3Bvc3RlcmlvcmkgPC0gZnVuY3Rpb24oYWZleF9hb3YsIHNpZ19sZXZlbCA9IC4wNSkgewogIGZhY3RvcnMgIDwtIGFzLmxpc3Qocm93bmFtZXMoYWZleF9hb3YkYW5vdmFfdGFibGUpKQogIGZvciAoaiBpbiAxOmxlbmd0aChmYWN0b3JzKSkgewogICAgaWYgKGdyZXBsKCc6JywgZmFjdG9yc1tbal1dKSkgewogICAgICBmYWN0b3JzW1tqXV0gPC0gdW5saXN0KHN0cnNwbGl0KGZhY3RvcnNbW2pdXSwgJzonKSkKICAgIH0KICB9CiAgcF92YWx1ZXMgPC0gYWZleF9hb3YkYW5vdmFfdGFibGUkYFByKD5GKWAKICBmb3IgKGkgaW4gMTpsZW5ndGgocF92YWx1ZXMpKSB7CiAgICBpZiAocF92YWx1ZXNbaV0gPD0gc2lnX2xldmVsKSB7CiAgICAgIGNhdChyZXAoJ18nLCA2MCksICdcbicsIHNlcCA9ICcnKQogICAgICBiYXNlOjpwcmludChlbW1lYW5zKGFmZXhfYW92LCBmYWN0b3JzW1tpXV0sIGNvbnRyID0gJ3BhaXJ3aXNlJykpCiAgICB9CiAgfQp9CmBgYAoKYGBge3IgTG9hZCBEYXRhfQpkYXRhX2RpciAgICAgICA8LSAnfi9JbnN5bmMvT25lRHJpdmUvMDBMQUJXT1JLU19vbmVkcml2ZS9QZXJuaWEvRXN0YWJpbG9tZXRyaWFfcGFya2luc29uX2FsemhlaW1lcl95X2NvbnRyb2xlc19BbnRpZ3VvL2RhdGEvJwplbW9fZGF0YV9jbGVhbiA8LSByZWFkLmNzdihwYXN0ZTAoZGF0YV9kaXIsICdlbW9fZGF0YV9jbGVhbl8zMHMuY3N2JyksIGhlYWRlciA9IFRSVUUpIHw+IAogICMgc2VsZWN0KEdyb3VwOnNhbXBlbl9kZWx0YV9waGkpIHw+CiAgZmlsdGVyKEdyb3VwICE9ICdQYXJraW5zb24nKSB8PiAKICBtdXRhdGVfaWYoaXMuY2hhcmFjdGVyLCBhcy5mYWN0b3IpIHw+IAogIG11dGF0ZShTdGltdWx1cyAgICAgICA9IGZhY3RvcihTdGltdWx1cywgbGV2ZWxzID0gYygnVW5wbGVhc2FudCcsICdOZXV0cmFsJywgJ1BsZWFzYW50JykpLAogICAgICAgICBsb2cxMF9hcmVhICAgICA9IGxvZzEwKGFyZWEpLAogICAgICAgICBsb2cxMF9heGlzMSAgICA9IGxvZzEwKGF4aXMxKSwKICAgICAgICAgbG9nMTBfYXhpczIgICAgPSBsb2cxMChheGlzMiksCiAgICAgICAgIGxvZzEwX21kaXN0ICAgID0gbG9nMTAobWRpc3QpLAogICAgICAgICBsb2cxMF9ybXYgICAgICA9IGxvZzEwKHJtdiksCiAgICAgICAgIGxvZzEwX3Jtc3ggICAgID0gbG9nMTAocm1zeCksCiAgICAgICAgIGxvZzEwX3Jtc3kgICAgID0gbG9nMTAocm1zeSksCiAgICAgICAgIGxvZzEwX01QRnggICAgID0gbG9nMTAoTVBGeCksCiAgICAgICAgIGxvZzEwX01QRnkgICAgID0gbG9nMTAoTVBGeSksCiAgICAgICAgIGxvZzEwX1BFQUt4ICAgID0gbG9nMTAoUEVBS3gpLAogICAgICAgICBsb2cxMF9QRUFLeSAgICA9IGxvZzEwKFBFQUt5KSwKICAgICAgICAgbG9nMTBfRjUweCAgICAgPSBsb2cxMChGNTB4KSwKICAgICAgICAgbG9nMTBfRjUweSAgICAgPSBsb2cxMChGNTB5KSwKICAgICAgICAgbG9nMTBfRjk1eCAgICAgPSBsb2cxMChGOTV4KSwKICAgICAgICAgbG9nMTBfRjk1eSAgICAgPSBsb2cxMChGOTV5KSwKICAgICAgICAgbG9nMTBfc2FtcGVuX3ggPSBsb2cxMChzYW1wZW5feCksCiAgICAgICAgIGxvZzEwX3NhbXBlbl95ID0gbG9nMTAoc2FtcGVuX3kpLAogICAgICAgICBsb2cxMF9ybXNzZCAgICA9IGxvZzEwKHJNU1NEKSwKICAgICAgICAgbG9nMTBfYXZlX3BoYXNpY19lZGEgPSBsb2cxMChhdmVfcGhhc2ljX2VkYSkpCndyaXRlLmNzdihlbW9fZGF0YV9jbGVhbiwgICdkYXRhX2Fsel9jdHJfMzBzLmNzdicsICByb3cubmFtZXMgPSBGQUxTRSkKYGBgCgojIEdlbmVyYWwgRGVzY3JpcHRpb24KYGBge3IgZ2VuZXJhbCwgZmlnLndpZHRoID0gOH0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKc3VtbWFyeShlbW9fZGF0YV9jbGVhbikKYGBgCgojIyBUaW1lLWRpc3RhbmNlIHBhcmFtZXRlcnMKYGBge3IgdGltZV9kaXN0YW5jZSwgZmlnLndpZHRoID0gMTF9Cm9wdGlvbnMod2lkdGggPSAxMDApCnRpbWVfZGlzdGFuY2UgPC0gYygnbG9nMTBfYXJlYScsICdsb2cxMF9heGlzMScsICdsb2cxMF9heGlzMicsICdsb2cxMF9tZGlzdCcsICdsb2cxMF9ybXYnLCAnbG9nMTBfcm1zeCcsICdsb2cxMF9ybXN5JykKdGltZV9kaXN0YW5jZV9wYWlycyA8LSBnZ3BhaXJzKGVtb19kYXRhX2NsZWFuLAogICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPSB0aW1lX2Rpc3RhbmNlLAogICAgICAgICAgICAgICAgICAgICAgIGFlcyhjb2xvdXIgPSBHcm91cCwgYWxwaGEgPSAuMjUpLAogICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgbG93ZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKCJwb2ludHMiKSkpCnN1cHByZXNzV2FybmluZ3MoYmFzZTo6cHJpbnQodGltZV9kaXN0YW5jZV9wYWlycykpCnN1bW1hcnkoZW1vX2RhdGFfY2xlYW5bdGltZV9kaXN0YW5jZV0pCmBgYAoKIyMgRnJlcXVlbmN5IHBhcmFtZXRlcnMKYGBge3IgZnJlcXVlbmN5LCBmaWcud2lkdGggPSAxMX0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKZnJlcXVlbmN5IDwtIGMoJ2xvZzEwX01QRngnLCAnbG9nMTBfTVBGeScsICdsb2cxMF9GNTB4JywgJ2xvZzEwX0Y1MHknLCAnbG9nMTBfRjk1eCcsICdsb2cxMF9GOTV5JykKZnJlcXVlbmN5X3BhaXJzIDwtIGdncGFpcnMoZW1vX2RhdGFfY2xlYW4sCiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA9IGZyZXF1ZW5jeSwKICAgICAgICAgICAgICAgICAgICAgICBhZXMoY29sb3VyID0gR3JvdXAsIGFscGhhID0gLjI1KSwKICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgIGxvd2VyID0gbGlzdChjb250aW51b3VzID0gd3JhcCgicG9pbnRzIikpKQpzdXBwcmVzc1dhcm5pbmdzKGJhc2U6OnByaW50KGZyZXF1ZW5jeV9wYWlycykpCnN1bW1hcnkoZW1vX2RhdGFfY2xlYW5bZnJlcXVlbmN5XSkKYGBgCgojIyBFbnRyb3B5CmBgYHtyIGVudHJvcHksIGZpZy53aWR0aCA9IDExfQpvcHRpb25zKHdpZHRoID0gMTAwKQplbnRyb3B5IDwtIGMoJ2ZvcndhcmRfbW92JywgJ2xvZzEwX3NhbXBlbl94JywgJ2xvZzEwX3NhbXBlbl95JywgJ3NhbXBlbl9yZXN1bF92ZWN0JywgJ3NhbXBlbl9waGlfcmFkJywgJ3NhbXBlbl9kZWx0YV9waGknKQplbnRyb3B5X3BhaXJzIDwtIGdncGFpcnMoZW1vX2RhdGFfY2xlYW4sCiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA9IGVudHJvcHksCiAgICAgICAgICAgICAgICAgICAgICAgYWVzKGNvbG91ciA9IEdyb3VwLCBhbHBoYSA9IC4yNSksCiAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3MgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IHdyYXAoInBvaW50cyIpKSkKc3VwcHJlc3NXYXJuaW5ncyhiYXNlOjpwcmludChlbnRyb3B5X3BhaXJzKSkKc3VtbWFyeShlbW9fZGF0YV9jbGVhbltlbnRyb3B5XSkKYGBgCgojIENsYXNzaWMgQ2VudGVyIG9mIFByZXNzdXJlCgojIyBBcmVhIChsb2cxMCkKYGBge3IgQXJlYSwgZmlnLndpZHRoID0gOH0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKYXJlYV9yZXBfYW5vdmEgPSBhb3ZfZXooIklEIiwgImxvZzEwX2FyZWEiLCBlbW9fZGF0YV9jbGVhbiwgd2l0aGluID0gYygiU3RpbXVsdXMiKSwgYmV0d2VlbiA9IGMoIkdyb3VwIikpCmFyZWFfYWZleF9wbG90IDwtCiAgYWZleF9wbG90KAogICAgYXJlYV9yZXBfYW5vdmEsCiAgICB4ID0gIlN0aW11bHVzIiwKICAgIHRyYWNlID0gIkdyb3VwIiwKICAgIGVycm9yID0gImJldHdlZW4iLAogICAgZXJyb3JfYXJnID0gbGlzdCh3aWR0aCA9IC4xNSksCiAgICBkb2RnZSAgICAgPSBteV9kb2RnZSwKICAgIGRhdGFfYXJnICA9IGxpc3QoCiAgICAgIHBvc2l0aW9uID0gCiAgICAgICAgcG9zaXRpb25faml0dGVyZG9kZ2UoCiAgICAgICAgICBqaXR0ZXIud2lkdGggID0gLjEsIAogICAgICAgICAgZG9kZ2Uud2lkdGggICA9IG15X2RvZGdlCiAgICAgICAgKSksCiAgICBtYXBwaW5nICAgPSBjKCdjb2xvcicpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MoYmFzZTo6cHJpbnQoYXJlYV9hZmV4X3Bsb3QpKQpiYXNlOjpwcmludChhcmVhX3JlcF9hbm92YSkKYV9wb3N0ZXJpb3JpKGFyZWFfcmVwX2Fub3ZhKQpgYGAKCiMjIEVsbGlwc2UgTWFqb3IgQXhpcyAobG9nMTApCmBgYHtyIGxvZzEwX2F4aXMxLCBmaWcud2lkdGggPSA4fQpvcHRpb25zKHdpZHRoID0gMTAwKQpsb2cxMF9heGlzMV9yZXBfYW5vdmEgPSBhb3ZfZXooIklEIiwgImxvZzEwX2F4aXMxIiwgZW1vX2RhdGFfY2xlYW4sIHdpdGhpbiA9IGMoIlN0aW11bHVzIiksIGJldHdlZW4gPSBjKCJHcm91cCIpKQpsb2cxMF9heGlzMV9hZmV4X3Bsb3QgPC0KICBhZmV4X3Bsb3QoCiAgICBsb2cxMF9heGlzMV9yZXBfYW5vdmEsCiAgICB4ID0gIlN0aW11bHVzIiwKICAgIHRyYWNlID0gIkdyb3VwIiwKICAgIGVycm9yID0gImJldHdlZW4iLAogICAgZXJyb3JfYXJnID0gbGlzdCh3aWR0aCA9IC4xNSksCiAgICBkb2RnZSAgICAgPSBteV9kb2RnZSwKICAgIGRhdGFfYXJnICA9IGxpc3QoCiAgICAgIHBvc2l0aW9uID0gCiAgICAgICAgcG9zaXRpb25faml0dGVyZG9kZ2UoCiAgICAgICAgICBqaXR0ZXIud2lkdGggID0gLjEsIAogICAgICAgICAgZG9kZ2Uud2lkdGggICA9IG15X2RvZGdlCiAgICAgICAgKSksCiAgICBtYXBwaW5nICAgPSBjKCdjb2xvcicpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MoYmFzZTo6cHJpbnQobG9nMTBfYXhpczFfYWZleF9wbG90KSkKYmFzZTo6cHJpbnQobG9nMTBfYXhpczFfcmVwX2Fub3ZhKQphX3Bvc3RlcmlvcmkobG9nMTBfYXhpczFfcmVwX2Fub3ZhKQpgYGAKCiMjIEVsbGlwc2UgTWlub3IgQXhpcyAobG9nMTApCmBgYHtyIGxvZzEwX2F4aXMyLCBmaWcud2lkdGggPSA4fQpvcHRpb25zKHdpZHRoID0gMTAwKQpsb2cxMF9heGlzMl9yZXBfYW5vdmEgPSBhb3ZfZXooIklEIiwgImxvZzEwX2F4aXMyIiwgZW1vX2RhdGFfY2xlYW4sIHdpdGhpbiA9IGMoIlN0aW11bHVzIiksIGJldHdlZW4gPSBjKCJHcm91cCIpKQpsb2cxMF9heGlzMl9hZmV4X3Bsb3QgPC0KICBhZmV4X3Bsb3QoCiAgICBsb2cxMF9heGlzMl9yZXBfYW5vdmEsCiAgICB4ID0gIlN0aW11bHVzIiwKICAgIHRyYWNlID0gIkdyb3VwIiwKICAgIGVycm9yID0gImJldHdlZW4iLAogICAgZXJyb3JfYXJnID0gbGlzdCh3aWR0aCA9IC4xNSksCiAgICBkb2RnZSAgICAgPSBteV9kb2RnZSwKICAgIGRhdGFfYXJnICA9IGxpc3QoCiAgICAgIHBvc2l0aW9uID0gCiAgICAgICAgcG9zaXRpb25faml0dGVyZG9kZ2UoCiAgICAgICAgICBqaXR0ZXIud2lkdGggID0gLjEsIAogICAgICAgICAgZG9kZ2Uud2lkdGggICA9IG15X2RvZGdlCiAgICAgICAgKSksCiAgICBtYXBwaW5nICAgPSBjKCdjb2xvcicpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MoYmFzZTo6cHJpbnQobG9nMTBfYXhpczJfYWZleF9wbG90KSkKYmFzZTo6cHJpbnQobG9nMTBfYXhpczJfcmVwX2Fub3ZhKQphX3Bvc3RlcmlvcmkobG9nMTBfYXhpczJfcmVwX2Fub3ZhKQpgYGAKCiMjIE1lYW4gRGlzdGFuY2UgKGxvZzEwKQpgYGB7ciBtZGlzdCwgZmlnLndpZHRoID0gOH0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKbWRpc3RfcmVwX2Fub3ZhID0gYW92X2V6KCJJRCIsICJsb2cxMF9tZGlzdCIsIGVtb19kYXRhX2NsZWFuLCB3aXRoaW4gPSBjKCJTdGltdWx1cyIpLCBiZXR3ZWVuID0gYygiR3JvdXAiKSkKbWRpc3RfYWZleF9wbG90IDwtCiAgYWZleF9wbG90KAogICAgbWRpc3RfcmVwX2Fub3ZhLAogICAgeCA9ICJTdGltdWx1cyIsCiAgICB0cmFjZSA9ICJHcm91cCIsCiAgICBlcnJvciA9ICJiZXR3ZWVuIiwKICAgIGVycm9yX2FyZyA9IGxpc3Qod2lkdGggPSAuMTUpLAogICAgZG9kZ2UgICAgID0gbXlfZG9kZ2UsCiAgICBkYXRhX2FyZyAgPSBsaXN0KAogICAgICBwb3NpdGlvbiA9IAogICAgICAgIHBvc2l0aW9uX2ppdHRlcmRvZGdlKAogICAgICAgICAgaml0dGVyLndpZHRoICA9IC4xLCAKICAgICAgICAgIGRvZGdlLndpZHRoICAgPSBteV9kb2RnZQogICAgICAgICkpLAogICAgbWFwcGluZyAgID0gYygnY29sb3InKSwKICAgIHBvaW50X2FyZyA9IGxpc3Qoc2l6ZSA9IDQpCiAgKQpzdXBwcmVzc1dhcm5pbmdzKGJhc2U6OnByaW50KG1kaXN0X2FmZXhfcGxvdCkpCmJhc2U6OnByaW50KG1kaXN0X3JlcF9hbm92YSkKYV9wb3N0ZXJpb3JpKG1kaXN0X3JlcF9hbm92YSkKYGBgCgojIyBSb290IE1lYW4gVmVsb2NpdHkgKGxvZzEwKQpgYGB7ciBybXYsIGZpZy53aWR0aCA9IDh9Cm9wdGlvbnMod2lkdGggPSAxMDApCnJtdl9yZXBfYW5vdmEgPSBhb3ZfZXooIklEIiwgImxvZzEwX3JtdiIsIGVtb19kYXRhX2NsZWFuLCB3aXRoaW4gPSBjKCJTdGltdWx1cyIpLCBiZXR3ZWVuID0gYygiR3JvdXAiKSkKcm12X2FmZXhfcGxvdCA8LQogIGFmZXhfcGxvdCgKICAgIHJtdl9yZXBfYW5vdmEsCiAgICB4ID0gIlN0aW11bHVzIiwKICAgIHRyYWNlID0gIkdyb3VwIiwKICAgIGVycm9yID0gImJldHdlZW4iLAogICAgZXJyb3JfYXJnID0gbGlzdCh3aWR0aCA9IC4xNSksCiAgICBkb2RnZSAgICAgPSBteV9kb2RnZSwKICAgIGRhdGFfYXJnICA9IGxpc3QoCiAgICAgIHBvc2l0aW9uID0gCiAgICAgICAgcG9zaXRpb25faml0dGVyZG9kZ2UoCiAgICAgICAgICBqaXR0ZXIud2lkdGggID0gLjEsIAogICAgICAgICAgZG9kZ2Uud2lkdGggICA9IG15X2RvZGdlCiAgICAgICAgKSksCiAgICBtYXBwaW5nICAgPSBjKCdjb2xvcicpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MoYmFzZTo6cHJpbnQocm12X2FmZXhfcGxvdCkpCmJhc2U6OnByaW50KHJtdl9yZXBfYW5vdmEpCmFfcG9zdGVyaW9yaShybXZfcmVwX2Fub3ZhKQpgYGAKCiMjIFJvb3QgTWVhbiBTcXVhcmUgWCAobG9nMTApCmBgYHtyIHJtc3gsIGZpZy53aWR0aCA9IDh9Cm9wdGlvbnMod2lkdGggPSAxMDApCnJtc3hfcmVwX2Fub3ZhID0gYW92X2V6KCJJRCIsICJsb2cxMF9ybXN4IiwgZW1vX2RhdGFfY2xlYW4sIHdpdGhpbiA9IGMoIlN0aW11bHVzIiksIGJldHdlZW4gPSBjKCJHcm91cCIpKQpybXN4X2FmZXhfcGxvdCA8LQogIGFmZXhfcGxvdCgKICAgIHJtc3hfcmVwX2Fub3ZhLAogICAgeCA9ICJTdGltdWx1cyIsCiAgICB0cmFjZSA9ICJHcm91cCIsCiAgICBlcnJvciA9ICJiZXR3ZWVuIiwKICAgIGVycm9yX2FyZyA9IGxpc3Qod2lkdGggPSAuMTUpLAogICAgZG9kZ2UgICAgID0gbXlfZG9kZ2UsCiAgICBkYXRhX2FyZyAgPSBsaXN0KAogICAgICBwb3NpdGlvbiA9IAogICAgICAgIHBvc2l0aW9uX2ppdHRlcmRvZGdlKAogICAgICAgICAgaml0dGVyLndpZHRoICA9IC4xLCAKICAgICAgICAgIGRvZGdlLndpZHRoICAgPSBteV9kb2RnZQogICAgICAgICkpLAogICAgbWFwcGluZyAgID0gYygnY29sb3InKSwKICAgIHBvaW50X2FyZyA9IGxpc3Qoc2l6ZSA9IDQpCiAgKQpzdXBwcmVzc1dhcm5pbmdzKGJhc2U6OnByaW50KHJtc3hfYWZleF9wbG90KSkKYmFzZTo6cHJpbnQocm1zeF9yZXBfYW5vdmEpCmFfcG9zdGVyaW9yaShybXN4X3JlcF9hbm92YSkKYGBgCgojIyBSb290IE1lYW4gU3F1YXJlIFkgKGxvZzEwKQpgYGB7ciBybXN5LCBmaWcud2lkdGggPSA4fQpvcHRpb25zKHdpZHRoID0gMTAwKQpybXN5X3JlcF9hbm92YSA9IGFvdl9leigiSUQiLCAibG9nMTBfcm1zeSIsIGVtb19kYXRhX2NsZWFuLCB3aXRoaW4gPSBjKCJTdGltdWx1cyIpLCBiZXR3ZWVuID0gYygiR3JvdXAiKSkKcm1zeV9hZmV4X3Bsb3QgPC0KICBhZmV4X3Bsb3QoCiAgICBybXN5X3JlcF9hbm92YSwKICAgIHggPSAiU3RpbXVsdXMiLAogICAgdHJhY2UgPSAiR3JvdXAiLAogICAgZXJyb3IgPSAiYmV0d2VlbiIsCiAgICBlcnJvcl9hcmcgPSBsaXN0KHdpZHRoID0gLjE1KSwKICAgIGRvZGdlICAgICA9IG15X2RvZGdlLAogICAgZGF0YV9hcmcgID0gbGlzdCgKICAgICAgcG9zaXRpb24gPSAKICAgICAgICBwb3NpdGlvbl9qaXR0ZXJkb2RnZSgKICAgICAgICAgIGppdHRlci53aWR0aCAgPSAuMSwgCiAgICAgICAgICBkb2RnZS53aWR0aCAgID0gbXlfZG9kZ2UKICAgICAgICApKSwKICAgIG1hcHBpbmcgICA9IGMoJ2NvbG9yJyksCiAgICBwb2ludF9hcmcgPSBsaXN0KHNpemUgPSA0KQogICkKc3VwcHJlc3NXYXJuaW5ncyhiYXNlOjpwcmludChybXN5X2FmZXhfcGxvdCkpCmJhc2U6OnByaW50KHJtc3lfcmVwX2Fub3ZhKQphX3Bvc3Rlcmlvcmkocm1zeV9yZXBfYW5vdmEpCmBgYAoKIyMgTWVhbiBQb3dlciBGcmVxdWVuY3kgWCAobG9nMTApCmBgYHtyIE1QRngsIGZpZy53aWR0aCA9IDh9Cm9wdGlvbnMod2lkdGggPSAxMDApCk1QRnhfcmVwX2Fub3ZhID0gYW92X2V6KCJJRCIsICJsb2cxMF9NUEZ4IiwgZW1vX2RhdGFfY2xlYW4sIHdpdGhpbiA9IGMoIlN0aW11bHVzIiksIGJldHdlZW4gPSBjKCJHcm91cCIpKQpNUEZ4X2FmZXhfcGxvdCA8LQogIGFmZXhfcGxvdCgKICAgIE1QRnhfcmVwX2Fub3ZhLAogICAgeCA9ICJTdGltdWx1cyIsCiAgICB0cmFjZSA9ICJHcm91cCIsCiAgICBlcnJvciA9ICJiZXR3ZWVuIiwKICAgIGVycm9yX2FyZyA9IGxpc3Qod2lkdGggPSAuMTUpLAogICAgZG9kZ2UgICAgID0gbXlfZG9kZ2UsCiAgICBkYXRhX2FyZyAgPSBsaXN0KAogICAgICBwb3NpdGlvbiA9IAogICAgICAgIHBvc2l0aW9uX2ppdHRlcmRvZGdlKAogICAgICAgICAgaml0dGVyLndpZHRoICA9IC4xLCAKICAgICAgICAgIGRvZGdlLndpZHRoICAgPSBteV9kb2RnZQogICAgICAgICkpLAogICAgbWFwcGluZyAgID0gYygnY29sb3InKSwKICAgIHBvaW50X2FyZyA9IGxpc3Qoc2l6ZSA9IDQpCiAgKQpzdXBwcmVzc1dhcm5pbmdzKGJhc2U6OnByaW50KE1QRnhfYWZleF9wbG90KSkKYmFzZTo6cHJpbnQoTVBGeF9yZXBfYW5vdmEpCmFfcG9zdGVyaW9yaShNUEZ4X3JlcF9hbm92YSkKYGBgCgojIyBNZWFuIFBvd2VyIEZyZXF1ZW5jeSBZIChsb2cxMCkKYGBge3IgTVBGeSwgZmlnLndpZHRoID0gOH0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKTVBGeV9yZXBfYW5vdmEgPSBhb3ZfZXooIklEIiwgImxvZzEwX01QRnkiLCBlbW9fZGF0YV9jbGVhbiwgd2l0aGluID0gYygiU3RpbXVsdXMiKSwgYmV0d2VlbiA9IGMoIkdyb3VwIikpCk1QRnlfYWZleF9wbG90IDwtCiAgYWZleF9wbG90KAogICAgTVBGeV9yZXBfYW5vdmEsCiAgICB4ID0gIlN0aW11bHVzIiwKICAgIHRyYWNlID0gIkdyb3VwIiwKICAgIGVycm9yID0gImJldHdlZW4iLAogICAgZXJyb3JfYXJnID0gbGlzdCh3aWR0aCA9IC4xNSksCiAgICBkb2RnZSAgICAgPSBteV9kb2RnZSwKICAgIGRhdGFfYXJnICA9IGxpc3QoCiAgICAgIHBvc2l0aW9uID0gCiAgICAgICAgcG9zaXRpb25faml0dGVyZG9kZ2UoCiAgICAgICAgICBqaXR0ZXIud2lkdGggID0gLjEsIAogICAgICAgICAgZG9kZ2Uud2lkdGggICA9IG15X2RvZGdlCiAgICAgICAgKSksCiAgICBtYXBwaW5nICAgPSBjKCdjb2xvcicpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MoYmFzZTo6cHJpbnQoTVBGeV9hZmV4X3Bsb3QpKQpiYXNlOjpwcmludChNUEZ5X3JlcF9hbm92YSkKYV9wb3N0ZXJpb3JpKE1QRnlfcmVwX2Fub3ZhKQpgYGAKCiMjIEZvcndhcmQgTW92ZW1lbnQKYGBge3IgZm9yd2FyZF9tb3YsIGZpZy53aWR0aCA9IDh9Cm9wdGlvbnMod2lkdGggPSAxMDApCmZvcndhcmRfbW92X3JlcF9hbm92YSA9IGFvdl9leigiSUQiLCAiZm9yd2FyZF9tb3YiLCBlbW9fZGF0YV9jbGVhbiwgd2l0aGluID0gYygiU3RpbXVsdXMiKSwgYmV0d2VlbiA9IGMoIkdyb3VwIikpCmZvcndhcmRfbW92X2FmZXhfcGxvdCA8LQogIGFmZXhfcGxvdCgKICAgIGZvcndhcmRfbW92X3JlcF9hbm92YSwKICAgIHggPSAiU3RpbXVsdXMiLAogICAgdHJhY2UgPSAiR3JvdXAiLAogICAgZXJyb3IgPSAiYmV0d2VlbiIsCiAgICBlcnJvcl9hcmcgPSBsaXN0KHdpZHRoID0gLjE1KSwKICAgIGRvZGdlICAgICA9IG15X2RvZGdlLAogICAgZGF0YV9hcmcgID0gbGlzdCgKICAgICAgcG9zaXRpb24gPSAKICAgICAgICBwb3NpdGlvbl9qaXR0ZXJkb2RnZSgKICAgICAgICAgIGppdHRlci53aWR0aCAgPSAuMSwgCiAgICAgICAgICBkb2RnZS53aWR0aCAgID0gbXlfZG9kZ2UKICAgICAgICApKSwKICAgIG1hcHBpbmcgICA9IGMoJ2NvbG9yJyksCiAgICBwb2ludF9hcmcgPSBsaXN0KHNpemUgPSA0KQogICkKc3VwcHJlc3NXYXJuaW5ncyhiYXNlOjpwcmludChmb3J3YXJkX21vdl9hZmV4X3Bsb3QpKQpiYXNlOjpwcmludChmb3J3YXJkX21vdl9yZXBfYW5vdmEpCmFfcG9zdGVyaW9yaShmb3J3YXJkX21vdl9yZXBfYW5vdmEpCmBgYAoKIyBFbnRyb3B5IGFuZCBDZW50ZXIgb2YgUHJlc3N1cmUKIyMgU2FtcGxlIEVudHJvcHkgWCAobG9nMTApCmBgYHtyIHNhbXBlbl94LCBmaWcud2lkdGggPSA4fQpvcHRpb25zKHdpZHRoID0gMTAwKQpsb2cxMF9zYW1wZW5feF9yZXBfYW5vdmEgPSBhb3ZfZXooIklEIiwgImxvZzEwX3NhbXBlbl94IiwgZW1vX2RhdGFfY2xlYW4sIHdpdGhpbiA9IGMoIlN0aW11bHVzIiksIGJldHdlZW4gPSBjKCJHcm91cCIpKQpsb2cxMF9zYW1wZW5feF9hZmV4X3Bsb3QgPC0KICBhZmV4X3Bsb3QoCiAgICBsb2cxMF9zYW1wZW5feF9yZXBfYW5vdmEsCiAgICB4ID0gIlN0aW11bHVzIiwKICAgIHRyYWNlID0gIkdyb3VwIiwKICAgIGVycm9yID0gImJldHdlZW4iLAogICAgZXJyb3JfYXJnID0gbGlzdCh3aWR0aCA9IC4xNSksCiAgICBkb2RnZSAgICAgPSBteV9kb2RnZSwKICAgIGRhdGFfYXJnICA9IGxpc3QoCiAgICAgIHBvc2l0aW9uID0gCiAgICAgICAgcG9zaXRpb25faml0dGVyZG9kZ2UoCiAgICAgICAgICBqaXR0ZXIud2lkdGggID0gLjEsIAogICAgICAgICAgZG9kZ2Uud2lkdGggICA9IG15X2RvZGdlCiAgICAgICAgKSksCiAgICBtYXBwaW5nICAgPSBjKCdjb2xvcicpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MoYmFzZTo6cHJpbnQobG9nMTBfc2FtcGVuX3hfYWZleF9wbG90KSkKYmFzZTo6cHJpbnQobG9nMTBfc2FtcGVuX3hfcmVwX2Fub3ZhKQphX3Bvc3RlcmlvcmkobG9nMTBfc2FtcGVuX3hfcmVwX2Fub3ZhKQpgYGAKCiMjIFNhbXBsZSBFbnRyb3B5IFkgKGxvZzEwKQpgYGB7ciBzYW1wZW5feSwgZmlnLndpZHRoID0gOH0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKbG9nMTBfc2FtcGVuX3lfcmVwX2Fub3ZhID0gYW92X2V6KCJJRCIsICJsb2cxMF9zYW1wZW5feSIsIGVtb19kYXRhX2NsZWFuLCB3aXRoaW4gPSBjKCJTdGltdWx1cyIpLCBiZXR3ZWVuID0gYygiR3JvdXAiKSkKbG9nMTBfc2FtcGVuX3lfYWZleF9wbG90IDwtCiAgYWZleF9wbG90KAogICAgbG9nMTBfc2FtcGVuX3lfcmVwX2Fub3ZhLAogICAgeCA9ICJTdGltdWx1cyIsCiAgICB0cmFjZSA9ICJHcm91cCIsCiAgICBlcnJvciA9ICJiZXR3ZWVuIiwKICAgIGVycm9yX2FyZyA9IGxpc3Qod2lkdGggPSAuMTUpLAogICAgZG9kZ2UgICAgID0gbXlfZG9kZ2UsCiAgICBkYXRhX2FyZyAgPSBsaXN0KAogICAgICBwb3NpdGlvbiA9IAogICAgICAgIHBvc2l0aW9uX2ppdHRlcmRvZGdlKAogICAgICAgICAgaml0dGVyLndpZHRoICA9IC4xLCAKICAgICAgICAgIGRvZGdlLndpZHRoICAgPSBteV9kb2RnZQogICAgICAgICkpLAogICAgbWFwcGluZyAgID0gYygnY29sb3InKSwKICAgIHBvaW50X2FyZyA9IGxpc3Qoc2l6ZSA9IDQpCiAgKQpzdXBwcmVzc1dhcm5pbmdzKGJhc2U6OnByaW50KGxvZzEwX3NhbXBlbl95X2FmZXhfcGxvdCkpCmJhc2U6OnByaW50KGxvZzEwX3NhbXBlbl95X3JlcF9hbm92YSkKYV9wb3N0ZXJpb3JpKGxvZzEwX3NhbXBlbl95X3JlcF9hbm92YSkKYGBgCgojIyBBbmdsZSBTYW1wbGUgRW50cm9weQpgYGB7ciBzYW1wZW5fcGhpX3JhZCwgZmlnLndpZHRoID0gOH0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKc2FtcGVuX3BoaV9yYWRfcmVwX2Fub3ZhID0gYW92X2V6KCJJRCIsICJzYW1wZW5fcGhpX3JhZCIsIGVtb19kYXRhX2NsZWFuLCB3aXRoaW4gPSBjKCJTdGltdWx1cyIpLCBiZXR3ZWVuID0gYygiR3JvdXAiKSkKc2FtcGVuX3BoaV9yYWRfYWZleF9wbG90IDwtCiAgYWZleF9wbG90KAogICAgc2FtcGVuX3BoaV9yYWRfcmVwX2Fub3ZhLAogICAgeCA9ICJTdGltdWx1cyIsCiAgICB0cmFjZSA9ICJHcm91cCIsCiAgICBlcnJvciA9ICJiZXR3ZWVuIiwKICAgIGVycm9yX2FyZyA9IGxpc3Qod2lkdGggPSAuMTUpLAogICAgZG9kZ2UgICAgID0gbXlfZG9kZ2UsCiAgICBkYXRhX2FyZyAgPSBsaXN0KAogICAgICBwb3NpdGlvbiA9IAogICAgICAgIHBvc2l0aW9uX2ppdHRlcmRvZGdlKAogICAgICAgICAgaml0dGVyLndpZHRoICA9IC4xLCAKICAgICAgICAgIGRvZGdlLndpZHRoICAgPSBteV9kb2RnZQogICAgICAgICkpLAogICAgbWFwcGluZyAgID0gYygnY29sb3InKSwKICAgIHBvaW50X2FyZyA9IGxpc3Qoc2l6ZSA9IDQpCiAgKQpzdXBwcmVzc1dhcm5pbmdzKGJhc2U6OnByaW50KHNhbXBlbl9waGlfcmFkX2FmZXhfcGxvdCkpCmJhc2U6OnByaW50KHNhbXBlbl9waGlfcmFkX3JlcF9hbm92YSkKYV9wb3N0ZXJpb3JpKHNhbXBlbl9waGlfcmFkX3JlcF9hbm92YSkKYGBgCgojIyBSZXN1bHRhbnQgVmVjdG9yIFNhbXBsZSBFbnRyb3B5CmBgYHtyIHNhbXBlbl9yZXN1bF92ZWN0LCBmaWcud2lkdGggPSA4fQpvcHRpb25zKHdpZHRoID0gMTAwKQpzYW1wZW5fcmVzdWxfdmVjdF9yZXBfYW5vdmEgPSBhb3ZfZXooIklEIiwgInNhbXBlbl9yZXN1bF92ZWN0IiwgZW1vX2RhdGFfY2xlYW4sIHdpdGhpbiA9IGMoIlN0aW11bHVzIiksIGJldHdlZW4gPSBjKCJHcm91cCIpKQpzYW1wZW5fcmVzdWxfdmVjdF9hZmV4X3Bsb3QgPC0KICBhZmV4X3Bsb3QoCiAgICBzYW1wZW5fcmVzdWxfdmVjdF9yZXBfYW5vdmEsCiAgICB4ID0gIlN0aW11bHVzIiwKICAgIHRyYWNlID0gIkdyb3VwIiwKICAgIGVycm9yID0gImJldHdlZW4iLAogICAgZXJyb3JfYXJnID0gbGlzdCh3aWR0aCA9IC4xNSksCiAgICBkb2RnZSAgICAgPSBteV9kb2RnZSwKICAgIGRhdGFfYXJnICA9IGxpc3QoCiAgICAgIHBvc2l0aW9uID0gCiAgICAgICAgcG9zaXRpb25faml0dGVyZG9kZ2UoCiAgICAgICAgICBqaXR0ZXIud2lkdGggID0gLjEsIAogICAgICAgICAgZG9kZ2Uud2lkdGggICA9IG15X2RvZGdlCiAgICAgICAgKSksCiAgICBtYXBwaW5nICAgPSBjKCdjb2xvcicpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MoYmFzZTo6cHJpbnQoc2FtcGVuX3Jlc3VsX3ZlY3RfYWZleF9wbG90KSkKYmFzZTo6cHJpbnQoc2FtcGVuX3Jlc3VsX3ZlY3RfcmVwX2Fub3ZhKQphX3Bvc3Rlcmlvcmkoc2FtcGVuX3Jlc3VsX3ZlY3RfcmVwX2Fub3ZhKQpgYGAKCiMjIEFuZ2xlIENoYW5nZSBTYW1wbGUgRW50cm9weQpgYGB7ciBzYW1wZW5fZGVsdGFfcGhpLCBmaWcud2lkdGggPSA4fQpvcHRpb25zKHdpZHRoID0gMTAwKQpzYW1wZW5fZGVsdGFfcGhpX3JlcF9hbm92YSA9IGFvdl9leigiSUQiLCAic2FtcGVuX2RlbHRhX3BoaSIsIGVtb19kYXRhX2NsZWFuLCB3aXRoaW4gPSBjKCJTdGltdWx1cyIpLCBiZXR3ZWVuID0gYygiR3JvdXAiKSkKc2FtcGVuX2RlbHRhX3BoaV9hZmV4X3Bsb3QgPC0KICBhZmV4X3Bsb3QoCiAgICBzYW1wZW5fZGVsdGFfcGhpX3JlcF9hbm92YSwKICAgIHggPSAiU3RpbXVsdXMiLAogICAgdHJhY2UgPSAiR3JvdXAiLAogICAgZXJyb3IgPSAiYmV0d2VlbiIsCiAgICBlcnJvcl9hcmcgPSBsaXN0KHdpZHRoID0gLjE1KSwKICAgIGRvZGdlICAgICA9IG15X2RvZGdlLAogICAgZGF0YV9hcmcgID0gbGlzdCgKICAgICAgcG9zaXRpb24gPSAKICAgICAgICBwb3NpdGlvbl9qaXR0ZXJkb2RnZSgKICAgICAgICAgIGppdHRlci53aWR0aCAgPSAuMSwgCiAgICAgICAgICBkb2RnZS53aWR0aCAgID0gbXlfZG9kZ2UKICAgICAgICApKSwKICAgIG1hcHBpbmcgICA9IGMoJ2NvbG9yJyksCiAgICBwb2ludF9hcmcgPSBsaXN0KHNpemUgPSA0KQogICkKc3VwcHJlc3NXYXJuaW5ncyhiYXNlOjpwcmludChzYW1wZW5fZGVsdGFfcGhpX2FmZXhfcGxvdCkpCmJhc2U6OnByaW50KHNhbXBlbl9kZWx0YV9waGlfcmVwX2Fub3ZhKQphX3Bvc3Rlcmlvcmkoc2FtcGVuX2RlbHRhX3BoaV9yZXBfYW5vdmEpCmBgYAoKIyBIZWFydCBBY3Rpdml0eQoKIyMgSGVhcnQgUmF0ZQoKYGBge3IgaGVhcnRfcmF0ZSwgZmlnLndpZHRoID0gOH0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKaGVhcnRfcmF0ZV9yZXBfYW5vdmEgPSBhb3ZfZXooIklEIiwgImhlYXJ0X3JhdGUiLCBlbW9fZGF0YV9jbGVhbiwgd2l0aGluID0gYygiU3RpbXVsdXMiKSwgYmV0d2VlbiA9IGMoIkdyb3VwIikpCmhlYXJ0X3JhdGVfYWZleF9wbG90IDwtCiAgYWZleF9wbG90KAogICAgaGVhcnRfcmF0ZV9yZXBfYW5vdmEsCiAgICB4ID0gIlN0aW11bHVzIiwKICAgIHRyYWNlID0gIkdyb3VwIiwKICAgIGVycm9yID0gImJldHdlZW4iLAogICAgZXJyb3JfYXJnID0gbGlzdCh3aWR0aCA9IC4xNSksCiAgICBkb2RnZSAgICAgPSBteV9kb2RnZSwKICAgIGRhdGFfYXJnICA9IGxpc3QoCiAgICAgIHBvc2l0aW9uID0gCiAgICAgICAgcG9zaXRpb25faml0dGVyZG9kZ2UoCiAgICAgICAgICBqaXR0ZXIud2lkdGggID0gLjEsIAogICAgICAgICAgZG9kZ2Uud2lkdGggICA9IG15X2RvZGdlCiAgICAgICAgKSksCiAgICBtYXBwaW5nICAgPSBjKCdjb2xvcicpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MoYmFzZTo6cHJpbnQoaGVhcnRfcmF0ZV9hZmV4X3Bsb3QpKQpiYXNlOjpwcmludChoZWFydF9yYXRlX3JlcF9hbm92YSkKYV9wb3N0ZXJpb3JpKGhlYXJ0X3JhdGVfcmVwX2Fub3ZhKQpgYGAKCiMjIFJvb3QgTWVhbiBTcXVhcmUgb2YgdGhlIFN1Y2Nlc3NpdmUgRGlmZmVyZW5jZXMgKGxvZzEwKQoKYGBge3IgbG9nMTBfcm1zc2QsIGZpZy53aWR0aCA9IDh9Cm9wdGlvbnMod2lkdGggPSAxMDApCmxvZzEwX3Jtc3NkX3JlcF9hbm92YSA9IGFvdl9leigiSUQiLCAibG9nMTBfcm1zc2QiLCBlbW9fZGF0YV9jbGVhbiwgd2l0aGluID0gYygiU3RpbXVsdXMiKSwgYmV0d2VlbiA9IGMoIkdyb3VwIikpCmxvZzEwX3Jtc3NkX2FmZXhfcGxvdCA8LQogIGFmZXhfcGxvdCgKICAgIGxvZzEwX3Jtc3NkX3JlcF9hbm92YSwKICAgIHggPSAiU3RpbXVsdXMiLAogICAgdHJhY2UgPSAiR3JvdXAiLAogICAgZXJyb3IgPSAiYmV0d2VlbiIsCiAgICBlcnJvcl9hcmcgPSBsaXN0KHdpZHRoID0gLjE1KSwKICAgIGRvZGdlICAgICA9IG15X2RvZGdlLAogICAgZGF0YV9hcmcgID0gbGlzdCgKICAgICAgcG9zaXRpb24gPSAKICAgICAgICBwb3NpdGlvbl9qaXR0ZXJkb2RnZSgKICAgICAgICAgIGppdHRlci53aWR0aCAgPSAuMSwgCiAgICAgICAgICBkb2RnZS53aWR0aCAgID0gbXlfZG9kZ2UKICAgICAgICApKSwKICAgIG1hcHBpbmcgICA9IGMoJ2NvbG9yJyksCiAgICBwb2ludF9hcmcgPSBsaXN0KHNpemUgPSA0KQogICkKc3VwcHJlc3NXYXJuaW5ncyhiYXNlOjpwcmludChsb2cxMF9ybXNzZF9hZmV4X3Bsb3QpKQpiYXNlOjpwcmludChsb2cxMF9ybXNzZF9yZXBfYW5vdmEpCmFfcG9zdGVyaW9yaShsb2cxMF9ybXNzZF9yZXBfYW5vdmEpCmBgYAoKIyBFbGVjdHJvZGVybWFsIEFjdGl2aXR5CgojIyBNZWFuIFBoYXNpYyBDb21wb25lbnQgKGxvZzEwKQoKYGBge3IgbG9nMTBfYXZlX3BoYXNpY19lZGEsIGZpZy53aWR0aCA9IDh9Cm9wdGlvbnMod2lkdGggPSAxMDApCmxvZzEwX2F2ZV9waGFzaWNfZWRhX3JlcF9hbm92YSA9IGFvdl9leigiSUQiLCAibG9nMTBfYXZlX3BoYXNpY19lZGEiLCBlbW9fZGF0YV9jbGVhbiwgd2l0aGluID0gYygiU3RpbXVsdXMiKSwgYmV0d2VlbiA9IGMoIkdyb3VwIikpCmxvZzEwX2F2ZV9waGFzaWNfZWRhX2FmZXhfcGxvdCA8LQogIGFmZXhfcGxvdCgKICAgIGxvZzEwX2F2ZV9waGFzaWNfZWRhX3JlcF9hbm92YSwKICAgIHggPSAiU3RpbXVsdXMiLAogICAgdHJhY2UgPSAiR3JvdXAiLAogICAgZXJyb3IgPSAiYmV0d2VlbiIsCiAgICBlcnJvcl9hcmcgPSBsaXN0KHdpZHRoID0gLjE1KSwKICAgIGRvZGdlICAgICA9IG15X2RvZGdlLAogICAgZGF0YV9hcmcgID0gbGlzdCgKICAgICAgcG9zaXRpb24gPSAKICAgICAgICBwb3NpdGlvbl9qaXR0ZXJkb2RnZSgKICAgICAgICAgIGppdHRlci53aWR0aCAgPSAuMSwgCiAgICAgICAgICBkb2RnZS53aWR0aCAgID0gbXlfZG9kZ2UKICAgICAgICApKSwKICAgIG1hcHBpbmcgICA9IGMoJ2NvbG9yJyksCiAgICBwb2ludF9hcmcgPSBsaXN0KHNpemUgPSA0KQogICkKc3VwcHJlc3NXYXJuaW5ncyhiYXNlOjpwcmludChsb2cxMF9hdmVfcGhhc2ljX2VkYV9hZmV4X3Bsb3QpKQpiYXNlOjpwcmludChsb2cxMF9hdmVfcGhhc2ljX2VkYV9yZXBfYW5vdmEpCmFfcG9zdGVyaW9yaShsb2cxMF9hdmVfcGhhc2ljX2VkYV9yZXBfYW5vdmEpCmBgYAoK