ANÁLISIS FACTORIAL

Se realiza el análisis en aproximación a los datos de un estudio que estoy realizando sobre actitudes de jóvenes en su entorno social. Para la presente tarea se estudia una de las muestras que consta de 47 participantes cuyas actitudes fueron medidas a través de una encuesta de 20 ítems, cada ítem con puntuación entre 1 y 5. La base de datos la he llamado VARIABLES_PSICOLÓGICAS.

El estudio del fenómeno ha considerado que variables subyacentes estarían influyendo en las actitudes de los jóvenes.

Los siguientes son los datos:

VARIABLES_PSICOLOGICAS

A continuación se presenta el summary y la correlación de los datos

Previo al análisis factorial asignamos a la variable psico1. Luego utilizamos el factanal, considerando el VARIMAX.

Toma con 5 factores para este estudio (referentes teóricos).

psico1 <-VARIABLES_PSICOLOGICAS
psico1
summary(psico1)
     ítem 1          ítem 2          ítem 3     
 Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:2.000   1st Qu.:2.000   1st Qu.:2.000  
 Median :2.000   Median :3.000   Median :3.000  
 Mean   :2.766   Mean   :3.191   Mean   :3.191  
 3rd Qu.:3.500   3rd Qu.:4.500   3rd Qu.:4.000  
 Max.   :5.000   Max.   :5.000   Max.   :5.000  
     ítem 4          ítem 5          ítem 6     
 Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:3.000   1st Qu.:2.500  
 Median :2.000   Median :4.000   Median :3.000  
 Mean   :2.362   Mean   :3.532   Mean   :3.277  
 3rd Qu.:3.000   3rd Qu.:5.000   3rd Qu.:4.000  
 Max.   :5.000   Max.   :5.000   Max.   :5.000  
     ítem 7          ítem 8          ítem 9     
 Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:3.000   1st Qu.:1.000  
 Median :2.000   Median :4.000   Median :3.000  
 Mean   :2.362   Mean   :3.489   Mean   :3.043  
 3rd Qu.:4.000   3rd Qu.:5.000   3rd Qu.:4.000  
 Max.   :5.000   Max.   :5.000   Max.   :5.000  
    ítem 10         ítem 11         ítem 12     
 Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
 Median :3.000   Median :1.000   Median :2.000  
 Mean   :2.766   Mean   :2.191   Mean   :2.213  
 3rd Qu.:4.000   3rd Qu.:3.500   3rd Qu.:3.000  
 Max.   :5.000   Max.   :5.000   Max.   :5.000  
    ítem 13         ítem 14         ítem 15     
 Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:2.000   1st Qu.:2.500   1st Qu.:3.000  
 Median :3.000   Median :3.000   Median :4.000  
 Mean   :3.149   Mean   :3.277   Mean   :3.957  
 3rd Qu.:5.000   3rd Qu.:4.000   3rd Qu.:5.000  
 Max.   :5.000   Max.   :5.000   Max.   :5.000  
    ítem 16         ítem 17         ítem 18        ítem 19     
 Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   :1.000  
 1st Qu.:3.000   1st Qu.:1.000   1st Qu.:3.00   1st Qu.:3.000  
 Median :4.000   Median :3.000   Median :3.00   Median :4.000  
 Mean   :3.681   Mean   :2.681   Mean   :3.34   Mean   :3.383  
 3rd Qu.:5.000   3rd Qu.:4.000   3rd Qu.:4.50   3rd Qu.:4.000  
 Max.   :5.000   Max.   :5.000   Max.   :5.00   Max.   :5.000  
    ítem 20     
 Min.   :1.000  
 1st Qu.:4.000  
 Median :5.000  
 Mean   :4.085  
 3rd Qu.:5.000  
 Max.   :5.000  

Correlación

correl=cor(psico1,use="pairwise.complete.obs") 
correl
             ítem 1      ítem 2      ítem 3      ítem 4
ítem 1   1.00000000  0.28250081 -0.16161961 -0.06468315
ítem 2   0.28250081  1.00000000 -0.31123753 -0.25676566
ítem 3  -0.16161961 -0.31123753  1.00000000  0.39174702
ítem 4  -0.06468315 -0.25676566  0.39174702  1.00000000
ítem 5   0.03172092 -0.31675083  0.42860832  0.25146523
ítem 6  -0.06445497 -0.27352415  0.28037798  0.23421483
ítem 7  -0.19235293 -0.51865873  0.46774764  0.45028794
ítem 8  -0.18962880 -0.37650746  0.21868089  0.48126201
ítem 9  -0.06148621 -0.39204591  0.40053863  0.32036000
ítem 10  0.01524391  0.03932827 -0.09110778 -0.27394498
ítem 11 -0.10533504 -0.28347341  0.29814071  0.40513355
ítem 12  0.00441277 -0.18476470  0.28666772  0.31116545
ítem 13 -0.09292011 -0.16263144  0.43284819  0.13640498
ítem 14 -0.18146979 -0.34339174  0.36756547  0.09341359
ítem 15 -0.35001967 -0.25975427  0.42358650  0.14912834
ítem 16 -0.01979372 -0.37702670  0.43772944  0.32798381
ítem 17 -0.31435466 -0.61534639  0.30510578  0.33102365
ítem 18 -0.14714887 -0.14125715  0.28726173  0.11857813
ítem 19 -0.30418247 -0.22865441  0.30213902  0.15111306
ítem 20 -0.15461334 -0.16949212  0.23615117  0.19624416
             ítem 5      ítem 6      ítem 7      ítem 8
ítem 1   0.03172092 -0.06445497 -0.19235293 -0.18962880
ítem 2  -0.31675083 -0.27352415 -0.51865873 -0.37650746
ítem 3   0.42860832  0.28037798  0.46774764  0.21868089
ítem 4   0.25146523  0.23421483  0.45028794  0.48126201
ítem 5   1.00000000  0.69743310  0.36265056  0.24010465
ítem 6   0.69743310  1.00000000  0.39557982  0.38206345
ítem 7   0.36265056  0.39557982  1.00000000  0.43051390
ítem 8   0.24010465  0.38206345  0.43051390  1.00000000
ítem 9   0.64206749  0.62341674  0.46491457  0.41899885
ítem 10  0.02592410 -0.12705582 -0.27060180 -0.11256565
ítem 11  0.19349141  0.37084159  0.46128692  0.37102819
ítem 12  0.37123557  0.28638113  0.45873327  0.32266896
ítem 13  0.29553701  0.33196794  0.24899758  0.12752636
ítem 14  0.34365928  0.19901045  0.28952020  0.04690083
ítem 15  0.30551686  0.42651579  0.06002515  0.16957512
ítem 16  0.52341418  0.50971062  0.32520469  0.25125622
ítem 17  0.29127938  0.33096248  0.36749254  0.23044281
ítem 18  0.29447469  0.16335241  0.19423467  0.20960360
ítem 19  0.26659160  0.07301102  0.23264130  0.16237130
ítem 20  0.22746275  0.25334500  0.16260467  0.30551058
             ítem 9     ítem 10     ítem 11      ítem 12
ítem 1  -0.06148621  0.01524391 -0.10533504  0.004412770
ítem 2  -0.39204591  0.03932827 -0.28347341 -0.184764704
ítem 3   0.40053863 -0.09110778  0.29814071  0.286667715
ítem 4   0.32036000 -0.27394498  0.40513355  0.311165449
ítem 5   0.64206749  0.02592410  0.19349141  0.371235567
ítem 6   0.62341674 -0.12705582  0.37084159  0.286381131
ítem 7   0.46491457 -0.27060180  0.46128692  0.458733274
ítem 8   0.41899885 -0.11256565  0.37102819  0.322668963
ítem 9   1.00000000 -0.11383543  0.49918994  0.402724349
ítem 10 -0.11383543  1.00000000 -0.05704717 -0.049362048
ítem 11  0.49918994 -0.05704717  1.00000000  0.564199405
ítem 12  0.40272435 -0.04936205  0.56419940  1.000000000
ítem 13  0.25205865 -0.02144855 -0.01348313 -0.005387318
ítem 14  0.10433360 -0.23331247 -0.04106551  0.131817535
ítem 15  0.34519120 -0.26059217  0.23102137  0.176331718
ítem 16  0.43005659 -0.12326054  0.46104199  0.288058686
ítem 17  0.42357250 -0.05146108  0.40206181  0.319127979
ítem 18  0.39223836  0.10411768  0.22409087  0.266749881
ítem 19  0.17693203  0.19388864  0.17951963  0.335888488
ítem 20  0.27031833 -0.25204860  0.09552296  0.052677620
             ítem 13     ítem 14     ítem 15     ítem 16
ítem 1  -0.092920110 -0.18146979 -0.35001967 -0.01979372
ítem 2  -0.162631439 -0.34339174 -0.25975427 -0.37702670
ítem 3   0.432848189  0.36756547  0.42358650  0.43772944
ítem 4   0.136404983  0.09341359  0.14912834  0.32798381
ítem 5   0.295537006  0.34365928  0.30551686  0.52341418
ítem 6   0.331967940  0.19901045  0.42651579  0.50971062
ítem 7   0.248997583  0.28952020  0.06002515  0.32520469
ítem 8   0.127526358  0.04690083  0.16957512  0.25125622
ítem 9   0.252058651  0.10433360  0.34519120  0.43005659
ítem 10 -0.021448549 -0.23331247 -0.26059217 -0.12326054
ítem 11 -0.013483126 -0.04106551  0.23102137  0.46104199
ítem 12 -0.005387318  0.13181754  0.17633172  0.28805869
ítem 13  1.000000000  0.51968371  0.36116751  0.18065379
ítem 14  0.519683710  1.00000000  0.41103607  0.24931498
ítem 15  0.361167514  0.41103607  1.00000000  0.27084702
ítem 16  0.180653789  0.24931498  0.27084702  1.00000000
ítem 17  0.206065561  0.28554573  0.38584812  0.39148290
ítem 18  0.295537135  0.04643520  0.27521186  0.10612840
ítem 19  0.376797467  0.21841433  0.13529986  0.04021932
ítem 20  0.385363636  0.31701995  0.33829571  0.19606214
            ítem 17    ítem 18     ítem 19     ítem 20
ítem 1  -0.31435466 -0.1471489 -0.30418247 -0.15461334
ítem 2  -0.61534639 -0.1412571 -0.22865441 -0.16949212
ítem 3   0.30510578  0.2872617  0.30213902  0.23615117
ítem 4   0.33102365  0.1185781  0.15111306  0.19624416
ítem 5   0.29127938  0.2944747  0.26659160  0.22746275
ítem 6   0.33096248  0.1633524  0.07301102  0.25334500
ítem 7   0.36749254  0.1942347  0.23264130  0.16260467
ítem 8   0.23044281  0.2096036  0.16237130  0.30551058
ítem 9   0.42357250  0.3922384  0.17693203  0.27031833
ítem 10 -0.05146108  0.1041177  0.19388864 -0.25204860
ítem 11  0.40206181  0.2240909  0.17951963  0.09552296
ítem 12  0.31912798  0.2667499  0.33588849  0.05267762
ítem 13  0.20606556  0.2955371  0.37679747  0.38536364
ítem 14  0.28554573  0.0464352  0.21841433  0.31701995
ítem 15  0.38584812  0.2752119  0.13529986  0.33829571
ítem 16  0.39148290  0.1061284  0.04021932  0.19606214
ítem 17  1.00000000  0.1268030  0.27787420  0.18217260
ítem 18  0.12680298  1.0000000  0.64145451  0.20025752
ítem 19  0.27787420  0.6414545  1.00000000  0.16437230
ítem 20  0.18217260  0.2002575  0.16437230  1.00000000

La prueba de esfericidad de Bartlett plantea a la hipótesis nula de que la matriz de correlaciones es una matriz identidad, en tal caso caso no existirían correlaciones significativas entre las variables y el modelo factorial no sería pertinente.

##(Se cargan, psych y ejecutamos cortest.bartlett a los datos)

library(psych)
cortest.bartlett(psico1)
R was not square, finding R from data
$chisq
[1] 399.0146

$p.value
[1] 6.137337e-17

$df
[1] 190

Por consiguiente procedemos al análisis

##Análisis factorial (confactanal)

psico1.fa <-factanal(psico1, factors=5)
psico1.fa

Call:
factanal(x = psico1, factors = 5)

Uniquenesses:
 ítem 1  ítem 2  ítem 3  ítem 4  ítem 5  ítem 6  ítem 7  ítem 8 
  0.731   0.605   0.570   0.666   0.005   0.379   0.276   0.676 
 ítem 9 ítem 10 ítem 11 ítem 12 ítem 13 ítem 14 ítem 15 ítem 16 
  0.361   0.744   0.301   0.571   0.590   0.374   0.005   0.572 
ítem 17 ítem 18 ítem 19 ítem 20 
  0.611   0.500   0.005   0.804 

Loadings:
        Factor1 Factor2 Factor3 Factor4 Factor5
ítem 1  -0.162   0.170  -0.295  -0.200  -0.295 
ítem 2  -0.470  -0.141  -0.390                 
ítem 3   0.359   0.260   0.433   0.129   0.173 
ítem 4   0.542   0.129   0.150                 
ítem 5   0.164   0.923   0.270   0.198         
ítem 6   0.344   0.664   0.159           0.189 
ítem 7   0.735   0.145   0.352          -0.197 
ítem 8   0.540   0.134                         
ítem 9   0.522   0.576           0.101   0.149 
ítem 10 -0.204          -0.258   0.329  -0.191 
ítem 11  0.765   0.117  -0.170   0.119   0.239 
ítem 12  0.534   0.254           0.274         
ítem 13          0.106   0.585   0.206   0.102 
ítem 14          0.152   0.773                 
ítem 15          0.261   0.400           0.872 
ítem 16  0.422   0.466   0.154                 
ítem 17  0.467   0.137   0.295   0.125   0.222 
ítem 18  0.184   0.138           0.634   0.191 
ítem 19  0.172           0.311   0.931         
ítem 20  0.142   0.122   0.359           0.174 

               Factor1 Factor2 Factor3 Factor4 Factor5
SS loadings      3.319   2.251   2.222   1.642   1.221
Proportion Var   0.166   0.113   0.111   0.082   0.061
Cumulative Var   0.166   0.278   0.390   0.472   0.533

Test of the hypothesis that 5 factors are sufficient.
The chi square statistic is 87.23 on 100 degrees of freedom.
The p-value is 0.815 

#DESCRIPCIÓN

Se muestra en el resultado del análisis factorial los 20 ítems. Se muestran los resultaados para cada uno de los 5 factores.

Para el Factor1 los ítems con los valores más altos (mayores a 0.4) son: 4, 7, 8, 9, 11, 12, 16 y 17.

Para el Factor2 los ítems con los valores más altos son: 5, 6, 9 y 16.

Los ítems con los valores más altos en el Factor3: 3, 13, 14 y 15.

En el Factor4: 18 y 19.

En el Factor5: el 15.

La estabilidad nos permite evidenciar que la cantidad de estos ítems con valores más altos coincide con el total de ítems de la encuesta: 20.

Revisamos la varianza acumulada con relación a los factores.

Se observa que con un solo factor (Factor1) la varianza acumulada es muy baja (0.166). Lo mismo con sólo dos factores (hasta el Factor2 la varianza acumulada es 0.278).

Pero con los 5 facores la varianza acumulada llega 0.533.

En contraste se observa el siguiente análisis que considera sólo un factor:

psico1.fa <-factanal(psico1, factors=1)
psico1.fa

Call:
factanal(x = psico1, factors = 1)

Uniquenesses:
 ítem 1  ítem 2  ítem 3  ítem 4  ítem 5  ítem 6  ítem 7  ítem 8 
  0.951   0.676   0.627   0.748   0.527   0.531   0.576   0.729 
 ítem 9 ítem 10 ítem 11 ítem 12 ítem 13 ítem 14 ítem 15 ítem 16 
  0.430   0.970   0.676   0.726   0.830   0.850   0.756   0.620 
ítem 17 ítem 18 ítem 19 ítem 20 
  0.651   0.844   0.868   0.859 

Loadings:
        Factor1
ítem 1  -0.221 
ítem 2  -0.569 
ítem 3   0.610 
ítem 4   0.502 
ítem 5   0.688 
ítem 6   0.685 
ítem 7   0.651 
ítem 8   0.520 
ítem 9   0.755 
ítem 10 -0.174 
ítem 11  0.570 
ítem 12  0.524 
ítem 13  0.412 
ítem 14  0.388 
ítem 15  0.494 
ítem 16  0.616 
ítem 17  0.590 
ítem 18  0.395 
ítem 19  0.364 
ítem 20  0.375 

               Factor1
SS loadings      5.555
Proportion Var   0.278

Test of the hypothesis that 1 factor is sufficient.
The chi square statistic is 216.92 on 170 degrees of freedom.
The p-value is 0.00871 

Con un factor el p valor es inferior a 0.05.

Prueba de la hipótesis de que con un factor essuficiente.

Consideraremos el análisis con la librería psych, calculando el gráfico de autovalor para el criterio de contraste de caida.

fa.parallel(psico1)
Parallel analysis suggests that the number of factors =  1  and the number of components =  1 

El análisis paralelo sugiere que el número de factores = 1 y el número de componentes = 2

psico2 <- fa(psico1, fm="minres", nfactors=1, rotate="varimax")
psico2

Análisis factorial usando método = minres

Llamar: fa (r = psico1, nfactors = 1, rotate = “varimax”, fm = “minres”)

Cargas estandarizadas (matriz de patrón) basadas en la matriz de correlación

MR1

SS loadings 5.58

Proportion Var 0.28

Complejidad media del ítem = 1

Prueba de la hipótesis de que 1 factor es suficiente.

Los grados de libertad para el modelo nulo son 190 y la función objetivo fue 10,36 con Chi cuadrado de 399,01

Los grados de libertad del modelo son 170 y la función objetivo fue 5,74

La raíz cuadrada media de los residuos (RMSR) es 0,12

La raíz cuadrada media corregida gl de los residuos es 0.12

El número armónico de observaciones es 47 con el chi cuadrado empírico 240,91 con problema <0,00028

El número total de observaciones fue 47 con probabilidad Chi cuadrado = 217,34 con prob <0,0083

Índice de Tucker Lewis de fiabilidad de factorización = 0,738

Índice RMSEA = 0.074 y los intervalos de confianza del 90% son 0.042 0.107

BIC = -437,18

Ajuste basado en valores fuera de la diagonal = 0,85

Medidas de adecuación de la puntuación de los factores

MR1

Correlación de las puntuaciones (de regresión) con factores 0,95

Múltiple R cuadrado de puntuaciones con factores 0,90

Correlación mínima de posibles puntuaciones factoriales 0,79

> psico2 <- fa (psico1, fm = “minres”, nfactors = 1, rotate = “varimax”)

> psico2

Análisis factorial usando método = minres

Llamar: fa (r = psico1, nfactors = 1, rotate = “varimax”, fm = “minres”)

Cargas estandarizadas (matriz de patrón) basadas en la matriz de correlación

MR1

Cargas SS 5.58

Proporción Var 0.28

Complejidad media del ítem = 1

Prueba de la hipótesis de que 1 factor es suficiente.

Los grados de libertad para el modelo nulo son 190 y la función objetivo fue 10,36 con Chi cuadrado de 399,01

Los grados de libertad del modelo son 170 y la función objetivo fue 5,74

La raíz cuadrada media de los residuos (RMSR) es 0,12

La raíz cuadrada media corregida gl de los residuos es 0.12

El número armónico de observaciones es 47 con el chi cuadrado empírico 240,91 con problema <0,00028

El número total de observaciones fue 47 con probabilidad Chi cuadrado = 217,34 con prob <0,0083

Índice de Tucker Lewis de fiabilidad de factorización = 0,738

Índice RMSEA = 0.074 y los intervalos de confianza del 90% son 0.042 0.107

BIC = -437,18

Ajuste basado en valores fuera de la diagonal = 0,85

Medidas de adecuación de la puntuación de los factores

##Correlación de las puntuaciones (de regresión) con factores 0,95 ## Múltiple R cuadrado de puntuaciones con factores 0,90 ## Correlación mínima de posibles puntuaciones factoriales 0,79 ## > imprimir (psico2) ## Análisis factorial usando método = minres ## Llamar: fa (r = psico1, nfactors = 1, rotate = “varimax”, fm = “minres”) ## Cargas estandarizadas (matriz de patrón) basadas en la matriz de correlación

MR1

Cargas SS 5.58

Proporción Var 0.28

Complejidad media del ítem = 1

Prueba de la hipótesis de que 1 factor es suficiente.

Los grados de libertad para el modelo nulo son 190 y la función objetivo fue 10,36 con Chi cuadrado de 399,01

Los grados de libertad del modelo son 170 y la función objetivo fue 5,74

La raíz cuadrada media de los residuos (RMSR) es 0,12

La raíz cuadrada media corregida gl de los residuos es 0.12

El número armónico de observaciones es 47 con el chi cuadrado empírico 240,91 con problema <0,00028

El número total de observaciones fue 47 con probabilidad Chi cuadrado = 217,34 con prob <0,0083

Índice de Tucker Lewis de fiabilidad de factorización = 0,738

Índice RMSEA = 0.074 y los intervalos de confianza del 90% son 0.042 0.107

BIC = -437,18

Ajuste basado en valores fuera de la diagonal = 0,85

Medidas de adecuación de la puntuación de los factores

MR1

Correlación de las puntuaciones (de regresión) con factores 0,95

Múltiple R cuadrado de puntuaciones con factores 0,90

Correlación mínima de posibles puntuaciones factoriales 0,79

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICB3b3JkX2RvY3VtZW50OiBkZWZhdWx0CiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0CiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAotLS0KCiMgQU7DgUxJU0lTIEZBQ1RPUklBTAoKIyMgU2UgcmVhbGl6YSBlbCBhbsOhbGlzaXMgZW4gYXByb3hpbWFjacOzbiBhIGxvcyBkYXRvcyBkZSB1biBlc3R1ZGlvIHF1ZSBlc3RveSByZWFsaXphbmRvIHNvYnJlIGFjdGl0dWRlcyBkZSBqw7N2ZW5lcyBlbiBzdSBlbnRvcm5vIHNvY2lhbC4gUGFyYSBsYSBwcmVzZW50ZSB0YXJlYSBzZSBlc3R1ZGlhIHVuYSBkZSBsYXMgbXVlc3RyYXMgcXVlIGNvbnN0YSBkZSA0NyBwYXJ0aWNpcGFudGVzIGN1eWFzIGFjdGl0dWRlcyBmdWVyb24gbWVkaWRhcyBhIHRyYXbDqXMgZGUgdW5hIGVuY3Vlc3RhIGRlIDIwIMOtdGVtcywgY2FkYSDDrXRlbSBjb24gcHVudHVhY2nDs24gZW50cmUgMSB5IDUuIExhIGJhc2UgZGUgZGF0b3MgbGEgaGUgbGxhbWFkbyBWQVJJQUJMRVNfUFNJQ09Mw5NHSUNBUy4KIyMgRWwgZXN0dWRpbyBkZWwgZmVuw7NtZW5vIGhhIGNvbnNpZGVyYWRvIHF1ZSB2YXJpYWJsZXMgc3VieWFjZW50ZXMgZXN0YXLDrWFuIGluZmx1eWVuZG8gZW4gbGFzIGFjdGl0dWRlcyBkZSBsb3MgasOzdmVuZXMuIAoKIyMgTG9zIHNpZ3VpZW50ZXMgc29uIGxvcyBkYXRvczoKCgpgYGB7cn0KVkFSSUFCTEVTX1BTSUNPTE9HSUNBUwpgYGAKCgojIyBBIGNvbnRpbnVhY2nDs24gc2UgcHJlc2VudGEgZWwgc3VtbWFyeSB5IGxhIGNvcnJlbGFjacOzbiBkZSBsb3MgZGF0b3MKIyMgUHJldmlvIGFsIGFuw6FsaXNpcyBmYWN0b3JpYWwgYXNpZ25hbW9zIGEgbGEgdmFyaWFibGUgcHNpY28xLiBMdWVnbyB1dGlsaXphbW9zIGVsIGZhY3RhbmFsLCBjb25zaWRlcmFuZG8gZWwgVkFSSU1BWC4gCiMjIFRvbWEgY29uIDUgZmFjdG9yZXMgcGFyYSBlc3RlIGVzdHVkaW8gKHJlZmVyZW50ZXMgdGXDs3JpY29zKS4KCgpgYGB7cn0KcHNpY28xIDwtVkFSSUFCTEVTX1BTSUNPTE9HSUNBUwpwc2ljbzEKYGBgCgoKYGBge3J9CnN1bW1hcnkocHNpY28xKQpgYGAKCiMjIENvcnJlbGFjacOzbgoKYGBge3J9CmNvcnJlbD1jb3IocHNpY28xLHVzZT0icGFpcndpc2UuY29tcGxldGUub2JzIikgCmNvcnJlbApgYGAKCiMjIExhIHBydWViYSBkZSBlc2ZlcmljaWRhZCBkZSBCYXJ0bGV0dCBwbGFudGVhIGEgbGEgaGlww7N0ZXNpcyBudWxhIGRlIHF1ZSBsYSBtYXRyaXogZGUgY29ycmVsYWNpb25lcyBlcyB1bmEgbWF0cml6IGlkZW50aWRhZCwgZW4gdGFsIGNhc28gY2FzbyBubyBleGlzdGlyw61hbiBjb3JyZWxhY2lvbmVzIHNpZ25pZmljYXRpdmFzIGVudHJlIGxhcyB2YXJpYWJsZXMgeSBlbCBtb2RlbG8gZmFjdG9yaWFsIG5vIHNlcsOtYSBwZXJ0aW5lbnRlLgojIyhTZSBjYXJnYW4sIHBzeWNoIHkgZWplY3V0YW1vcyBjb3J0ZXN0LmJhcnRsZXR0IGEgbG9zIGRhdG9zKQoKYGBge3J9CmxpYnJhcnkocHN5Y2gpCmNvcnRlc3QuYmFydGxldHQocHNpY28xKQpgYGAKIyMgUG9yIGNvbnNpZ3VpZW50ZSBwcm9jZWRlbW9zIGFsIGFuw6FsaXNpcwoKIyNBbsOhbGlzaXMgZmFjdG9yaWFsIChjb25mYWN0YW5hbCkKCmBgYHtyfQpwc2ljbzEuZmEgPC1mYWN0YW5hbChwc2ljbzEsIGZhY3RvcnM9NSkKcHNpY28xLmZhCmBgYAoKI0RFU0NSSVBDScOTTgoKIyMgU2UgbXVlc3RyYSBlbiBlbCByZXN1bHRhZG8gZGVsIGFuw6FsaXNpcyBmYWN0b3JpYWwgbG9zIDIwIMOtdGVtcy4gU2UgbXVlc3RyYW4gbG9zIHJlc3VsdGFhZG9zIHBhcmEgY2FkYSB1bm8gZGUgbG9zIDUgZmFjdG9yZXMuCgojIyBQYXJhIGVsIEZhY3RvcjEgbG9zIMOtdGVtcyBjb24gbG9zIHZhbG9yZXMgbcOhcyBhbHRvcyAobWF5b3JlcyBhIDAuNCkgc29uOiA0LCA3LCA4LCA5LCAxMSwgMTIsIDE2IHkgMTcuICAgCgojIyBQYXJhIGVsIEZhY3RvcjIgbG9zIMOtdGVtcyBjb24gbG9zIHZhbG9yZXMgbcOhcyBhbHRvcyBzb246IDUsIDYsIDkgeSAxNi4KCiMjIExvcyDDrXRlbXMgY29uIGxvcyB2YWxvcmVzIG3DoXMgYWx0b3MgZW4gZWwgRmFjdG9yMzogMywgMTMsIDE0IHkgMTUuCgojIyBFbiBlbCBGYWN0b3I0OiAxOCB5IDE5LgoKIyMgRW4gZWwgRmFjdG9yNTogZWwgMTUuCgojIyBMYSBlc3RhYmlsaWRhZCBub3MgcGVybWl0ZSBldmlkZW5jaWFyIHF1ZSBsYSBjYW50aWRhZCBkZSBlc3RvcyDDrXRlbXMgY29uIHZhbG9yZXMgbcOhcyBhbHRvcyBjb2luY2lkZSBjb24gZWwgdG90YWwgZGUgw610ZW1zIGRlIGxhIGVuY3Vlc3RhOiAyMC4KCiMgUmV2aXNhbW9zIGxhIHZhcmlhbnphIGFjdW11bGFkYSBjb24gcmVsYWNpw7NuIGEgbG9zIGZhY3RvcmVzLiAKIyMgU2Ugb2JzZXJ2YSBxdWUgY29uIHVuIHNvbG8gZmFjdG9yIChGYWN0b3IxKSBsYSB2YXJpYW56YSBhY3VtdWxhZGEgZXMgbXV5IGJhamEgKDAuMTY2KS4gTG8gbWlzbW8gY29uIHPDs2xvIGRvcyBmYWN0b3JlcyAoaGFzdGEgZWwgRmFjdG9yMiBsYSB2YXJpYW56YSBhY3VtdWxhZGEgZXMgMC4yNzgpLgojIyBQZXJvIGNvbiBsb3MgNSBmYWNvcmVzIGxhIHZhcmlhbnphIGFjdW11bGFkYSBsbGVnYSAwLjUzMy4KCiMjIEVuIGNvbnRyYXN0ZSBzZSBvYnNlcnZhIGVsIHNpZ3VpZW50ZSBhbsOhbGlzaXMgcXVlIGNvbnNpZGVyYSBzw7NsbyB1biBmYWN0b3I6CgoKYGBge3J9CnBzaWNvMS5mYSA8LWZhY3RhbmFsKHBzaWNvMSwgZmFjdG9ycz0xKQpwc2ljbzEuZmEKYGBgCgojIyBDb24gdW4gZmFjdG9yIGVsIHAgdmFsb3IgZXMgaW5mZXJpb3IgYSAwLjA1LgojIyBQcnVlYmEgZGUgbGEgaGlww7N0ZXNpcyBkZSBxdWUgY29uIHVuIGZhY3RvciBlc3N1ZmljaWVudGUuCgoKIyMgQ29uc2lkZXJhcmVtb3MgZWwgYW7DoWxpc2lzIGNvbiBsYSBsaWJyZXLDrWEgcHN5Y2gsIGNhbGN1bGFuZG8gZWwgIGdyw6FmaWNvIGRlIGF1dG92YWxvciBwYXJhIGVsIGNyaXRlcmlvIGRlIGNvbnRyYXN0ZSBkZSBjYWlkYS4KCmBgYHtyfQpmYS5wYXJhbGxlbChwc2ljbzEpCmBgYAoKIyMgRWwgYW7DoWxpc2lzIHBhcmFsZWxvIHN1Z2llcmUgcXVlIGVsIG7Dum1lcm8gZGUgZmFjdG9yZXMgPSAxIHkgZWwgbsO6bWVybyBkZSBjb21wb25lbnRlcyA9IDIKCgpgYGB7cn0KcHNpY28yIDwtIGZhKHBzaWNvMSwgZm09Im1pbnJlcyIsIG5mYWN0b3JzPTEsIHJvdGF0ZT0idmFyaW1heCIpCnBzaWNvMgpgYGAKCiMjIEFuw6FsaXNpcyBmYWN0b3JpYWwgdXNhbmRvIG3DqXRvZG8gPSBtaW5yZXMKIyMgTGxhbWFyOiBmYSAociA9IHBzaWNvMSwgbmZhY3RvcnMgPSAxLCByb3RhdGUgPSAidmFyaW1heCIsIGZtID0gIm1pbnJlcyIpCiMjIENhcmdhcyBlc3RhbmRhcml6YWRhcyAobWF0cml6IGRlIHBhdHLDs24pIGJhc2FkYXMgZW4gbGEgbWF0cml6IGRlIGNvcnJlbGFjacOzbgoKIyMgICAgICAgICAgICAgICAgIE1SMQojIyBTUyBsb2FkaW5ncyAgICA1LjU4CiMjIFByb3BvcnRpb24gVmFyIDAuMjgKCiMjIENvbXBsZWppZGFkIG1lZGlhIGRlbCDDrXRlbSA9IDEKCiMjIFBydWViYSBkZSBsYSBoaXDDs3Rlc2lzIGRlIHF1ZSAxIGZhY3RvciBlcyBzdWZpY2llbnRlLgojIyBMb3MgZ3JhZG9zIGRlIGxpYmVydGFkIHBhcmEgZWwgbW9kZWxvIG51bG8gc29uIDE5MCB5IGxhIGZ1bmNpw7NuIG9iamV0aXZvIGZ1ZSAxMCwzNiBjb24gQ2hpIGN1YWRyYWRvIGRlIDM5OSwwMQojIyBMb3MgZ3JhZG9zIGRlIGxpYmVydGFkIGRlbCBtb2RlbG8gc29uIDE3MCB5IGxhIGZ1bmNpw7NuIG9iamV0aXZvIGZ1ZSA1LDc0CgojIyBMYSByYcOteiBjdWFkcmFkYSBtZWRpYSBkZSBsb3MgcmVzaWR1b3MgKFJNU1IpIGVzIDAsMTIKIyMgTGEgcmHDrXogY3VhZHJhZGEgbWVkaWEgY29ycmVnaWRhIGdsIGRlIGxvcyByZXNpZHVvcyBlcyAwLjEyCgojIyBFbCBuw7ptZXJvIGFybcOzbmljbyBkZSBvYnNlcnZhY2lvbmVzIGVzIDQ3IGNvbiBlbCBjaGkgY3VhZHJhZG8gZW1ww61yaWNvIDI0MCw5MSBjb24gcHJvYmxlbWEgPDAsMDAwMjgKIyMgRWwgbsO6bWVybyB0b3RhbCBkZSBvYnNlcnZhY2lvbmVzIGZ1ZSA0NyBjb24gcHJvYmFiaWxpZGFkIENoaSBjdWFkcmFkbyA9IDIxNywzNCBjb24gcHJvYiA8MCwwMDgzCgojIyDDjW5kaWNlIGRlIFR1Y2tlciBMZXdpcyBkZSBmaWFiaWxpZGFkIGRlIGZhY3Rvcml6YWNpw7NuID0gMCw3MzgKIyMgw41uZGljZSBSTVNFQSA9IDAuMDc0IHkgbG9zIGludGVydmFsb3MgZGUgY29uZmlhbnphIGRlbCA5MCUgc29uIDAuMDQyIDAuMTA3CiMjIEJJQyA9IC00MzcsMTgKCiMjIEFqdXN0ZSBiYXNhZG8gZW4gdmFsb3JlcyBmdWVyYSBkZSBsYSBkaWFnb25hbCA9IDAsODUKIyMgTWVkaWRhcyBkZSBhZGVjdWFjacOzbiBkZSBsYSBwdW50dWFjacOzbiBkZSBsb3MgZmFjdG9yZXMKCiMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUjEKIyMgQ29ycmVsYWNpw7NuIGRlIGxhcyBwdW50dWFjaW9uZXMgKGRlIHJlZ3Jlc2nDs24pIGNvbiBmYWN0b3JlcyAwLDk1CiMjIE3Dumx0aXBsZSBSIGN1YWRyYWRvIGRlIHB1bnR1YWNpb25lcyBjb24gZmFjdG9yZXMgICAgICAgICAgICAwLDkwCiMjIENvcnJlbGFjacOzbiBtw61uaW1hIGRlIHBvc2libGVzIHB1bnR1YWNpb25lcyBmYWN0b3JpYWxlcyAgICAgMCw3OQoKIyMgPiBwc2ljbzIgPC0gZmEgKHBzaWNvMSwgZm0gPSAibWlucmVzIiwgbmZhY3RvcnMgPSAxLCByb3RhdGUgPSAidmFyaW1heCIpCiMjID4gcHNpY28yCiMjIEFuw6FsaXNpcyBmYWN0b3JpYWwgdXNhbmRvIG3DqXRvZG8gPSBtaW5yZXMKIyMgTGxhbWFyOiBmYSAociA9IHBzaWNvMSwgbmZhY3RvcnMgPSAxLCByb3RhdGUgPSAidmFyaW1heCIsIGZtID0gIm1pbnJlcyIpCiMjIENhcmdhcyBlc3RhbmRhcml6YWRhcyAobWF0cml6IGRlIHBhdHLDs24pIGJhc2FkYXMgZW4gbGEgbWF0cml6IGRlIGNvcnJlbGFjacOzbgoKIyMgICAgICAgICAgICAgICAgIE1SMQojIyBDYXJnYXMgU1MgICAgICA1LjU4CiMjIFByb3BvcmNpw7NuIFZhciAwLjI4CgojIyBDb21wbGVqaWRhZCBtZWRpYSBkZWwgw610ZW0gPSAxCiMjIFBydWViYSBkZSBsYSBoaXDDs3Rlc2lzIGRlIHF1ZSAxIGZhY3RvciBlcyBzdWZpY2llbnRlLgoKIyMgTG9zIGdyYWRvcyBkZSBsaWJlcnRhZCBwYXJhIGVsIG1vZGVsbyBudWxvIHNvbiAxOTAgeSBsYSBmdW5jacOzbiBvYmpldGl2byBmdWUgMTAsMzYgY29uIENoaSBjdWFkcmFkbyBkZSAzOTksMDEKIyMgTG9zIGdyYWRvcyBkZSBsaWJlcnRhZCBkZWwgbW9kZWxvIHNvbiAxNzAgeSBsYSBmdW5jacOzbiBvYmpldGl2byBmdWUgNSw3NAoKIyMgTGEgcmHDrXogY3VhZHJhZGEgbWVkaWEgZGUgbG9zIHJlc2lkdW9zIChSTVNSKSBlcyAwLDEyCiMjIExhIHJhw616IGN1YWRyYWRhIG1lZGlhIGNvcnJlZ2lkYSBnbCBkZSBsb3MgcmVzaWR1b3MgZXMgMC4xMgoKIyMgRWwgbsO6bWVybyBhcm3Ds25pY28gZGUgb2JzZXJ2YWNpb25lcyBlcyA0NyBjb24gZWwgY2hpIGN1YWRyYWRvIGVtcMOtcmljbyAyNDAsOTEgY29uIHByb2JsZW1hIDwwLDAwMDI4CiMjIEVsIG7Dum1lcm8gdG90YWwgZGUgb2JzZXJ2YWNpb25lcyBmdWUgNDcgY29uIHByb2JhYmlsaWRhZCBDaGkgY3VhZHJhZG8gPSAyMTcsMzQgY29uIHByb2IgPDAsMDA4MwoKIyMgw41uZGljZSBkZSBUdWNrZXIgTGV3aXMgZGUgZmlhYmlsaWRhZCBkZSBmYWN0b3JpemFjacOzbiA9IDAsNzM4CiMjIMONbmRpY2UgUk1TRUEgPSAwLjA3NCB5IGxvcyBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YSBkZWwgOTAlIHNvbiAwLjA0MiAwLjEwNwojIyBCSUMgPSAtNDM3LDE4CiMjIEFqdXN0ZSBiYXNhZG8gZW4gdmFsb3JlcyBmdWVyYSBkZSBsYSBkaWFnb25hbCA9IDAsODUKIyMgTWVkaWRhcyBkZSBhZGVjdWFjacOzbiBkZSBsYSBwdW50dWFjacOzbiBkZSBsb3MgZmFjdG9yZXMKCiMjQ29ycmVsYWNpw7NuIGRlIGxhcyBwdW50dWFjaW9uZXMgKGRlIHJlZ3Jlc2nDs24pIGNvbiBmYWN0b3JlcyAwLDk1CiMjIE3Dumx0aXBsZSBSIGN1YWRyYWRvIGRlIHB1bnR1YWNpb25lcyBjb24gZmFjdG9yZXMgMCw5MAojIyBDb3JyZWxhY2nDs24gbcOtbmltYSBkZSBwb3NpYmxlcyBwdW50dWFjaW9uZXMgZmFjdG9yaWFsZXMgMCw3OQojIyA+IGltcHJpbWlyIChwc2ljbzIpCiMjIEFuw6FsaXNpcyBmYWN0b3JpYWwgdXNhbmRvIG3DqXRvZG8gPSBtaW5yZXMKIyMgTGxhbWFyOiBmYSAociA9IHBzaWNvMSwgbmZhY3RvcnMgPSAxLCByb3RhdGUgPSAidmFyaW1heCIsIGZtID0gIm1pbnJlcyIpCiMjIENhcmdhcyBlc3RhbmRhcml6YWRhcyAobWF0cml6IGRlIHBhdHLDs24pIGJhc2FkYXMgZW4gbGEgbWF0cml6IGRlIGNvcnJlbGFjacOzbgoKIyMgICAgICAgICAgICAgICAgIE1SMQojIyBDYXJnYXMgU1MgICAgICA1LjU4CiMjIFByb3BvcmNpw7NuIFZhciAwLjI4CgojIyBDb21wbGVqaWRhZCBtZWRpYSBkZWwgw610ZW0gPSAxCiMjIFBydWViYSBkZSBsYSBoaXDDs3Rlc2lzIGRlIHF1ZSAxIGZhY3RvciBlcyBzdWZpY2llbnRlLgoKIyMgTG9zIGdyYWRvcyBkZSBsaWJlcnRhZCBwYXJhIGVsIG1vZGVsbyBudWxvIHNvbiAxOTAgeSBsYSBmdW5jacOzbiBvYmpldGl2byBmdWUgMTAsMzYgY29uIENoaSBjdWFkcmFkbyBkZSAzOTksMDEKIyMgTG9zIGdyYWRvcyBkZSBsaWJlcnRhZCBkZWwgbW9kZWxvIHNvbiAxNzAgeSBsYSBmdW5jacOzbiBvYmpldGl2byBmdWUgNSw3NAoKIyMgTGEgcmHDrXogY3VhZHJhZGEgbWVkaWEgZGUgbG9zIHJlc2lkdW9zIChSTVNSKSBlcyAwLDEyCiMjIExhIHJhw616IGN1YWRyYWRhIG1lZGlhIGNvcnJlZ2lkYSBnbCBkZSBsb3MgcmVzaWR1b3MgZXMgMC4xMgoKIyMgRWwgbsO6bWVybyBhcm3Ds25pY28gZGUgb2JzZXJ2YWNpb25lcyBlcyA0NyBjb24gZWwgY2hpIGN1YWRyYWRvIGVtcMOtcmljbyAyNDAsOTEgY29uIHByb2JsZW1hIDwwLDAwMDI4CiMjIEVsIG7Dum1lcm8gdG90YWwgZGUgb2JzZXJ2YWNpb25lcyBmdWUgNDcgY29uIHByb2JhYmlsaWRhZCBDaGkgY3VhZHJhZG8gPSAyMTcsMzQgY29uIHByb2IgPDAsMDA4MwoKIyMgw41uZGljZSBkZSBUdWNrZXIgTGV3aXMgZGUgZmlhYmlsaWRhZCBkZSBmYWN0b3JpemFjacOzbiA9IDAsNzM4CiMjIMONbmRpY2UgUk1TRUEgPSAwLjA3NCB5IGxvcyBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YSBkZWwgOTAlIHNvbiAwLjA0MiAwLjEwNwojIyBCSUMgPSAtNDM3LDE4CiMjIEFqdXN0ZSBiYXNhZG8gZW4gdmFsb3JlcyBmdWVyYSBkZSBsYSBkaWFnb25hbCA9IDAsODUKIyMgTWVkaWRhcyBkZSBhZGVjdWFjacOzbiBkZSBsYSBwdW50dWFjacOzbiBkZSBsb3MgZmFjdG9yZXMKCiMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUjEKIyMgQ29ycmVsYWNpw7NuIGRlIGxhcyBwdW50dWFjaW9uZXMgKGRlIHJlZ3Jlc2nDs24pIGNvbiBmYWN0b3JlcyAwLDk1CiMjIE3Dumx0aXBsZSBSIGN1YWRyYWRvIGRlIHB1bnR1YWNpb25lcyBjb24gZmFjdG9yZXMgICAgICAgICAgICAwLDkwCiMjIENvcnJlbGFjacOzbiBtw61uaW1hIGRlIHBvc2libGVzIHB1bnR1YWNpb25lcyBmYWN0b3JpYWxlcyAgICAgMCw3OQoKCgo=