Basicamente buscamos analizar el maximo numero de factores con el mimo de datos , por ejemplo analizar valores como temperatura alta o termparatura baja, voltaje 1 o vojtaje 2, potencia p1 o p2 entonces este tipo de disños busca reducir el coste del experimiento
Diseño \({2^k}\): para el caso de nuestro laboratorio veremos la geometria de un cubo donde Diseño \({k=3}\):
Nuestras variables basicamente se representan en los nivels de los tres factores
Sabemos que representamos los factores con valores desde [-,+] para los factores
- FactorA (Gap)
- FactorB (Flow)
- FactorC (Power)
por consiguiete para construir el cubo definiremos nuestra matriz con los vertices que representan los valores que se utilizaran para generar cada cara del cubo
| 1 |
- |
- |
- |
I |
| 2 |
+ |
- |
- |
a |
| 3 |
- |
+ |
- |
b |
| 4 |
+ |
+ |
- |
ab |
| 5 |
- |
- |
+ |
c |
| 6 |
+ |
- |
+ |
ac |
| 7 |
- |
+ |
+ |
bc |
| 8 |
+ |
+ |
+ |
abc |
Ahora bien sabemos que existen por combinacion 7 posibles grados de libertad , esto implica que tendremos las siguiente posibilidades
2 Dos factores constantes 1 factor cambiante:
bajo esta estructura cada factor FACTOR (A,B,C) afectra las caras positivas(+) y Negativas (-) adjacentes al su lado(EDGE) esto quiere decir que tenemos 3 posibles formas de representar el efecto de un factor
1 factor constante 2 factores cambiantes:
bajo esta configuración vemos que podemos tambien afectar otras 3 posibles estructuras (los planos que afecten los vertices de los factores dinamicos o cambiantes) … recordemos que cada factor solo puede tener dos posibles valores (positivos y negativos)
0 factores constantes 3 factores cambiantes
Por ultimo en esta configuración vemos sabemos que los factores pueden afectar cualqueir vertice del cubo
Ahora bien sabemos que los edges se forman de la diferencia entre la parte alta menos la parte baja de un factor asi podemos definir la diferencia del factor como la diferencia entre ellos, la siguiente tabla muestra muestra los efectos en el cubo en realación a los signos \({2^k}\)
Efecto factorial: Note que 2 factores fijos y 1 cambiante se representa por (A,B,C), para 2 factores dinamicos(AB,AC, BC) por ultimo (ABC) los tres son dinamicos|
| I |
- |
- |
+ |
- |
+ |
+ |
- |
|
| a |
+ |
- |
- |
- |
- |
+ |
+ |
|
| b |
- |
+ |
- |
- |
+ |
- |
+ |
|
| ab |
+ |
+ |
+ |
- |
- |
- |
- |
|
| c |
- |
- |
+ |
+ |
- |
- |
+ |
|
| ac |
+ |
- |
- |
+ |
+ |
- |
- |
|
| bc |
- |
+ |
- |
+ |
- |
+ |
- |
|
| abc |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
| \[A=\frac{1}{4n}[a+ab+ac+abc-I-b-c-bc]\] |
-75.125 |
-37.56 |
| \[B=\frac{1}{4n}[b+ab+bc+abc-I-a-c-ac]\] |
9.215 |
4.60 |
| \[AB=\frac{1}{4n}[ab-a-b+I+abc-bc-ac+c]\] |
-25.875 |
-12.93 |
| \[C=\frac{1}{4n}[c+ac+bc+abc-I-a-b-ab]\] |
307.625 |
153.81 |
| \[AC=\frac{1}{4n}[I-a+b-ab-c+ac-bc+abc]\] |
-153.875 |
-76.93 |
| \[BC=\frac{1}{4n}[I+a-b-ab-c-ac-bc+abc]\] |
-28.62 |
-14.31 |
| \[ABC=\frac{1}{4n}[abc-bc-ac+c-ab+b+a-I]\] |
-29.875 |
-14.93 |
Bajo este concepto describiremos las lecturas de nuestras caracteristicas como
| - |
- |
- |
247 |
400 |
I=647 |
|
| + |
- |
- |
470 |
446 |
a=916 |
|
| - |
+ |
- |
429 |
405 |
b=834 |
|
| + |
+ |
- |
435 |
445 |
ab=830 |
|
| - |
- |
+ |
837 |
850 |
c=1687 |
|
| + |
- |
+ |
551 |
670 |
ac1221 |
|
| - |
+ |
+ |
775 |
865 |
bc=1640 |
|
| + |
+ |
+ |
660 |
530 |
abc=1190 |
|
Basado en estos datos Construiremos la suma de cuadrados para cada estructrua
\[SS=\frac{[contraste]^2}{2Samples*4n}\]
| \[A=[a+ab+ac+abc-I-b-c-bc]\] |
-601 |
22,575.1 |
| \[B=[b+ab+bc+abc-I-a-c-ac]\] |
73 |
333.1 |
| \[AB=[ab-a-b+I+abc-bc-ac+c]\] |
-207 |
2,678.1 |
| \[C=[c+ac+bc+abc-I-a-b-ab]\] |
2461 |
378,532.6 |
| \[AC=[I-a+b-ab-c+ac-bc+abc]\] |
-1231 |
94,710.1 |
| \[BC=[I+a-b-ab-c-ac-bc+abc]\] |
-229 |
3,277.6 |
| \[ABC=[abc-bc-ac+c-ab+b+a-I]\] |
239 |
3,507.1 |
Entocnes definiremos nuestro vector de caracteristicas basado en en la composición de la matriz de signos
lecturas<-
c(-1,-1,-1,
1, -1, -1,
-1, 1, -1,
1, 1,-1,
-1,-1,1,
1,-1,1,
-1,1,1,
1,1,1)
Como hay dos lecturas (incial y final, duplicaremos la estructura para la lectura final)
#lecturas <- matrix(lecturas,ncol=3,byrow=TRUE)
lecturas <- rbind(lecturas,lecturas)
Nuestras observaciones la variable a estimar estan definidas por la lectura de caracteristicas y los factores A,B,C estan dados por la matriz de signos
Creamos los factores basados en los experimentos
tabla$A<-as.factor(tabla$A)
tabla$B<-as.factor(tabla$B)
tabla$C<-as.factor(tabla$C)
Por ultimo generamos nuestra regresion lineal considerando los edges:
summary(fit)
Call:
lm(formula = Y ~ A + B + C + (A * B) + (A * C) + (B * C) + (A *
B * C), data = tabla)
Residuals:
Min 1Q Median 3Q Max
-76.50 -20.25 0.00 20.25 76.50
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 563.438 15.810 35.637 4.21e-10 ***
A -37.562 15.810 -2.376 0.04484 *
B 4.563 15.810 0.289 0.78024
C 153.812 15.810 9.729 1.04e-05 ***
A:B -12.937 15.810 -0.818 0.43688
A:C -76.938 15.810 -4.866 0.00125 **
B:C -14.312 15.810 -0.905 0.39177
A:B:C 14.937 15.810 0.945 0.37242
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Residual standard error: 63.24 on 8 degrees of freedom
Multiple R-squared: 0.9405, Adjusted R-squared: 0.8884
F-statistic: 18.06 on 7 and 8 DF, p-value: 0.0002605
Como podemos ver nuestro analicis aroja utilizar 3 betas que corresponden a A, C y AC
por consiguiente nuestra regrecion lineal seria \[Y=b_0+b_1A+b_2C+b_{13}AC\] \[Y=563.43-37.56A+153.81C-76.93AC\] y vemos que nuestro error resual standar correspode a
\[RSE=63.24\]
Calculamos el Analisis de varianza y verificaremos sus coeficientes:
anova(fit)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
A 1 22575 22575 5.6446 0.044837 *
B 1 333 333 0.0833 0.780240
C 1 378533 378533 94.6465 1.042e-05 ***
A:B 1 2678 2678 0.6696 0.436881
A:C 1 94710 94710 23.6808 0.001246 **
B:C 1 3278 3278 0.8195 0.391772
A:B:C 1 3570 3570 0.8926 0.372419
Residuals 8 31996 3999
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Por ultimo listamos los coeficientes
fit$coefficients
(Intercept) A B C A:B A:C
563.4375 -37.5625 4.5625 153.8125 -12.9375 -76.9375
B:C A:B:C
-14.3125 14.9375
Para concluir veremos que el estandar erro basado en la la suma de cuadrados será
\[ RSE=66.2 \]
| \(A=\frac{1}{4n}[a+ab+ac+abc-I-b-c-bc]\) |
-75.125 |
-37.56 |
\(-75.125 \pm RSE\) |
| \(B=\frac{1}{4n}[b+ab+bc+abc-I-a-c-ac]\) |
9.215 |
4.60 |
\(+9.215 \pm RSE\) |
| \(AB=\frac{1}{4n}[ab-a-b+I+abc-bc-ac+c]\) |
-25.875 |
-12.93 |
\(-25.875 \pm RSE\) |
| \(C=\frac{1}{4n}[c+ac+bc+abc-I-a-b-ab]\) |
307.625 |
153.81 |
\(+307.62 \pm RSE\) |
| \(AC=\frac{1}{4n}[I-a+b-ab-c+ac-bc+abc]\) |
-153.875 |
-76.93 |
\(-153.875 \pm RSE\) |
| \(BC=\frac{1}{4n}[I+a-b-ab-c-ac-bc+abc]\) |
-28.62 |
-14.31 |
\(-28.62 \pm RSE\) |
| \(ABC=\frac{1}{4n}[abc-bc-ac+c-ab+b+a-I]\) |
-29.875 |
-14.93 |
\(-29.875 \pm RSE\) |
LS0tDQp0aXRsZTogIkRpc2XxbyBkZSAgZmFjdG9yaWFsIGEgZG9zIG5pdmVsZXMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KYGBge3J9DQpsaWJyYXJ5KCJkcGx5ciIpDQpgYGANCg0KQmFzaWNhbWVudGUgYnVzY2Ftb3MgYW5hbGl6YXIgZWwgbWF4aW1vIG51bWVybyBkZSBmYWN0b3JlcyBjb24gZWwgbWltbyBkZSBkYXRvcyAsIHBvciBlamVtcGxvIGFuYWxpemFyIHZhbG9yZXMgY29tbyB0ZW1wZXJhdHVyYSBhbHRhIG8gdGVybXBhcmF0dXJhIGJhamEsIHZvbHRhamUgMSBvIHZvanRhamUgMiwgcG90ZW5jaWEgcDEgbyBwMiBlbnRvbmNlcyBlc3RlIHRpcG8gZGUgZGlz8W9zIGJ1c2NhIHJlZHVjaXIgZWwgY29zdGUgZGVsIGV4cGVyaW1pZW50bw0KDQpEaXNl8W8gXCh7Ml5rfVwpOg0KcGFyYSBlbCBjYXNvIGRlIG51ZXN0cm8gbGFib3JhdG9yaW8gdmVyZW1vcyBsYSBnZW9tZXRyaWEgZGUgdW4gY3VibyBkb25kZSBEaXNl8W8gXCh7az0zfVwpOg0KDQpOdWVzdHJhcyB2YXJpYWJsZXMgYmFzaWNhbWVudGUgc2UgcmVwcmVzZW50YW4gZW4gbG9zIG5pdmVscyBkZSBsb3MgdHJlcyBmYWN0b3Jlcw0KDQpTYWJlbW9zIHF1ZSByZXByZXNlbnRhbW9zIGxvcyBmYWN0b3JlcyBjb24gdmFsb3JlcyBkZXNkZSBbLSwrXSBwYXJhIGxvcyBmYWN0b3Jlcw0KDQotIEZhY3RvckEgKEdhcCkgIA0KLSBGYWN0b3JCIChGbG93KQ0KLSBGYWN0b3JDIChQb3dlcikNCg0KcG9yIGNvbnNpZ3VpZXRlIHBhcmEgY29uc3RydWlyIGVsIGN1Ym8gZGVmaW5pcmVtb3MgbnVlc3RyYSBtYXRyaXogY29uIGxvcyB2ZXJ0aWNlcyBxdWUgcmVwcmVzZW50YW4gbG9zIHZhbG9yZXMgcXVlICBzZSB1dGlsaXphcmFuIHBhcmEgZ2VuZXJhciBjYWRhIGNhcmEgZGVsIGN1Ym8NCg0KfCAgIHwgQSAgfCAgQiB8IEMgIHwgVmVydGljZXwNCnwtLS18LS0tfC0tLXwtLS18LS0tfA0KfCAxICB8ICAtIHwgLSAgfCAgLSB8IEl8DQp8IDIgIHwgICsgfCAtICB8ICAtIHwgYXwNCnwgMyAgfCAgLSB8ICsgIHwgIC0gfCBifA0KfCA0ICB8ICArIHwgKyAgfCAgLSB8IGFifA0KfCA1ICB8ICAtIHwgLSAgfCAgKyB8IGN8DQp8IDYgIHwgICsgfCAtICB8ICArIHwgYWN8DQp8IDcgIHwgIC0gfCArICB8ICArIHwgYmN8DQp8IDggIHwgICsgfCArICB8ICArIHwgYWJjfA0KDQoNCg0KQWhvcmEgYmllbiBzYWJlbW9zIHF1ZSBleGlzdGVuIHBvciBjb21iaW5hY2lvbiA3IHBvc2libGVzIGdyYWRvcyBkZSBsaWJlcnRhZCAsIGVzdG8gaW1wbGljYSBxdWUgdGVuZHJlbW9zIGxhcyBzaWd1aWVudGUgcG9zaWJpbGlkYWRlcw0KDQogIC0gMiBEb3MgZmFjdG9yZXMgY29uc3RhbnRlcyAxIGZhY3RvciBjYW1iaWFudGU6DQogIA0KICAgIGJham8gZXN0YSBlc3RydWN0dXJhIGNhZGEgZmFjdG9yIEZBQ1RPUiAoQSxCLEMpIGFmZWN0cmEgbGFzIGNhcmFzIHBvc2l0aXZhcygrKSB5IE5lZ2F0aXZhcyAoLSkgYWRqYWNlbnRlcyBhbCBzdSBsYWRvKEVER0UpIGVzdG8gcXVpZXJlIGRlY2lyIHF1ZSB0ZW5lbW9zIDMgcG9zaWJsZXMgZm9ybWFzIGRlIHJlcHJlc2VudGFyIGVsIGVmZWN0byBkZSB1biBmYWN0b3IgDQogICAgDQogIC0gMSBmYWN0b3IgY29uc3RhbnRlIDIgZmFjdG9yZXMgY2FtYmlhbnRlczoNCiAgDQogICAgYmFqbyBlc3RhIGNvbmZpZ3VyYWNp824gdmVtb3MgcXVlIHBvZGVtb3MgdGFtYmllbiBhZmVjdGFyIG90cmFzIDMgcG9zaWJsZXMgZXN0cnVjdHVyYXMgKGxvcyBwbGFub3MgcXVlIGFmZWN0ZW4gbG9zIHZlcnRpY2VzIGRlIGxvcyBmYWN0b3JlcyBkaW5hbWljb3MgbyBjYW1iaWFudGVzKSAuLi4gcmVjb3JkZW1vcyBxdWUgY2FkYSBmYWN0b3Igc29sbyBwdWVkZSB0ZW5lciBkb3MgcG9zaWJsZXMgdmFsb3JlcyAocG9zaXRpdm9zIHkgbmVnYXRpdm9zKQ0KICANCiAgDQogIC0gMCBmYWN0b3JlcyBjb25zdGFudGVzIDMgZmFjdG9yZXMgY2FtYmlhbnRlcyANCiAgDQogICAgUG9yIHVsdGltbyBlbiBlc3RhIGNvbmZpZ3VyYWNp824gdmVtb3Mgc2FiZW1vcyBxdWUgbG9zIGZhY3RvcmVzIHB1ZWRlbiBhZmVjdGFyIGN1YWxxdWVpciB2ZXJ0aWNlIGRlbCBjdWJvDQogIA0KICANCiAgDQogIEFob3JhIGJpZW4gc2FiZW1vcyBxdWUgbG9zIGVkZ2VzIHNlIGZvcm1hbiBkZSBsYSBkaWZlcmVuY2lhIGVudHJlIGxhIHBhcnRlIGFsdGEgbWVub3MgbGEgcGFydGUgYmFqYSBkZSB1biBmYWN0b3IgYXNpIHBvZGVtb3MgZGVmaW5pciBsYSBkaWZlcmVuY2lhIGRlbCBmYWN0b3IgY29tbyBsYSBkaWZlcmVuY2lhIGVudHJlIGVsbG9zLCBsYSBzaWd1aWVudGUgdGFibGEgbXVlc3RyYSBtdWVzdHJhIGxvcyBlZmVjdG9zIGVuIGVsIGN1Ym8gZW4gcmVhbGFjafNuIGEgbG9zIHNpZ25vcyBcKHsyXmt9XCkgDQogIA0KDQpFZmVjdG8gZmFjdG9yaWFsOiBOb3RlIHF1ZSAyIGZhY3RvcmVzIGZpam9zIHkgMSBjYW1iaWFudGUgc2UgcmVwcmVzZW50YSBwb3IgKEEsQixDKSwgcGFyYSAyIGZhY3RvcmVzIGRpbmFtaWNvcyhBQixBQywgQkMpICBwb3IgdWx0aW1vIChBQkMpIGxvcyB0cmVzIHNvbiBkaW5hbWljb3N8DQoNCg0KDQp8Y29tYmluYWNpb24gICB8IEEgIHwgIEIgfCBBQiB8IEMgfEFDIHwgQkN8IEFCQw0KfC0tLXwtLS18LS0tfC0tLXwtLS18LS0tfC0tLXwtLS18LS0tfA0KfCBJICB8ICAtIHwgLSAgfCsgIHwtIHwrIHwrfC18DQp8IGEgIHwgICsgfCAtICB8LSAgfC0gfC0gfCt8K3wNCnwgYiAgfCAgLSB8ICsgIHwgLSB8LSB8KyB8LXwrfA0KfCBhYiAgfCAgKyB8ICsgIHwrIHwgLSB8LSB8LXwtfA0KfCBjICB8ICAtIHwgLSAgfCsgIHwrIHwtIHwtfCt8DQp8IGFjICB8ICArIHwgLSAgfC0gIHwrIHwrIHwtfC18DQp8IGJjICB8ICAtIHwgKyAgfCAtIHwrIHwtIHwrfC18DQp8IGFiYyAgfCAgKyB8ICsgIHwgK3wgKyB8KyB8K3wrfA0KDQoNCg0KDQp8Y29tYmluYWNpb24gIEk9MSwgbj0yICB8IDIqQmV0YXxCZXRhfA0KfC0tLXwtLS18LS0tfA0KfCAkJEE9XGZyYWN7MX17NG59W2ErYWIrYWMrYWJjLUktYi1jLWJjXSQkIHwtNzUuMTI1fC0zNy41Ng0KfCAkJEI9XGZyYWN7MX17NG59W2IrYWIrYmMrYWJjLUktYS1jLWFjXSQkIHw5LjIxNXw0LjYwDQp8ICQkQUI9XGZyYWN7MX17NG59W2FiLWEtYitJK2FiYy1iYy1hYytjXSQkIHwtMjUuODc1fC0xMi45Mw0KfCAkJEM9XGZyYWN7MX17NG59W2MrYWMrYmMrYWJjLUktYS1iLWFiXSQkIHwzMDcuNjI1fDE1My44MQ0KfCAkJEFDPVxmcmFjezF9ezRufVtJLWErYi1hYi1jK2FjLWJjK2FiY10kJCB8LTE1My44NzV8LTc2LjkzDQp8ICQkQkM9XGZyYWN7MX17NG59W0krYS1iLWFiLWMtYWMtYmMrYWJjXSQkIHwtMjguNjJ8LTE0LjMxDQp8ICQkQUJDPVxmcmFjezF9ezRufVthYmMtYmMtYWMrYy1hYitiK2EtSV0kJCB8LTI5Ljg3NXwtMTQuOTMNCg0KDQpCYWpvIGVzdGUgY29uY2VwdG8gZGVzY3JpYmlyZW1vcyBsYXMgbGVjdHVyYXMgZGUgbnVlc3RyYXMgY2FyYWN0ZXJpc3RpY2FzIGNvbW8NCg0KIA0KDQp8R2FwKEEpICAgfCBGbG93KEIpICB8ICBQb3dlcihjKSB8IExlY3R1cmExIHwgTGVjdHVyYTIgfFZhbG9yIHZlcnRpY2UNCnwtLS18LS0tfC0tLXwtLS18LS0tfC0tLXwtLS18DQp8IC0gfCAtIHwtIHwyNDcgfDQwMCB8ST02NDcgfA0KfCArIHwgLSB8LSB8NDcwIHw0NDYgfGE9OTE2IHwNCnwgLSB8ICsgfC0gfDQyOSB8NDA1fCBiPTgzNCB8DQp8ICsgfCArIHwtIHw0MzUgfDQ0NXwgYWI9ODMwfA0KfCAtIHwgLSB8KyB8ODM3IHw4NTB8IGM9MTY4N3wNCnwgKyB8IC0gfCsgfDU1MSB8NjcwfCBhYzEyMjF8DQp8IC0gfCArIHwrIHw3NzUgfDg2NXwgYmM9MTY0MHwNCnwgKyB8ICsgfCsgfDY2MCB8NTMwfCBhYmM9MTE5MHwNCg0KQmFzYWRvIGVuIGVzdG9zIGRhdG9zIENvbnN0cnVpcmVtb3MgbGEgc3VtYSBkZSBjdWFkcmFkb3MgcGFyYSBjYWRhIGVzdHJ1Y3RydWENCg0KJCRTUz1cZnJhY3tbY29udHJhc3RlXV4yfXsyU2FtcGxlcyo0bn0kJA0KDQp8Y29tYmluYWNpb24gIEk9MSAgfGNvbnRyYXN0ZXxTU3wNCnwtLS18LS18LS18DQp8ICQkQT1bYSthYithYythYmMtSS1iLWMtYmNdJCQgfC02MDF8MjIsNTc1LjF8DQp8ICQkQj1bYithYitiYythYmMtSS1hLWMtYWNdJCQgfCA3M3wzMzMuMXwNCnwgJCRBQj1bYWItYS1iK0krYWJjLWJjLWFjK2NdJCR8IC0yMDcgfDIsNjc4LjF8DQp8ICQkQz1bYythYytiYythYmMtSS1hLWItYWJdJCQgfCAyNDYxfDM3OCw1MzIuNnwNCnwgJCRBQz1bSS1hK2ItYWItYythYy1iYythYmNdJCQgfCAtMTIzMXw5NCw3MTAuMXwNCnwgJCRCQz1bSSthLWItYWItYy1hYy1iYythYmNdJCQgfC0yMjl8MywyNzcuNnwNCnwgJCRBQkM9W2FiYy1iYy1hYytjLWFiK2IrYS1JXSQkIHwyMzl8Myw1MDcuMXwNCg0KDQpFbnRvY25lcyBkZWZpbmlyZW1vcyBudWVzdHJvIHZlY3RvciBkZSBjYXJhY3RlcmlzdGljYXMgYmFzYWRvIGVuIGVuIGxhIGNvbXBvc2ljafNuIGRlIGxhIG1hdHJpeiBkZSBzaWdub3MNCg0KDQpgYGB7cn0NCmxlY3R1cmFzPC0NCmMoLTEsLTEsLTEsDQogIDEsIC0xLCAtMSwNCiAgLTEsIDEsIC0xLA0KICAxLCAxLC0xLA0KICAtMSwtMSwxLA0KICAxLC0xLDEsDQogIC0xLDEsMSwNCiAgMSwxLDEpDQoNCmBgYA0KDQpDb21vIGhheSBkb3MgbGVjdHVyYXMgKGluY2lhbCB5IGZpbmFsLCBkdXBsaWNhcmVtb3MgbGEgZXN0cnVjdHVyYSBwYXJhIGxhIGxlY3R1cmEgZmluYWwpDQpgYGB7cn0NCm1hdGxlY3R1cmFzIDwtIG1hdHJpeChsZWN0dXJhcyxuY29sPTMsYnlyb3c9VFJVRSkNCm1hdGxlY3R1cmFzIDwtIHJiaW5kKG1hdGxlY3R1cmFzLG1hdGxlY3R1cmFzKQ0KYGBgDQoNCk51ZXN0cmFzIG9ic2VydmFjaW9uZXMgbGEgdmFyaWFibGUgYSBlc3RpbWFyIGVzdGFuIGRlZmluaWRhcyBwb3IgbGEgbGVjdHVyYSBkZSBjYXJhY3RlcmlzdGljYXMgeSBsb3MgZmFjdG9yZXMgQSxCLEMgZXN0YW4gZGFkb3MgcG9yIGxhIG1hdHJpeiBkZSBzaWdub3MNCg0KYGBge3J9DQoNCm11ZXN0cmEgPC0gYygyNDcsNDcwLDQyOSw0MzUsODM3LDU1MSw3NzUsNjYwLDQwMCw0NDYsNDA1LDQ0NSw4NTAsNjcwLDg2NSw1MzApDQoNCiAgdGFibGEgPC0gdGliYmxlKEE9bWF0bGVjdHVyYXNbLDFdLA0KICAgICAgICAgICAgICAgICAgICAgICBCPW1hdGxlY3R1cmFzWywyXSwNCiAgICAgICAgICAgICAgICAgICAgICAgQz1tYXRsZWN0dXJhc1ssM10sDQogICAgICAgICAgICAgICAgICAgICAgIFk9bXVlc3RyYSkNCg0KdGFibGENCmBgYA0KDQpDcmVhbW9zIGxvcyBmYWN0b3JlcyBiYXNhZG9zIGVuIGxvcyBleHBlcmltZW50b3MNCmBgYHtyfQ0KDQp0YWJsYSRBPC1hcy5mYWN0b3IodGFibGEkQSkNCnRhYmxhJEI8LWFzLmZhY3Rvcih0YWJsYSRCKQ0KdGFibGEkQzwtYXMuZmFjdG9yKHRhYmxhJEMpDQoNCmBgYA0KDQpQb3IgdWx0aW1vIGdlbmVyYW1vcyBudWVzdHJhIHJlZ3Jlc2lvbiBsaW5lYWwgY29uc2lkZXJhbmRvIGxvcyBlZGdlczoNCmBgYHtyfQ0KZml0PC0gbG0oWSB+IEErQitDKyhBKkIpKyhBKkMpKyhCKkMpKyhBKkIqQyksZGF0YT10YWJsYSkNCnN1bW1hcnkoZml0KQ0KYGBgDQoNCkNvbW8gcG9kZW1vcyB2ZXIgbnVlc3RybyBhbmFsaWNpcyBhcm9qYSB1dGlsaXphciAzIGJldGFzIHF1ZSBjb3JyZXNwb25kZW4gYSBBLCBDIHkgQUMNCg0KcG9yIGNvbnNpZ3VpZW50ZSBudWVzdHJhIHJlZ3JlY2lvbiBsaW5lYWwgc2VyaWEgDQokJFk9Yl8wK2JfMUErYl8yQytiX3sxM31BQyQkDQokJFk9NTYzLjQzLTM3LjU2QSsxNTMuODFDLTc2LjkzQUMkJA0KeSB2ZW1vcyBxdWUgbnVlc3RybyBlcnJvciByZXN1YWwgc3RhbmRhciBjb3JyZXNwb2RlIGEgDQoNCiQkUlNFPTYzLjI0JCQNCg0KDQoNCkNhbGN1bGFtb3MgZWwgQW5hbGlzaXMgZGUgdmFyaWFuemEgeSB2ZXJpZmljYXJlbW9zIHN1cyBjb2VmaWNpZW50ZXM6DQpgYGB7cn0NCmFub3ZhKGZpdCkNCg0KYGBgDQoNClBvciB1bHRpbW8gbGlzdGFtb3MgbG9zIGNvZWZpY2llbnRlcw0KYGBge3J9DQpmaXQkY29lZmZpY2llbnRzDQpgYGANCg0KUGFyYSBjb25jbHVpciB2ZXJlbW9zIHF1ZSBlbCBlc3RhbmRhciBlcnJvIGJhc2FkbyBlbiBsYSBsYSBzdW1hIGRlIGN1YWRyYWRvcyBzZXLhIA0KDQokJCBSU0U9NjYuMiAkJA0KDQp8Y29tYmluYWNpb24gIEk9MSwgbj0yICB8IDIqQmV0YXxCZXRhfCBTU0Vycm9yIExtaXQNCnwtLS18LS0tfC0tLXwtLS18DQp8ICRBPVxmcmFjezF9ezRufVthK2FiK2FjK2FiYy1JLWItYy1iY10kIHwtNzUuMTI1fC0zNy41NnwkLTc1LjEyNSBccG0gUlNFJHwNCnwgJEI9XGZyYWN7MX17NG59W2IrYWIrYmMrYWJjLUktYS1jLWFjXSQgfDkuMjE1fDQuNjB8JCs5LjIxNSBccG0gUlNFJHwNCnwgJEFCPVxmcmFjezF9ezRufVthYi1hLWIrSSthYmMtYmMtYWMrY10kIHwtMjUuODc1fC0xMi45M3wkLTI1Ljg3NSBccG0gUlNFJHwNCnwgJEM9XGZyYWN7MX17NG59W2MrYWMrYmMrYWJjLUktYS1iLWFiXSQgfDMwNy42MjV8MTUzLjgxfCQrMzA3LjYyIFxwbSBSU0UkfA0KfCAkQUM9XGZyYWN7MX17NG59W0ktYStiLWFiLWMrYWMtYmMrYWJjXSQgfC0xNTMuODc1fC03Ni45M3wkLTE1My44NzUgXHBtIFJTRSR8DQp8ICRCQz1cZnJhY3sxfXs0bn1bSSthLWItYWItYy1hYy1iYythYmNdJCB8LTI4LjYyfC0xNC4zMXwkLTI4LjYyIFxwbSBSU0UkfA0KfCAkQUJDPVxmcmFjezF9ezRufVthYmMtYmMtYWMrYy1hYitiK2EtSV0kIHwtMjkuODc1fC0xNC45M3wkLTI5Ljg3NSBccG0gUlNFJHw=