Lý thuyết
6.1: Diversification and Portfolio Risk
- Concept: Diversification reduces risk by combining
assets with returns that are not perfectly correlated.
- Types of Risk:
- Systematic Risk (Market Risk): Risk that affects
the entire market or economy as a whole (VD: suy thoái, lạm phát, thiên
tai,…). It’s also known as undiversifiable risk because it can’t be
eliminated by diversifying your investments. Cannot be diversified
away.
- unique risk/firm-specific risk/nonsystematic
risk/diversifiable risk: Risk specific to a particular company
or industry. It’s also known as diversifiable risk because it can be
reduce or eliminated through diversification. (VD: cty truyền thông ngu,
thay đổi quy định vs hàng hoá, ….) -> Portfolio
Risk: Determined by the weights of the assets, their variances,
and their correlations to maximize return and reduce risk.
6.2: Asset Allocation with Two Risky Assets
- Risk and Return Trade-Off: Combining two risky
assets produces a portfolio with risk and return characteristics
dependent on their covariance.
- Covariance and Correlation:
- Covariance measures how two assets move together.
- Correlation (\(\rho\)) is a
standardized version of covariance, ranging between -1 and 1.
- Efficient Frontier for Two Assets:
- Portfolios with low or negative correlations offer significant
diversification benefits.
Using Historical Data to Estimate Means, Standard Deviations,
Covariance, and Correlation
Portfolio Expected Return: \[
E(r_P) = w_1E(r_1) + w_2E(r_2)
\] Where \(w_1, w_2\) are
weights of assets in the portfolio, and \(E(r_1), E(r_2)\) are their expected
returns.
Portfolio Variance (Two Assets): \[
\sigma_P^2 = w_1^2\sigma_1^2 + w_2^2\sigma_2^2 +
2w_1w_2\rho_{1,2}\sigma_1\sigma_2
\] Where \(\sigma_1, \sigma_2\)
are the standard deviations, and \(\rho_{1,2}\) is the correlation coefficient
between the two assets.
Covariance: \[
\text{Cov}(r_1, r_2) = \rho_{1,2} \sigma_1 \sigma_2
\]
6.3: The Optimal Risky Portfolio with a Risk-Free
Asset
Introduction: Investors allocate wealth between
a risk-free asset and an optimal risky portfolio to maximize return for
a given level of risk.
Capital Allocation Line (CAL):
- A straight line representing the risk-return trade-off of combining
a risk-free asset with a portfolio of risky assets.
- The slope of CAL is the Sharpe Ratio.
\[
\text{Sharpe Ratio} = \frac{E(r_P) - r_f}{\sigma_P}
\]
Where \(r_f\) is the risk-free rate,
\(E(r_P)\) is the portfolio’s expected
return, and \(\sigma_P\) is the
portfolio’s standard deviation.
Optimal Portfolio:
- Maximizes the Sharpe Ratio by choosing weights that balance risk and
return.
Sharpe ratio maximizing portfolio weights with two risky
assets (B and S) and a risk-free asset:
6.4: Efficient Diversification with Many Risky
Assets
- Efficient Frontier: A curve showing the best
risk-return trade-offs from a portfolio of multiple risky assets.
- Separation Property:
- Portfolio construction can be separated into:
- Identifying the optimal risky portfolio.
- Allocating wealth between the risk-free asset and the optimal
portfolio based on investor preferences.
- Risk of Long-Term Investments:
- Evaluates how compounding affects risk and return for long-term
investments.
6.5: Single-Index Model
- Purpose: Simplifies the covariance calculations by
assuming asset returns are driven by a common market factor (e.g., an
index).
- Components of Return:
- Systematic Component: Related to market movements.
- Idiosyncratic Component: Unique to the asset.
- Benefits:
- Reduces complexity of managing large portfolios.
- Focuses on market-wide factors for risk and return. \[
\sigma_A^2 = \beta^2 \sigma_M^2 + \sigma_{\text{residual}}^2
\] —
6.6: Risk of Long-Term Investments
- Misconception: Long-term investments do not
necessarily reduce risk due to uncertainty in compounding.
- Clarification: While diversification mitigates some
risks, investors need to consider how risks compound over time.
Bài tập
- In forming a portfolio of two risky assets, what must be true of the
correlation coefficient between their returns if there are to be gains
from diversification? Explain. (LO 6-1)
- To achieve gains from diversification, the correlation coefficient
between the returns of the two assets must be less than 1.
- A lower or negative correlation increases the diversification
benefit by reducing portfolio risk.
- When adding a risky asset to a portfolio of many risky assets, which
property of the asset is more important, its standard deviation or its
covariance with the other assets? Explain. (LO 6-1) covariance
- A portfolio’s expected return is 12%, its standard deviation is 20%,
and the risk-free rate is 4%. Which of the following would make for the
greatest increase in the portfolio’s Sharpe ratio? (LO 6-3)
- An increase of 1% in expected return.
- A decrease of 1% in the risk-free rate.
- A decrease of 1% in its standard deviation.
Sharpe Ratio: \[
\text{Sharpe Ratio} = \frac{E(r_P) - r_f}{\sigma_P}
\] Where \(r_f\) is the
risk-free rate, \(E(r_P)\) is the
portfolio’s expected return, and \(\sigma_P\) is the portfolio’s standard
deviation.
An investor ponders various allocations to the optimal risky
portfolio and risk-free T-bills to construct his complete portfolio. How
would the Sharpe ratio of the complete portfolio be affected by this
choice? (LO 6-3) không ảnh hưởng
\[
\sigma_A^2 = \beta^2 \sigma_M^2 + \sigma_{\text{residual}}^2
\]
case 1 \[
\sigma_A^2 = (1.65)^2 \times (0.2)^2 + (0.3)^2
\] \[
\sigma_A^2 = (2.7225) \times (0.04) + (0.09) = 0.1089 + 0.09 = 0.1989
\] case 2 \[
\sigma_A^2 = (1.5)^2 \times (0.2)^2 + (0.33)^2
\] \[
\sigma_A^2 = (2.25) \times (0.04) + (0.1089) = 0.09 + 0.1089 = 0.1989
\]
không khác j \[
\sigma_P^2 = w_M^2 \sigma_M^2 + w_A^2 \sigma_A^2 + 2w_Mw_A \rho_{M,A}
\sigma_M \sigma_A
\]
Reward-to-Volatility Ratio (Sharpe Ratio)
- Portfolio Standard Deviation: Solve for \(\sigma_P\) using the CAL formula: \[
E(r_P) = r_f + \frac{\sigma_P}{\sigma_O} (E(r_O) - r_f)
\] Where \(\sigma_O\) and \(E(r_O)\) are the standard deviation and
expected return of the optimal risky portfolio.
Substitute: \[
w_r = \frac{12\% - 5\%}{14\% - 5\%} = \frac{7\%}{9\%} = 0.7778 \,
\text{or } 77.78\% \, \text{in the risky portfolio}.
\]
- Proportions of T-Bill and Risky Assets: Calculate
the weights:
- Proportion in T-Bills (\(w_f\)).
- Proportions in risky assets (\(1 -
w_f\)).
LS0tDQp0aXRsZTogImNoYXB0ZXIgNiINCmF1dGhvcjogIlZOUXVhbnQiDQpkYXRlOiAiMTgvMTEvMjAyNCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDINCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IHRydWUNCiAgICAgIHNtb290aF9zY3JvbGw6IGZhbHNlDQogICAgY29kZV9mb2xkaW5nOiAic2hvdyINCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgdGhlbWU6IGZsYXRseQ0KICAgIGhpZ2hsaWdodDogemVuYnVybg0KZWRpdG9yX29wdGlvbnM6IA0KICBtYXJrZG93bjogDQogICAgd3JhcDogNzINCi0tLQ0KDQojIEzDvSB0aHV54bq/dA0KDQojIyAqKjYuMTogRGl2ZXJzaWZpY2F0aW9uIGFuZCBQb3J0Zm9saW8gUmlzayoqDQoNCi0gICAqKkNvbmNlcHQqKjogRGl2ZXJzaWZpY2F0aW9uIHJlZHVjZXMgcmlzayBieSBjb21iaW5pbmcgYXNzZXRzIHdpdGgNCiAgICByZXR1cm5zIHRoYXQgYXJlIG5vdCBwZXJmZWN0bHkgY29ycmVsYXRlZC4NCi0gICAqKlR5cGVzIG9mIFJpc2sqKjoNCiAgICAtICAgKipTeXN0ZW1hdGljIFJpc2sgKE1hcmtldCBSaXNrKSoqOiBSaXNrIHRoYXQgYWZmZWN0cyB0aGUgZW50aXJlDQogICAgICAgIG1hcmtldCBvciBlY29ub215IGFzIGEgd2hvbGUgKFZEOiBzdXkgdGhvw6FpLCBs4bqhbSBwaMOhdCwgdGhpw6puDQogICAgICAgIHRhaSwuLi4pLiBJdCdzIGFsc28ga25vd24gYXMgdW5kaXZlcnNpZmlhYmxlIHJpc2sgYmVjYXVzZSBpdA0KICAgICAgICBjYW4ndCBiZSBlbGltaW5hdGVkIGJ5IGRpdmVyc2lmeWluZyB5b3VyIGludmVzdG1lbnRzLiBDYW5ub3QgYmUNCiAgICAgICAgZGl2ZXJzaWZpZWQgYXdheS4NCiAgICAtICAgKip1bmlxdWUgcmlzay9maXJtLXNwZWNpZmljIHJpc2svbm9uc3lzdGVtYXRpYw0KICAgICAgICByaXNrL2RpdmVyc2lmaWFibGUgcmlzayoqOiBSaXNrIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBjb21wYW55DQogICAgICAgIG9yIGluZHVzdHJ5LiBJdCdzIGFsc28ga25vd24gYXMgZGl2ZXJzaWZpYWJsZSByaXNrIGJlY2F1c2UgaXQNCiAgICAgICAgY2FuIGJlIHJlZHVjZSBvciBlbGltaW5hdGVkIHRocm91Z2ggZGl2ZXJzaWZpY2F0aW9uLiAoVkQ6IGN0eQ0KICAgICAgICB0cnV54buBbiB0aMO0bmcgbmd1LCB0aGF5IMSR4buVaSBxdXkgxJHhu4tuaCB2cyBow6BuZyBob8OhLCAuLi4uKSAtXD4NCiAgICAgICAgKipQb3J0Zm9saW8gUmlzayoqOiBEZXRlcm1pbmVkIGJ5IHRoZSB3ZWlnaHRzIG9mIHRoZSBhc3NldHMsDQogICAgICAgIHRoZWlyIHZhcmlhbmNlcywgYW5kIHRoZWlyIGNvcnJlbGF0aW9ucyB0byBtYXhpbWl6ZSByZXR1cm4gYW5kDQogICAgICAgIHJlZHVjZSByaXNrLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyMgKio2LjI6IEFzc2V0IEFsbG9jYXRpb24gd2l0aCBUd28gUmlza3kgQXNzZXRzKioNCg0KLSAgICoqUmlzayBhbmQgUmV0dXJuIFRyYWRlLU9mZioqOiBDb21iaW5pbmcgdHdvIHJpc2t5IGFzc2V0cyBwcm9kdWNlcyBhDQogICAgcG9ydGZvbGlvIHdpdGggcmlzayBhbmQgcmV0dXJuIGNoYXJhY3RlcmlzdGljcyBkZXBlbmRlbnQgb24gdGhlaXINCiAgICBjb3ZhcmlhbmNlLg0KLSAgICoqQ292YXJpYW5jZSBhbmQgQ29ycmVsYXRpb24qKjoNCiAgICAtICAgQ292YXJpYW5jZSBtZWFzdXJlcyBob3cgdHdvIGFzc2V0cyBtb3ZlIHRvZ2V0aGVyLg0KICAgIC0gICBDb3JyZWxhdGlvbiAoJFxyaG8kKSBpcyBhIHN0YW5kYXJkaXplZCB2ZXJzaW9uIG9mIGNvdmFyaWFuY2UsDQogICAgICAgIHJhbmdpbmcgYmV0d2VlbiAtMSBhbmQgMS4NCi0gICAqKkVmZmljaWVudCBGcm9udGllciBmb3IgVHdvIEFzc2V0cyoqOg0KICAgIC0gICBQb3J0Zm9saW9zIHdpdGggbG93IG9yIG5lZ2F0aXZlIGNvcnJlbGF0aW9ucyBvZmZlciBzaWduaWZpY2FudA0KICAgICAgICBkaXZlcnNpZmljYXRpb24gYmVuZWZpdHMuDQoNClVzaW5nIEhpc3RvcmljYWwgRGF0YSB0byBFc3RpbWF0ZSBNZWFucywgU3RhbmRhcmQgRGV2aWF0aW9ucywNCkNvdmFyaWFuY2UsIGFuZCBDb3JyZWxhdGlvbg0KDQoxLiAgKipQb3J0Zm9saW8gRXhwZWN0ZWQgUmV0dXJuKio6ICQkDQogICAgRShyX1ApID0gd18xRShyXzEpICsgd18yRShyXzIpDQogICAgJCQgV2hlcmUgJHdfMSwgd18yJCBhcmUgd2VpZ2h0cyBvZiBhc3NldHMgaW4gdGhlIHBvcnRmb2xpbywgYW5kDQogICAgJEUocl8xKSwgRShyXzIpJCBhcmUgdGhlaXIgZXhwZWN0ZWQgcmV0dXJucy4NCg0KMi4gICoqUG9ydGZvbGlvIFZhcmlhbmNlIChUd28gQXNzZXRzKSoqOiAkJA0KICAgIFxzaWdtYV9QXjIgPSB3XzFeMlxzaWdtYV8xXjIgKyB3XzJeMlxzaWdtYV8yXjIgKyAyd18xd18yXHJob197MSwyfVxzaWdtYV8xXHNpZ21hXzINCiAgICAkJCBXaGVyZSAkXHNpZ21hXzEsIFxzaWdtYV8yJCBhcmUgdGhlIHN0YW5kYXJkIGRldmlhdGlvbnMsIGFuZA0KICAgICRccmhvX3sxLDJ9JCBpcyB0aGUgY29ycmVsYXRpb24gY29lZmZpY2llbnQgYmV0d2VlbiB0aGUgdHdvIGFzc2V0cy4NCg0KMy4gICoqQ292YXJpYW5jZSoqOiAkJA0KICAgIFx0ZXh0e0Nvdn0ocl8xLCByXzIpID0gXHJob197MSwyfSBcc2lnbWFfMSBcc2lnbWFfMg0KICAgICQkDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIyAqKjYuMzogVGhlIE9wdGltYWwgUmlza3kgUG9ydGZvbGlvIHdpdGggYSBSaXNrLUZyZWUgQXNzZXQqKg0KDQotICAgKipJbnRyb2R1Y3Rpb24qKjogSW52ZXN0b3JzIGFsbG9jYXRlIHdlYWx0aCBiZXR3ZWVuIGEgcmlzay1mcmVlDQogICAgYXNzZXQgYW5kIGFuIG9wdGltYWwgcmlza3kgcG9ydGZvbGlvIHRvIG1heGltaXplIHJldHVybiBmb3IgYSBnaXZlbg0KICAgIGxldmVsIG9mIHJpc2suDQoNCi0gICAqKkNhcGl0YWwgQWxsb2NhdGlvbiBMaW5lIChDQUwpKio6DQoNCiAgICAtICAgQSBzdHJhaWdodCBsaW5lIHJlcHJlc2VudGluZyB0aGUgcmlzay1yZXR1cm4gdHJhZGUtb2ZmIG9mDQogICAgICAgIGNvbWJpbmluZyBhIHJpc2stZnJlZSBhc3NldCB3aXRoIGEgcG9ydGZvbGlvIG9mIHJpc2t5IGFzc2V0cy4NCiAgICAtICAgVGhlIHNsb3BlIG9mIENBTCBpcyB0aGUgU2hhcnBlIFJhdGlvLg0KDQogICAgJCQNCiAgICAgXHRleHR7U2hhcnBlIFJhdGlvfSA9IFxmcmFje0Uocl9QKSAtIHJfZn17XHNpZ21hX1B9DQogICAgICQkDQoNCiAgICBXaGVyZSAkcl9mJCBpcyB0aGUgcmlzay1mcmVlIHJhdGUsICRFKHJfUCkkIGlzIHRoZSBwb3J0Zm9saW8ncw0KICAgIGV4cGVjdGVkIHJldHVybiwgYW5kICRcc2lnbWFfUCQgaXMgdGhlIHBvcnRmb2xpbydzIHN0YW5kYXJkDQogICAgZGV2aWF0aW9uLg0KDQotICAgKipPcHRpbWFsIFBvcnRmb2xpbyoqOg0KDQogICAgLSAgIE1heGltaXplcyB0aGUgU2hhcnBlIFJhdGlvIGJ5IGNob29zaW5nIHdlaWdodHMgdGhhdCBiYWxhbmNlIHJpc2sNCiAgICAgICAgYW5kIHJldHVybi4NCg0KKipTaGFycGUgcmF0aW8gbWF4aW1pemluZyBwb3J0Zm9saW8gd2VpZ2h0cyB3aXRoIHR3byByaXNreSBhc3NldHMgKEIgYW5kDQpTKSBhbmQgYSByaXNrLWZyZWUgYXNzZXQqKjoNCg0KIyMjIEZvcm11bGEgZm9yICR3X0IkICh3ZWlnaHQgb2YgYXNzZXQgQiBpbiB0aGUgb3B0aW1hbCBwb3J0Zm9saW8pOg0KDQokJA0Kd19CID0gXGZyYWN7W0Uocl9CKSAtIHJfZl0gXHNpZ21hX1NeMiAtIFtFKHJfUykgLSByX2ZdIFxzaWdtYV9CIFxzaWdtYV9TIFxyaG9fe0JTfX17W0Uocl9CKSAtIHJfZl0gXHNpZ21hX1NeMiArIFtFKHJfUykgLSByX2ZdIFxzaWdtYV9CXjIgLSBbRShyX0IpIC0gcl9mICsgRShyX1MpIC0gcl9mXSBcc2lnbWFfQiBcc2lnbWFfUyBccmhvX3tCU319DQokJA0KDQokJA0Kd19TID0gMSAtIHdfQg0KJCQNCg0KV2hlcmU6DQoNClwtICRFKHJfQikkOiBFeHBlY3RlZCByZXR1cm4gb2YgYXNzZXQgJEIkLA0KDQpcLSAkRShyX1MpJDogRXhwZWN0ZWQgcmV0dXJuIG9mIGFzc2V0ICRTJCwNCg0KXC0gJHJfZiQ6IFJpc2stZnJlZSByYXRlLA0KDQpcLSAkXHNpZ21hX0IkOiBTdGFuZGFyZCBkZXZpYXRpb24gb2YgYXNzZXQgJEIkLA0KDQpcLSAkXHNpZ21hX1MkOiBTdGFuZGFyZCBkZXZpYXRpb24gb2YgYXNzZXQgJFMkLA0KDQpcLSAkXHJob197QlN9JDogQ29ycmVsYXRpb24gY29lZmZpY2llbnQgYmV0d2VlbiAkQiQgYW5kICRTJC4NCg0KKipDYXBpdGFsIEFsbG9jYXRpb24gTGluZSAoQ0FMKSoqOiAkJA0KICAgRShyX0MpID0gcl9mICsgXGZyYWN7RShyX1ApIC0gcl9mfXtcc2lnbWFfUH0gXGNkb3QgXHNpZ21hX0MNCiAgICQkIFdoZXJlICRcc2lnbWFfQyQgaXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aGUgY29tcGxldGUNCnBvcnRmb2xpby4gLS0tDQoNCiMjICoqNi40OiBFZmZpY2llbnQgRGl2ZXJzaWZpY2F0aW9uIHdpdGggTWFueSBSaXNreSBBc3NldHMqKg0KDQotICAgKipFZmZpY2llbnQgRnJvbnRpZXIqKjogQSBjdXJ2ZSBzaG93aW5nIHRoZSBiZXN0IHJpc2stcmV0dXJuDQogICAgdHJhZGUtb2ZmcyBmcm9tIGEgcG9ydGZvbGlvIG9mIG11bHRpcGxlIHJpc2t5IGFzc2V0cy4NCi0gICAqKlNlcGFyYXRpb24gUHJvcGVydHkqKjoNCiAgICAtICAgUG9ydGZvbGlvIGNvbnN0cnVjdGlvbiBjYW4gYmUgc2VwYXJhdGVkIGludG86DQogICAgICAgIC0gICBJZGVudGlmeWluZyB0aGUgb3B0aW1hbCByaXNreSBwb3J0Zm9saW8uDQogICAgICAgIC0gICBBbGxvY2F0aW5nIHdlYWx0aCBiZXR3ZWVuIHRoZSByaXNrLWZyZWUgYXNzZXQgYW5kIHRoZQ0KICAgICAgICAgICAgb3B0aW1hbCBwb3J0Zm9saW8gYmFzZWQgb24gaW52ZXN0b3IgcHJlZmVyZW5jZXMuDQotICAgKipSaXNrIG9mIExvbmctVGVybSBJbnZlc3RtZW50cyoqOg0KICAgIC0gICBFdmFsdWF0ZXMgaG93IGNvbXBvdW5kaW5nIGFmZmVjdHMgcmlzayBhbmQgcmV0dXJuIGZvciBsb25nLXRlcm0NCiAgICAgICAgaW52ZXN0bWVudHMuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIyAqKjYuNTogU2luZ2xlLUluZGV4IE1vZGVsKioNCg0KLSAgICoqUHVycG9zZSoqOiBTaW1wbGlmaWVzIHRoZSBjb3ZhcmlhbmNlIGNhbGN1bGF0aW9ucyBieSBhc3N1bWluZw0KICAgIGFzc2V0IHJldHVybnMgYXJlIGRyaXZlbiBieSBhIGNvbW1vbiBtYXJrZXQgZmFjdG9yIChlLmcuLCBhbiBpbmRleCkuDQotICAgKipDb21wb25lbnRzIG9mIFJldHVybioqOg0KICAgIC0gICBTeXN0ZW1hdGljIENvbXBvbmVudDogUmVsYXRlZCB0byBtYXJrZXQgbW92ZW1lbnRzLg0KICAgIC0gICBJZGlvc3luY3JhdGljIENvbXBvbmVudDogVW5pcXVlIHRvIHRoZSBhc3NldC4NCi0gICAqKkJlbmVmaXRzKio6DQogICAgLSAgIFJlZHVjZXMgY29tcGxleGl0eSBvZiBtYW5hZ2luZyBsYXJnZSBwb3J0Zm9saW9zLg0KICAgIC0gICBGb2N1c2VzIG9uIG1hcmtldC13aWRlIGZhY3RvcnMgZm9yIHJpc2sgYW5kIHJldHVybi4gJCQNCiAgICAgICAgICAgIFxzaWdtYV9BXjIgPSBcYmV0YV4yIFxzaWdtYV9NXjIgKyBcc2lnbWFfe1x0ZXh0e3Jlc2lkdWFsfX1eMg0KICAgICAgICAgICAgJCQgLS0tDQoNCiMjICoqNi42OiBSaXNrIG9mIExvbmctVGVybSBJbnZlc3RtZW50cyoqDQoNCi0gICAqKk1pc2NvbmNlcHRpb24qKjogTG9uZy10ZXJtIGludmVzdG1lbnRzIGRvIG5vdCBuZWNlc3NhcmlseSByZWR1Y2UNCiAgICByaXNrIGR1ZSB0byB1bmNlcnRhaW50eSBpbiBjb21wb3VuZGluZy4NCi0gICAqKkNsYXJpZmljYXRpb24qKjogV2hpbGUgZGl2ZXJzaWZpY2F0aW9uIG1pdGlnYXRlcyBzb21lIHJpc2tzLA0KICAgIGludmVzdG9ycyBuZWVkIHRvIGNvbnNpZGVyIGhvdyByaXNrcyBjb21wb3VuZCBvdmVyIHRpbWUuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIELDoGkgdOG6rXANCg0KMS4gIEluIGZvcm1pbmcgYSBwb3J0Zm9saW8gb2YgdHdvIHJpc2t5IGFzc2V0cywgd2hhdCBtdXN0IGJlIHRydWUgb2YgdGhlDQogICAgY29ycmVsYXRpb24gY29lZmZpY2llbnQgYmV0d2VlbiB0aGVpciByZXR1cm5zIGlmIHRoZXJlIGFyZSB0byBiZQ0KICAgIGdhaW5zIGZyb20gZGl2ZXJzaWZpY2F0aW9uPyBFeHBsYWluLiAoTE8gNi0xKQ0KDQotICAgVG8gYWNoaWV2ZSBnYWlucyBmcm9tIGRpdmVyc2lmaWNhdGlvbiwgdGhlIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50DQogICAgYmV0d2VlbiB0aGUgcmV0dXJucyBvZiB0aGUgdHdvIGFzc2V0cyBtdXN0IGJlIGxlc3MgdGhhbiAxLg0KLSAgIEEgbG93ZXIgb3IgbmVnYXRpdmUgY29ycmVsYXRpb24gaW5jcmVhc2VzIHRoZSBkaXZlcnNpZmljYXRpb24NCiAgICBiZW5lZml0IGJ5IHJlZHVjaW5nIHBvcnRmb2xpbyByaXNrLg0KDQoyLiAgV2hlbiBhZGRpbmcgYSByaXNreSBhc3NldCB0byBhIHBvcnRmb2xpbyBvZiBtYW55IHJpc2t5IGFzc2V0cywgd2hpY2gNCiAgICBwcm9wZXJ0eSBvZiB0aGUgYXNzZXQgaXMgbW9yZSBpbXBvcnRhbnQsIGl0cyBzdGFuZGFyZCBkZXZpYXRpb24gb3INCiAgICBpdHMgY292YXJpYW5jZSB3aXRoIHRoZSBvdGhlciBhc3NldHM/IEV4cGxhaW4uIChMTyA2LTEpIGNvdmFyaWFuY2UNCjMuICBBIHBvcnRmb2xpb+KAmXMgZXhwZWN0ZWQgcmV0dXJuIGlzIDEyJSwgaXRzIHN0YW5kYXJkIGRldmlhdGlvbiBpcyAyMCUsDQogICAgYW5kIHRoZSByaXNrLWZyZWUgcmF0ZSBpcyA0JS4gV2hpY2ggb2YgdGhlIGZvbGxvd2luZyB3b3VsZCBtYWtlIGZvcg0KICAgIHRoZSBncmVhdGVzdCBpbmNyZWFzZSBpbiB0aGUgcG9ydGZvbGlv4oCZcyBTaGFycGUgcmF0aW8/IChMTyA2LTMpDQoNCjwhLS0gLS0+DQoNCmEuICBBbiBpbmNyZWFzZSBvZiAxJSBpbiBleHBlY3RlZCByZXR1cm4uDQpiLiAgQSBkZWNyZWFzZSBvZiAxJSBpbiB0aGUgcmlzay1mcmVlIHJhdGUuDQpjLiAgQSBkZWNyZWFzZSBvZiAxJSBpbiBpdHMgc3RhbmRhcmQgZGV2aWF0aW9uLg0KDQoqKlNoYXJwZSBSYXRpbyoqOiAkJA0KICAgXHRleHR7U2hhcnBlIFJhdGlvfSA9IFxmcmFje0Uocl9QKSAtIHJfZn17XHNpZ21hX1B9DQogICAkJCBXaGVyZSAkcl9mJCBpcyB0aGUgcmlzay1mcmVlIHJhdGUsICRFKHJfUCkkIGlzIHRoZSBwb3J0Zm9saW8ncw0KZXhwZWN0ZWQgcmV0dXJuLCBhbmQgJFxzaWdtYV9QJCBpcyB0aGUgcG9ydGZvbGlvJ3Mgc3RhbmRhcmQgZGV2aWF0aW9uLg0KDQo0LiAgQW4gaW52ZXN0b3IgcG9uZGVycyB2YXJpb3VzIGFsbG9jYXRpb25zIHRvIHRoZSBvcHRpbWFsIHJpc2t5DQogICAgcG9ydGZvbGlvIGFuZCByaXNrLWZyZWUgVC1iaWxscyB0byBjb25zdHJ1Y3QgaGlzIGNvbXBsZXRlIHBvcnRmb2xpby4NCiAgICBIb3cgd291bGQgdGhlIFNoYXJwZSByYXRpbyBvZiB0aGUgY29tcGxldGUgcG9ydGZvbGlvIGJlIGFmZmVjdGVkIGJ5DQogICAgdGhpcyBjaG9pY2U/IChMTyA2LTMpIGtow7RuZyDhuqNuaCBoxrDhu59uZw0KDQo1LiAgDQoNCiQkDQogICAgXHNpZ21hX0FeMiA9IFxiZXRhXjIgXHNpZ21hX01eMiArIFxzaWdtYV97XHRleHR7cmVzaWR1YWx9fV4yDQogJCQNCg0KY2FzZSAxICQkDQogICBcc2lnbWFfQV4yID0gKDEuNjUpXjIgXHRpbWVzICgwLjIpXjIgKyAoMC4zKV4yDQogICAkJCAkJA0KICAgXHNpZ21hX0FeMiA9ICgyLjcyMjUpIFx0aW1lcyAoMC4wNCkgKyAoMC4wOSkgPSAwLjEwODkgKyAwLjA5ID0gMC4xOTg5DQogICAkJCBjYXNlIDIgJCQNCiAgIFxzaWdtYV9BXjIgPSAoMS41KV4yIFx0aW1lcyAoMC4yKV4yICsgKDAuMzMpXjINCiAgICQkICQkDQogICBcc2lnbWFfQV4yID0gKDIuMjUpIFx0aW1lcyAoMC4wNCkgKyAoMC4xMDg5KSA9IDAuMDkgKyAwLjEwODkgPSAwLjE5ODkNCiAgICQkDQoNCmtow7RuZyBraMOhYyBqICQkDQpcc2lnbWFfUF4yID0gd19NXjIgXHNpZ21hX01eMiArIHdfQV4yIFxzaWdtYV9BXjIgKyAyd19Nd19BIFxyaG9fe00sQX0gXHNpZ21hX00gXHNpZ21hX0ENCiQkDQoNCjEwLiBSZXdhcmQtdG8tVm9sYXRpbGl0eSBSYXRpbyAoU2hhcnBlIFJhdGlvKQ0KDQoxMS4gDQoNCjwhLS0gLS0+DQoNCmEuICAqKlBvcnRmb2xpbyBTdGFuZGFyZCBEZXZpYXRpb24qKjogU29sdmUgZm9yICRcc2lnbWFfUCQgdXNpbmcgdGhlIENBTA0KICAgIGZvcm11bGE6ICQkDQogICAgRShyX1ApID0gcl9mICsgXGZyYWN7XHNpZ21hX1B9e1xzaWdtYV9PfSAoRShyX08pIC0gcl9mKQ0KICAgICQkIFdoZXJlICRcc2lnbWFfTyQgYW5kICRFKHJfTykkIGFyZSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGFuZA0KICAgIGV4cGVjdGVkIHJldHVybiBvZiB0aGUgb3B0aW1hbCByaXNreSBwb3J0Zm9saW8uDQoNClN1YnN0aXR1dGU6ICQkDQp3X3IgPSBcZnJhY3sxMlwlIC0gNVwlfXsxNFwlIC0gNVwlfSA9IFxmcmFjezdcJX17OVwlfSA9IDAuNzc3OCBcLCBcdGV4dHtvciB9IDc3Ljc4XCUgXCwgXHRleHR7aW4gdGhlIHJpc2t5IHBvcnRmb2xpb30uDQokJA0KDQpiLiAgKipQcm9wb3J0aW9ucyBvZiBULUJpbGwgYW5kIFJpc2t5IEFzc2V0cyoqOiBDYWxjdWxhdGUgdGhlIHdlaWdodHM6DQogICAgLSAgIFByb3BvcnRpb24gaW4gVC1CaWxscyAoJHdfZiQpLg0KICAgIC0gICBQcm9wb3J0aW9ucyBpbiByaXNreSBhc3NldHMgKCQxIC0gd19mJCkuDQo=