**Simple versus Composite Hypothesis*

Simple Hypothesis

  • Simple Hypothesis Test is a hypothesis that completely specifies the population distribution. Mathematically, simple hypothesis fixes all parameters to specific values. For example, The simple hypotheses are: \(H_0: \mu = 5\) (if \(\alpha\) is known), \(H_0: \mu = 100, \sigma^2 = 25\), and \(H_1: p = 0.7\) for a Bernoulli distribution.

  • Example Scenario Test if a coin is fair:

\[\begin{aligned} H_0&: p = 0.5 \quad \text{(completely specified)} \\ H_1&: p = 0.6 \quad \text{(also completely specified)} \end{aligned}\]

Both are simple hypotheses.

Composite Hypothesis

  • Composite Hypothesis is a hypothesis that does not completely specify the distribution. Mathematically, it allows a range of values for at least one parameter. For example, in one-sided: \(\mu >5\); in two-sided: \(\mu \le 5\).

  • Example Scenarios

\[\begin{aligned} &H_0: \mu = 5 && \text{(simple)} \\ &H_1: \mu > 5 && \text{(composite)} \end{aligned}\] \[\begin{aligned} &H_0: \mu \leq 5 && \text{(composite)} \\ &H_1: \mu > 5 && \text{(composite)} \end{aligned}\] \[\begin{aligned} &H_0: \text{data follows } N(\mu, 1), \mu = 0 && \text{(simple)} \\ &H_1: \text{data follows Poisson}(\lambda) && \text{(composite – different family)} \end{aligned}\]

This assignment focuses on performing performing a test of mean (\(\mu\)) a normal population and calculating the power and sample size based on various assumptions


Question: New Cholesterol Medication

A pharmaceutical company develops “CholestFix” to reduce Low-Density Lipoprotein (LDL, fat carrier that’s low in density) cholesterol. The current standard drug lowers LDL by an average of 25 mg/dL with a standard deviation of 15 mg/dL. A clinical trial with 5 participants were recruited in the study for three months. At the end of the study, the mean reduction is 29 mg/dL. Assume that the variance of LDL reduction of new drug is the same as that of the standard drugs.

Based on the results in the clinical trial, researchers in the company believe CholestFix is more effective.

a). Perform a formal hypothesis test of the researchers’ belief regarding LDL reduction, using a significance level of \(\alpha = 0.05\).

Step 1: Gather Available Information for Hypothesis Testing:

\(n = 5,\quad \bar{x} = 29,\quad \sigma = 15,\quad \mu_0 = 25,\quad \alpha = 0.05\) The claim is that \(\mu > 25\)

Step 2: State the Hypotheses:

\(H_0:\mu = 25\)

\(H_1:\mu > 25\)

\(H_1: \mu > \mu_0\) This is a right-tailed test.

Step 3: Select an Appropriate Test and Evaluate the Test Statistic:

One-sample z-test: \[ z = \frac{\bar{x} - \mu_0}{\sigma/\sqrt{n}} \]

Substitute the given values:

\[ z=\frac{29-25}{15/\sqrt{5}} \]

\[ z=\frac{4}{6.7082} \] \[ z=0.5963 \]

Step 4: Determine the Critical Value(s) and/or P-value:

For a right-tailed test with \(\alpha=0.05\), the critical value is: \(z_{0.95}=1.645\)

The p-value is:

\(p=P(Z>0.5963)=1-\Phi(0.5963)\approx 0.2755\)

Step 5: Make a Decision:

Using the critical value approach:

0.5963 < 1.645 so we fail to reject \(H_0\).

Using the p-value approach:

0.2755 > 0.05 so we again fail to reject \(H_0\).

Step 6: State the Conclusion in Context:

There is insufficient statistical evidence at the \(\alpha=0.05\) level to conclude that CholestFix lowers LDL cholesterol more than the current standard drug.

Summary:

Although the sample mean reduction for CholestFix is higher than 25 mg/dL, the sample size is very small and the population standard deviation is large relative to the observed difference. Therefore, the observed improvement is not statistically significant.

b). Given \(n = 50, \sigma = 15, \alpha = 0.05\), and an effect size we wish to detect \(\delta = 4\) mg/dL (corresponding to a reduction from 29 mg/dL to 25 mg/dL). What is the probability that we’d detect a true improvement?

Step 1: Given Information

\(n = 50, \quad \sigma = 15, \quad \alpha = 0.05, \quad \delta = 4\)

\(\mu_1 = \mu_0 + \delta = 25 + 4 = 29\)

Step 2: Hypotheses

\(H_0: \mu = 25, \qquad H_1: \mu > 25\)

Step 3: Standardized Effect

\[ \lambda = \frac{\delta}{\sigma / \sqrt{n}} = \frac{4}{15 / \sqrt{50}} = \frac{4\sqrt{50}}{15} = 1.8856 \]

Step 4: Power Formula

For a right-tailed test, reject \(H_0\) if \(Z > z_{0.95} = 1.645\)

Therefore, the power is

\[ \text{Power} = P(Z > 1.645 - 1.8856) = P(Z > -0.2406) = P(Z < 0.2406) = 0.5951 \] Summary: The power was calculated to be approximately 0.5951. This means that if the true improvement is 4 mg/dL, the probability of correctly rejecting \(H_0\) is about 59.5%. This power is lower than the commonly desired level of 0.80, indicating that a sample size of 50 is not sufficient to reliably detect this effect.

c). Determine the minimum sample size required to detect an effect size of 4 mg/dL with a power of \(1 - \beta = 0.8\) and a significance level of \(\alpha = 0.05\). Assume the standard deviation of LDL reduction is 15 mg/dL.

Step 1: Given Information

\[ \delta = 4, \quad \sigma = 15, \quad \alpha = 0.05, \quad 1 - \beta = 0.8 \]

Step 2: Formula

\[ n \approx \left( \frac{(z_{1-\alpha} + z_{1-\beta}) \sigma}{\delta} \right)^2 \]

Step 3: Substitute Values

\[ z_{1-\alpha} = 1.645, \quad z_{1-\beta} = 0.842 \]

\[ n \approx \left( \frac{(1.645 + 0.842)(15)}{4} \right)^2 = \left( \frac{2.487 \cdot 15}{4} \right)^2 = (9.3263)^2 = 86.98 \]

Step 4: Final Answer

\[ n = 87 \]

Summary:The required sample size to achieve 80% power at the 5% significance level was approximately 86.98, which is rounded up to 87. This shows that a much larger sample is needed to reliably detect a true improvement of 4 mg/dL compared to the smaller sample sizes used earlier.

d). Power curve: To assess the impact of sample size on power, we can create a power function in terms of the sample size \(n\) and use the remaining information from part (b). Plot the power curve by selecting a sequence of sample sizes.

Step 1: The information is based on part (b):

\[ \alpha = 0.05, \quad \delta = 4, \quad \sigma = 15 \]

Step 2: Power function

For the one-sample right-tailed test, reject \[H_0\] if

\[ Z > 1.645 \]

So the power function is

\[ \pi(n) = P\left(Z > 1.645 - \frac{4\sqrt{n}}{15}\right) \]

Step 3: Interpretation of the function

As \(n\) increases, the quantity \(\frac{4\sqrt{n}}{15}\)increases, so the probability of rejection also increases.

Step 4: Selected values will be computed and plotted in R.

Step 5: Decision - no reject/fail-to-reject decision is needed. We examine how power changes with sample size.

Step 6: Interpretation - The power curve shows that larger sample sizes lead to higher power. Around \[n = 87\], the power reaches approximately 0.80.

Verification Using R:

# Power curve

alpha <- 0.05
delta <- 4
sigma <- 15
n_seq <- seq(5, 150, by = 1)

power_curve <- 1 - pnorm(qnorm(0.95) - delta * sqrt(n_seq) / sigma)

plot(n_seq, power_curve, type = "l", lwd = 2,
     xlab = "Sample Size (n)",
     ylab = "Power",
     main = "Power Curve")

abline(h = 0.80, lty = 2)
abline(v = 87, lty = 2)

Summary:The power curve shows that power increases as the sample size increases. For small sample sizes, the power is low, meaning there is a high chance of failing to detect a true effect. As the sample size approaches 87, the power reaches approximately 0.80. This confirms that larger sample sizes improve the ability to detect a true treatment effect.

LS0tDQp0aXRsZTogIkFzc2lnbm1lbnQgOTogSHlwb3RoZXNpcyBUZXN0aW5nIGFuZCBQb3dlciBhbmQgU2FtcGxlIHNpemUgRGV0ZXJtaW5hdGlvbiINCmF1dGhvcjogIlhpYW95aW5nIE1hICINCmRhdGU6ICIgRHVlOiAwNC8wNy8yMDI2ICINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICB0b2NfZmxvYXQ6IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogbm8NCiAgICB0b2NfY29sbGFwc2VkOiB5ZXMNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMNCiAgICBoaWdobGlnaHQ6IG1vbm9jaHJvbWUNCiAgICB0aGVtZTogc3BhY2VsYWINCiAgd29yZF9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQogICAga2VlcF9tZDogeWVzDQogIHBkZl9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICBmaWdfd2lkdGg6IDMNCiAgICBmaWdfaGVpZ2h0OiAzDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUNCi0tLQ0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQojVE9DOjpiZWZvcmUgew0KICBjb250ZW50OiAiVGFibGUgb2YgQ29udGVudHMiOw0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1zaXplOiAxLjJlbTsNCiAgZGlzcGxheTogYmxvY2s7DQogIGNvbG9yOiBuYXZ5Ow0KICBtYXJnaW4tYm90dG9tOiAxMHB4Ow0KfQ0KDQoNCmRpdiNUT0MgbGkgeyAgICAgLyogdGFibGUgb2YgY29udGVudCAgKi8NCiAgICBsaXN0LXN0eWxlOnVwcGVyLXJvbWFuOw0KICAgIGJhY2tncm91bmQtaW1hZ2U6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDpub25lOw0KICAgIGJhY2tncm91bmQtcG9zaXRpb246MDsNCn0NCg0KaDEudGl0bGUgeyAgICAvKiBsZXZlbCAxIGhlYWRlciBvZiB0aXRsZSAgKi8NCiAgZm9udC1zaXplOiAyMnB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgY29sb3I6IERhcmtSZWQ7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgZm9udC1mYW1pbHk6ICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOw0KfQ0KDQpoNC5hdXRob3IgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICBmb250LXNpemU6IDE1cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmb250LWZhbWlseTogc3lzdGVtLXVpOw0KICBjb2xvcjogbmF2eTsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQpoNC5kYXRlIHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1mYW1pbHk6ICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOw0KICBjb2xvcjogRGFya0JsdWU7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KaDEgeyAvKiBIZWFkZXIgMSAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMjBweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogZGFya3JlZDsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCmgyIHsgLyogSGVhZGVyIDIgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE4cHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IG5hdnk7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KaDMgeyAvKiBIZWFkZXIgMyAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMTZweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogbmF2eTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoNCB7IC8qIEhlYWRlciA0IC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxNHB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogZGFya3JlZDsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQovKiBBZGQgZG90cyBhZnRlciBudW1iZXJlZCBoZWFkZXJzICovDQouaGVhZGVyLXNlY3Rpb24tbnVtYmVyOjphZnRlciB7DQogIGNvbnRlbnQ6ICIuIjsNCg0KYm9keSB7YmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsNCiAgICAgIGNvbG9yOiAjMDAwMDAwOw0KICAgICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOw0KICAgICAgZm9udC1zaXplOiAxcmVtOw0KICAgICAgbGluZS1oZWlnaHQ6IDEuNjsNCiAgICAgIH0NCg0KLmhpZ2hsaWdodG1lIHsgYmFja2dyb3VuZC1jb2xvcjp5ZWxsb3c7IH0NCg0KcCB7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IH0NCg0KfQ0KYGBgDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0KIyBjb2RlIGNodW5rIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBSIGNvZGUsIHdhcm5pbmdzLCBhbmQgb3V0cHV0IA0KIyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQgZmlsZXMuDQppZiAoIXJlcXVpcmUoImtuaXRyIikpIHsNCiAgIGluc3RhbGwucGFja2FnZXMoImtuaXRyIikNCiAgIGxpYnJhcnkoa25pdHIpDQp9DQppZiAoIXJlcXVpcmUoInBhbmRlciIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJwYW5kZXIiKQ0KICAgbGlicmFyeShwYW5kZXIpDQp9DQppZiAoIXJlcXVpcmUoImdncGxvdDIiKSkgew0KICBpbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikNCiAgbGlicmFyeShnZ3Bsb3QyKQ0KfQ0KaWYgKCFyZXF1aXJlKCJ0aWR5dmVyc2UiKSkgew0KICBpbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQ0KICBsaWJyYXJ5KHRpZHl2ZXJzZSkNCn0NCg0KaWYgKCFyZXF1aXJlKCJwbG90bHkiKSkgew0KICBpbnN0YWxsLnBhY2thZ2VzKCJwbG90bHkiKQ0KICBsaWJyYXJ5KHBsb3RseSkNCn0NCg0KaWYgKCFyZXF1aXJlKCJWR0FNIikpIHsNCiAgaW5zdGFsbC5wYWNrYWdlcygiVkdBTSIpDQogIGxpYnJhcnkoVkdBTSkNCn0NCiMjIyMgVkdBTQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCAgICAgICAjIGluY2x1ZGUgY29kZSBjaHVuayBpbiB0aGUgb3V0cHV0IGZpbGUNCiAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gRkFMU0UsICAgIyBzb21ldGltZXMsIHlvdSBjb2RlIG1heSBwcm9kdWNlIHdhcm5pbmcgbWVzc2FnZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgeW91IGNhbiBjaG9vc2UgdG8gaW5jbHVkZSB0aGUgd2FybmluZyBtZXNzYWdlcyBpbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBvdXRwdXQgZmlsZS4gDQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IFRSVUUsICAgICMgeW91IGNhbiBhbHNvIGRlY2lkZSB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlIG91dHB1dA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBvdXRwdXQgZmlsZS4NCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IE5BDQogICAgICAgICAgICAgICAgICAgICAgKSAgDQpgYGANCg0KDQojIyAqKlNpbXBsZSB2ZXJzdXMgQ29tcG9zaXRlIEh5cG90aGVzaXMqDQoNCioqU2ltcGxlIEh5cG90aGVzaXMqKg0KDQoqICoqU2ltcGxlIEh5cG90aGVzaXMgVGVzdCoqIGlzIGEgaHlwb3RoZXNpcyB0aGF0IGNvbXBsZXRlbHkgc3BlY2lmaWVzIHRoZSBwb3B1bGF0aW9uIGRpc3RyaWJ1dGlvbi4gTWF0aGVtYXRpY2FsbHksIHNpbXBsZSBoeXBvdGhlc2lzIGZpeGVzIGFsbCBwYXJhbWV0ZXJzIHRvIHNwZWNpZmljIHZhbHVlcy4gRm9yIGV4YW1wbGUsIFRoZSBzaW1wbGUgaHlwb3RoZXNlcyBhcmU6ICRIXzA6IFxtdSA9IDUkIChpZiAkXGFscGhhJCBpcyBrbm93biksICRIXzA6IFxtdSA9IDEwMCwgXHNpZ21hXjIgPSAyNSQsIGFuZCAkSF8xOiBwID0gMC43JCBmb3IgYSBCZXJub3VsbGkgZGlzdHJpYnV0aW9uLg0KDQoqICoqRXhhbXBsZSBTY2VuYXJpbyoqICBUZXN0IGlmIGEgY29pbiBpcyBmYWlyOg0KDQpcYmVnaW57YWxpZ25lZH0NCkhfMCY6IHAgPSAwLjUgXHF1YWQgXHRleHR7KGNvbXBsZXRlbHkgc3BlY2lmaWVkKX0gXFwNCkhfMSY6IHAgPSAwLjYgXHF1YWQgXHRleHR7KGFsc28gY29tcGxldGVseSBzcGVjaWZpZWQpfQ0KXGVuZHthbGlnbmVkfQ0KDQpCb3RoIGFyZSAqKnNpbXBsZSoqIGh5cG90aGVzZXMuDQoNCioqQ29tcG9zaXRlIEh5cG90aGVzaXMqKg0KDQoqICoqQ29tcG9zaXRlIEh5cG90aGVzaXMqKiBpcyBhIGh5cG90aGVzaXMgdGhhdCBkb2VzIG5vdCBjb21wbGV0ZWx5IHNwZWNpZnkgdGhlIGRpc3RyaWJ1dGlvbi4gTWF0aGVtYXRpY2FsbHksIGl0IGFsbG93cyBhIHJhbmdlIG9mIHZhbHVlcyBmb3IgYXQgbGVhc3Qgb25lIHBhcmFtZXRlci4gRm9yIGV4YW1wbGUsIGluIG9uZS1zaWRlZDogJFxtdSA+NSQ7IGluIHR3by1zaWRlZDogJFxtdSBcbGUgNSQuDQoNCiogKipFeGFtcGxlIFNjZW5hcmlvcyoqIA0KDQoNClxiZWdpbnthbGlnbmVkfQ0KJkhfMDogXG11ID0gNSAmJiBcdGV4dHsoc2ltcGxlKX0gXFwNCiZIXzE6IFxtdSA+IDUgJiYgXHRleHR7KGNvbXBvc2l0ZSl9DQpcZW5ke2FsaWduZWR9DQoNCg0KDQpcYmVnaW57YWxpZ25lZH0NCiZIXzA6IFxtdSBcbGVxIDUgJiYgXHRleHR7KGNvbXBvc2l0ZSl9IFxcDQomSF8xOiBcbXUgPiA1ICYmIFx0ZXh0eyhjb21wb3NpdGUpfQ0KXGVuZHthbGlnbmVkfQ0KDQoNClxiZWdpbnthbGlnbmVkfQ0KJkhfMDogXHRleHR7ZGF0YSBmb2xsb3dzIH0gTihcbXUsIDEpLCBcbXUgPSAwICYmIFx0ZXh0eyhzaW1wbGUpfSBcXA0KJkhfMTogXHRleHR7ZGF0YSBmb2xsb3dzIFBvaXNzb259KFxsYW1iZGEpICYmIFx0ZXh0eyhjb21wb3NpdGUg4oCTIGRpZmZlcmVudCBmYW1pbHkpfQ0KXGVuZHthbGlnbmVkfQ0KDQoNCg0KPHA+PGZvbnQgY29sb3IgPSAiZGFya3JlZCI+KipUaGlzIGFzc2lnbm1lbnQgZm9jdXNlcyBvbiBwZXJmb3JtaW5nIHBlcmZvcm1pbmcgYSB0ZXN0IG9mIG1lYW4gKCRcbXUkKSBhIG5vcm1hbCBwb3B1bGF0aW9uIGFuZCBjYWxjdWxhdGluZyB0aGUgcG93ZXIgYW5kIHNhbXBsZSBzaXplIGJhc2VkIG9uIHZhcmlvdXMgYXNzdW1wdGlvbnMqKjwvZm9udD48L3A+DQoNCg0KXA0KDQojIyAqKlF1ZXN0aW9uOiBOZXcgQ2hvbGVzdGVyb2wgTWVkaWNhdGlvbioqDQoNCjxwPg0KQSBwaGFybWFjZXV0aWNhbCBjb21wYW55IGRldmVsb3BzICoqIkNob2xlc3RGaXgiKiogdG8gcmVkdWNlIExvdy1EZW5zaXR5IExpcG9wcm90ZWluIChMREwsICpmYXQgY2FycmllciB0aGF0J3MgbG93IGluIGRlbnNpdHkqKSBjaG9sZXN0ZXJvbC4gVGhlICoqY3VycmVudCBzdGFuZGFyZCBkcnVnKiogbG93ZXJzIExETCBieSBhbiBhdmVyYWdlIG9mIDI1IG1nL2RMIHdpdGggYSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgMTUgbWcvZEwuIEEgY2xpbmljYWwgdHJpYWwgd2l0aCA1IHBhcnRpY2lwYW50cyB3ZXJlIHJlY3J1aXRlZCBpbiB0aGUgc3R1ZHkgZm9yIHRocmVlIG1vbnRocy4gQXQgdGhlIGVuZCBvZiB0aGUgc3R1ZHksIHRoZSBtZWFuIHJlZHVjdGlvbiBpcyAyOSBtZy9kTC4gQXNzdW1lIHRoYXQgdGhlIHZhcmlhbmNlIG9mIExETCByZWR1Y3Rpb24gb2YgbmV3IGRydWcgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgc3RhbmRhcmQgZHJ1Z3MuDQoNCkJhc2VkIG9uIHRoZSByZXN1bHRzIGluIHRoZSBjbGluaWNhbCB0cmlhbCwgcmVzZWFyY2hlcnMgaW4gdGhlIGNvbXBhbnkgYmVsaWV2ZSAqKkNob2xlc3RGaXgqKiBpcyBtb3JlIGVmZmVjdGl2ZS4NCjwvcD4NCg0KDQo8cD4NCmEpLiBQZXJmb3JtIGEgZm9ybWFsIGh5cG90aGVzaXMgdGVzdCBvZiB0aGUgcmVzZWFyY2hlcnPigJkgYmVsaWVmIHJlZ2FyZGluZyBMREwgcmVkdWN0aW9uLCB1c2luZyBhIHNpZ25pZmljYW5jZSBsZXZlbCBvZiAkXGFscGhhID0gMC4wNSQuDQoNCg0KKipTdGVwIDE6IEdhdGhlciBBdmFpbGFibGUgSW5mb3JtYXRpb24gZm9yIEh5cG90aGVzaXMgVGVzdGluZyoqOg0KDQpcKG4gPSA1LFxxdWFkIFxiYXJ7eH0gPSAyOSxccXVhZCBcc2lnbWEgPSAxNSxccXVhZCBcbXVfMCA9IDI1LFxxdWFkIFxhbHBoYSA9IDAuMDUNClwpDQpUaGUgY2xhaW0gaXMgdGhhdA0KJFxtdSA+IDI1JA0KDQoqKlN0ZXAgMjogU3RhdGUgdGhlIEh5cG90aGVzZXMqKjoNCg0KJEhfMDpcbXUgPSAyNSQNCg0KJEhfMTpcbXUgPiAyNSQNCg0KJEhfMTogXG11ID4gXG11XzAkIFRoaXMgaXMgYSAqKnJpZ2h0LXRhaWxlZCB0ZXN0KiouDQoNCioqU3RlcCAzOiBTZWxlY3QgYW4gQXBwcm9wcmlhdGUgVGVzdCBhbmQgRXZhbHVhdGUgdGhlIFRlc3QgU3RhdGlzdGljKio6DQoNCk9uZS1zYW1wbGUgei10ZXN0OiANCiQkDQogIHogPSBcZnJhY3tcYmFye3h9IC0gXG11XzB9e1xzaWdtYS9cc3FydHtufX0NCiQkDQoNClN1YnN0aXR1dGUgdGhlIGdpdmVuIHZhbHVlczoNCg0KJCQNCno9XGZyYWN7MjktMjV9ezE1L1xzcXJ0ezV9fQ0KJCQNCg0KJCQNCno9XGZyYWN7NH17Ni43MDgyfQ0KJCQNCiQkDQp6PTAuNTk2Mw0KJCQNCg0KKipTdGVwIDQ6IERldGVybWluZSB0aGUgQ3JpdGljYWwgVmFsdWUocykgYW5kL29yIFAtdmFsdWUqKjoNCg0KRm9yIGEgcmlnaHQtdGFpbGVkIHRlc3Qgd2l0aCBcKFxhbHBoYT0wLjA1XCksIHRoZSBjcml0aWNhbCB2YWx1ZSBpczogJHpfezAuOTV9PTEuNjQ1JCANCg0KVGhlIHAtdmFsdWUgaXM6DQoNCiRwPVAoWj4wLjU5NjMpPTEtXFBoaSgwLjU5NjMpXGFwcHJveCAwLjI3NTUkDQoNCioqU3RlcCA1OiBNYWtlIGEgRGVjaXNpb24qKjoNCg0KVXNpbmcgdGhlIGNyaXRpY2FsIHZhbHVlIGFwcHJvYWNoOg0KDQowLjU5NjMgPCAxLjY0NSBzbyB3ZSAqKmZhaWwgdG8gcmVqZWN0IFwoSF8wXCkqKi4NCg0KVXNpbmcgdGhlIHAtdmFsdWUgYXBwcm9hY2g6DQoNCjAuMjc1NSA+IDAuMDUgIHNvIHdlIGFnYWluICoqZmFpbCB0byByZWplY3QgXChIXzBcKSoqLg0KDQoqKlN0ZXAgNjogU3RhdGUgdGhlIENvbmNsdXNpb24gaW4gQ29udGV4dCoqOg0KDQpUaGVyZSBpcyBpbnN1ZmZpY2llbnQgc3RhdGlzdGljYWwgZXZpZGVuY2UgYXQgdGhlIFwoXGFscGhhPTAuMDVcKSBsZXZlbCB0byBjb25jbHVkZSB0aGF0IENob2xlc3RGaXggbG93ZXJzIExETCBjaG9sZXN0ZXJvbCBtb3JlIHRoYW4gdGhlIGN1cnJlbnQgc3RhbmRhcmQgZHJ1Zy4NCg0KKipTdW1tYXJ5Kio6DQoNCkFsdGhvdWdoIHRoZSBzYW1wbGUgbWVhbiByZWR1Y3Rpb24gZm9yIENob2xlc3RGaXggaXMgaGlnaGVyIHRoYW4gMjUgbWcvZEwsIHRoZSBzYW1wbGUgc2l6ZSBpcyB2ZXJ5IHNtYWxsIGFuZCB0aGUgcG9wdWxhdGlvbiBzdGFuZGFyZCBkZXZpYXRpb24gaXMgbGFyZ2UgcmVsYXRpdmUgdG8gdGhlIG9ic2VydmVkIGRpZmZlcmVuY2UuIFRoZXJlZm9yZSwgdGhlIG9ic2VydmVkIGltcHJvdmVtZW50IGlzIG5vdCBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50Lg0KDQoNCmIpLiBHaXZlbiAkbiA9IDUwLCBcc2lnbWEgPSAxNSwgXGFscGhhID0gMC4wNSQsIGFuZCBhbiBlZmZlY3Qgc2l6ZSB3ZSB3aXNoIHRvIGRldGVjdCAkXGRlbHRhID0gNCQgbWcvZEwgKGNvcnJlc3BvbmRpbmcgdG8gYSByZWR1Y3Rpb24gZnJvbSAyOSBtZy9kTCB0byAyNSBtZy9kTCkuICBXaGF0IGlzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IHdlJ2QgZGV0ZWN0IGEgdHJ1ZSBpbXByb3ZlbWVudD8NCg0KKipTdGVwIDE6IEdpdmVuIEluZm9ybWF0aW9uKioNCg0KJG4gPSA1MCwgXHF1YWQgXHNpZ21hID0gMTUsIFxxdWFkIFxhbHBoYSA9IDAuMDUsIFxxdWFkIFxkZWx0YSA9IDQkDQoNCiRcbXVfMSA9IFxtdV8wICsgXGRlbHRhID0gMjUgKyA0ID0gMjkkDQoNCg0KKipTdGVwIDI6IEh5cG90aGVzZXMqKg0KDQokSF8wOiBcbXUgPSAyNSwgXHFxdWFkIEhfMTogXG11ID4gMjUkDQoNCioqU3RlcCAzOiBTdGFuZGFyZGl6ZWQgRWZmZWN0KioNCg0KJCQNClxsYW1iZGEgPSBcZnJhY3tcZGVsdGF9e1xzaWdtYSAvIFxzcXJ0e259fSANCj0gXGZyYWN7NH17MTUgLyBcc3FydHs1MH19IA0KPSBcZnJhY3s0XHNxcnR7NTB9fXsxNX0gDQo9IDEuODg1Ng0KJCQNCg0KKipTdGVwIDQ6IFBvd2VyIEZvcm11bGEqKg0KDQpGb3IgYSByaWdodC10YWlsZWQgdGVzdCwgcmVqZWN0ICRIXzAkIGlmICRaID4gel97MC45NX0gPSAxLjY0NSQNCg0KVGhlcmVmb3JlLCB0aGUgcG93ZXIgaXMNCg0KJCQNClx0ZXh0e1Bvd2VyfSA9IFAoWiA+IDEuNjQ1IC0gMS44ODU2KQ0KPSBQKFogPiAtMC4yNDA2KQ0KPSBQKFogPCAwLjI0MDYpDQo9IDAuNTk1MQ0KJCQNCioqU3VtbWFyeSoqOg0KVGhlIHBvd2VyIHdhcyBjYWxjdWxhdGVkIHRvIGJlIGFwcHJveGltYXRlbHkgMC41OTUxLiBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIHRydWUgaW1wcm92ZW1lbnQgaXMgNCBtZy9kTCwgdGhlIHByb2JhYmlsaXR5IG9mIGNvcnJlY3RseSByZWplY3RpbmcgJEhfMCQgaXMgYWJvdXQgNTkuNSUuIFRoaXMgcG93ZXIgaXMgbG93ZXIgdGhhbiB0aGUgY29tbW9ubHkgZGVzaXJlZCBsZXZlbCBvZiAwLjgwLCBpbmRpY2F0aW5nIHRoYXQgYSBzYW1wbGUgc2l6ZSBvZiA1MCBpcyBub3Qgc3VmZmljaWVudCB0byByZWxpYWJseSBkZXRlY3QgdGhpcyBlZmZlY3QuDQoNCg0KYykuIERldGVybWluZSB0aGUgbWluaW11bSBzYW1wbGUgc2l6ZSByZXF1aXJlZCB0byBkZXRlY3QgYW4gZWZmZWN0IHNpemUgb2YgNCBtZy9kTCB3aXRoIGEgcG93ZXIgb2YgJDEgLSBcYmV0YSA9IDAuOCQgIGFuZCBhIHNpZ25pZmljYW5jZSBsZXZlbCBvZiAkXGFscGhhID0gMC4wNSQuIEFzc3VtZSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIExETCByZWR1Y3Rpb24gaXMgMTUgbWcvZEwuDQoNCioqU3RlcCAxOiBHaXZlbiBJbmZvcm1hdGlvbioqDQoNCiQkDQpcZGVsdGEgPSA0LCBccXVhZCBcc2lnbWEgPSAxNSwgXHF1YWQgXGFscGhhID0gMC4wNSwgXHF1YWQgMSAtIFxiZXRhID0gMC44DQokJA0KDQoNCioqU3RlcCAyOiBGb3JtdWxhKioNCg0KJCQNCm4gXGFwcHJveCBcbGVmdCggXGZyYWN7KHpfezEtXGFscGhhfSArIHpfezEtXGJldGF9KSBcc2lnbWF9e1xkZWx0YX0gXHJpZ2h0KV4yDQokJA0KDQoNCioqU3RlcCAzOiBTdWJzdGl0dXRlIFZhbHVlcyoqDQoNCiQkDQp6X3sxLVxhbHBoYX0gPSAxLjY0NSwgXHF1YWQgel97MS1cYmV0YX0gPSAwLjg0Mg0KJCQNCg0KJCQNCm4gXGFwcHJveCBcbGVmdCggXGZyYWN7KDEuNjQ1ICsgMC44NDIpKDE1KX17NH0gXHJpZ2h0KV4yDQo9IFxsZWZ0KCBcZnJhY3syLjQ4NyBcY2RvdCAxNX17NH0gXHJpZ2h0KV4yDQo9ICg5LjMyNjMpXjINCj0gODYuOTgNCiQkDQoNCioqU3RlcCA0OiBGaW5hbCBBbnN3ZXIqKg0KDQokJA0KbiA9IDg3DQokJA0KDQoqKlN1bW1hcnkqKjpUaGUgcmVxdWlyZWQgc2FtcGxlIHNpemUgdG8gYWNoaWV2ZSA4MCUgcG93ZXIgYXQgdGhlIDUlIHNpZ25pZmljYW5jZSBsZXZlbCB3YXMgYXBwcm94aW1hdGVseSA4Ni45OCwgd2hpY2ggaXMgcm91bmRlZCB1cCB0byA4Ny4gVGhpcyBzaG93cyB0aGF0IGEgbXVjaCBsYXJnZXIgc2FtcGxlIGlzIG5lZWRlZCB0byByZWxpYWJseSBkZXRlY3QgYSB0cnVlIGltcHJvdmVtZW50IG9mIDQgbWcvZEwgY29tcGFyZWQgdG8gdGhlIHNtYWxsZXIgc2FtcGxlIHNpemVzIHVzZWQgZWFybGllci4NCg0KZCkuICoqUG93ZXIgY3VydmUqKjogVG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2Ygc2FtcGxlIHNpemUgb24gcG93ZXIsIHdlIGNhbiBjcmVhdGUgYSBwb3dlciBmdW5jdGlvbiBpbiB0ZXJtcyBvZiB0aGUgc2FtcGxlIHNpemUgJG4kIGFuZCB1c2UgdGhlIHJlbWFpbmluZyBpbmZvcm1hdGlvbiBmcm9tIHBhcnQgKGIpLiBQbG90IHRoZSBwb3dlciBjdXJ2ZSBieSBzZWxlY3RpbmcgYSBzZXF1ZW5jZSBvZiBzYW1wbGUgc2l6ZXMuDQoNCioqU3RlcCAxKio6IFRoZSBpbmZvcm1hdGlvbiBpcyBiYXNlZCBvbiBwYXJ0IChiKToNCg0KJCQNClxhbHBoYSA9IDAuMDUsIFxxdWFkIFxkZWx0YSA9IDQsIFxxdWFkIFxzaWdtYSA9IDE1DQokJA0KDQoqKlN0ZXAgMioqOiBQb3dlciBmdW5jdGlvbg0KDQpGb3IgdGhlIG9uZS1zYW1wbGUgcmlnaHQtdGFpbGVkIHRlc3QsIHJlamVjdCAkJEhfMCQkIGlmDQoNCiQkDQpaID4gMS42NDUNCiQkDQoNClNvIHRoZSBwb3dlciBmdW5jdGlvbiBpcw0KDQokJA0KXHBpKG4pID0gUFxsZWZ0KFogPiAxLjY0NSAtIFxmcmFjezRcc3FydHtufX17MTV9XHJpZ2h0KQ0KJCQNCg0KKipTdGVwIDMqKjogSW50ZXJwcmV0YXRpb24gb2YgdGhlIGZ1bmN0aW9uDQoNCkFzICRuJCBpbmNyZWFzZXMsIHRoZSBxdWFudGl0eSAkXGZyYWN7NFxzcXJ0e259fXsxNX0kaW5jcmVhc2VzLCBzbyB0aGUgcHJvYmFiaWxpdHkgb2YgcmVqZWN0aW9uIGFsc28gaW5jcmVhc2VzLg0KDQoqKlN0ZXAgNCoqOiBTZWxlY3RlZCB2YWx1ZXMgd2lsbCBiZSBjb21wdXRlZCBhbmQgcGxvdHRlZCBpbiBSLg0KDQoqKlN0ZXAgNSoqOiBEZWNpc2lvbiAtIG5vIHJlamVjdC9mYWlsLXRvLXJlamVjdCBkZWNpc2lvbiBpcyBuZWVkZWQuIFdlIGV4YW1pbmUgaG93IHBvd2VyIGNoYW5nZXMgd2l0aCBzYW1wbGUgc2l6ZS4NCg0KKipTdGVwIDYqKjogSW50ZXJwcmV0YXRpb24gLSBUaGUgcG93ZXIgY3VydmUgc2hvd3MgdGhhdCBsYXJnZXIgc2FtcGxlIHNpemVzIGxlYWQgdG8gaGlnaGVyIHBvd2VyLiBBcm91bmQgJCRuID0gODckJCwgdGhlIHBvd2VyIHJlYWNoZXMgYXBwcm94aW1hdGVseSAwLjgwLg0KDQoqKlZlcmlmaWNhdGlvbiBVc2luZyBSKio6DQoNCmBgYHtyfQ0KIyBQb3dlciBjdXJ2ZQ0KDQphbHBoYSA8LSAwLjA1DQpkZWx0YSA8LSA0DQpzaWdtYSA8LSAxNQ0Kbl9zZXEgPC0gc2VxKDUsIDE1MCwgYnkgPSAxKQ0KDQpwb3dlcl9jdXJ2ZSA8LSAxIC0gcG5vcm0ocW5vcm0oMC45NSkgLSBkZWx0YSAqIHNxcnQobl9zZXEpIC8gc2lnbWEpDQoNCnBsb3Qobl9zZXEsIHBvd2VyX2N1cnZlLCB0eXBlID0gImwiLCBsd2QgPSAyLA0KICAgICB4bGFiID0gIlNhbXBsZSBTaXplIChuKSIsDQogICAgIHlsYWIgPSAiUG93ZXIiLA0KICAgICBtYWluID0gIlBvd2VyIEN1cnZlIikNCg0KYWJsaW5lKGggPSAwLjgwLCBsdHkgPSAyKQ0KYWJsaW5lKHYgPSA4NywgbHR5ID0gMikNCg0KYGBgDQoNCioqU3VtbWFyeSoqOlRoZSBwb3dlciBjdXJ2ZSBzaG93cyB0aGF0IHBvd2VyIGluY3JlYXNlcyBhcyB0aGUgc2FtcGxlIHNpemUgaW5jcmVhc2VzLiBGb3Igc21hbGwgc2FtcGxlIHNpemVzLCB0aGUgcG93ZXIgaXMgbG93LCBtZWFuaW5nIHRoZXJlIGlzIGEgaGlnaCBjaGFuY2Ugb2YgZmFpbGluZyB0byBkZXRlY3QgYSB0cnVlIGVmZmVjdC4gQXMgdGhlIHNhbXBsZSBzaXplIGFwcHJvYWNoZXMgODcsIHRoZSBwb3dlciByZWFjaGVzIGFwcHJveGltYXRlbHkgMC44MC4gVGhpcyBjb25maXJtcyB0aGF0IGxhcmdlciBzYW1wbGUgc2l6ZXMgaW1wcm92ZSB0aGUgYWJpbGl0eSB0byBkZXRlY3QgYSB0cnVlIHRyZWF0bWVudCBlZmZlY3QuDQoNCg==