Problem 9.72 (8 points)
Suppose that
\(Y_1,\dotsc,Y_n\) denote a random sample from a Poisson distribution with mean
\(\lambda > 0\). Then the probability mass function is
\[
p(y \mid \lambda) = e^{-\lambda}\frac{\lambda^y}{y!},
\qquad y = 0,1,2,3,\dotsc
\]
-
We find the likelihood function and the derivative of its natural log.
\[\begin{align*}
L(y_1,\dotsc,y_n \mid \lambda)
&=
\prod_{i=1}^{n} p(y_i \mid \lambda) = e^{-n\lambda}\cdot
\lambda^{\sum_{i=1}^{n}y_i} / (y_1 ! \dotsb y_n !) \\
\implies \ln L(y_1,\dotsc,y_n \mid \lambda)
&=
-n \lambda + \left(\sum_{i=1}^{n} y_i\right) \ln \lambda
- \ln\left(y_1 ! \dotsb y_n !\right) \\
\implies \frac{\partial}{\partial \lambda} \ln L(y_1,\dotsc,y_n \mid \lambda)
&= -n + \frac{1}{\lambda}\sum_{i=1}^{n} y_i.
\end{align*}\]
We see that \(\hat{\lambda}\) is a critical point for the log likelihood if and only if \(\hat{\lambda} = \frac{1}{n}\sum_{i=1}^{n} y_i\). The second derivative test confirms this critical point is a maximum. Therefore, the Maximum Likelihood Estimator for \(\lambda\) is \[
\hat{\lambda} = \frac{1}{n}\sum_{i=1}^{n} Y_i = \overline{Y}.
\]
-
The expected value and variance of the MLE are
\[\begin{align*}
E[\hat{\lambda}] &= E[\overline{Y}] = E[Y] = \lambda \\
V[\hat{\lambda}] &= V[\overline{Y}] = \frac{1}{n}V[Y] = \frac{1}{n}\lambda.
\end{align*}\]
-
Since \[
\lim_{n\rightarrow \infty}V[\hat{\lambda}] =
\lim_{n\rightarrow \infty}\frac{\lambda}{n} = 0,
\] Theorem \(9.1\) implies that \(\hat{\lambda}\) is a consistent estimator for \(E[\hat{\lambda}] = \lambda\).
-
Let \(t(\lambda) = e^{-\lambda} = P(Y = 0)\). The invariance property for Maximum Likelihood Estimators implies that the MLE for \(e^{-\lambda}\) is \[
t(\hat{\lambda}) = t(\overline{Y}) = e^{-\overline{Y}}.
\]
Problem 9.74 (6 points)
Let
\(Y_1,\dotsc,Y_n\) denote a random sample from the probability distribution whose density function is
\[
f_Y(y \mid \theta) =
\begin{cases}
\frac{1}{\theta} r y^{r - 1} e^{-y^r/\theta}, & \theta > 0, y > 0 \\
0, & \textrm{elsewhere}
\end{cases},
\] where
\(r\) is a known positive constant.
-
We write the likelihood function \[
L(y_1,\dotsc,y_n \mid \theta) = \prod_{i=1}^{n} f(y_i \mid \theta) =
\left[
\frac{1}{\theta^n} e^{-\sum_{i=1}^n y_i^r / \theta}
\right]\cdot
\left[
r^n \left(\prod_{i=1}^{n} y_i\right)^{r-1}
\right] =
g(u,\theta)\cdot h(y_1,\dots,y_n),
\] where \(u = \sum_{i=1}^{n} y_i^r\), \(g(u,\theta) = \frac{1}{\theta^n} e^{-u/\theta}\) and \(h(y_1,\dotsc,y_n) = r^n \left(\prod_{i=1}^{n} y_i\right)^{r-1}\). The factorization criterion implies that a minimal sufficient statistic for \(\theta\) is \[
U = \sum_{i=1}^n Y_i^r.
\]
-
Let \(\ell(\theta)\) denote the log likelihood function. Then \[
\ell(\theta) = \ln L(y_1,\dotsc,y_n \mid \theta) =
-n \ln \theta - \frac{1}{\theta}\sum_{i=1}^{n} y_i^r
+ \ln\left[r^n \left(\prod_{i=1}^{n} y_i\right)^{r-1}\right].
\] Then \(\ell'(\theta) = -n \theta^{-1} + \theta^{-2} \sum_{i=1}^{n} y_i^r\), and \(\ell'(\hat{\theta}) = 0\) implies that \(\hat{\theta} = \frac{1}{n}\sum_{i=1}^{n} y_i^r\). A calculation shows that \(\ell''(\hat{\theta}) < 0\), so \(\ell(\theta)\) has a maximum at \(\hat{\theta}\). Therefore, the MLE for \(\theta\) is \[
\hat{\theta} = \frac{1}{n}\sum_{i=1}^{n} Y_i^r.
\]
-
Note that \(\hat{\theta} = \frac{1}{n} U\). From part (a), we know that \(U\) is a minimal sufficient statistic for \(\theta\), so if \(\hat{\theta}\) is unbiased then the Rao-Blackwell Theorem implies that \(\hat{\theta}\) is a MVUE.
Let \(w = y^r\), then \(dw = r y^{r-1} dy\) and \[
f_Y(y \mid \theta)\,dy = \frac{1}{\theta} r y^{r - 1} e^{-y^r/\theta}\,dy =
\frac{1}{\theta} e^{-w/\theta}\,dw = f_W(w \mid \theta)\,dw,
\] which shows that the random variable \(W = Y^r\) has an Exponential distribution with mean \(\theta\). Thus \(E[Y^r] = E[W] = \theta\), and therefore \(E[\hat{\theta}] = \frac{1}{n}\sum_{i=1}^{n} E[Y_i^r] = \theta\), which shows that \(\hat{\theta}\) is an unbiased estimator for \(\theta\) and hence a MVUE for \(\theta\).
Problem 9.77 (10 points)
Let
\(Y_1,\dotsc,Y_n\) denote a random sample from a Gamma distribution whose probability density function is given by
\[
f_Y(y \mid \theta) =
\begin{cases}
\frac{1}{\Gamma(\alpha)\theta^{\alpha}} y^{\alpha - 1} e^{-y/\theta},
& y > 0 \\
0, & \textrm{elsewhere}
\end{cases},
\] where
\(\alpha\) is known.
-
We write the likelihood function \[
L(y_1,\dotsc,y_n \mid \theta) = \prod_{i=1}^{n} f_Y(y_i \mid \theta) =
\left[\Gamma(\alpha) \theta^{\alpha}\right]^{-n}\cdot
\left(\prod_{i=1}^{n} y_i\right)^{\alpha - 1}\cdot
\exp\left(-\frac{1}{\theta}\sum_{i=1}^{n}y_i\right).
\] Let \(\ell(\theta)\) denote the log likelihood function. Then \[
\ell(\theta) = \ln L(y_1,\dotsc,y_n \mid \theta) =
-n \alpha \ln \theta - \frac{1}{\theta}\sum_{i=1}^{n} y_i
+ \ln \left[
\left(\Gamma(\alpha)\right)^{-n} \left(\prod_{i=1}^{n} y_i \right)^{\alpha-1}
\right].
\] The derivative of the log likelihood is \(\ell'(\theta) = -n \alpha \theta^{-1} + \theta^{-2}\sum_{i=1}^{n} y_i\), thus \(\ell'(\hat{\theta}) = 0\) implies \(\hat{\theta} = \frac{1}{n \alpha}\sum_{i=1}^{n}y_i\). A calculation shows that \(\ell''(\hat{\theta}) < 0\), which shows that \(\hat{\theta}\) is a maximum. Therefore, the Maximum Likelihood Estimator for \(\theta\) is \[
\hat{\theta} = \frac{1}{n \alpha}\sum_{i=1}^{n} Y_i
= \frac{1}{\alpha} \overline{Y}.
\]
-
\(Y\) is a Gamma distributed random variable, so \(E[Y] = \alpha \theta\) and \(V[Y] = \alpha \theta^2\). Hence
\[\begin{align*}
E[\hat{\theta}] &= \frac{1}{\alpha}E[\overline{Y}]
= \frac{\alpha \theta}{\alpha} = \theta. \\
V[\hat{\theta}] &= \frac{1}{\alpha^2}V[\overline{Y}]
= \frac{\alpha \theta^2}{n\alpha^2} = \frac{\theta^2}{n\alpha}.
\end{align*}\]
-
Since \[
\lim_{n\rightarrow \infty}V[\hat{\theta}]
= \lim_{n\rightarrow \infty} \frac{\theta^2}{n\alpha} = 0,
\] Theorem \(9.1\) shows that \(\hat{\theta}\) is a consistent estimator for \(E[\hat{\theta}] = \theta\).
-
We rewrite the likelihood function as
\[\begin{align*}
L(y_1,\dotsc,y_n \mid \theta) &=
\left[
\theta^{-n\alpha}e^{-\frac{1}{\theta}\sum_{i=1}^{n} y_i}
\right]\cdot
\left[
\left(\Gamma(\alpha)\right)^{-n}
\left(\prod_{i=1}^{n}y_i\right)^{\alpha - 1}
\right] \\
&= g(u,\theta)\cdot h(y_1,\dotsc,y_n),
\end{align*}\]
where \(u = \sum_{i=1}^{n} y_i\). By the factorization criterion, \[
U = \sum_{i=1}^{n} Y_i
\] is a minimal sufficient statistic for \(\theta\).
-
Let \(n = 5\) and \(\alpha = 2\). Since \(Y\) has a Gamma distribution with \(\alpha = 2\) and \(\beta = \theta\), Problem \(6.40\) shows that \(W = \frac{2}{\theta} Y\) has a \(\chi^2\)-distribution with \(\nu = 2\alpha = 4\) degrees of freedom. Thus \[
\frac{2}{\theta}U = \frac{2}{\theta}\sum_{i=1}^{5} Y_i
\] has a \(\chi^2\)-distribution with \(\nu=20\) degrees of freedom. Using this as a pivotal quantity we find
\[\begin{align*}
P\left(\chi^{2}_{0.95} \le \frac{2}{\theta}U \le \chi^{2}_{0.05}\right)
&= 0.90 \\
P\left(\frac{2U}{\chi^{2}_{0.05}} \le \theta \le \frac{2U}{\chi^{2}_{0.95}}\right)
&= 0.90.
\end{align*}\]
With \(\nu = 20\), \(\chi^{2}_{0.05} = 31.4104\), \(\chi^{2}_{0.95} = 10.8508\). Therefore, a \(90\%\) confidence interval for \(\theta\) is \[
\left(0.0637\sum_{i=1}^{5} Y_i , 0.1843\sum_{i=1}^{5} Y_i\right)
\]
Problem 9.80 (2 points)
Let
\(Y_1,\dotsc,Y_n\) denote a random sample from a probability distribution whose density function is given by
\[
f_Y(y \mid \theta) =
\begin{cases}
(\theta + 1) y^{\theta}, & 0 < y < 1, \theta > -1 \\
0, & \textrm{elsewhere}
\end{cases}.
\] We write the likelihood function
\[
L(y_1,\dotsc,y_n \mid \theta) = \prod_{i=1}^{n} f_Y(y_i \mid \theta)
= (\theta + 1)^{n} \left(\prod_{i=1}^{n} y_i\right)^{\theta}.
\] Let
\(\ell(\theta)\) denote the log likelihood function. Then
\[\begin{align*}
\ell(\theta) &= \ln L(y_1,\dotsc,y_n \mid \theta)
= n \ln (\theta + 1)
+ \theta \ln\left(\prod_{i=1}^{n} y_i\right) \\
\implies
\ell'(\theta) &= \frac{n}{\theta + 1} + \ln\left(\prod_{i=1}^{n} y_i\right).
\end{align*}\]
A calculation shows that \(\ell'(\hat{\theta}) = 0\) if \[
\hat{\theta} =
-\frac{n + \ln \prod_{i=1}^{n} y_i}
{\ln \prod_{i=1}^{n} y_i}.
\] Therefore, the Maximum Likelihood Estimator for \(\theta\) is \[
\hat{\theta} =
-\frac{n + \ln \prod_{i=1}^{n} Y_i}
{\ln \prod_{i=1}^{n} Y_i},
\] which is quite different from the Method Of Moments estimator \((2\overline{Y} - 1)/(1 - \overline{Y})\).
Problem 9.82 (2 points)
\[\begin{align*}
L(p) &= \left[p^{25}(1-p)^{75}\right]\cdot
\left[p^{30}(1-p)^{70}\right]
= p^{55}(1-p)^{145} \\
\ell(p) &= \ln L(p) = 30 \ln p + 145 \ln (1 - p) \\
\ell'(p) &= \frac{30}{p} - \frac{145}{1-p} =
\frac{55(1 - p) - 145p}{p(1 - p)} \\
\ell'(p) &= \frac{55 - 200 p}{p(1 - p)}.
\end{align*}\]
We see that \(\ell'(\hat{p}) = 0\) if and only if \(\hat{p} = 55/200 = 0.275\). Since \(\ell''(\hat{p}) < 0\), we see that the MLE is \(\hat{p} = 0.275\).
Problem 9.84 (6 points)
Let
\(Y_1,\dotsc,Y_n\) be a random sample from a population whose density function is
\[
f(y \mid \theta) =
\begin{cases}
\frac{3y^2}{\theta^3}, & 0 \le y \le \theta \\
0, & \textrm{elsewhere}
\end{cases}.
\] Exercise
\(9.44\) showed that
\(Y_{(n)} = \max(Y_1,\dotsc,Y_n)\) is sufficient for
\(\theta\).
-
We write the likelihood function \[
L(y_1,\dotsc,y_n \mid \theta) = \prod_{i=1}^{n} f(y_i \mid \theta)
= 3^{n}\left(\prod_{i=1}^{n} y_i\right)^{2}
\theta^{-3n}\prod_{i=1}^{n} I_{[0,\theta]}(y_i).
\] As a function of \(\theta\), \(\prod_{i=1}^{n} I_{[0,\theta]}(y_i) = I_{[0,\theta]}(y_{(n)})\cdot I_{[0,\infty)}(y_{(1)}) = 1\) for \(\theta \ge y_{(n)}\), and equals \(0\) for \(\theta < y_{(n)}\). Since \(\theta^{-3n}\) is a decreasing function of \(\theta\), we conclude that \(L(y_1,\dotsc,y_n \mid \theta)\) achieves its maximum value at \(\hat{\theta} = y_{(n)}\). Therefore \(Y_{(n)}\) is a Maximum Likelihood Estimator for \(\theta\).
-
The Cumulative Distribution Function (CDF) for \(Y\) is \[
F_Y(y) = P(Y \le y) =
\begin{cases}
1, & y > \theta \\
(y / \theta)^{3}, & 0 \le y \le \theta \\
0, & y < 0
\end{cases}.
\] From this we deduce that the CDF for \(Y_{(n)}\) is \(G_{(n)}(y) = P(Y_{(n)} \le y) = [F_Y(y)]^{n}\). The corresponding Probability Density Function (PDF) for \(Y_{(n)}\) is \(g_{(n)}(y) = G'_{(n)}(y)\), \[
g_{(n)}(y) =
\begin{cases}
\frac{3n}{\theta^{3n}} y^{3n - 1}, & 0 \le y \le \theta \\
0, & \textrm{elsewhere}
\end{cases}.
\] A quick calculation shows that if we let \(w = y/\theta\), then \(g_{(n)}(y)\) transforms into the density function \[
f_W(w) =
\begin{cases}
3n w^{3n - 1}, & 0 \le w \le 1 \\
0, & \textrm{elsewhere}
\end{cases},
\] which shows that \(W = \frac{1}{\theta}Y_{(n)}\) has a Beta distribution with parameters \(\alpha = 3n\) and \(\beta = 1\). Moreover, since \(f_W(w)\) is independent of \(\theta\), \(W\) is a pivotal quantity.
-
Another quick calculation shows that the CDF for \(W\) is \[
F_W(w) =
\begin{cases}
1, & w > 1 \\
w^{3n}, & 0 \le w \le 1 \\
0, & w < 0
\end{cases}.
\] Let \(0 < \alpha < 1\), then
\[\begin{align*}
P\left((\alpha/2)^{\frac{1}{3n}} \le W
\le (1 - \alpha/2)^{\frac{1}{3n}}\right)
&=
F_W\left((1 - \alpha/2)^{\frac{1}{3n}}\right) -
F_W\left((\alpha/2)^{\frac{1}{3n}}\right) \\
&=
1 - \alpha/2 - \alpha/2 \\
&=
1 - \alpha.
\end{align*}\]
Since \(W = Y_{(n)} / \theta\) and since \[
P\left((\alpha/2)^{\frac{1}{3n}} \le Y_{(n)}/\theta
\le (1 - \alpha/2)^{\frac{1}{3n}}\right)
=
P\left( (1 - \alpha/2)^{-\frac{1}{3n}} Y_{(n)} \le \theta
\le (\alpha/2)^{-\frac{1}{3n}} Y_{(n)}\right),
\] we deduce that a \((1 - \alpha)\cdot 100\%\) confidence interval for \(\theta\) is \[
\left( (1 - \alpha/2)^{-\frac{1}{3n}} Y_{(n)} ,
(\alpha/2)^{-\frac{1}{3n}} Y_{(n)}\right).
\]
Problem 9.86 (2 Points)
Let
\(\beta = t(\theta)\) be an invertible function. Let
\(\hat{\theta}\) be a maximum likelihood estimator for the likelihood function
\(L(y_1,\dotsc,y_n \mid \theta)\), then
\[\begin{equation}
L(y_1,\dotsc,y_n \mid \theta) \le L(y_1,\dotsc,y_n \mid \hat{\theta})
\end{equation}\]
for all \(\theta\).
Let
\(\mathscr{L}(y_1,\dotsc,y_n \mid \beta)\) be the corresponding likelihood function involving
\(\beta\). The two likelihood functions are related as follows:
\[\begin{equation}
L(y_1,\dotsc,y_n \mid \theta) = \mathscr{L}(y_1,\dotsc,y_n \mid t(\theta)).
\end{equation}\]
For example, let
\(Y\) be a normal random variable with
\(E[Y] = 0\) and
\(V[Y] = \sigma^2\),
\(\sigma > 0\). Let
\(t(x) = x^2\), let
\(\theta = \sigma\), then
\(\beta = t(\theta) = \theta^2 = \sigma^2\), and
\[\begin{align*}
\mathscr{L}(y_1,\dotsc,y_n \mid \beta)
&=
\prod_{i=1}^{n} \left(2 \pi \beta \right)^{-1/2} e^{-\frac{1}{2}y_i^2 / \beta}. \\
L(y_1,\dotsc,y_n \mid \theta)
&=
\prod_{i=1}^{n} \left(2 \pi \theta^2 \right)^{-1/2} e^{-\frac{1}{2}y_i^2 / \theta^2} \\
&=
\mathscr{L}(y_1,\dotsc,y_n \mid \theta^2) \\
&=
\mathscr{L}(y_1,\dotsc,y_n \mid t(\theta)).
\end{align*}\]
Returning to the general case, let \(\beta\) be arbitrary, then since \(t\) is invertible we define \(\theta = t^{-1}(\beta)\). Thus, \[
\mathscr{L}(y_1,\dotsc,y_n \mid \beta) =
L(y_1,\dotsc,y_n \mid \theta) \le
L(y_1,\dotsc,y_n \mid \hat{\theta}) =
\mathscr{L}(y_1,\dotsc,y_n \mid t(\hat{\theta})).
\] Since \(\mathscr{L}(y_1,\dotsc,y_n \mid \beta) \le \mathscr{L}(y_1,\dotsc,y_n \mid t(\hat{\theta}))\) for all \(\beta\), \(t(\hat{\theta})\) is a Maximum Likelihood Estimator for \(\beta\).
Problem 9.88 (2 points)
Let \(Y_1,\dotsc,Y_n\) be a random sample from a normal distribution with mean \(\mu\) and variance \(\sigma^2\), both unknown. Example \(9.15\) (pages \(450 - 451\)) shows that \[
\hat{\mu} = \overline{Y},\qquad
\widehat{\sigma^2} =
\frac{1}{n}\sum_{i=1}^{n}\left(Y_i - \overline{Y}\right)^2
\] are Maximum Likelihood Estimators for \(\mu\) and \(\sigma^2\). Since \(\sigma = \sqrt{\sigma^2}\), the invariance property for MLEs implies that \[
\hat{\sigma} = \sqrt{
\frac{1}{n}\sum_{i=1}^{n}\left(Y_i - \overline{Y}\right)^2
}
\] is an MLE for \(\sigma\).
LS0tCnRpdGxlOiAiU29sdXRpb25zIHRvIEhvbWV3b3JrIEFzc2lnbm1lbnQgMTAiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMjUHJvYmxlbSA5LjcyICg4IHBvaW50cykKU3VwcG9zZSB0aGF0IFwoWV8xLFxkb3RzYyxZX25cKSBkZW5vdGUgYSByYW5kb20gc2FtcGxlIGZyb20KYSBQb2lzc29uIGRpc3RyaWJ1dGlvbiB3aXRoIG1lYW4gXChcbGFtYmRhID4gMFwpLiBUaGVuIHRoZSAKcHJvYmFiaWxpdHkgbWFzcyBmdW5jdGlvbiBpcwpcWwpwKHkgXG1pZCBcbGFtYmRhKSA9IGVeey1cbGFtYmRhfVxmcmFje1xsYW1iZGFeeX17eSF9LApccXF1YWQgeSA9IDAsMSwyLDMsXGRvdHNjClxdCjxvbCB0eXBlPSJhIj4KPGxpPldlIGZpbmQgdGhlIGxpa2VsaWhvb2QgZnVuY3Rpb24gYW5kIHRoZSBkZXJpdmF0aXZlIG9mIGl0cyBuYXR1cmFsIGxvZy4KXGJlZ2lue2FsaWduKn0KTCh5XzEsXGRvdHNjLHlfbiBcbWlkIFxsYW1iZGEpCiY9Clxwcm9kX3tpPTF9XntufSBwKHlfaSBcbWlkIFxsYW1iZGEpID0gZV57LW5cbGFtYmRhfVxjZG90IApcbGFtYmRhXntcc3VtX3tpPTF9XntufXlfaX0gLyAoeV8xICEgXGRvdHNiIHlfbiAhKSBcXApcaW1wbGllcyBcbG4gTCh5XzEsXGRvdHNjLHlfbiBcbWlkIFxsYW1iZGEpCiY9Ci1uIFxsYW1iZGEgKyBcbGVmdChcc3VtX3tpPTF9XntufSB5X2lccmlnaHQpIFxsbiBcbGFtYmRhCi0gXGxuXGxlZnQoeV8xICEgXGRvdHNiIHlfbiAhXHJpZ2h0KSBcXApcaW1wbGllcyBcZnJhY3tccGFydGlhbH17XHBhcnRpYWwgXGxhbWJkYX0gXGxuIEwoeV8xLFxkb3RzYyx5X24gXG1pZCBcbGFtYmRhKQomPSAtbiArIFxmcmFjezF9e1xsYW1iZGF9XHN1bV97aT0xfV57bn0geV9pLgpcZW5ke2FsaWduKn0KV2Ugc2VlIHRoYXQgXChcaGF0e1xsYW1iZGF9XCkgaXMgYSBjcml0aWNhbCBwb2ludCBmb3IgdGhlIGxvZyBsaWtlbGlob29kIGlmIGFuZApvbmx5IGlmIFwoXGhhdHtcbGFtYmRhfSA9IFxmcmFjezF9e259XHN1bV97aT0xfV57bn0geV9pXCkuIFRoZSBzZWNvbmQKZGVyaXZhdGl2ZSB0ZXN0IGNvbmZpcm1zIHRoaXMgY3JpdGljYWwgcG9pbnQgaXMgYSBtYXhpbXVtLiBUaGVyZWZvcmUsIHRoZQpNYXhpbXVtIExpa2VsaWhvb2QgRXN0aW1hdG9yIGZvciBcKFxsYW1iZGFcKSBpcwpcWwpcaGF0e1xsYW1iZGF9ID0gXGZyYWN7MX17bn1cc3VtX3tpPTF9XntufSBZX2kgPSBcb3ZlcmxpbmV7WX0uClxdCjwvbGk+CjxsaT4KVGhlIGV4cGVjdGVkIHZhbHVlIGFuZCB2YXJpYW5jZSBvZiB0aGUgTUxFIGFyZQpcYmVnaW57YWxpZ24qfQpFW1xoYXR7XGxhbWJkYX1dICY9IEVbXG92ZXJsaW5le1l9XSA9IEVbWV0gPSBcbGFtYmRhIFxcClZbXGhhdHtcbGFtYmRhfV0gJj0gVltcb3ZlcmxpbmV7WX1dID0gXGZyYWN7MX17bn1WW1ldID0gXGZyYWN7MX17bn1cbGFtYmRhLgpcZW5ke2FsaWduKn0KPC9saT4KPGxpPgpTaW5jZQpcWwpcbGltX3tuXHJpZ2h0YXJyb3cgXGluZnR5fVZbXGhhdHtcbGFtYmRhfV0gPQpcbGltX3tuXHJpZ2h0YXJyb3cgXGluZnR5fVxmcmFje1xsYW1iZGF9e259ID0gMCwKXF0KVGhlb3JlbSBcKDkuMVwpIGltcGxpZXMgdGhhdCBcKFxoYXR7XGxhbWJkYX1cKSBpcyBhIGNvbnNpc3RlbnQgZXN0aW1hdG9yIGZvcgpcKEVbXGhhdHtcbGFtYmRhfV0gPSBcbGFtYmRhXCkuCjwvbGk+CjxsaT4KTGV0IFwodChcbGFtYmRhKSA9IGVeey1cbGFtYmRhfSA9IFAoWSA9IDApXCkuIFRoZSBpbnZhcmlhbmNlIHByb3BlcnR5IGZvciBNYXhpbXVtCkxpa2VsaWhvb2QgRXN0aW1hdG9ycyBpbXBsaWVzIHRoYXQgdGhlIE1MRSBmb3IgXChlXnstXGxhbWJkYX1cKSBpcwpcWwp0KFxoYXR7XGxhbWJkYX0pID0gdChcb3ZlcmxpbmV7WX0pID0gZV57LVxvdmVybGluZXtZfX0uClxdCjwvbGk+Cjwvb2w+CgojI1Byb2JsZW0gOS43NCAoNiBwb2ludHMpCkxldCBcKFlfMSxcZG90c2MsWV9uXCkgZGVub3RlIGEgcmFuZG9tIHNhbXBsZSBmcm9tIHRoZSBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb24Kd2hvc2UgZGVuc2l0eSBmdW5jdGlvbiBpcwpcWwpmX1koeSBcbWlkIFx0aGV0YSkgPQpcYmVnaW57Y2FzZXN9ClxmcmFjezF9e1x0aGV0YX0gciB5XntyIC0gMX0gZV57LXleci9cdGhldGF9LCAmIFx0aGV0YSA+IDAsIHkgPiAwIFxcCjAsICYgXHRleHRybXtlbHNld2hlcmV9ClxlbmR7Y2FzZXN9LApcXQp3aGVyZSBcKHJcKSBpcyBhIGtub3duIHBvc2l0aXZlIGNvbnN0YW50Lgo8b2wgdHlwZT0iYSI+CjxsaT4KV2Ugd3JpdGUgdGhlIGxpa2VsaWhvb2QgZnVuY3Rpb24KXFsKTCh5XzEsXGRvdHNjLHlfbiBcbWlkIFx0aGV0YSkgPSBccHJvZF97aT0xfV57bn0gZih5X2kgXG1pZCBcdGhldGEpID0KXGxlZnRbClxmcmFjezF9e1x0aGV0YV5ufSBlXnstXHN1bV97aT0xfV5uIHlfaV5yIC8gXHRoZXRhfQpccmlnaHRdXGNkb3QKXGxlZnRbCnJebiBcbGVmdChccHJvZF97aT0xfV57bn0geV9pXHJpZ2h0KV57ci0xfQpccmlnaHRdID0KZyh1LFx0aGV0YSlcY2RvdCBoKHlfMSxcZG90cyx5X24pLApcXQp3aGVyZSBcKHUgPSBcc3VtX3tpPTF9XntufSB5X2leclwpLCBcKGcodSxcdGhldGEpID0gXGZyYWN7MX17XHRoZXRhXm59IGVeey11L1x0aGV0YX1cKSAKYW5kIFwoaCh5XzEsXGRvdHNjLHlfbikgPSByXm4gXGxlZnQoXHByb2Rfe2k9MX1ee259IHlfaVxyaWdodClee3ItMX1cKS4KVGhlIGZhY3Rvcml6YXRpb24gY3JpdGVyaW9uIGltcGxpZXMgdGhhdCBhIG1pbmltYWwgc3VmZmljaWVudCBzdGF0aXN0aWMgZm9yClwoXHRoZXRhXCkgaXMKXFsKVSA9IFxzdW1fe2k9MX1ebiBZX2leci4KXF0KPC9saT4KPGxpPgpMZXQgXChcZWxsKFx0aGV0YSlcKSBkZW5vdGUgdGhlIGxvZyBsaWtlbGlob29kIGZ1bmN0aW9uLiBUaGVuClxbClxlbGwoXHRoZXRhKSA9IFxsbiBMKHlfMSxcZG90c2MseV9uIFxtaWQgXHRoZXRhKSA9Ci1uIFxsbiBcdGhldGEgLSBcZnJhY3sxfXtcdGhldGF9XHN1bV97aT0xfV57bn0geV9pXnIgCisgXGxuXGxlZnRbcl5uIFxsZWZ0KFxwcm9kX3tpPTF9XntufSB5X2lccmlnaHQpXntyLTF9XHJpZ2h0XS4KXF0KVGhlbiBcKFxlbGwnKFx0aGV0YSkgPSAtbiBcdGhldGFeey0xfSArIFx0aGV0YV57LTJ9IFxzdW1fe2k9MX1ee259IHlfaV5yXCksCmFuZCBcKFxlbGwnKFxoYXR7XHRoZXRhfSkgPSAwXCkgaW1wbGllcyB0aGF0IApcKFxoYXR7XHRoZXRhfSA9IFxmcmFjezF9e259XHN1bV97aT0xfV57bn0geV9pXnJcKS4gQSBjYWxjdWxhdGlvbiBzaG93cwp0aGF0IFwoXGVsbCcnKFxoYXR7XHRoZXRhfSkgPCAwXCksIHNvIFwoXGVsbChcdGhldGEpXCkgaGFzIGEgbWF4aW11bSBhdCAKXChcaGF0e1x0aGV0YX1cKS4gVGhlcmVmb3JlLCB0aGUgTUxFIGZvciBcKFx0aGV0YVwpIGlzClxbClxoYXR7XHRoZXRhfSA9IFxmcmFjezF9e259XHN1bV97aT0xfV57bn0gWV9pXnIuClxdCjwvbGk+CjxsaT4KTm90ZSB0aGF0IFwoXGhhdHtcdGhldGF9ID0gXGZyYWN7MX17bn0gVVwpLiBGcm9tIHBhcnQgKGEpLCB3ZSBrbm93IHRoYXQKXChVXCkgaXMgYSBtaW5pbWFsIHN1ZmZpY2llbnQgc3RhdGlzdGljIGZvciBcKFx0aGV0YVwpLCBzbyBpZgpcKFxoYXR7XHRoZXRhfVwpIGlzIHVuYmlhc2VkIHRoZW4gdGhlIFJhby1CbGFja3dlbGwgVGhlb3JlbSBpbXBsaWVzIHRoYXQKXChcaGF0e1x0aGV0YX1cKSBpcyBhIE1WVUUuCgpMZXQgXCh3ID0geV5yXCksIHRoZW4gXChkdyA9IHIgeV57ci0xfSBkeVwpIGFuZApcWwpmX1koeSBcbWlkIFx0aGV0YSlcLGR5ID0gXGZyYWN7MX17XHRoZXRhfSByIHlee3IgLSAxfSBlXnsteV5yL1x0aGV0YX1cLGR5ID0KXGZyYWN7MX17XHRoZXRhfSBlXnstdy9cdGhldGF9XCxkdyA9IGZfVyh3IFxtaWQgXHRoZXRhKVwsZHcsClxdCndoaWNoIHNob3dzIHRoYXQgdGhlIHJhbmRvbSB2YXJpYWJsZSBcKFcgPSBZXnJcKSBoYXMgYW4gRXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uCndpdGggbWVhbiBcKFx0aGV0YVwpLiBUaHVzIFwoRVtZXnJdID0gRVtXXSA9IFx0aGV0YVwpLCBhbmQgdGhlcmVmb3JlClwoRVtcaGF0e1x0aGV0YX1dID0gXGZyYWN7MX17bn1cc3VtX3tpPTF9XntufSBFW1lfaV5yXSA9IFx0aGV0YVwpLCB3aGljaCBzaG93cwp0aGF0IFwoXGhhdHtcdGhldGF9XCkgaXMgYW4gdW5iaWFzZWQgZXN0aW1hdG9yIGZvciBcKFx0aGV0YVwpIGFuZCBoZW5jZSBhIApNVlVFIGZvciBcKFx0aGV0YVwpLgo8L2xpPgo8L29sPgoKIyNQcm9ibGVtIDkuNzcgKDEwIHBvaW50cykKTGV0IFwoWV8xLFxkb3RzYyxZX25cKSBkZW5vdGUgYSByYW5kb20gc2FtcGxlIGZyb20gYSBHYW1tYSBkaXN0cmlidXRpb24gd2hvc2UKcHJvYmFiaWxpdHkgZGVuc2l0eSBmdW5jdGlvbiBpcyBnaXZlbiBieQpcWwpmX1koeSBcbWlkIFx0aGV0YSkgPQpcYmVnaW57Y2FzZXN9ClxmcmFjezF9e1xHYW1tYShcYWxwaGEpXHRoZXRhXntcYWxwaGF9fSB5XntcYWxwaGEgLSAxfSBlXnsteS9cdGhldGF9LAomIHkgPiAwIFxcCjAsICYgXHRleHRybXtlbHNld2hlcmV9ClxlbmR7Y2FzZXN9LApcXQp3aGVyZSBcKFxhbHBoYVwpIGlzIGtub3duLgo8b2wgdHlwZT0iYSI+CjxsaT4KV2Ugd3JpdGUgdGhlIGxpa2VsaWhvb2QgZnVuY3Rpb24KXFsKTCh5XzEsXGRvdHNjLHlfbiBcbWlkIFx0aGV0YSkgPSBccHJvZF97aT0xfV57bn0gZl9ZKHlfaSBcbWlkIFx0aGV0YSkgPQpcbGVmdFtcR2FtbWEoXGFscGhhKSBcdGhldGFee1xhbHBoYX1ccmlnaHRdXnstbn1cY2RvdApcbGVmdChccHJvZF97aT0xfV57bn0geV9pXHJpZ2h0KV57XGFscGhhIC0gMX1cY2RvdApcZXhwXGxlZnQoLVxmcmFjezF9e1x0aGV0YX1cc3VtX3tpPTF9XntufXlfaVxyaWdodCkuClxdCkxldCBcKFxlbGwoXHRoZXRhKVwpIGRlbm90ZSB0aGUgbG9nIGxpa2VsaWhvb2QgZnVuY3Rpb24uIFRoZW4KXFsKXGVsbChcdGhldGEpID0gXGxuIEwoeV8xLFxkb3RzYyx5X24gXG1pZCBcdGhldGEpID0KLW4gXGFscGhhIFxsbiBcdGhldGEgLSBcZnJhY3sxfXtcdGhldGF9XHN1bV97aT0xfV57bn0geV9pIAorIFxsbiBcbGVmdFsKXGxlZnQoXEdhbW1hKFxhbHBoYSlccmlnaHQpXnstbn0gXGxlZnQoXHByb2Rfe2k9MX1ee259IHlfaSBccmlnaHQpXntcYWxwaGEtMX0KXHJpZ2h0XS4KXF0KVGhlIGRlcml2YXRpdmUgb2YgdGhlIGxvZyBsaWtlbGlob29kIGlzClwoXGVsbCcoXHRoZXRhKSA9IC1uIFxhbHBoYSBcdGhldGFeey0xfSArClx0aGV0YV57LTJ9XHN1bV97aT0xfV57bn0geV9pXCksIHRodXMgXChcZWxsJyhcaGF0e1x0aGV0YX0pID0gMFwpIGltcGxpZXMKXChcaGF0e1x0aGV0YX0gPSBcZnJhY3sxfXtuIFxhbHBoYX1cc3VtX3tpPTF9XntufXlfaVwpLiBBIGNhbGN1bGF0aW9uIHNob3dzIHRoYXQKXChcZWxsJycoXGhhdHtcdGhldGF9KSA8IDBcKSwgd2hpY2ggc2hvd3MgdGhhdCBcKFxoYXR7XHRoZXRhfVwpIGlzIGEgbWF4aW11bS4KVGhlcmVmb3JlLCB0aGUgTWF4aW11bSBMaWtlbGlob29kIEVzdGltYXRvciBmb3IgXChcdGhldGFcKSBpcwpcWwpcaGF0e1x0aGV0YX0gPSBcZnJhY3sxfXtuIFxhbHBoYX1cc3VtX3tpPTF9XntufSBZX2kgCj0gXGZyYWN7MX17XGFscGhhfSBcb3ZlcmxpbmV7WX0uClxdCjwvbGk+CjxsaT4KXChZXCkgaXMgYSBHYW1tYSBkaXN0cmlidXRlZCByYW5kb20gdmFyaWFibGUsIHNvIFwoRVtZXSA9IFxhbHBoYSBcdGhldGFcKQphbmQgXChWW1ldID0gXGFscGhhIFx0aGV0YV4yXCkuIEhlbmNlClxiZWdpbnthbGlnbip9CkVbXGhhdHtcdGhldGF9XSAmPSBcZnJhY3sxfXtcYWxwaGF9RVtcb3ZlcmxpbmV7WX1dIAo9IFxmcmFje1xhbHBoYSBcdGhldGF9e1xhbHBoYX0gPSBcdGhldGEuIFxcClZbXGhhdHtcdGhldGF9XSAmPSBcZnJhY3sxfXtcYWxwaGFeMn1WW1xvdmVybGluZXtZfV0KPSBcZnJhY3tcYWxwaGEgXHRoZXRhXjJ9e25cYWxwaGFeMn0gPSBcZnJhY3tcdGhldGFeMn17blxhbHBoYX0uClxlbmR7YWxpZ24qfQo8L2xpPgo8bGk+ClNpbmNlClxbClxsaW1fe25ccmlnaHRhcnJvdyBcaW5mdHl9VltcaGF0e1x0aGV0YX1dIAo9IFxsaW1fe25ccmlnaHRhcnJvdyBcaW5mdHl9IFxmcmFje1x0aGV0YV4yfXtuXGFscGhhfSA9IDAsClxdClRoZW9yZW0gXCg5LjFcKSBzaG93cyB0aGF0IFwoXGhhdHtcdGhldGF9XCkgaXMgYSBjb25zaXN0ZW50IGVzdGltYXRvciAKZm9yIFwoRVtcaGF0e1x0aGV0YX1dID0gXHRoZXRhXCkuCjwvbGk+CjxsaT4KV2UgcmV3cml0ZSB0aGUgbGlrZWxpaG9vZCBmdW5jdGlvbiBhcwpcYmVnaW57YWxpZ24qfQpMKHlfMSxcZG90c2MseV9uIFxtaWQgXHRoZXRhKSAmPQpcbGVmdFsKXHRoZXRhXnstblxhbHBoYX1lXnstXGZyYWN7MX17XHRoZXRhfVxzdW1fe2k9MX1ee259IHlfaX0KXHJpZ2h0XVxjZG90ClxsZWZ0WwpcbGVmdChcR2FtbWEoXGFscGhhKVxyaWdodCleey1ufQpcbGVmdChccHJvZF97aT0xfV57bn15X2lccmlnaHQpXntcYWxwaGEgLSAxfQpccmlnaHRdIFxcCiY9IGcodSxcdGhldGEpXGNkb3QgaCh5XzEsXGRvdHNjLHlfbiksClxlbmR7YWxpZ24qfQp3aGVyZSBcKHUgPSBcc3VtX3tpPTF9XntufSB5X2lcKS4gQnkgdGhlIGZhY3Rvcml6YXRpb24gY3JpdGVyaW9uLApcWwpVID0gXHN1bV97aT0xfV57bn0gWV9pClxdCmlzIGEgbWluaW1hbCBzdWZmaWNpZW50IHN0YXRpc3RpYyBmb3IgXChcdGhldGFcKS4KPC9saT4KPGxpPgpMZXQgXChuID0gNVwpIGFuZCBcKFxhbHBoYSA9IDJcKS4gU2luY2UgXChZXCkgaGFzIGEgR2FtbWEgZGlzdHJpYnV0aW9uIHdpdGgKXChcYWxwaGEgPSAyXCkgYW5kIFwoXGJldGEgPSBcdGhldGFcKSwgUHJvYmxlbSBcKDYuNDBcKSBzaG93cyB0aGF0IApcKFcgPSBcZnJhY3syfXtcdGhldGF9IFlcKSBoYXMgYQpcKFxjaGleMlwpLWRpc3RyaWJ1dGlvbiB3aXRoIFwoXG51ID0gMlxhbHBoYSA9IDRcKSBkZWdyZWVzIG9mIGZyZWVkb20uClRodXMgClxbClxmcmFjezJ9e1x0aGV0YX1VID0gXGZyYWN7Mn17XHRoZXRhfVxzdW1fe2k9MX1eezV9IFlfaQpcXQpoYXMgYSBcKFxjaGleMlwpLWRpc3RyaWJ1dGlvbiB3aXRoIFwoXG51PTIwXCkgZGVncmVlcyBvZiBmcmVlZG9tLgpVc2luZyB0aGlzIGFzIGEgcGl2b3RhbCBxdWFudGl0eSB3ZSBmaW5kClxiZWdpbnthbGlnbip9ClBcbGVmdChcY2hpXnsyfV97MC45NX0gXGxlIFxmcmFjezJ9e1x0aGV0YX1VIFxsZSBcY2hpXnsyfV97MC4wNX1ccmlnaHQpCiY9IDAuOTAgXFwKUFxsZWZ0KFxmcmFjezJVfXtcY2hpXnsyfV97MC4wNX19IFxsZSBcdGhldGEgXGxlIFxmcmFjezJVfXtcY2hpXnsyfV97MC45NX19XHJpZ2h0KQomPSAwLjkwLgpcZW5ke2FsaWduKn0KV2l0aCBcKFxudSA9IDIwXCksIFwoXGNoaV57Mn1fezAuMDV9ID0gMzEuNDEwNFwpLCBcKFxjaGleezJ9X3swLjk1fSA9IDEwLjg1MDhcKS4KVGhlcmVmb3JlLCBhIFwoOTBcJVwpIGNvbmZpZGVuY2UgaW50ZXJ2YWwgZm9yIFwoXHRoZXRhXCkgaXMKXFsKXGxlZnQoMC4wNjM3XHN1bV97aT0xfV57NX0gWV9pICwgMC4xODQzXHN1bV97aT0xfV57NX0gWV9pXHJpZ2h0KQpcXQo8L2xpPgo8L29sPgoKIyNQcm9ibGVtIDkuODAgKDIgcG9pbnRzKQpMZXQgXChZXzEsXGRvdHNjLFlfblwpIGRlbm90ZSBhIHJhbmRvbSBzYW1wbGUgZnJvbSBhIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbgp3aG9zZSBkZW5zaXR5IGZ1bmN0aW9uIGlzIGdpdmVuIGJ5ClxbCmZfWSh5IFxtaWQgXHRoZXRhKSA9ClxiZWdpbntjYXNlc30KKFx0aGV0YSArIDEpIHlee1x0aGV0YX0sICYgMCA8IHkgPCAxLCBcdGhldGEgPiAtMSBcXAowLCAmIFx0ZXh0cm17ZWxzZXdoZXJlfQpcZW5ke2Nhc2VzfS4KXF0KV2Ugd3JpdGUgdGhlIGxpa2VsaWhvb2QgZnVuY3Rpb24KXFsKTCh5XzEsXGRvdHNjLHlfbiBcbWlkIFx0aGV0YSkgPSBccHJvZF97aT0xfV57bn0gZl9ZKHlfaSBcbWlkIFx0aGV0YSkgCj0gKFx0aGV0YSArIDEpXntufSBcbGVmdChccHJvZF97aT0xfV57bn0geV9pXHJpZ2h0KV57XHRoZXRhfS4KXF0KTGV0IFwoXGVsbChcdGhldGEpXCkgZGVub3RlIHRoZSBsb2cgbGlrZWxpaG9vZCBmdW5jdGlvbi4gVGhlbgpcYmVnaW57YWxpZ24qfQpcZWxsKFx0aGV0YSkgJj0gXGxuIEwoeV8xLFxkb3RzYyx5X24gXG1pZCBcdGhldGEpCj0gbiBcbG4gKFx0aGV0YSArIDEpIAorIFx0aGV0YSBcbG5cbGVmdChccHJvZF97aT0xfV57bn0geV9pXHJpZ2h0KSBcXApcaW1wbGllcwpcZWxsJyhcdGhldGEpICY9IFxmcmFje259e1x0aGV0YSArIDF9ICsgXGxuXGxlZnQoXHByb2Rfe2k9MX1ee259IHlfaVxyaWdodCkuClxlbmR7YWxpZ24qfQpBIGNhbGN1bGF0aW9uIHNob3dzIHRoYXQgXChcZWxsJyhcaGF0e1x0aGV0YX0pID0gMFwpIGlmIApcWwpcaGF0e1x0aGV0YX0gPSAKLVxmcmFje24gKyBcbG4gXHByb2Rfe2k9MX1ee259IHlfaX0Ke1xsbiBccHJvZF97aT0xfV57bn0geV9pfS4KXF0KVGhlcmVmb3JlLCB0aGUgTWF4aW11bSBMaWtlbGlob29kIEVzdGltYXRvciBmb3IgXChcdGhldGFcKSBpcwpcWwpcaGF0e1x0aGV0YX0gPSAKLVxmcmFje24gKyBcbG4gXHByb2Rfe2k9MX1ee259IFlfaX0Ke1xsbiBccHJvZF97aT0xfV57bn0gWV9pfSwKXF0Kd2hpY2ggaXMgcXVpdGUgZGlmZmVyZW50IGZyb20gdGhlIE1ldGhvZCBPZiBNb21lbnRzIGVzdGltYXRvciBcKCgyXG92ZXJsaW5le1l9IC0gMSkvKDEgLSBcb3ZlcmxpbmV7WX0pXCkuCgojI1Byb2JsZW0gOS44MiAoMiBwb2ludHMpClxiZWdpbnthbGlnbip9CkwocCkgJj0gXGxlZnRbcF57MjV9KDEtcCleezc1fVxyaWdodF1cY2RvdApcbGVmdFtwXnszMH0oMS1wKV57NzB9XHJpZ2h0XSAKPSBwXns1NX0oMS1wKV57MTQ1fSBcXApcZWxsKHApICY9IFxsbiBMKHApID0gMzAgXGxuIHAgKyAxNDUgXGxuICgxIC0gcCkgXFwKXGVsbCcocCkgJj0gXGZyYWN7MzB9e3B9IC0gXGZyYWN7MTQ1fXsxLXB9ID0KXGZyYWN7NTUoMSAtIHApIC0gMTQ1cH17cCgxIC0gcCl9IFxcClxlbGwnKHApICY9IFxmcmFjezU1IC0gMjAwIHB9e3AoMSAtIHApfS4KXGVuZHthbGlnbip9CldlIHNlZSB0aGF0IFwoXGVsbCcoXGhhdHtwfSkgPSAwXCkgaWYgYW5kIG9ubHkgaWYKXChcaGF0e3B9ID0gNTUvMjAwID0gMC4yNzVcKS4gU2luY2UgXChcZWxsJycoXGhhdHtwfSkgPCAwXCksIHdlIHNlZSB0aGF0IHRoZSBNTEUgaXMgXChcaGF0e3B9ID0gMC4yNzVcKS4KCiMjUHJvYmxlbSA5Ljg0ICg2IHBvaW50cykKTGV0IFwoWV8xLFxkb3RzYyxZX25cKSBiZSBhIHJhbmRvbSBzYW1wbGUgZnJvbSBhCnBvcHVsYXRpb24gd2hvc2UgZGVuc2l0eSBmdW5jdGlvbiBpcwpcWwpmKHkgXG1pZCBcdGhldGEpID0KXGJlZ2lue2Nhc2VzfQpcZnJhY3szeV4yfXtcdGhldGFeM30sICYgMCBcbGUgeSBcbGUgXHRoZXRhIFxcCjAsICYgXHRleHRybXtlbHNld2hlcmV9ClxlbmR7Y2FzZXN9LgpcXQpFeGVyY2lzZSBcKDkuNDRcKSBzaG93ZWQgdGhhdCAKXChZX3sobil9ID0gXG1heChZXzEsXGRvdHNjLFlfbilcKSBpcyBzdWZmaWNpZW50IGZvcgpcKFx0aGV0YVwpLgo8b2wgdHlwZT0iYSI+CjxsaT4KV2Ugd3JpdGUgdGhlIGxpa2VsaWhvb2QgZnVuY3Rpb24KXFsKTCh5XzEsXGRvdHNjLHlfbiBcbWlkIFx0aGV0YSkgPSBccHJvZF97aT0xfV57bn0gZih5X2kgXG1pZCBcdGhldGEpCj0gM157bn1cbGVmdChccHJvZF97aT0xfV57bn0geV9pXHJpZ2h0KV57Mn0KXHRoZXRhXnstM259XHByb2Rfe2k9MX1ee259IElfe1swLFx0aGV0YV19KHlfaSkuClxdCkFzIGEgZnVuY3Rpb24gb2YgXChcdGhldGFcKSwgXChccHJvZF97aT0xfV57bn0gSV97WzAsXHRoZXRhXX0oeV9pKSA9IElfe1swLFx0aGV0YV19KHlfeyhuKX0pXGNkb3QgSV97WzAsXGluZnR5KX0oeV97KDEpfSkgPSAxXCkgZm9yIFwoXHRoZXRhIFxnZSB5X3sobil9XCksIGFuZCBlcXVhbHMgXCgwXCkgZm9yIFwoXHRoZXRhIDwgeV97KG4pfVwpLiBTaW5jZQpcKFx0aGV0YV57LTNufVwpIGlzIGEgZGVjcmVhc2luZyBmdW5jdGlvbiBvZiBcKFx0aGV0YVwpLCB3ZSBjb25jbHVkZSB0aGF0IApcKEwoeV8xLFxkb3RzYyx5X24gXG1pZCBcdGhldGEpXCkgYWNoaWV2ZXMgaXRzIG1heGltdW0gCnZhbHVlIGF0IFwoXGhhdHtcdGhldGF9ID0geV97KG4pfVwpLiBUaGVyZWZvcmUKXChZX3sobil9XCkgaXMgYSBNYXhpbXVtIExpa2VsaWhvb2QgRXN0aW1hdG9yIGZvciAKXChcdGhldGFcKS4KPC9saT4KPGxpPgpUaGUgQ3VtdWxhdGl2ZSBEaXN0cmlidXRpb24gRnVuY3Rpb24gKENERikgZm9yIFwoWVwpIGlzClxbCkZfWSh5KSA9IFAoWSBcbGUgeSkgPSAKXGJlZ2lue2Nhc2VzfQoxLCAmIHkgPiBcdGhldGEgXFwKKHkgLyBcdGhldGEpXnszfSwgJiAwIFxsZSB5IFxsZSBcdGhldGEgXFwKMCwgJiB5IDwgMApcZW5ke2Nhc2VzfS4KXF0KRnJvbSB0aGlzIHdlIGRlZHVjZSB0aGF0IHRoZSBDREYgZm9yIFwoWV97KG4pfVwpIGlzIFwoR197KG4pfSh5KSA9IFAoWV97KG4pfSBcbGUgeSkgPSBbRl9ZKHkpXV57bn1cKS4KVGhlIGNvcnJlc3BvbmRpbmcgUHJvYmFiaWxpdHkgRGVuc2l0eSBGdW5jdGlvbiAoUERGKQpmb3IgXChZX3sobil9XCkgaXMgXChnX3sobil9KHkpID0gRydfeyhuKX0oeSlcKSwKXFsKZ197KG4pfSh5KSA9ClxiZWdpbntjYXNlc30KXGZyYWN7M259e1x0aGV0YV57M259fSB5XnszbiAtIDF9LCAmIDAgXGxlIHkgXGxlIFx0aGV0YSBcXAowLCAmIFx0ZXh0cm17ZWxzZXdoZXJlfQpcZW5ke2Nhc2VzfS4KXF0KQSBxdWljayBjYWxjdWxhdGlvbiBzaG93cyB0aGF0IGlmIHdlIGxldCBcKHcgPSAgeS9cdGhldGFcKSwKdGhlbiBcKGdfeyhuKX0oeSlcKSB0cmFuc2Zvcm1zIGludG8gdGhlIGRlbnNpdHkgZnVuY3Rpb24KXFsKZl9XKHcpID0gClxiZWdpbntjYXNlc30KM24gd157M24gLSAxfSwgJiAwIFxsZSB3IFxsZSAxIFxcCjAsICYgXHRleHRybXtlbHNld2hlcmV9ClxlbmR7Y2FzZXN9LApcXQp3aGljaCBzaG93cyB0aGF0IFwoVyA9IFxmcmFjezF9e1x0aGV0YX1ZX3sobil9XCkgaGFzCmEgQmV0YSBkaXN0cmlidXRpb24gd2l0aCBwYXJhbWV0ZXJzIFwoXGFscGhhID0gM25cKQphbmQgXChcYmV0YSA9IDFcKS4gTW9yZW92ZXIsIHNpbmNlIFwoZl9XKHcpXCkgaXMgCmluZGVwZW5kZW50IG9mIFwoXHRoZXRhXCksIFwoV1wpIGlzIGEgcGl2b3RhbApxdWFudGl0eS4KPC9saT4KPGxpPgpBbm90aGVyIHF1aWNrIGNhbGN1bGF0aW9uIHNob3dzIHRoYXQgdGhlIENERiBmb3IgXChXXCkKaXMKXFsKRl9XKHcpID0KXGJlZ2lue2Nhc2VzfQoxLCAmIHcgPiAxIFxcCndeezNufSwgJiAwIFxsZSB3IFxsZSAxIFxcCjAsICYgdyA8IDAKXGVuZHtjYXNlc30uClxdCkxldCBcKDAgPCBcYWxwaGEgPCAxXCksIHRoZW4KXGJlZ2lue2FsaWduKn0KUFxsZWZ0KChcYWxwaGEvMilee1xmcmFjezF9ezNufX0gXGxlIFcgClxsZSAoMSAtIFxhbHBoYS8yKV57XGZyYWN7MX17M259fVxyaWdodCkgCiY9CkZfV1xsZWZ0KCgxIC0gXGFscGhhLzIpXntcZnJhY3sxfXszbn19XHJpZ2h0KSAtCkZfV1xsZWZ0KChcYWxwaGEvMilee1xmcmFjezF9ezNufX1ccmlnaHQpIFxcCiY9CjEgLSBcYWxwaGEvMiAtIFxhbHBoYS8yIFxcCiY9IAoxIC0gXGFscGhhLgpcZW5ke2FsaWduKn0KU2luY2UgXChXID0gWV97KG4pfSAvIFx0aGV0YVwpIGFuZCBzaW5jZQpcWwpQXGxlZnQoKFxhbHBoYS8yKV57XGZyYWN7MX17M259fSBcbGUgWV97KG4pfS9cdGhldGEgClxsZSAoMSAtIFxhbHBoYS8yKV57XGZyYWN7MX17M259fVxyaWdodCkKPQpQXGxlZnQoICgxIC0gXGFscGhhLzIpXnstXGZyYWN7MX17M259fSBZX3sobil9IFxsZSBcdGhldGEgClxsZSAoXGFscGhhLzIpXnstXGZyYWN7MX17M259fSBZX3sobil9XHJpZ2h0KSwKXF0Kd2UgZGVkdWNlIHRoYXQgYSBcKCgxIC0gXGFscGhhKVxjZG90IDEwMFwlXCkgY29uZmlkZW5jZQppbnRlcnZhbCBmb3IgXChcdGhldGFcKSBpcwpcWwpcbGVmdCggKDEgLSBcYWxwaGEvMileey1cZnJhY3sxfXszbn19IFlfeyhuKX0gLAooXGFscGhhLzIpXnstXGZyYWN7MX17M259fSBZX3sobil9XHJpZ2h0KS4KXF0KPC9saT4KPC9vbD4KCiMjUHJvYmxlbSA5Ljg2ICgyIFBvaW50cykKTGV0IFwoXGJldGEgPSB0KFx0aGV0YSlcKSBiZSBhbiBpbnZlcnRpYmxlCmZ1bmN0aW9uLiBMZXQgXChcaGF0e1x0aGV0YX1cKSBiZSBhCm1heGltdW0gbGlrZWxpaG9vZCBlc3RpbWF0b3IgZm9yIHRoZQpsaWtlbGlob29kIGZ1bmN0aW9uClwoTCh5XzEsXGRvdHNjLHlfbiBcbWlkIFx0aGV0YSlcKSwgdGhlbgpcYmVnaW57ZXF1YXRpb259CkwoeV8xLFxkb3RzYyx5X24gXG1pZCBcdGhldGEpIFxsZSBMKHlfMSxcZG90c2MseV9uIFxtaWQgXGhhdHtcdGhldGF9KQpcZW5ke2VxdWF0aW9ufQpmb3IgYWxsIFwoXHRoZXRhXCkuCgpMZXQgXChcbWF0aHNjcntMfSh5XzEsXGRvdHNjLHlfbiBcbWlkIFxiZXRhKVwpIGJlIHRoZSBjb3JyZXNwb25kaW5nIGxpa2VsaWhvb2QKZnVuY3Rpb24gaW52b2x2aW5nIFwoXGJldGFcKS4gVGhlIHR3byBsaWtlbGlob29kIGZ1bmN0aW9ucyBhcmUgcmVsYXRlZAphcyBmb2xsb3dzOgpcYmVnaW57ZXF1YXRpb259CkwoeV8xLFxkb3RzYyx5X24gXG1pZCBcdGhldGEpID0gXG1hdGhzY3J7TH0oeV8xLFxkb3RzYyx5X24gXG1pZCB0KFx0aGV0YSkpLgpcZW5ke2VxdWF0aW9ufQoKRm9yIGV4YW1wbGUsIGxldCBcKFlcKSBiZSBhIG5vcm1hbCByYW5kb20gdmFyaWFibGUgd2l0aApcKEVbWV0gPSAwXCkgYW5kIFwoVltZXSA9IFxzaWdtYV4yXCksIFwoXHNpZ21hID4gMFwpLiAKTGV0IFwodCh4KSA9IHheMlwpLCBsZXQgXChcdGhldGEgPSBcc2lnbWFcKSwgdGhlbiAKXChcYmV0YSA9IHQoXHRoZXRhKSA9IFx0aGV0YV4yID0gXHNpZ21hXjJcKSwgYW5kClxiZWdpbnthbGlnbip9ClxtYXRoc2Nye0x9KHlfMSxcZG90c2MseV9uIFxtaWQgXGJldGEpCiY9Clxwcm9kX3tpPTF9XntufSBcbGVmdCgyIFxwaSBcYmV0YSBccmlnaHQpXnstMS8yfSBlXnstXGZyYWN7MX17Mn15X2leMiAvIFxiZXRhfS4gXFwKTCh5XzEsXGRvdHNjLHlfbiBcbWlkIFx0aGV0YSkKJj0KXHByb2Rfe2k9MX1ee259IFxsZWZ0KDIgXHBpIFx0aGV0YV4yIFxyaWdodCleey0xLzJ9IGVeey1cZnJhY3sxfXsyfXlfaV4yIC8gXHRoZXRhXjJ9IFxcCiY9ClxtYXRoc2Nye0x9KHlfMSxcZG90c2MseV9uIFxtaWQgXHRoZXRhXjIpIFxcCiY9ClxtYXRoc2Nye0x9KHlfMSxcZG90c2MseV9uIFxtaWQgdChcdGhldGEpKS4KXGVuZHthbGlnbip9CgpSZXR1cm5pbmcgdG8gdGhlIGdlbmVyYWwgY2FzZSwgbGV0IFwoXGJldGFcKSBiZSBhcmJpdHJhcnksIHRoZW4Kc2luY2UgXCh0XCkgaXMgaW52ZXJ0aWJsZSB3ZSBkZWZpbmUgXChcdGhldGEgPSB0XnstMX0oXGJldGEpXCkuClRodXMsClxbClxtYXRoc2Nye0x9KHlfMSxcZG90c2MseV9uIFxtaWQgXGJldGEpID0KTCh5XzEsXGRvdHNjLHlfbiBcbWlkIFx0aGV0YSkgXGxlCkwoeV8xLFxkb3RzYyx5X24gXG1pZCBcaGF0e1x0aGV0YX0pID0KXG1hdGhzY3J7TH0oeV8xLFxkb3RzYyx5X24gXG1pZCB0KFxoYXR7XHRoZXRhfSkpLgpcXQpTaW5jZSAKXChcbWF0aHNjcntMfSh5XzEsXGRvdHNjLHlfbiBcbWlkIFxiZXRhKSBcbGUgClxtYXRoc2Nye0x9KHlfMSxcZG90c2MseV9uIFxtaWQgdChcaGF0e1x0aGV0YX0pKVwpCmZvciBhbGwgXChcYmV0YVwpLCBcKHQoXGhhdHtcdGhldGF9KVwpIGlzIGEgTWF4aW11bQpMaWtlbGlob29kIEVzdGltYXRvciBmb3IgXChcYmV0YVwpLgoKIyNQcm9ibGVtIDkuODggKDIgcG9pbnRzKQpMZXQgXChZXzEsXGRvdHNjLFlfblwpIGJlIGEgcmFuZG9tIHNhbXBsZSBmcm9tIGEgbm9ybWFsIGRpc3RyaWJ1dGlvbgp3aXRoIG1lYW4gXChcbXVcKSBhbmQgdmFyaWFuY2UgXChcc2lnbWFeMlwpLCBib3RoIHVua25vd24uCkV4YW1wbGUgXCg5LjE1XCkgKHBhZ2VzIFwoNDUwIC0gNDUxXCkpIHNob3dzIHRoYXQKXFsKXGhhdHtcbXV9ID0gXG92ZXJsaW5le1l9LFxxcXVhZApcd2lkZWhhdHtcc2lnbWFeMn0gPQpcZnJhY3sxfXtufVxzdW1fe2k9MX1ee259XGxlZnQoWV9pIC0gXG92ZXJsaW5le1l9XHJpZ2h0KV4yClxdCmFyZSBNYXhpbXVtIExpa2VsaWhvb2QgRXN0aW1hdG9ycyBmb3IgXChcbXVcKSBhbmQgXChcc2lnbWFeMlwpLgpTaW5jZSBcKFxzaWdtYSA9IFxzcXJ0e1xzaWdtYV4yfVwpLCB0aGUgaW52YXJpYW5jZSBwcm9wZXJ0eSBmb3IKTUxFcyBpbXBsaWVzIHRoYXQKXFsKXGhhdHtcc2lnbWF9ID0gXHNxcnR7ClxmcmFjezF9e259XHN1bV97aT0xfV57bn1cbGVmdChZX2kgLSBcb3ZlcmxpbmV7WX1ccmlnaHQpXjIKfQpcXQppcyBhbiBNTEUgZm9yIFwoXHNpZ21hXCkuCgoKCgoKCgoKCgoKCgo=