Executive Statement
The purpose of this investigation is to conduct a short statistical analysis to determine if there is a statistically significant difference in prices between the two supermarkets; Coles and Woolworths. The data has three variables, product, supermarket and price, with the sample size being 3540 observations. The data has been collected from the supermarket comparison site Frugl(link).
The investigation originally undertakes analysis with a significance level of \(\alpha\)=0.05 but is then changed to \(\alpha\)=0.1 to be more certain that if there is a difference in means, it is found. The two-sample \(t\)-test with \(\alpha\)=0.1 shows the \(t\) statistic of 1.771 being more extreme than the critical value of 1.645. The \(p\)-value approach, \(p\)=0.076<\(\alpha\)=0.1 and the 90% confidence interval of [0.0167,0.453] also allowed us to reject \(H_0\). From the statistical analysis undertaken within this report it can be concluded that there is a statistically significant difference in prices between the two supermarkets.
Load Packages and Data
library(pacman)
pacman::p_load(car,dplyr, magrittr, rmarkdown, readxl,knitr)
Supermarkets <- read_excel("C:/Users/ericj/Desktop/Masters Of Analytics/Introduction to Statistics/Supermarkets.xlsx")
Summary Statistics
Supermarkets %>% group_by(Supermarket) %>% summarise(Min = min(Price,na.rm = TRUE),
Q1 = quantile(Price,probs = .25,na.rm = TRUE),
Median = median(Price, na.rm = TRUE),
Q3 = quantile(Price,probs = .75,na.rm = TRUE),
Max = max(Price,na.rm = TRUE),
Mean = mean(Price, na.rm = TRUE),
SD = sd(Price, na.rm = TRUE),
n = n(),
Missing = sum(is.na(Price)))
Supermarkets %>% boxplot(Price ~ Supermarket, data = ., ylab = "Price(Dollars $)")

From the above boxplot, both supermarkets are extremely similar in price, however, there is an ever so slight difference between the two. Coles tends to have a slightly higher price. The two-sample \(t\)-test results will help to determine whether the difference is statistically significant.
Hypothesis Test
To compare the two Supermarkets: Coles and Woolworths, a two sample t-test was undertaken. Originally a test with \(\alpha\) =0.05 was used, however, the results did not fully capture a difference in means. Typically an \(\alpha\) of 0.05 is enough to capture any difference but to be cautious and more certain that a difference in means was detected if it existed, an \(\alpha\) = 0.1 was then used. As we are testing for a difference in costs between supermarkets, the trade-off for a type 1 error becoming a type 2 error is justified. Therefore, the choice of \(\alpha\) = 0.1 is chosen to be more certain that if there is a difference in prices, it will be detected.
# Initial Test of 95% Confidence Level
leveneTest(Price ~ Supermarket, data = Supermarkets)
group coerced to factor.
Levene's Test for Homogeneity of Variance (center = median)
Df F value Pr(>F)
group 1 1.2586 0.262
3538
t.test(Price ~ Supermarket, data = Supermarkets,var.equal=TRUE,alternative="two.sided")
Two Sample t-test
data: Price by Supermarket
t = 1.7711, df = 3538, p-value = 0.07663
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.02512623 0.49467425
sample estimates:
mean in group Coles mean in group Woolworths
4.855017 4.620243
qt(p=1-0.025,df=1770+1770-2)
[1] 1.960635
# Revised Test of 90% Confidence Level
t.test(Price ~ Supermarket, data = Supermarkets,var.equal=TRUE,alternative="two.sided",conf.level=0.9)
Two Sample t-test
data: Price by Supermarket
t = 1.7711, df = 3538, p-value = 0.07663
alternative hypothesis: true difference in means is not equal to 0
90 percent confidence interval:
0.01667636 0.45287166
sample estimates:
mean in group Coles mean in group Woolworths
4.855017 4.620243
qt(p=1-0.05,df=1770+1770-2)
[1] 1.645284
Taking into account the Central Limit Theorem (CLT) and the considerably large sample size of \(n\) being significantly greater than 30, we can assume that the sampling distribution of the mean for both supermarkets will be approximately normally distributed.
Interpretation
The first two-sample \(t\)-test with an \(\alpha\)=0.05 provided some interesting results. As the test statistic \(t\) from this test was \(t\)=1.771 was not as extreme as the critical value of 1.96, we fail to reject \(H_0\). According to the \(p\)-value method as \(p\)=0.076>\(\alpha\)=0.05, we fail to reject \(H_0\) yet again. The 95% CI is reported by R as [-0.025,0.495]. As the interval captures \(H_0\) we once again fail to reject the null hypothesis.
As the difference of means is calculated to be roughly (0.235) over a large sample size a \(t\)-test with an $alpha$=0.1 will be taken instead, to be more certain that a difference in means hasn’t been missed.
The revisited two-sample \(t\)-test with an \(\alpha\)=0.1 provided some much clearer results. The test statistic of \(t\)=1.771 was more extreme than the critical value of 1.645, leading us to reject \(H_0\). As the \(p\)-value = 0.076<\(\alpha\)=0.1,we reject \(H_0\). There is a statistically significant difference between the means. The 90% CI is reported by R as being [0.0167,0.453]. As the interval does not capture \(H_0\), we reject the null hypothesis. Once again, there is a significant difference between the means.
Discussion
The two-sample \(t\)-test with an \(\alpha\) value of 0.1 was used to test for a statistically significant difference between the mean price of two supermarkets;Coles and Woolworths. The central limit theorem made sure that a \(t\)-test could be applied due to the considerably large sample size. The Levene test for homogeneity of variance made sure that equal variances could be assumed. Reults of the \(t\)-test, having assumed equal variance found a statistically significant difference between the price of Coles and Woolworths supermarkets. The t statistic with \(df\)=3538 (\(t\)=1.771),\(p\)=0.0766 and 90% CI for the difference in means [0.0167,0.453] all rejected \(H_0\). The results suggest that Coles have statistically significant higher prices than Woolworths.
As this investigation only compares branded products found within both supermarkets, and not homebrand products that could be compared between the two supermarkets, the investigation may not be truly accurate. The investigation also does not take into account the amount of specials on in supermarkets and how often these specials occur. For instance Coles may have sales more often in comparison to Woolworths. However, in an attempt to counter such limitations a considerably large sample size was taken, covering a random variety of items, including bakery, pantry, baby, dairy & eggs, fridge and freezer products. For future studies, comparison between different product classifications could be undertaken.
LS0tDQp0aXRsZTogIk1BVEgxMzI0IEFzc2lnbm1lbnQgMyINCnN1YnRpdGxlOiAiU3VwZXJtYXJrZXQgUHJpY2UgV2FycyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMjIEdyb3VwL0luZGl2aWR1YWwgRGV0YWlscw0KDQoqIEVyaWMgQm9saXRobyAoczM0NTU4OTApDQoNCiMjIEV4ZWN1dGl2ZSBTdGF0ZW1lbnQNCg0KVGhlIHB1cnBvc2Ugb2YgdGhpcyBpbnZlc3RpZ2F0aW9uIGlzIHRvIGNvbmR1Y3QgYSBzaG9ydCBzdGF0aXN0aWNhbCBhbmFseXNpcyB0byBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2UgaW4gcHJpY2VzIGJldHdlZW4gdGhlIHR3byBzdXBlcm1hcmtldHM7IENvbGVzIGFuZCBXb29sd29ydGhzLiBUaGUgZGF0YSBoYXMgdGhyZWUgdmFyaWFibGVzLCBwcm9kdWN0LCBzdXBlcm1hcmtldCBhbmQgcHJpY2UsIHdpdGggdGhlIHNhbXBsZSBzaXplIGJlaW5nIDM1NDAgb2JzZXJ2YXRpb25zLiBUaGUgZGF0YSBoYXMgYmVlbiBjb2xsZWN0ZWQgZnJvbSB0aGUgc3VwZXJtYXJrZXQgY29tcGFyaXNvbiBzaXRlIEZydWdsKFtsaW5rXShodHRwczovL3d3dy5mcnVnbC5jb20uYXUvKSkuIA0KDQpUaGUgaW52ZXN0aWdhdGlvbiBvcmlnaW5hbGx5IHVuZGVydGFrZXMgYW5hbHlzaXMgd2l0aCBhIHNpZ25pZmljYW5jZSBsZXZlbCBvZiAkXGFscGhhJD0wLjA1IGJ1dCBpcyB0aGVuIGNoYW5nZWQgdG8gJFxhbHBoYSQ9MC4xIHRvIGJlIG1vcmUgY2VydGFpbiB0aGF0IGlmIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBpbiBtZWFucywgaXQgaXMgZm91bmQuIA0KVGhlIHR3by1zYW1wbGUgJHQkLXRlc3Qgd2l0aCAkXGFscGhhJD0wLjEgc2hvd3MgdGhlICR0JCBzdGF0aXN0aWMgb2YgMS43NzEgYmVpbmcgbW9yZSBleHRyZW1lIHRoYW4gdGhlIGNyaXRpY2FsIHZhbHVlIG9mIDEuNjQ1LiBUaGUgJHAkLXZhbHVlIGFwcHJvYWNoLCAkcCQ9MC4wNzY8JFxhbHBoYSQ9MC4xIGFuZCB0aGUgOTAlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgb2YgWzAuMDE2NywwLjQ1M10gYWxzbyBhbGxvd2VkIHVzIHRvIHJlamVjdCAkSF8wJC4NCkZyb20gdGhlIHN0YXRpc3RpY2FsIGFuYWx5c2lzIHVuZGVydGFrZW4gd2l0aGluIHRoaXMgcmVwb3J0IGl0IGNhbiBiZSBjb25jbHVkZWQgdGhhdCB0aGVyZSBpcyBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBpbiBwcmljZXMgYmV0d2VlbiB0aGUgdHdvIHN1cGVybWFya2V0cy4NCg0KDQojIyBMb2FkIFBhY2thZ2VzIGFuZCBEYXRhDQoNCmBgYHtyfQ0KbGlicmFyeShwYWNtYW4pDQpwYWNtYW46OnBfbG9hZChjYXIsZHBseXIsIG1hZ3JpdHRyLCBybWFya2Rvd24sIHJlYWR4bCxrbml0cikNClN1cGVybWFya2V0cyA8LSByZWFkX2V4Y2VsKCJDOi9Vc2Vycy9lcmljai9EZXNrdG9wL01hc3RlcnMgT2YgQW5hbHl0aWNzL0ludHJvZHVjdGlvbiB0byBTdGF0aXN0aWNzL1N1cGVybWFya2V0cy54bHN4IikNCg0KYGBgDQoNCiMjIFN1bW1hcnkgU3RhdGlzdGljcw0KDQpgYGB7cn0NClN1cGVybWFya2V0cyAlPiUgZ3JvdXBfYnkoU3VwZXJtYXJrZXQpICU+JSBzdW1tYXJpc2UoTWluID0gbWluKFByaWNlLG5hLnJtID0gVFJVRSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFExID0gcXVhbnRpbGUoUHJpY2UscHJvYnMgPSAuMjUsbmEucm0gPSBUUlVFKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFuID0gbWVkaWFuKFByaWNlLCBuYS5ybSA9IFRSVUUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRMyA9IHF1YW50aWxlKFByaWNlLHByb2JzID0gLjc1LG5hLnJtID0gVFJVRSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heCA9IG1heChQcmljZSxuYS5ybSA9IFRSVUUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWFuID0gbWVhbihQcmljZSwgbmEucm0gPSBUUlVFKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0QgPSBzZChQcmljZSwgbmEucm0gPSBUUlVFKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4oKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWlzc2luZyA9IHN1bShpcy5uYShQcmljZSkpKQ0KU3VwZXJtYXJrZXRzICU+JSBib3hwbG90KFByaWNlIH4gU3VwZXJtYXJrZXQsIGRhdGEgPSAuLCB5bGFiID0gIlByaWNlKERvbGxhcnMgJCkiKQ0KDQpgYGANCg0KRnJvbSB0aGUgYWJvdmUgYm94cGxvdCwgYm90aCBzdXBlcm1hcmtldHMgYXJlIGV4dHJlbWVseSBzaW1pbGFyIGluIHByaWNlLCBob3dldmVyLCB0aGVyZSBpcyBhbiBldmVyIHNvIHNsaWdodCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3by4gQ29sZXMgdGVuZHMgdG8gaGF2ZSBhIHNsaWdodGx5IGhpZ2hlciBwcmljZS4gVGhlIHR3by1zYW1wbGUgJHQkLXRlc3QgcmVzdWx0cyB3aWxsIGhlbHAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRpZmZlcmVuY2UgaXMgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudC4NCg0KIyMgSHlwb3RoZXNpcyBUZXN0DQoNClRvIGNvbXBhcmUgdGhlIHR3byBTdXBlcm1hcmtldHM6IENvbGVzIGFuZCBXb29sd29ydGhzLCBhIHR3byBzYW1wbGUgdC10ZXN0IHdhcyB1bmRlcnRha2VuLiBPcmlnaW5hbGx5IGEgdGVzdCB3aXRoICRcYWxwaGEkID0wLjA1IHdhcyB1c2VkLCBob3dldmVyLCB0aGUgcmVzdWx0cyBkaWQgbm90IGZ1bGx5IGNhcHR1cmUgYSBkaWZmZXJlbmNlIGluIG1lYW5zLiBUeXBpY2FsbHkgYW4gJFxhbHBoYSQgb2YgMC4wNSBpcyBlbm91Z2ggdG8gY2FwdHVyZSBhbnkgZGlmZmVyZW5jZSBidXQgdG8gYmUgY2F1dGlvdXMgYW5kIG1vcmUgY2VydGFpbiB0aGF0IGEgZGlmZmVyZW5jZSBpbiBtZWFucyB3YXMgZGV0ZWN0ZWQgaWYgaXQgZXhpc3RlZCwgYW4gJFxhbHBoYSQgPSAwLjEgd2FzIHRoZW4gdXNlZC4gQXMgd2UgYXJlIHRlc3RpbmcgZm9yIGEgZGlmZmVyZW5jZSBpbiBjb3N0cyBiZXR3ZWVuIHN1cGVybWFya2V0cywgdGhlIHRyYWRlLW9mZiBmb3IgYSB0eXBlIDEgZXJyb3IgYmVjb21pbmcgYSB0eXBlIDIgZXJyb3IgaXMganVzdGlmaWVkLiBUaGVyZWZvcmUsIHRoZSBjaG9pY2Ugb2YgJFxhbHBoYSQgPSAwLjEgaXMgY2hvc2VuIHRvIGJlIG1vcmUgY2VydGFpbiB0aGF0IGlmIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBpbiBwcmljZXMsIGl0IHdpbGwgYmUgZGV0ZWN0ZWQuDQoNCmBgYHtyfQ0KIyBJbml0aWFsIFRlc3Qgb2YgOTUlIENvbmZpZGVuY2UgTGV2ZWwNCmxldmVuZVRlc3QoUHJpY2UgfiBTdXBlcm1hcmtldCwgZGF0YSA9IFN1cGVybWFya2V0cykNCnQudGVzdChQcmljZSB+IFN1cGVybWFya2V0LCBkYXRhID0gU3VwZXJtYXJrZXRzLHZhci5lcXVhbD1UUlVFLGFsdGVybmF0aXZlPSJ0d28uc2lkZWQiKQ0KcXQocD0xLTAuMDI1LGRmPTE3NzArMTc3MC0yKQ0KDQojIFJldmlzZWQgVGVzdCBvZiA5MCUgQ29uZmlkZW5jZSBMZXZlbA0KdC50ZXN0KFByaWNlIH4gU3VwZXJtYXJrZXQsIGRhdGEgPSBTdXBlcm1hcmtldHMsdmFyLmVxdWFsPVRSVUUsYWx0ZXJuYXRpdmU9InR3by5zaWRlZCIsY29uZi5sZXZlbD0wLjkpDQpxdChwPTEtMC4wNSxkZj0xNzcwKzE3NzAtMikNCg0KYGBgDQoNClRha2luZyBpbnRvIGFjY291bnQgdGhlIENlbnRyYWwgTGltaXQgVGhlb3JlbSAoQ0xUKSBhbmQgdGhlIGNvbnNpZGVyYWJseSBsYXJnZSBzYW1wbGUgc2l6ZSBvZiAkbiQgYmVpbmcgc2lnbmlmaWNhbnRseSBncmVhdGVyIHRoYW4gMzAsIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGUgc2FtcGxpbmcgZGlzdHJpYnV0aW9uIG9mIHRoZSBtZWFuIGZvciBib3RoIHN1cGVybWFya2V0cyB3aWxsIGJlIGFwcHJveGltYXRlbHkgbm9ybWFsbHkgZGlzdHJpYnV0ZWQuDQoNCiMjIEludGVycHJldGF0aW9uDQoNClRoZSBmaXJzdCB0d28tc2FtcGxlICR0JC10ZXN0IHdpdGggYW4gJFxhbHBoYSQ9MC4wNSBwcm92aWRlZCBzb21lIGludGVyZXN0aW5nIHJlc3VsdHMuIEFzIHRoZSB0ZXN0IHN0YXRpc3RpYyAkdCQgZnJvbSB0aGlzIHRlc3Qgd2FzICR0JD0xLjc3MSB3YXMgbm90IGFzIGV4dHJlbWUgYXMgdGhlIGNyaXRpY2FsIHZhbHVlIG9mIDEuOTYsIHdlIGZhaWwgdG8gcmVqZWN0ICRIXzAkLiBBY2NvcmRpbmcgdG8gdGhlICRwJC12YWx1ZSBtZXRob2QgYXMgJHAkPTAuMDc2PiRcYWxwaGEkPTAuMDUsIHdlIGZhaWwgdG8gcmVqZWN0ICRIXzAkIHlldCBhZ2Fpbi4gVGhlIDk1JSBDSSBpcyByZXBvcnRlZCBieSBSIGFzIFstMC4wMjUsMC40OTVdLiBBcyB0aGUgaW50ZXJ2YWwgY2FwdHVyZXMgJEhfMCQgd2Ugb25jZSBhZ2FpbiBmYWlsIHRvIHJlamVjdCB0aGUgbnVsbCBoeXBvdGhlc2lzLg0KDQpBcyB0aGUgZGlmZmVyZW5jZSBvZiBtZWFucyBpcyBjYWxjdWxhdGVkIHRvIGJlIHJvdWdobHkgKDAuMjM1KSBvdmVyIGEgbGFyZ2Ugc2FtcGxlIHNpemUgYSAkdCQtdGVzdCB3aXRoIGFuIFwkYWxwaGEkPTAuMSB3aWxsIGJlIHRha2VuIGluc3RlYWQsIHRvIGJlIG1vcmUgY2VydGFpbiB0aGF0IGEgZGlmZmVyZW5jZSBpbiBtZWFucyBoYXNuJ3QgYmVlbiBtaXNzZWQuDQoNClRoZSByZXZpc2l0ZWQgdHdvLXNhbXBsZSAkdCQtdGVzdCB3aXRoIGFuICRcYWxwaGEkPTAuMSBwcm92aWRlZCBzb21lIG11Y2ggY2xlYXJlciByZXN1bHRzLiBUaGUgdGVzdCBzdGF0aXN0aWMgb2YgJHQkPTEuNzcxIHdhcyBtb3JlIGV4dHJlbWUgdGhhbiB0aGUgY3JpdGljYWwgdmFsdWUgb2YgMS42NDUsIGxlYWRpbmcgdXMgdG8gcmVqZWN0ICRIXzAkLiBBcyB0aGUgJHAkLXZhbHVlID0gMC4wNzY8JFxhbHBoYSQ9MC4xLHdlIHJlamVjdCAkSF8wJC4gVGhlcmUgaXMgYSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbWVhbnMuIFRoZSA5MCUgQ0kgaXMgcmVwb3J0ZWQgYnkgUiBhcyBiZWluZyBbMC4wMTY3LDAuNDUzXS4gQXMgdGhlIGludGVydmFsIGRvZXMgbm90IGNhcHR1cmUgJEhfMCQsIHdlIHJlamVjdCB0aGUgbnVsbCBoeXBvdGhlc2lzLiBPbmNlIGFnYWluLCB0aGVyZSBpcyBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbWVhbnMuDQoNCiMjIERpc2N1c3Npb24gDQoNClRoZSB0d28tc2FtcGxlICR0JC10ZXN0IHdpdGggYW4gJFxhbHBoYSQgdmFsdWUgb2YgMC4xIHdhcyB1c2VkIHRvIHRlc3QgZm9yIGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG1lYW4gcHJpY2Ugb2YgdHdvIHN1cGVybWFya2V0cztDb2xlcyBhbmQgV29vbHdvcnRocy4gVGhlIGNlbnRyYWwgbGltaXQgdGhlb3JlbSBtYWRlIHN1cmUgdGhhdCBhICR0JC10ZXN0IGNvdWxkIGJlIGFwcGxpZWQgZHVlIHRvIHRoZSBjb25zaWRlcmFibHkgbGFyZ2Ugc2FtcGxlIHNpemUuIFRoZSBMZXZlbmUgdGVzdCBmb3IgaG9tb2dlbmVpdHkgb2YgdmFyaWFuY2UgbWFkZSBzdXJlIHRoYXQgZXF1YWwgdmFyaWFuY2VzIGNvdWxkIGJlIGFzc3VtZWQuIFJldWx0cyBvZiB0aGUgJHQkLXRlc3QsIGhhdmluZyBhc3N1bWVkIGVxdWFsIHZhcmlhbmNlIGZvdW5kIGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHByaWNlIG9mIENvbGVzIGFuZCBXb29sd29ydGhzIHN1cGVybWFya2V0cy4gVGhlIHQgc3RhdGlzdGljIHdpdGggJGRmJD0zNTM4ICgkdCQ9MS43NzEpLCRwJD0wLjA3NjYgYW5kIDkwJSBDSSBmb3IgdGhlIGRpZmZlcmVuY2UgaW4gbWVhbnMgWzAuMDE2NywwLjQ1M10gYWxsIHJlamVjdGVkICRIXzAkLiBUaGUgcmVzdWx0cyBzdWdnZXN0IHRoYXQgQ29sZXMgaGF2ZSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGhpZ2hlciBwcmljZXMgdGhhbiBXb29sd29ydGhzLg0KDQpBcyB0aGlzIGludmVzdGlnYXRpb24gb25seSBjb21wYXJlcyBicmFuZGVkIHByb2R1Y3RzIGZvdW5kIHdpdGhpbiBib3RoIHN1cGVybWFya2V0cywgYW5kIG5vdCBob21lYnJhbmQgcHJvZHVjdHMgdGhhdCBjb3VsZCBiZSBjb21wYXJlZCBiZXR3ZWVuIHRoZSB0d28gc3VwZXJtYXJrZXRzLCB0aGUgaW52ZXN0aWdhdGlvbiBtYXkgbm90IGJlIHRydWx5IGFjY3VyYXRlLiBUaGUgaW52ZXN0aWdhdGlvbiBhbHNvIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBhbW91bnQgb2Ygc3BlY2lhbHMgb24gaW4gc3VwZXJtYXJrZXRzIGFuZCBob3cgb2Z0ZW4gdGhlc2Ugc3BlY2lhbHMgb2NjdXIuIEZvciBpbnN0YW5jZSBDb2xlcyBtYXkgaGF2ZSBzYWxlcyBtb3JlIG9mdGVuIGluIGNvbXBhcmlzb24gdG8gV29vbHdvcnRocy4gSG93ZXZlciwgaW4gYW4gYXR0ZW1wdCB0byBjb3VudGVyIHN1Y2ggbGltaXRhdGlvbnMgYSBjb25zaWRlcmFibHkgbGFyZ2Ugc2FtcGxlIHNpemUgd2FzIHRha2VuLCBjb3ZlcmluZyBhIHJhbmRvbSB2YXJpZXR5IG9mIGl0ZW1zLCBpbmNsdWRpbmcgYmFrZXJ5LCBwYW50cnksIGJhYnksIGRhaXJ5ICYgZWdncywgZnJpZGdlIGFuZCBmcmVlemVyIHByb2R1Y3RzLiBGb3IgZnV0dXJlIHN0dWRpZXMsIGNvbXBhcmlzb24gYmV0d2VlbiBkaWZmZXJlbnQgcHJvZHVjdCBjbGFzc2lmaWNhdGlvbnMgY291bGQgYmUgdW5kZXJ0YWtlbi4NCg==