Krister Martinez

3

A researcher is interested in studying three types of fertilization methods (100 lb., 150 lb., and 200 lb.) and two levels of irrigation (A and B) on biomass yield. The possible treatment combinations were randomly assigned to 30 plots of land, where each treatment was assigned the same number of plots. We are using the Biomass.csv. Use a significance level of 0.05.

Biomass_DF = read.csv ("Biomass.csv",colClasses = c("numeric","factor","factor")) 

summary(Biomass_DF)
    biomass     fertilizer irrigation
 Min.   :2250   100:10     A:15      
 1st Qu.:2871   150:10     B:15      
 Median :3172   200:10               
 Mean   :3076                        
 3rd Qu.:3286                        
 Max.   :3600                        
str(Biomass_DF)
'data.frame':   30 obs. of  3 variables:
 $ biomass   : num  3250 3151 3300 3290 3300 ...
 $ fertilizer: Factor w/ 3 levels "100","150","200": 1 1 1 1 1 2 2 2 2 2 ...
 $ irrigation: Factor w/ 2 levels "A","B": 1 1 1 1 1 1 1 1 1 1 ...

Once you do that, a data frame called “Biomass_DF” will be available in R with the data you need to answer this question.

Number of replications taken in this study. # observations = # treatments * # replicates 30 = 6 * # replicates 30 / 6 = 5 replicates

Identify: The outcome variable biomass yield

The factor (or factors) Fertilizer Irrigation

The levels of the factor (or levels of the factors) Fertilizer with 3 levels: 100, 150 and 200. Irrigation with 2 levels: A and B

The hypotheses to run ANOVA.

For the effect of fertilizer Ho: The biomass yield is the same for all 3 fertilizer levels (100, 150, and 200). Ha: There is a difference in biomass yield for at least 2 fertilizers.

For the effect of irrigation Ho: The biomass yield is the same for all 2 irrigation levels (A and B) Ha: There is a difference in biomass yield for at least 2 irrigation levels

For the interaction between fertilizer and irrigation Ho: There is no interaction effect: The effect of fertilizer on the biomass does NOT depend on the irrigation Ha: There is is interaction effect: The effect of fetilizer on the biomass depends on the irrication

Analyze the results and discuss which effects (among all possible effects) are statistically significant. Justify your answer.

# run Anova 
twoway_Biomass = aov(biomass ~ fertilizer * irrigation, data=Biomass_DF)

summary(twoway_Biomass)
                      Df  Sum Sq Mean Sq F value  Pr(>F)   
fertilizer             2  500454  250227   3.536 0.04508 * 
irrigation             1  707175  707175   9.994 0.00422 **
fertilizer:irrigation  2  557130  278565   3.937 0.03322 * 
Residuals             24 1698195   70758                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

In the case of the fertilizer effect the p-value is 0.04508 < 0.05 therefore we will reject Ho and support Ha:There is a difference in mean biomass for at least two fertilizer.

In the case of the irrigation irrigation effect the p-value = 0.00422 < 0.05 therefore we will reject Ho and support Ha: There is a difference in both irrigation (A and B).

In the interaction between fertilizer & irrigation the p-value = 0.03322 < 0.05 therefore we reject Ho and support Ha:There is an interaction effect (The effect of fertilization on biomass depends on the type of irrigation.)

  1. Construct the interaction plot and explain why it clearly shows the presence of interaction in this problem.
interaction.plot (Biomass_DF$fertilizer, Biomass_DF$irrigation, Biomass_DF$biomass)

The graphic shows that the biomass mean has better yields at lower levels of fertilizers 100 and 150 with irrigation A. On the contrast, under irrigation B the level of fertilizer 200 performs better as far as the biomass yield.

A study is done to determine if there is a difference in the average strength of a filament fiber produced by three machines. Researchers are also interested in studying the possible effect of changing the filament diameter on strength. Researchers decided to do the analysis using an alpha of 0.10.


Filament_DF = read.csv ("Filament.csv",colClasses = c("numeric","factor","factor"))

summary(Filament_DF)
    strength    diameter machine
 Min.   :32.0   20:5     M1:5   
 1st Qu.:36.5   24:5     M2:5   
 Median :40.0   28:5     M3:5   
 Mean   :40.2                   
 3rd Qu.:43.0                   
 Max.   :49.0                   

str(Filament_DF)
'data.frame':   15 obs. of  3 variables:
 $ strength: num  36 41 39 42 49 40 48 39 45 44 ...
 $ diameter: Factor w/ 3 levels "20","24","28": 1 2 3 1 2 3 1 2 3 1 ...
 $ machine : Factor w/ 3 levels "M1","M2","M3": 1 1 1 1 1 2 2 2 2 2 ...

Identify: The outcome variable: The strenght of he filament

The factor (or factors): The diameter of the filament The machine type

The levels of the factor (or levels of the factors): Diameter with 3 levels: 20, 24 and 28 Machine with 3 levels: M1, M2 and M3

Analyze the results and discuss which effects (among all possible effects) are statistically significant. Justify your answer.


twoway_filament = aov(strength ~ diameter * machine, data=Filament_DF)

summary(twoway_filament)
                 Df Sum Sq Mean Sq F value Pr(>F)  
diameter          2   38.8   19.40   1.394 0.3183  
machine           2  120.9   60.43   4.343 0.0682 .
diameter:machine  4  103.2   25.81   1.854 0.2377  
Residuals         6   83.5   13.92                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Diameter P-value 0.3183. Since this p-value is greater than α = 0.10, there is not enough evidence to reject the null hypothesis. This means we cannot conclude that the diameter has a statistically significant effect on filament strength.

Machine P-value 0.0682: Since this p-value is less than α = 0.10, there is enough evidence to reject the null hypothesis. This means that the type of machine does have a statistically significant effect on filament strength at the 10% significance level.

Interaction diameter:machine P-value 0.2377: This p-value is greater than α = 0.10, so there’s not enough evidence to reject the null hypothesis for the interaction effect. This means that there isn’t a statistically significant interaction between diameter and machine type on filament strength.

Obtain an estimation of the average strength produced by each of the three machines.


sort(tapply(Filament_DF$strength, Filament_DF$machine, mean))
  M3   M1   M2 
36.0 41.4 43.2 

In this graph we are visualizing the distribution of strength across different machines, grouped by diameter. Here the x-axis represents the different machines, the y-axis represents filament strength, and different colors represent different filament diameters.

# Loading required libraries
install.packages("ggplot2")
Error in install.packages : Updating loaded packages
library(ggplot2)

# Box plot with diameter labels
p <- ggplot(Filament_DF, aes(x = machine, y = strength, fill = factor(diameter))) + 
  geom_boxplot() +
  geom_text(aes(label=factor(diameter), group=factor(diameter)), 
            position=position_dodge(width=0.75), 
            vjust=-0.5) +
  labs(title = "Box Plot of Filament Strength by Machine and Diameter",
       x = "Machine",
       y = "Strength",
       fill = "Diameter") + 
  theme_minimal()

print(p)

In this boxplot graph we can clearly see the differences in the strength of the filament and the machines that make the filament by the filament diameter.

The strongest filament is produced by the M2 with a 20 diameter with an strength of around 46 and weakest would be produce by M3 with a diameter of 24 and 28 and a strength of around 24.

We can also see that the machine factor does have a statistically significant effect on filament strength because of the individual box plot by diameter are not overlapping for M1 and M3 for 2 diameters, 24 and 28.

The end

Krister

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCktyaXN0ZXIgTWFydGluZXoNCg0KMw0KDQpBIHJlc2VhcmNoZXIgaXMgaW50ZXJlc3RlZCBpbiBzdHVkeWluZyB0aHJlZSB0eXBlcyBvZiBmZXJ0aWxpemF0aW9uIG1ldGhvZHMgKDEwMCBsYi4sIDE1MCBsYi4sIGFuZCAyMDAgbGIuKSBhbmQgdHdvIGxldmVscyBvZiBpcnJpZ2F0aW9uIChBIGFuZCBCKSBvbiBiaW9tYXNzIHlpZWxkLiBUaGUgcG9zc2libGUgdHJlYXRtZW50IGNvbWJpbmF0aW9ucyB3ZXJlIHJhbmRvbWx5IGFzc2lnbmVkIHRvIDMwIHBsb3RzIG9mIGxhbmQsIHdoZXJlIGVhY2ggdHJlYXRtZW50IHdhcyBhc3NpZ25lZCB0aGUgc2FtZSBudW1iZXIgb2YgcGxvdHMuIFdlIGFyZSB1c2luZyB0aGUgQmlvbWFzcy5jc3YuICBVc2UgYSBzaWduaWZpY2FuY2UgbGV2ZWwgb2YgMC4wNS4NCg0KDQpgYGB7cn0NCkJpb21hc3NfREYgPSByZWFkLmNzdiAoIkJpb21hc3MuY3N2Iixjb2xDbGFzc2VzID0gYygibnVtZXJpYyIsImZhY3RvciIsImZhY3RvciIpKSANCg0Kc3VtbWFyeShCaW9tYXNzX0RGKQ0KYGBgDQoNCmBgYHtyfQ0Kc3RyKEJpb21hc3NfREYpDQpgYGANCg0KDQpPbmNlIHlvdSBkbyB0aGF0LCBhIGRhdGEgZnJhbWUgY2FsbGVkIOKAnEJpb21hc3NfREbigJ0gd2lsbCBiZSBhdmFpbGFibGUgaW4gUiB3aXRoIHRoZSBkYXRhIHlvdSBuZWVkIHRvIGFuc3dlciB0aGlzIHF1ZXN0aW9uLg0KDQpOdW1iZXIgb2YgcmVwbGljYXRpb25zIHRha2VuIGluIHRoaXMgc3R1ZHkuDQogIyBvYnNlcnZhdGlvbnMgPSAjIHRyZWF0bWVudHMgKiAjIHJlcGxpY2F0ZXMNCjMwID0gNiAqICMgcmVwbGljYXRlcw0KMzAgLyA2ID0gNSByZXBsaWNhdGVzDQoNCklkZW50aWZ5Og0KVGhlIG91dGNvbWUgdmFyaWFibGUNCmJpb21hc3MgeWllbGQNCg0KVGhlIGZhY3RvciAob3IgZmFjdG9ycykNCkZlcnRpbGl6ZXINCklycmlnYXRpb24NCg0KVGhlIGxldmVscyBvZiB0aGUgZmFjdG9yIChvciBsZXZlbHMgb2YgdGhlIGZhY3RvcnMpDQpGZXJ0aWxpemVyIHdpdGggMyBsZXZlbHM6IDEwMCwgMTUwIGFuZCAyMDAuDQpJcnJpZ2F0aW9uIHdpdGggMiBsZXZlbHM6IEEgYW5kIEINCg0KVGhlIGh5cG90aGVzZXMgdG8gcnVuIEFOT1ZBLg0KDQpGb3IgdGhlIGVmZmVjdCBvZiBmZXJ0aWxpemVyDQpIbzogVGhlIGJpb21hc3MgeWllbGQgaXMgdGhlIHNhbWUgZm9yIGFsbCAzIGZlcnRpbGl6ZXIgbGV2ZWxzICgxMDAsIDE1MCwgYW5kIDIwMCkuIA0KSGE6IFRoZXJlIGlzIGEgZGlmZmVyZW5jZSBpbiBiaW9tYXNzIHlpZWxkIGZvciBhdCBsZWFzdCAyIGZlcnRpbGl6ZXJzLg0KDQpGb3IgdGhlIGVmZmVjdCBvZiBpcnJpZ2F0aW9uDQpIbzogVGhlIGJpb21hc3MgeWllbGQgaXMgdGhlIHNhbWUgZm9yIGFsbCAyIGlycmlnYXRpb24gbGV2ZWxzIChBIGFuZCBCKSANCkhhOiBUaGVyZSBpcyBhIGRpZmZlcmVuY2UgaW4gYmlvbWFzcyB5aWVsZCBmb3IgYXQgbGVhc3QgMiBpcnJpZ2F0aW9uIGxldmVscw0KDQpGb3IgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gZmVydGlsaXplciBhbmQgaXJyaWdhdGlvbg0KSG86IFRoZXJlIGlzIG5vIGludGVyYWN0aW9uIGVmZmVjdDogVGhlIGVmZmVjdCBvZiBmZXJ0aWxpemVyIG9uIHRoZSBiaW9tYXNzIGRvZXMgTk9UIGRlcGVuZCBvbiB0aGUgaXJyaWdhdGlvbiANCkhhOiBUaGVyZSBpcyBpcyBpbnRlcmFjdGlvbiBlZmZlY3Q6ICBUaGUgZWZmZWN0IG9mIGZldGlsaXplciBvbiB0aGUgYmlvbWFzcyBkZXBlbmRzIG9uIHRoZSBpcnJpY2F0aW9uDQoNCkFuYWx5emUgdGhlIHJlc3VsdHMgYW5kIGRpc2N1c3Mgd2hpY2ggZWZmZWN0cyAoYW1vbmcgYWxsIHBvc3NpYmxlIGVmZmVjdHMpIGFyZSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50LiBKdXN0aWZ5IHlvdXIgYW5zd2VyLg0KDQpgYGB7cn0NCiMgcnVuIEFub3ZhIA0KdHdvd2F5X0Jpb21hc3MgPSBhb3YoYmlvbWFzcyB+IGZlcnRpbGl6ZXIgKiBpcnJpZ2F0aW9uLCBkYXRhPUJpb21hc3NfREYpDQoNCnN1bW1hcnkodHdvd2F5X0Jpb21hc3MpDQoNCmBgYA0KDQpJbiB0aGUgY2FzZSBvZiB0aGUgZmVydGlsaXplciBlZmZlY3QgdGhlIHAtdmFsdWUgaXMgMC4wNDUwOCA8IDAuMDUgdGhlcmVmb3JlIHdlIHdpbGwgcmVqZWN0IEhvIGFuZCBzdXBwb3J0IEhhOlRoZXJlIGlzIGEgZGlmZmVyZW5jZSBpbiBtZWFuIGJpb21hc3MgZm9yIGF0IGxlYXN0IHR3byBmZXJ0aWxpemVyLiANCg0KSW4gdGhlIGNhc2Ugb2YgdGhlIGlycmlnYXRpb24gaXJyaWdhdGlvbiBlZmZlY3QgdGhlIHAtdmFsdWUgPSAwLjAwNDIyIDwgMC4wNSB0aGVyZWZvcmUgd2Ugd2lsbCByZWplY3QgSG8gYW5kIHN1cHBvcnQgSGE6IFRoZXJlIGlzIGEgZGlmZmVyZW5jZSBpbiBib3RoIGlycmlnYXRpb24gKEEgYW5kIEIpLiANCg0KSW4gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gZmVydGlsaXplciAmIGlycmlnYXRpb24gdGhlIHAtdmFsdWUgPSAwLjAzMzIyIDwgMC4wNSB0aGVyZWZvcmUgd2UgcmVqZWN0IEhvIGFuZCBzdXBwb3J0IEhhOlRoZXJlIGlzIGFuIGludGVyYWN0aW9uIGVmZmVjdCAoVGhlIGVmZmVjdCBvZiBmZXJ0aWxpemF0aW9uIG9uIGJpb21hc3MgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiBpcnJpZ2F0aW9uLikNCg0KZSkgQ29uc3RydWN0IHRoZSBpbnRlcmFjdGlvbiBwbG90IGFuZCBleHBsYWluIHdoeSBpdCBjbGVhcmx5IHNob3dzIHRoZSBwcmVzZW5jZSBvZiBpbnRlcmFjdGlvbiBpbiB0aGlzIHByb2JsZW0uDQoNCmBgYHtyfQ0KaW50ZXJhY3Rpb24ucGxvdCAoQmlvbWFzc19ERiRmZXJ0aWxpemVyLCBCaW9tYXNzX0RGJGlycmlnYXRpb24sIEJpb21hc3NfREYkYmlvbWFzcykNCmBgYA0KDQpUaGUgZ3JhcGhpYyBzaG93cyB0aGF0ICB0aGUgYmlvbWFzcyBtZWFuIGhhcyBiZXR0ZXIgeWllbGRzIGF0IGxvd2VyIGxldmVscyBvZiBmZXJ0aWxpemVycyAxMDAgYW5kIDE1MCB3aXRoIGlycmlnYXRpb24gQS4gIE9uIHRoZSBjb250cmFzdCwgdW5kZXIgaXJyaWdhdGlvbiBCIHRoZSBsZXZlbCBvZiBmZXJ0aWxpemVyIDIwMCBwZXJmb3JtcyBiZXR0ZXIgYXMgZmFyIGFzIHRoZSBiaW9tYXNzIHlpZWxkLg0KDQoNCg0KQSBzdHVkeSBpcyBkb25lIHRvIGRldGVybWluZSBpZiB0aGVyZSBpcyBhIGRpZmZlcmVuY2UgaW4gdGhlIGF2ZXJhZ2Ugc3RyZW5ndGggb2YgYSBmaWxhbWVudCBmaWJlciBwcm9kdWNlZCBieSB0aHJlZSBtYWNoaW5lcy4gUmVzZWFyY2hlcnMgYXJlIGFsc28gaW50ZXJlc3RlZCBpbiBzdHVkeWluZyB0aGUgcG9zc2libGUgZWZmZWN0IG9mIGNoYW5naW5nIHRoZSBmaWxhbWVudCBkaWFtZXRlciBvbiBzdHJlbmd0aC4gUmVzZWFyY2hlcnMgZGVjaWRlZCB0byBkbyB0aGUgYW5hbHlzaXMgdXNpbmcgYW4gYWxwaGEgb2YgMC4xMC4gDQoNCg0KYGBge3J9DQoNCkZpbGFtZW50X0RGID0gcmVhZC5jc3YgKCJGaWxhbWVudC5jc3YiLGNvbENsYXNzZXMgPSBjKCJudW1lcmljIiwiZmFjdG9yIiwiZmFjdG9yIikpDQoNCnN1bW1hcnkoRmlsYW1lbnRfREYpDQoNCmBgYA0KDQpgYGB7cn0NCg0Kc3RyKEZpbGFtZW50X0RGKQ0KDQpgYGANCg0KDQpJZGVudGlmeToNClRoZSBvdXRjb21lIHZhcmlhYmxlOg0KVGhlIHN0cmVuZ2h0IG9mIGhlIGZpbGFtZW50DQoNClRoZSBmYWN0b3IgKG9yIGZhY3RvcnMpOg0KVGhlIGRpYW1ldGVyIG9mIHRoZSBmaWxhbWVudA0KVGhlIG1hY2hpbmUgdHlwZQ0KDQpUaGUgbGV2ZWxzIG9mIHRoZSBmYWN0b3IgKG9yIGxldmVscyBvZiB0aGUgZmFjdG9ycyk6DQpEaWFtZXRlciB3aXRoIDMgbGV2ZWxzOiAyMCwgMjQgYW5kIDI4DQpNYWNoaW5lIHdpdGggMyBsZXZlbHM6IE0xLCBNMiBhbmQgTTMNCg0KDQpBbmFseXplIHRoZSByZXN1bHRzIGFuZCBkaXNjdXNzIHdoaWNoIGVmZmVjdHMgKGFtb25nIGFsbCBwb3NzaWJsZSBlZmZlY3RzKSBhcmUgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudC4gSnVzdGlmeSB5b3VyIGFuc3dlci4NCg0KYGBge3J9DQoNCnR3b3dheV9maWxhbWVudCA9IGFvdihzdHJlbmd0aCB+IGRpYW1ldGVyICogbWFjaGluZSwgZGF0YT1GaWxhbWVudF9ERikNCg0Kc3VtbWFyeSh0d293YXlfZmlsYW1lbnQpDQoNCmBgYA0KRGlhbWV0ZXIgUC12YWx1ZSAwLjMxODMuDQpTaW5jZSB0aGlzIHAtdmFsdWUgaXMgZ3JlYXRlciB0aGFuIM6xID0gMC4xMCwgdGhlcmUgaXMgbm90IGVub3VnaCBldmlkZW5jZSB0byByZWplY3QgdGhlIG51bGwgaHlwb3RoZXNpcy4gVGhpcyBtZWFucyB3ZSBjYW5ub3QgY29uY2x1ZGUgdGhhdCB0aGUgZGlhbWV0ZXIgaGFzIGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBlZmZlY3Qgb24gZmlsYW1lbnQgc3RyZW5ndGguDQoNCk1hY2hpbmUgUC12YWx1ZSAwLjA2ODI6DQpTaW5jZSB0aGlzIHAtdmFsdWUgaXMgbGVzcyB0aGFuIM6xID0gMC4xMCwgdGhlcmUgaXMgZW5vdWdoIGV2aWRlbmNlIHRvIHJlamVjdCB0aGUgbnVsbCBoeXBvdGhlc2lzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHR5cGUgb2YgbWFjaGluZSBkb2VzIGhhdmUgYSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGVmZmVjdCBvbiBmaWxhbWVudCBzdHJlbmd0aCBhdCB0aGUgMTAlIHNpZ25pZmljYW5jZSBsZXZlbC4NCg0KSW50ZXJhY3Rpb24gZGlhbWV0ZXI6bWFjaGluZSBQLXZhbHVlIDAuMjM3NzogDQpUaGlzIHAtdmFsdWUgaXMgZ3JlYXRlciB0aGFuIM6xID0gMC4xMCwgc28gdGhlcmUncyBub3QgZW5vdWdoIGV2aWRlbmNlIHRvIHJlamVjdCB0aGUgbnVsbCBoeXBvdGhlc2lzIGZvciB0aGUgaW50ZXJhY3Rpb24gZWZmZWN0LiBUaGlzIG1lYW5zIHRoYXQgdGhlcmUgaXNuJ3QgYSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGludGVyYWN0aW9uIGJldHdlZW4gZGlhbWV0ZXIgYW5kIG1hY2hpbmUgdHlwZSBvbiBmaWxhbWVudCBzdHJlbmd0aC4NCg0KDQpPYnRhaW4gYW4gZXN0aW1hdGlvbiBvZiB0aGUgYXZlcmFnZSBzdHJlbmd0aCBwcm9kdWNlZCBieSBlYWNoIG9mIHRoZSB0aHJlZSBtYWNoaW5lcy4NCg0KYGBge3J9DQoNCnNvcnQodGFwcGx5KEZpbGFtZW50X0RGJHN0cmVuZ3RoLCBGaWxhbWVudF9ERiRtYWNoaW5lLCBtZWFuKSkNCg0KYGBgDQpJbiB0aGlzIGdyYXBoIHdlIGFyZSB2aXN1YWxpemluZyB0aGUgZGlzdHJpYnV0aW9uIG9mIHN0cmVuZ3RoIGFjcm9zcyBkaWZmZXJlbnQgbWFjaGluZXMsIGdyb3VwZWQgYnkgZGlhbWV0ZXIuIEhlcmUgdGhlIHgtYXhpcyByZXByZXNlbnRzIHRoZSBkaWZmZXJlbnQgbWFjaGluZXMsIHRoZSB5LWF4aXMgcmVwcmVzZW50cyBmaWxhbWVudCBzdHJlbmd0aCwgYW5kIGRpZmZlcmVudCBjb2xvcnMgcmVwcmVzZW50IGRpZmZlcmVudCBmaWxhbWVudCBkaWFtZXRlcnMuDQoNCg0KYGBge3J9DQojIExvYWRpbmcgcmVxdWlyZWQgbGlicmFyaWVzDQppbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikNCmxpYnJhcnkoZ2dwbG90MikNCg0KIyBCb3ggcGxvdCB3aXRoIGRpYW1ldGVyIGxhYmVscw0KcCA8LSBnZ3Bsb3QoRmlsYW1lbnRfREYsIGFlcyh4ID0gbWFjaGluZSwgeSA9IHN0cmVuZ3RoLCBmaWxsID0gZmFjdG9yKGRpYW1ldGVyKSkpICsgDQogIGdlb21fYm94cGxvdCgpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbD1mYWN0b3IoZGlhbWV0ZXIpLCBncm91cD1mYWN0b3IoZGlhbWV0ZXIpKSwgDQogICAgICAgICAgICBwb3NpdGlvbj1wb3NpdGlvbl9kb2RnZSh3aWR0aD0wLjc1KSwgDQogICAgICAgICAgICB2anVzdD0tMC41KSArDQogIGxhYnModGl0bGUgPSAiQm94IFBsb3Qgb2YgRmlsYW1lbnQgU3RyZW5ndGggYnkgTWFjaGluZSBhbmQgRGlhbWV0ZXIiLA0KICAgICAgIHggPSAiTWFjaGluZSIsDQogICAgICAgeSA9ICJTdHJlbmd0aCIsDQogICAgICAgZmlsbCA9ICJEaWFtZXRlciIpICsgDQogIHRoZW1lX21pbmltYWwoKQ0KDQpwcmludChwKQ0KDQpgYGANCg0KSW4gdGhpcyBib3hwbG90IGdyYXBoIHdlIGNhbiBjbGVhcmx5IHNlZSB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlIHN0cmVuZ3RoIG9mIHRoZSBmaWxhbWVudCBhbmQgdGhlIG1hY2hpbmVzIHRoYXQgbWFrZSB0aGUgZmlsYW1lbnQgYnkgdGhlIGZpbGFtZW50IGRpYW1ldGVyLg0KDQpUaGUgc3Ryb25nZXN0IGZpbGFtZW50IGlzIHByb2R1Y2VkIGJ5IHRoZSBNMiB3aXRoIGEgMjAgZGlhbWV0ZXIgd2l0aCBhbiBzdHJlbmd0aCBvZiAgYXJvdW5kIDQ2IGFuZCB3ZWFrZXN0IHdvdWxkIGJlIHByb2R1Y2UgYnkgTTMgd2l0aCBhIGRpYW1ldGVyIG9mIDI0IGFuZCAyOCBhbmQgYSBzdHJlbmd0aCBvZiAgYXJvdW5kIDI0Lg0KDQpXZSBjYW4gYWxzbyBzZWUgdGhhdCB0aGUgbWFjaGluZSBmYWN0b3IgZG9lcyBoYXZlIGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBlZmZlY3Qgb24gZmlsYW1lbnQgc3RyZW5ndGggYmVjYXVzZSBvZiB0aGUgaW5kaXZpZHVhbCBib3ggcGxvdCBieSBkaWFtZXRlciBhcmUgbm90IG92ZXJsYXBwaW5nIGZvciBNMSBhbmQgTTMgZm9yIDIgZGlhbWV0ZXJzLCAyNCBhbmQgMjguICANCg0KVGhlIGVuZA0KDQpLcmlzdGVyIA0KDQoNCg0KDQoNCg==