Aim

As one of the Millennium Development Goals and part of the newer 2030 Agenda for Sustainable Development Goals, infant mortality rate (IMR) was and still is a pressing global problem. Approximately 2.6 million babies die before turning 1 month old every year, mostly due to preventable causes (UNICEF, 2018), however, the major drivers are not fully understood. It is known that countries with lower GDP have higher IMR (Baird, 2011), but this does not explain the whole story. This proposal aims to investigate the other factors most associated with the infant mortality rate in the Southeast Asia region that could potentially be identified and utilized to find policies to reducing the IMR. The aspects that will be focused on besides economic elements are nutritional factors such availability of breast milk and access to healthcare such as postnatal health check as these are important context that should be considered alongside economic factors (Acuin, 2011) & (Jayachandran, 1986). These factors are chosen because also these data are widely available through trustworthy sources allowing for accurate and simple preliminary cross-country analysis.

Question and Problem

Which factors beside economic indicators correlate with infant mortality rates, specifically focusing on nutrition and Pregnancy care.

Location and Grain

The analysis is focused on Southeast Asia, specifically the 10 ASEAN member countries: Brunei, Cambodia, Indonesia, Malaysia, Myanmar, Laos, Philippines, Singapore, Thailand, and Vietnam.

Methods

The data for the analysis was retrieved from the World Bank for the GDP and GDP per capita data, while IMR data and other related information was retrieved from UNICEF’s State of the World’s Children 2016 Statistical Tables. Correlation tests using Pearson’s product moment correlation coefficient were done as preliminary tests to see which variables correlate with IMR. Then linear regressions were performed on the variables that has been deemed to have an association.

Results

Infant mortality rates in almost all the ASEAN countries decreased over the 15 year period between 1990 and 2015 partly due to the global initiatives, such as the MDG, to reduce the IMR.

GDP

IMR negatively correlates with GDP and GDP per capita as expected, but surprisingly, these correlations were not significant. These could be due to the differing source of data, World Bank and UNICEF, but may also be due to the small sample size and the significant progress in reducing IMR in the ASEAN countries whilst GDP did not experience the same force. Outliers like Indonesia and Singapore may also have a contribution.

Nutrition

Out of the 12 variables in the nutrition data provided by UNICEF, only 3 were significantly correlating with IMR, % Underweight, % Stunting and % Minimum acceptable diet 6-23 months, but the latter was discarded due to too many missing data (70%). These two variables are defined as the number of under-fives falling below minus 2 standard deviations (moderate and severe) and minus 3 standard deviations (severe) from the median weight-for-age and height-for-age, respectively, of the reference population. Other variables include % Low birthweight, % early initiation of breastfeeding, and % adequately iodized salt consumption.

Maternal Care

Antenatal care, delivery care, and maternal mortality rates are very correlated to IMR. Many children die during or immediately after childbirth. Antenatal care coverage is the percentage of women aged 15 to 49 with a live birth in a given time period that received antenatal care provided by skilled health personnel (doctor, nurse or midwife) during pregnancy.

Adjusted Maternal Mortality Ratio are used to account for under-reporting of national data.

Main Conclusions

GDP and GDP per capita were not significantly correlated with IMR but % underweight and % stunting were, as well as Anternatal care, Delivery care, and Maternal Mortality Ratio. These results indicate that economic indicators that are country-wide may not have as much of an impact on a child’s chances of survival. On the other hand, more individual level issues such as lack of nutritional availability that lead to the prevalence of underweight and stunting and the mother’s health and access to adequate healthcare may play a bigger role in determining the IMR and helping to reduce it.
Based on the results of these preliminary work, more care should be taken to study the individual level effects in each country’s policies in order to reduce the IMR by funding the necessary strategies. Further work should be done on women’s health, access to quality healthcare and education levels as well as more in-depth statistical analysis of the above exploration.

References

UNICEF. (2016) State of the World’s Children 2016 Statistical Tables [Data file]. Retrieved from: https://data.unicef.org/resources/state-worlds-children-2016-statistical-tables/

World Bank (2018) GDP (current LCU) [Data file]. Retrieved from https://data.worldbank.org/indicator/NY.GDP.MKTP.CD

World Bank (2018) GDP per capita (current US$) [Data file]. Retrieved from https://data.worldbank.org/indicator/NY.GDP.PCAP.CD

UNICEF. (2018, March 27). Every child alive: The urgent need to end newborn deaths. Retrieved April 10, 2018, from http://data.unicef.org/resources/every-child-alive-urgent-need-end-newborn-deaths/

Baird, S., Friedman, J., & Schady, N. (2011). AGGREGATE INCOME SHOCKS AND INFANT MORTALITY IN THE DEVELOPING WORLD. The Review of Economics and Statistics,93(3), 847-856. Retrieved from http://www.jstor.org/stable/23016081

Acuin, C. S., Khor, G. L., Liabsuetrakul, T., Achadi, E. L., Htay, T. T., Firestone, R., et al. (2011). Maternal, neonatal, and child health in southeast asia: Towards greater regional collaboration. The Lancet, 377(9764), 516-525. doi: https://doi.org/10.1016/S0140-6736(10)62049-1

Jayachandran, J., & Jarvis, G. K. (1986). Socioeconomic development, medical care, and nutrition as determinants of infant mortality in less‐developed countries. Social Biology, 33(3-4), 301-315. doi: 10.1080/19485565.1986.9988647

LS0tCnRpdGxlOiAiSW52ZXN0aWdhdGluZyBGYWN0b3JzIEltcGFjdGluZyBDaGlsZGhvb2QgTW9ydGFsaXR5IFJhdGVzIGluIHRoZSBBU0VBTiBSZWdpb24iCm91dHB1dDogaHRtbF9ub3RlYm9vawphdXRob3I6ICJWaXJpeWEgS2VvIgpkYXRlOiAwNS8wMy8xOAotLS0KIyMjIEFpbSAgCkFzIG9uZSBvZiB0aGUgTWlsbGVubml1bSBEZXZlbG9wbWVudCBHb2FscyBhbmQgcGFydCBvZiB0aGUgbmV3ZXIgMjAzMCBBZ2VuZGEgZm9yIFN1c3RhaW5hYmxlIERldmVsb3BtZW50IEdvYWxzLCBpbmZhbnQgbW9ydGFsaXR5IHJhdGUgKElNUikgd2FzIGFuZCBzdGlsbCBpcyBhIHByZXNzaW5nIGdsb2JhbCBwcm9ibGVtLiBBcHByb3hpbWF0ZWx5IDIuNiBtaWxsaW9uIGJhYmllcyBkaWUgYmVmb3JlIHR1cm5pbmcgMSBtb250aCBvbGQgZXZlcnkgeWVhciwgbW9zdGx5IGR1ZSB0byBwcmV2ZW50YWJsZSBjYXVzZXMgKFVOSUNFRiwgMjAxOCksIGhvd2V2ZXIsIHRoZSBtYWpvciBkcml2ZXJzIGFyZSBub3QgZnVsbHkgdW5kZXJzdG9vZC4gSXQgaXMga25vd24gdGhhdCBjb3VudHJpZXMgd2l0aCBsb3dlciBHRFAgaGF2ZSBoaWdoZXIgSU1SIChCYWlyZCwgMjAxMSksIGJ1dCB0aGlzIGRvZXMgbm90IGV4cGxhaW4gdGhlIHdob2xlIHN0b3J5LiBUaGlzIHByb3Bvc2FsIGFpbXMgdG8gaW52ZXN0aWdhdGUgdGhlIG90aGVyIGZhY3RvcnMgbW9zdCBhc3NvY2lhdGVkIHdpdGggdGhlIGluZmFudCBtb3J0YWxpdHkgcmF0ZSBpbiB0aGUgU291dGhlYXN0IEFzaWEgcmVnaW9uIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgaWRlbnRpZmllZCBhbmQgdXRpbGl6ZWQgdG8gZmluZCBwb2xpY2llcyB0byByZWR1Y2luZyB0aGUgSU1SLiBUaGUgYXNwZWN0cyB0aGF0IHdpbGwgYmUgZm9jdXNlZCBvbiBiZXNpZGVzIGVjb25vbWljIGVsZW1lbnRzIGFyZSBudXRyaXRpb25hbCBmYWN0b3JzIHN1Y2ggYXZhaWxhYmlsaXR5IG9mIGJyZWFzdCBtaWxrIGFuZCBhY2Nlc3MgdG8gaGVhbHRoY2FyZSBzdWNoIGFzIHBvc3RuYXRhbCBoZWFsdGggY2hlY2sgYXMgdGhlc2UgYXJlIGltcG9ydGFudCBjb250ZXh0IHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYWxvbmdzaWRlIGVjb25vbWljIGZhY3RvcnMgKEFjdWluLCAyMDExKSAmIChKYXlhY2hhbmRyYW4sIDE5ODYpLiBUaGVzZSBmYWN0b3JzIGFyZSBjaG9zZW4gYmVjYXVzZSBhbHNvIHRoZXNlIGRhdGEgYXJlIHdpZGVseSBhdmFpbGFibGUgdGhyb3VnaCB0cnVzdHdvcnRoeSBzb3VyY2VzIGFsbG93aW5nIGZvciBhY2N1cmF0ZSBhbmQgc2ltcGxlIHByZWxpbWluYXJ5IGNyb3NzLWNvdW50cnkgYW5hbHlzaXMuICAKCiMjIyBRdWVzdGlvbiBhbmQgUHJvYmxlbSAgCldoaWNoIGZhY3RvcnMgYmVzaWRlIGVjb25vbWljIGluZGljYXRvcnMgY29ycmVsYXRlIHdpdGggaW5mYW50IG1vcnRhbGl0eSByYXRlcywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIG51dHJpdGlvbiBhbmQgUHJlZ25hbmN5IGNhcmUuCgojIyMgTG9jYXRpb24gYW5kIEdyYWluICAKVGhlIGFuYWx5c2lzIGlzIGZvY3VzZWQgb24gU291dGhlYXN0IEFzaWEsIHNwZWNpZmljYWxseSB0aGUgMTAgQVNFQU4gbWVtYmVyIGNvdW50cmllczogQnJ1bmVpLCBDYW1ib2RpYSwgSW5kb25lc2lhLCBNYWxheXNpYSwgTXlhbm1hciwgTGFvcywgUGhpbGlwcGluZXMsIFNpbmdhcG9yZSwgVGhhaWxhbmQsIGFuZCBWaWV0bmFtLiAgCgojIyMgTWV0aG9kcyAgClRoZSBkYXRhIGZvciB0aGUgYW5hbHlzaXMgd2FzIHJldHJpZXZlZCBmcm9tIHRoZSBXb3JsZCBCYW5rIGZvciB0aGUgR0RQIGFuZCBHRFAgcGVyIGNhcGl0YSBkYXRhLCB3aGlsZSBJTVIgZGF0YSBhbmQgb3RoZXIgcmVsYXRlZCBpbmZvcm1hdGlvbiB3YXMgcmV0cmlldmVkIGZyb20gVU5JQ0VGJ3MgU3RhdGUgb2YgdGhlIFdvcmxkJ3MgQ2hpbGRyZW4gMjAxNiBTdGF0aXN0aWNhbCBUYWJsZXMuIENvcnJlbGF0aW9uIHRlc3RzIHVzaW5nIFBlYXJzb24ncyBwcm9kdWN0IG1vbWVudCBjb3JyZWxhdGlvbiBjb2VmZmljaWVudCB3ZXJlIGRvbmUgYXMgcHJlbGltaW5hcnkgdGVzdHMgdG8gc2VlIHdoaWNoIHZhcmlhYmxlcyBjb3JyZWxhdGUgd2l0aCBJTVIuIFRoZW4gbGluZWFyIHJlZ3Jlc3Npb25zIHdlcmUgcGVyZm9ybWVkIG9uIHRoZSB2YXJpYWJsZXMgdGhhdCBoYXMgYmVlbiBkZWVtZWQgdG8gaGF2ZSBhbiBhc3NvY2lhdGlvbi4gIAoKYGBge3IgTG9hZCBuZWNlc3NhcnkgcGFja2FnZXMsIGluY2x1ZGUgPSBGQUxTRX0KIyAqQ2xlYXIgd29ya3NwYWNlIHByaW9yIHN0YXJ0aW5nKgpybShsaXN0PWxzKCkpCgojTG9hZCBwYWNrYWdlcwpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShyZWFkeGwpCmxpYnJhcnkocmVzaGFwZTIpCmxpYnJhcnkobW9kZWxyKQpvcHRpb25zKG5hLmFjdGlvbiA9IG5hLndhcm4pCmBgYAoKYGBge3IgUmVhZCBpbiBEYXRhIEZyb20gIFdvcmxkIEJhbmsgYW5kIFVOSUNFRlwncyBTT1dDLCBpbmNsdWRlID0gRkFMU0V9CiMgUmVwbGFjZSBwYXRoIG5hbWUgdG8geW91ciBvd24gcmVzcGVjdGl2ZSBmaWxlcwpHRFBfUENBUCA8LSByZWFkX2V4Y2VsKCIuL0ZpbmFsL0FQSV9OWS5HRFAuUENBUC5DRF9EUzJfZW5fZXhjZWxfdjIueGxzIiwgc2hlZXQgPSAxLCBjb2xfbmFtZXMgPSBUUlVFLCB0cmltX3dzID0gVFJVRSwgc2tpcCA9IDMsIG5fbWF4ID0gSW5mKQoKR0RQIDwtIHJlYWRfZXhjZWwoIi4vRmluYWwvQVBJX05ZLkdEUC5NS1RQLkNEX0RTMl9lbl9leGNlbF92Mi54bHMiLCBzaGVldCA9IDEsIGNvbF9uYW1lcyA9IFRSVUUsIHRyaW1fd3MgPSBUUlVFLCBza2lwID0gMywgbl9tYXggPSBJbmYpCgpJbmRpY2F0b3JzIDwtIHJlYWRfZXhjZWwoIi4vRmluYWwvU09XQy0yMDE2X2FsbC10YWJsZXNfMjYxLnhsc3giLCBzaGVldCA9IDEsIHJhbmdlID0gY2VsbF9yb3dzKDc6MjAzKSwgbmEgPSAi4oCTIiwgY29sX25hbWVzID0gRkFMU0UsIHRyaW1fd3MgPSBUUlVFLCBuX21heCA9IEluZikKCk51dHJpdGlvbiA8LSByZWFkX2V4Y2VsKCIuL0ZpbmFsL1NPV0MtMjAxNl9hbGwtdGFibGVzXzI2MS54bHN4Iiwgc2hlZXQgPSAyLCByYW5nZSA9IGNlbGxfcm93cyg5OjIwNSksIG5hID0gIuKAkyIsIGNvbF9uYW1lcyA9IEZBTFNFLCB0cmltX3dzID0gVFJVRSwgbl9tYXggPSBJbmYpCgpXb21lbiA8LSByZWFkX2V4Y2VsKCIuL0ZpbmFsL1NPV0MtMjAxNl9hbGwtdGFibGVzXzI2MS54bHN4Iiwgc2hlZXQgPSA4LCByYW5nZSA9IGNlbGxfcm93cyg4OjIwNCksIG5hID0gIuKAkyIsIGNvbF9uYW1lcyA9IEZBTFNFLCB0cmltX3dzID0gVFJVRSwgbl9tYXggPSBJbmYpCmBgYAoKYGBge3IgV3JhbmdsZSBhbmQgdGlkeSBkYXRhLCBpbmNsdWRlID0gRkFMU0V9CiMgUmVuYW1pbmcgY29sdW1uIG5hbWVzCmNvbG5hbWVzKEluZGljYXRvcnMpIDwtIGMoIkNvdW50cmllcyIsICJVNU1fcmFuayIsICJVNU1SXzE5OTAiLCAiVTVNUl8yMDE1IiwgIlU1TVJfbWFsZSIsICJVNU1SX2ZlbWFsZSIsICJJTVJfMTk5MCIsICJJTVJfMjAxNSIsICJOTVIiLCAiVG90X3BvcCIsICJOdW1fYmlydGgiLCAiTnVtX1U1X2RlYXRocyIsICJHTkkvY2FwaXRhIiwgIkdOSS9jYXBpdGEgTm90ZSIsICJMaWZlX2V4cGVjdGFuY3kiLCAiQWR1bHRfbGl0ZXJhY3lfcmF0ZSIsIkFMUl9Ob3RlIiwgIlByaW1hcnlfU2Nob29sX0Vucm9sbG1lbnRfUmF0aW8iLCAiUmF0aW9fTm90ZSIpIAoKY29sbmFtZXMoTnV0cml0aW9uKSA8LSBjKCJDb3VudHJpZXMiLCAiTG93X0JpcnRod2VpZ2h0IiwgIk5vdGUiLCAiRWFybHlfaW5pdGlhdGlvbl9vZl9icmVhc3RmZWVkaW5nIiwgIk5vdGUxIiwgIkV4Y2x1c2l2ZV9CcmVhc3RmZWVkaW5nXzw2bW8iLCAiTm90ZTIiLCAiSW50cm9fdG9fc29saWRfZm9vZF82dG84X21vIiwgIk5vdGUzIiwgIk1pbl9hY2NlcHRhdGFibGVfZGlldF82dG8yM19tbyIsICJOb3RlNCIsICJCcmVhc3RfZmVlZGluZ19hdF8yIiwgIk5vdGU1IiwgIlVuZGVyd2VpZ2h0IiwgIk5vdGU2IiwgIlN0dW50aW5nIiwgIk5vdGU3IiwgIldhc3RpbmciLCAiTm90ZTgiLCAiT3ZlcndlaWdodCIsICJOb3RlOSIsICJWaXRhbWluX0EiLCAiTm90ZTEwIiwgIklvZGl6ZWRfc2FsdF9jb25zdW1wdGlvbiIsICJOb3RlMTEiKQoKI1JlZmVyIHRvIGV4Y2VsIGZpbGUgZm9yIGZ1bGwgY29sdW1uIG5hbWVzLiBSZW5hbWVkIHRvIEMgdG8gZGUtY2x1dHRlciBjb2RlCmNvbG5hbWVzKFdvbWVuKSA8LSBjKCJDb3VudHJpZXMiLCAiQzEiLCAiQzIiLCAiTjEiLCAiQzMiLCAiTjIiLCAiQzQiLCAiTjMiLCAiQzUiLCAiTjQiLCAiQzYiLCAiTjUiLCAiQzciLCAiTjYiLCAiQzgiLCAiTjciLCAiQzkiLCAiTjgiLCAiQzEwIiwgIk45IiwgIkMxMSIsICJOMTAiLCAiQzEyIiwgIk4xMSIsICJDMTMiLCAiTjEyIiwgIkMxNCIsICJOMTMiLCAiQzE1IiwgIkMxNiIpCmBgYAoKYGBge3IgU3Vic2V0dGluZyBkYXRhIGFuZCBtdXRhdGluZyBkYXRhLCBpbmNsdWRlID0gRkFMU0V9ClNFQSA8LSBjKCJCcnVuZWkgRGFydXNzYWxhbSIsICJDYW1ib2RpYSIsICJJbmRvbmVzaWEiLCAiTGFvIFBlb3BsZSdzIERlbW9jcmF0aWMgUmVwdWJsaWMiLCAiTWFsYXlzaWEiLCAiTXlhbm1hciIsICJQaGlsaXBwaW5lcyIsICJTaW5nYXBvcmUiLCAiVGhhaWxhbmQiLCAiVmlldCBOYW0iKQoKU0VBX0dEUF9QQ0FQIDwtIEdEUF9QQ0FQICU+JSAKICBmaWx0ZXIoYENvdW50cnkgTmFtZWAgJWluJSBjKCJCcnVuZWkgRGFydXNzYWxhbSIsICJDYW1ib2RpYSIsICJJbmRvbmVzaWEiLCAiTGFvIFBEUiIsICJNYWxheXNpYSIsICJNeWFubWFyIiwgIlBoaWxpcHBpbmVzIiwgIlNpbmdhcG9yZSIsICJUaGFpbGFuZCIsICJWaWV0bmFtIikpICU+JSAKICBzZWxlY3QoYENvdW50cnkgTmFtZWAsIGAxOTkwYCwgYDIwMTVgKQoKU0VBX0dEUCA8LSBHRFAgJT4lIAogIGZpbHRlcihgQ291bnRyeSBOYW1lYCAlaW4lIGMoIkJydW5laSBEYXJ1c3NhbGFtIiwgIkNhbWJvZGlhIiwgIkluZG9uZXNpYSIsICJMYW8gUERSIiwgIk1hbGF5c2lhIiwgIk15YW5tYXIiLCAiUGhpbGlwcGluZXMiLCAiU2luZ2Fwb3JlIiwgIlRoYWlsYW5kIiwgIlZpZXRuYW0iKSkgJT4lIAogIHNlbGVjdChgQ291bnRyeSBOYW1lYCwgYDE5OTBgLCBgMjAxNWApCgojIDE5OTAgZGF0YSB3YXMgc2VsZWN0ZWQgaW4gY29uY2VydCB3aXRoIHRoZSBTT1dDIGRhdGEgYnV0IG5vdCB1c2VkIGJlY2F1c2UgdGhlcmUgYXJlIGRhdGEgbWlzc2luZyBpbiB0aGUgV29ybGQgQmFuayBkYXRhICAKCiMgUmVuYW1lIHNvbWUgY291bnRyaWVzIHRvIGZpdCBXb3JsZCBCYW5rJ3MgZGF0YSB3aXRoIFNPV0MncyBkYXRhClNFQV9HRFBfUENBUFs0LDFdID0gIkxhbyBQZW9wbGUncyBEZW1vY3JhdGljIFJlcHVibGljIgpTRUFfR0RQX1BDQVBbMTAsMV0gPSAiVmlldCBOYW0iCmNvbG5hbWVzKFNFQV9HRFBfUENBUClbMV0gPC0gIkNvdW50cmllcyIKClNFQV9HRFBbNCwxXSA9ICJMYW8gUGVvcGxlJ3MgRGVtb2NyYXRpYyBSZXB1YmxpYyIKU0VBX0dEUFsxMCwxXSA9ICJWaWV0IE5hbSIKY29sbmFtZXMoU0VBX0dEUClbMV0gPC0gIkNvdW50cmllcyIKClNFQV9JbmRpY2F0b3JzIDwtIEluZGljYXRvcnMgJT4lCiAgZmlsdGVyKENvdW50cmllcyAlaW4lIFNFQSkgJT4lCiAgc2VsZWN0KENvdW50cmllcywgSU1SXzE5OTAsIElNUl8yMDE1KQoKU0VBX0luZGljYXRvcnNfR0RQX1BDQVAgPC0gU0VBX0luZGljYXRvcnMgJT4lIAogIG11dGF0ZSgpICU+JSAKICBsZWZ0X2pvaW4oU0VBX0dEUF9QQ0FQLCBieSA9ICJDb3VudHJpZXMiKQoKU0VBX0luZGljYXRvcnNfR0RQIDwtIFNFQV9JbmRpY2F0b3JzICU+JSAKICBtdXRhdGUoKSAlPiUgCiAgbGVmdF9qb2luKFNFQV9HRFAsIGJ5ID0gIkNvdW50cmllcyIpCgpTRUFfTnV0cml0aW9uIDwtIE51dHJpdGlvbiAlPiUgCiAgZmlsdGVyKENvdW50cmllcyAlaW4lIFNFQSkKClNFQV9Xb21lbiA8LSBXb21lbiAlPiUgCiAgZmlsdGVyKENvdW50cmllcyAlaW4lIFNFQSkKClNFQV9OdXRyaXRpb25fbnVtZXJpYyA8LSBTRUFfTnV0cml0aW9uWyxzYXBwbHkoU0VBX051dHJpdGlvbiwgaXMubnVtZXJpYyldICMgS2VlcCBvbmx5IG51bWVyaWMgY29sdW1ucwpTRUFfV29tZW5fbnVtZXJpYyA8LSBTRUFfV29tZW5bLHNhcHBseShTRUFfV29tZW4sIGlzLm51bWVyaWMpXQpgYGAKCiMjIyBSZXN1bHRzICAKSW5mYW50IG1vcnRhbGl0eSByYXRlcyBpbiBhbG1vc3QgYWxsIHRoZSBBU0VBTiBjb3VudHJpZXMgZGVjcmVhc2VkIG92ZXIgdGhlIDE1IHllYXIgcGVyaW9kIGJldHdlZW4gMTk5MCBhbmQgMjAxNSBwYXJ0bHkgZHVlIHRvIHRoZSBnbG9iYWwgaW5pdGlhdGl2ZXMsIHN1Y2ggYXMgdGhlIE1ERywgdG8gcmVkdWNlIHRoZSBJTVIuIApgYGB7ciBJTVIgY2hhbmdlIHRocm91Z2ggdGltZSwgZWNobyA9IEZBTFNFLCByZXN1bHRzID0gJ2hpZGUnfQpkZiA9IG1lbHQoZGF0YS5mcmFtZShgMjAxNWAgPSBTRUFfSW5kaWNhdG9ycyRJTVJfMjAxNSwgYDE5OTBgID0gU0VBX0luZGljYXRvcnMkSU1SXzE5OTAsIAogICAgICAgICAgQ291bnRyaWVzID0gU0VBKSwKICAgICAgICAgIHZhcmlhYmxlLm5hbWUgPSAiWWVhciIpCgp4YXhpc1RpdGxlcyA8LSBjKCJCcnVuZWkiLCAiQ2FtYm9kaWEiLCAiSW5kb25lc2lhIiwgIkxhb3MiLCAiTWFsYXlzaWEiLCAiTXlhbm1hciIsICJQaGlsaXBwaW5lcyIsICJTaW5nYXBvcmUiLCAiVGhhaWxhbmQiLCAiVmlldG5hbSIpCgpnZ3Bsb3QoZGYsIGFlcyhDb3VudHJpZXMsIHZhbHVlLCBmaWxsID0gWWVhcikpICsgCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZG9kZ2UiLCBzdGF0ID0gImlkZW50aXR5IikgKwogIGNvb3JkX2ZsaXAoKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSB4YXhpc1RpdGxlcykgKwogIHNjYWxlX2ZpbGxfZGlzY3JldGUobGFiZWxzID0gYygiMTk5MCIsICIyMDE1IikpICsKICBsYWJzKHRpdGxlID0gIkluZmFudCBNb3J0YWxpdHkgUmF0ZSBpbiB0aGUgQVNFQU4gY291bnRyaWVzIiwgeSA9ICJJbmZhbnQgZGVhdGhzIHBlciAxLDAwMCBsaXZlIGJpcnRocyIpICsKICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiKSwKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCkpCmBgYAojIyMjIyBHRFAKSU1SIG5lZ2F0aXZlbHkgY29ycmVsYXRlcyB3aXRoIEdEUCBhbmQgR0RQIHBlciBjYXBpdGEgYXMgZXhwZWN0ZWQsIGJ1dCBzdXJwcmlzaW5nbHksIHRoZXNlIGNvcnJlbGF0aW9ucyB3ZXJlIG5vdCBzaWduaWZpY2FudC4gVGhlc2UgY291bGQgYmUgZHVlIHRvIHRoZSBkaWZmZXJpbmcgc291cmNlIG9mIGRhdGEsIFdvcmxkIEJhbmsgYW5kIFVOSUNFRiwgYnV0IG1heSBhbHNvIGJlIGR1ZSB0byB0aGUgc21hbGwgc2FtcGxlIHNpemUgYW5kIHRoZSBzaWduaWZpY2FudCBwcm9ncmVzcyBpbiByZWR1Y2luZyBJTVIgaW4gdGhlIEFTRUFOIGNvdW50cmllcyB3aGlsc3QgR0RQIGRpZCBub3QgZXhwZXJpZW5jZSB0aGUgc2FtZSBmb3JjZS4gT3V0bGllcnMgbGlrZSBJbmRvbmVzaWEgYW5kIFNpbmdhcG9yZSBtYXkgYWxzbyBoYXZlIGEgY29udHJpYnV0aW9uLgoKYGBge3IgQ29ycmVsYXRpb24gdG8gR0RQX1BDQVAsIGVjaG8gPSBGQUxTRSwgcmVzdWx0cyA9ICdoaWRlJ30KY29yLnRlc3QoU0VBX0luZGljYXRvcnNfR0RQX1BDQVAkSU1SXzIwMTUsIFNFQV9JbmRpY2F0b3JzX0dEUF9QQ0FQJGAyMDE1YCkKbW9kR0RQX1BDQVAgPC0gbG0oYDIwMTVgIH4gSU1SXzIwMTUsIFNFQV9JbmRpY2F0b3JzX0dEUF9QQ0FQKQpzdW1tYXJ5KG1vZEdEUF9QQ0FQKQpncmlkIDwtICBTRUFfSW5kaWNhdG9yc19HRFBfUENBUCAlPiUgCiAgZGF0YV9ncmlkKElNUl8yMDE1KSAlPiUgCiAgYWRkX3ByZWRpY3Rpb25zKG1vZEdEUF9QQ0FQKQoKZ2dwbG90KFNFQV9JbmRpY2F0b3JzX0dEUF9QQ0FQLCBhZXMoSU1SXzIwMTUsIGAyMDE1YCkpICsKICBnZW9tX3BvaW50KCkgKwogIGxhYnModGl0bGUgPSAiSW5mYW50IE1vcnRhbGl0eSBSYXRlIGluIHRoZSBBU0VBTiBjb3VudHJpZXMgaW4gUmVsYXRpb24gdG8gR0RQIHBlciBDYXBpdGEiLCBjYXB0aW9uID0gIkdEUDogV09STEQgQkFOSywgSU1SOiBVTklDRUYiLCB4ID0gIkluZmFudCBkZWF0aHMgcGVyIDEsMDAwIGxpdmUgYmlydGhzIiwgeSA9ICJHRFAgcGVyIENhcGl0YSAoVVMkKSIpICsKICBnZW9tX2xpbmUoYWVzKHkgPSBwcmVkKSwgZGF0YSA9IGdyaWQsIGNvbG91ciA9ICJyZWQiLCBzaXplID0gMSkgKwogIGdncmVwZWw6Omdlb21fbGFiZWxfcmVwZWwoYWVzKGxhYmVsID0geGF4aXNUaXRsZXMpKSArCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpCmBgYAoKYGBge3IgQ29ycmVsYXRpb24gdG8gR0RQLCBlY2hvID0gRkFMU0UsIHJlc3VsdHMgPSAnaGlkZSd9CmNvci50ZXN0KFNFQV9JbmRpY2F0b3JzX0dEUCRJTVJfMjAxNSwgU0VBX0luZGljYXRvcnNfR0RQJGAyMDE1YCkKbW9kR0RQIDwtIGxtKGAyMDE1YCB+IElNUl8yMDE1LCBTRUFfSW5kaWNhdG9yc19HRFApCnN1bW1hcnkobW9kR0RQKQpncmlkMCA8LSAgU0VBX0luZGljYXRvcnMgJT4lIAogIGRhdGFfZ3JpZChJTVJfMjAxNSkgJT4lIAogIGFkZF9wcmVkaWN0aW9ucyhtb2RHRFApCgpnZ3Bsb3QoU0VBX0luZGljYXRvcnNfR0RQLCBhZXMoSU1SXzIwMTUsIGAyMDE1YCkpICsKICBnZW9tX3BvaW50KCkgKwogIGxhYnModGl0bGUgPSAiSW5mYW50IE1vcnRhbGl0eSBSYXRlIGluIHRoZSBBU0VBTiBjb3VudHJpZXMgaW4gUmVsYXRpb24gdG8gR0RQIiwgY2FwdGlvbiA9ICJHRFA6IFdPUkxEIEJBTkssIElNUjogVU5JQ0VGIiwgeCA9ICJJbmZhbnQgZGVhdGhzIHBlciAxLDAwMCBsaXZlIGJpcnRocyIsIHkgPSAiR0RQIChVUyQpIikgKwogIGdlb21fbGluZShhZXMoeSA9IHByZWQpLCBkYXRhID0gZ3JpZDAsIGNvbG91ciA9ICJyZWQiLCBzaXplID0gMSkgKwogIGdncmVwZWw6Omdlb21fbGFiZWxfcmVwZWwoYWVzKGxhYmVsID0geGF4aXNUaXRsZXMpKSArCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpCmBgYAoKYGBge3IgRGV0ZXJtaW5pbmcgSGlnaCBDb3JyZWxhdGlvbnMsIGluY2x1ZGUgPSBGQUxTRX0KY29yX3ZhbHVlcyA8LSB2ZWN0b3IoImRvdWJsZSIsIG5jb2woU0VBX051dHJpdGlvbl9udW1lcmljKSkKcF92YWx1ZXMgPC0gdmVjdG9yKCJkb3VibGUiLCBuY29sKFNFQV9OdXRyaXRpb25fbnVtZXJpYykpCmZvciAoaSBpbiBzZXFfYWxvbmcoU0VBX051dHJpdGlvbl9udW1lcmljKSkgeyAKICBjb3IgPC0gY29yLnRlc3QoU0VBX0luZGljYXRvcnMkSU1SXzIwMTUsIFNFQV9OdXRyaXRpb25fbnVtZXJpY1tbaV1dKQogIGNvcl92YWx1ZXNbW2ldXSA8LSBjb3JbWzRdXQogIHBfdmFsdWVzW1tpXV0gPC0gY29yW1szXV0KfQpjb3JfdmFsdWVzClNFQV9JbmRpY2F0b3JzIDwtIGNiaW5kKFNFQV9JbmRpY2F0b3JzLCBTRUFfTnV0cml0aW9uJFVuZGVyd2VpZ2h0KQpjb2xuYW1lcyhTRUFfSW5kaWNhdG9ycylbY29sbmFtZXMoU0VBX0luZGljYXRvcnMpICVpbiUgIlNFQV9OdXRyaXRpb24kVW5kZXJ3ZWlnaHQiXSAgPC0gIlVuZGVyd2VpZ2h0IgoKU0VBX0luZGljYXRvcnMgPC0gY2JpbmQoU0VBX0luZGljYXRvcnMsIFNFQV9OdXRyaXRpb24kU3R1bnRpbmcpCmNvbG5hbWVzKFNFQV9JbmRpY2F0b3JzKVtjb2xuYW1lcyhTRUFfSW5kaWNhdG9ycykgJWluJSAiU0VBX051dHJpdGlvbiRTdHVudGluZyJdICA8LSAiU3R1bnRpbmciCmBgYAojIyMjIyBOdXRyaXRpb24gIApPdXQgb2YgdGhlIDEyIHZhcmlhYmxlcyBpbiB0aGUgbnV0cml0aW9uIGRhdGEgcHJvdmlkZWQgYnkgVU5JQ0VGLCBvbmx5IDMgd2VyZSBzaWduaWZpY2FudGx5IGNvcnJlbGF0aW5nIHdpdGggSU1SLCBgJSBVbmRlcndlaWdodGAsIGAlIFN0dW50aW5nYCBhbmQgYCUgTWluaW11bSBhY2NlcHRhYmxlIGRpZXQgNi0yMyBtb250aHNgLCBidXQgdGhlIGxhdHRlciB3YXMgZGlzY2FyZGVkIGR1ZSB0byB0b28gbWFueSBtaXNzaW5nIGRhdGEgKDcwJSkuIFRoZXNlIHR3byB2YXJpYWJsZXMgYXJlIGRlZmluZWQgYXMgdGhlIG51bWJlciBvZiB1bmRlci1maXZlcyBmYWxsaW5nIGJlbG93IG1pbnVzIDIgc3RhbmRhcmQgZGV2aWF0aW9ucyAobW9kZXJhdGUgYW5kIHNldmVyZSkgYW5kIG1pbnVzIDMgc3RhbmRhcmQgZGV2aWF0aW9ucyAoc2V2ZXJlKSBmcm9tIHRoZSBtZWRpYW4gd2VpZ2h0LWZvci1hZ2UgYW5kIGhlaWdodC1mb3ItYWdlLCByZXNwZWN0aXZlbHksIG9mIHRoZSByZWZlcmVuY2UgcG9wdWxhdGlvbi4gT3RoZXIgdmFyaWFibGVzIGluY2x1ZGUgYCUgTG93IGJpcnRod2VpZ2h0YCwgYCUgZWFybHkgaW5pdGlhdGlvbiBvZiBicmVhc3RmZWVkaW5nYCwgYW5kIGAlIGFkZXF1YXRlbHkgaW9kaXplZCBzYWx0IGNvbnN1bXB0aW9uYC4gIAoKYGBge3IgQ29ycmVsYXRpb24gdG8gVW5kZXJ3ZWlnaHQsIGVjaG8gPSBGQUxTRSwgcmVzdWx0cyA9ICdoaWRlJ30KbW9kMSA8LSBsbShVbmRlcndlaWdodCB+IElNUl8yMDE1LCBTRUFfSW5kaWNhdG9ycykKc3VtbWFyeShtb2QxKQpncmlkMSA8LSAgU0VBX0luZGljYXRvcnMgJT4lIAogIGRhdGFfZ3JpZChJTVJfMjAxNSkgJT4lIAogIGFkZF9wcmVkaWN0aW9ucyhtb2QxKQoKZ2dwbG90KFNFQV9JbmRpY2F0b3JzLCBhZXMoSU1SXzIwMTUsIFVuZGVyd2VpZ2h0KSkgKwogIGdlb21fcG9pbnQoKSArCiAgbGFicyh0aXRsZSA9ICJJbmZhbnQgTW9ydGFsaXR5IFJhdGUgaW4gdGhlIEFTRUFOIGNvdW50cmllcyBcbmluIFJlbGF0aW9uIHRvIFByZXZhbGVuY2Ugb2YgVW5kZXJ3ZWlnaHQgQ2hpbGRyZW4iLCBjYXB0aW9uID0gInAtdmFsdWUgPSAwLjAwMDY7IFVOSUNFRiIsIHggPSAiSW5mYW50IGRlYXRocyBwZXIgMSwwMDAgbGl2ZSBiaXJ0aHMiLCB5ID0gIiUgVW5kZXJ3ZWlnaHQiKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gcHJlZCksIGRhdGEgPSBncmlkMSwgY29sb3VyID0gInJlZCIsIHNpemUgPSAxKSArCiAgZ2dyZXBlbDo6Z2VvbV9sYWJlbF9yZXBlbChhZXMobGFiZWwgPSB4YXhpc1RpdGxlcykpICsKICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiKSkKYGBgCgpgYGB7ciBDb3JyZWxhdGlvbiB0byBTdHVudGluZywgZWNobyA9IEZBTFNFLCByZXN1bHRzID0gJ2hpZGUnfQptb2QyIDwtIGxtKFN0dW50aW5nIH4gSU1SXzIwMTUsIFNFQV9JbmRpY2F0b3JzKQpzdW1tYXJ5KG1vZDIpCmdyaWQyIDwtICBTRUFfSW5kaWNhdG9ycyAlPiUgCiAgZGF0YV9ncmlkKElNUl8yMDE1KSAlPiUgCiAgYWRkX3ByZWRpY3Rpb25zKG1vZDIpCgpnZ3Bsb3QoU0VBX0luZGljYXRvcnMsIGFlcyhJTVJfMjAxNSwgU3R1bnRpbmcpKSArCiAgZ2VvbV9wb2ludCgpICsKICBsYWJzKHRpdGxlID0gIkluZmFudCBNb3J0YWxpdHkgUmF0ZSBpbiB0aGUgQVNFQU4gY291bnRyaWVzIFxuaW4gUmVsYXRpb24gdG8gUHJldmFsZW5jZSBvZiBTdHVudGVkIENoaWxkcmVuIiwgY2FwdGlvbiA9ICJwLXZhbHVlID0gMC4wMDAzMTQ7IFVOSUNFRiIsIHggPSAiSW5mYW50IGRlYXRocyBwZXIgMSwwMDAgbGl2ZSBiaXJ0aHMiLCB5ID0gIiUgU3R1bnRpbmciKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gcHJlZCksIGRhdGEgPSBncmlkMiwgY29sb3VyID0gInJlZCIsIHNpemUgPSAxKSArCiAgZ2dyZXBlbDo6Z2VvbV9sYWJlbF9yZXBlbChhZXMobGFiZWwgPSB4YXhpc1RpdGxlcykpICsKICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiKSkKYGBgCgpgYGB7ciBEZXRlcm1pbmluZyBIaWdoIENvcnJlbGF0aW9ucyBpbiBTRUFfV29tZW4sIGluY2x1ZGUgPSBGQUxTRSwgcmVzdWx0cyA9ICdoaWRlJ30KY29yX3ZhbHVlczEgPC0gdmVjdG9yKCJkb3VibGUiLCBuY29sKFNFQV9Xb21lbl9udW1lcmljKSkKcF92YWx1ZXMxIDwtIHZlY3RvcigiZG91YmxlIiwgbmNvbChTRUFfV29tZW5fbnVtZXJpYykpCmZvciAoaSBpbiBzZXFfYWxvbmcoU0VBX1dvbWVuX251bWVyaWMpKSB7IAogIGNvcjEgPC0gY29yLnRlc3QoU0VBX0luZGljYXRvcnMkSU1SXzIwMTUsIFNFQV9Xb21lbl9udW1lcmljW1tpXV0pCiAgY29yX3ZhbHVlczFbW2ldXSA8LSBjb3IxW1s0XV0KICBwX3ZhbHVlczFbW2ldXSA8LSBjb3IxW1szXV0KfQojMiwgMywgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYKY29yX3ZhbHVlczEKcF92YWx1ZXMxCgpTRUFfV29tZW5fbnVtZXJpY1ssMTddIDwtIFNFQQpjb2xuYW1lcyhTRUFfV29tZW5fbnVtZXJpYylbMTddIDwtICJDb3VudHJpZXMiClNFQV9JbmRpY2F0b3JzIDwtIFNFQV9JbmRpY2F0b3JzICU+JSAKICBtdXRhdGUoKSAlPiUgIAogIGxlZnRfam9pbihTRUFfV29tZW5fbnVtZXJpYywgYnkgPSAiQ291bnRyaWVzIikgCmBgYAojIyMjIyBNYXRlcm5hbCBDYXJlICAKYEFudGVuYXRhbCBjYXJlYCwgYGRlbGl2ZXJ5IGNhcmVgLCBhbmQgYG1hdGVybmFsIG1vcnRhbGl0eSByYXRlc2AgYXJlIHZlcnkgY29ycmVsYXRlZCB0byBJTVIuIE1hbnkgY2hpbGRyZW4gZGllIGR1cmluZyBvciBpbW1lZGlhdGVseSBhZnRlciBjaGlsZGJpcnRoLiBBbnRlbmF0YWwgY2FyZSBjb3ZlcmFnZSBpcyB0aGUgcGVyY2VudGFnZSBvZiB3b21lbiBhZ2VkIDE1IHRvIDQ5IHdpdGggYSBsaXZlIGJpcnRoIGluIGEgZ2l2ZW4gdGltZSBwZXJpb2QgdGhhdCByZWNlaXZlZCBhbnRlbmF0YWwgY2FyZSBwcm92aWRlZCBieSBza2lsbGVkIGhlYWx0aCBwZXJzb25uZWwgKGRvY3RvciwgbnVyc2Ugb3IgbWlkd2lmZSkgZHVyaW5nIHByZWduYW5jeS4KYGBge3IgQ29ycmVsYXRpb24gdG8gJSBBbnRlbmF0YWwgY2FyZSwgZWNobyA9IEZBTFNFLCByZXN1bHRzID0gJ2hpZGUnfQptb2QzIDwtIGxtKEM3IH4gSU1SXzIwMTUsIFNFQV9JbmRpY2F0b3JzKQpzdW1tYXJ5KG1vZDMpCmdyaWQzIDwtICBTRUFfSW5kaWNhdG9ycyAlPiUgCiAgZGF0YV9ncmlkKElNUl8yMDE1KSAlPiUgCiAgYWRkX3ByZWRpY3Rpb25zKG1vZDMpCgpnZ3Bsb3QoU0VBX0luZGljYXRvcnMsIGFlcyhJTVJfMjAxNSwgQzcpKSArCiAgZ2VvbV9wb2ludCgpICsKICBsYWJzKHRpdGxlID0gIkluZmFudCBNb3J0YWxpdHkgUmF0ZSBpbiB0aGUgQVNFQU4gY291bnRyaWVzIFxuaW4gUmVsYXRpb24gdG8gQW50ZW5hdGFsIENhcmUgQ292ZXJhZ2UiLCBzdWJ0aXRsZSA9ICJBdCBsZWFzdCAxIHZpc2l0IiwgY2FwdGlvbiA9ICJwLXZhbHVlID0gMC4wMDE2NzsgVU5JQ0VGIiwgeCA9ICJJbmZhbnQgZGVhdGhzIHBlciAxLDAwMCBsaXZlIGJpcnRocyIsIHkgPSAiJSBBbnRlbmF0YWwgQ2FyZSIpICsKICBnZW9tX2xpbmUoYWVzKHkgPSBwcmVkKSwgZGF0YSA9IGdyaWQzLCBjb2xvdXIgPSAicmVkIiwgc2l6ZSA9IDEpICsKICBnZ3JlcGVsOjpnZW9tX2xhYmVsX3JlcGVsKGFlcyhsYWJlbCA9IHhheGlzVGl0bGVzKSkgKwogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIGZhY2UgPSAiYm9sZCIpLAogICAgICAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiKSApCmBgYApgYGB7ciBDb3JyZWxhdGlvbiB0byBBbnRlbmF0YWwgQ2FyZSwgZWNobyA9IEZBTFNFLCByZXN1bHRzID0gJ2hpZGUnfQptb2Q0IDwtIGxtKEM4IH4gSU1SXzIwMTUsIFNFQV9JbmRpY2F0b3JzKQpzdW1tYXJ5KG1vZDQpCmdyaWQ0IDwtICBTRUFfSW5kaWNhdG9ycyAlPiUgCiAgZGF0YV9ncmlkKElNUl8yMDE1KSAlPiUgCiAgYWRkX3ByZWRpY3Rpb25zKG1vZDQpCgpnZ3Bsb3QoU0VBX0luZGljYXRvcnMsIGFlcyhJTVJfMjAxNSwgQzgpKSArCiAgZ2VvbV9wb2ludCgpICsKICBsYWJzKHRpdGxlID0gIkluZmFudCBNb3J0YWxpdHkgUmF0ZSBpbiB0aGUgQVNFQU4gY291bnRyaWVzIFxuaW4gUmVsYXRpb24gdG8gQW50ZW5hdGFsIENhcmUgQ292ZXJhZ2UiLCBzdWJ0aXRsZSA9ICJBdCBsZWFzdCA0IHZpc2l0cyIsIGNhcHRpb24gPSAicC12YWx1ZSA9IDAuMDAzMzE7IFVOSUNFRiIsIHggPSAiSW5mYW50IGRlYXRocyBwZXIgMSwwMDAgbGl2ZSBiaXJ0aHMiLCB5ID0gIiUgQW50ZW5hdGFsIENhcmUiKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gcHJlZCksIGRhdGEgPSBncmlkNCwgY29sb3VyID0gInJlZCIsIHNpemUgPSAxKSArCiAgZ2dyZXBlbDo6Z2VvbV9sYWJlbF9yZXBlbChhZXMobGFiZWwgPSB4YXhpc1RpdGxlcykpICsKICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiKSwKICAgICAgICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikgKQpgYGAKYGBge3IgQ29ycmVsYXRpb24gdG8gRGVsaXZlcnkgY2FyZSwgZWNobyA9IEZBTFNFLCByZXN1bHRzID0gJ2hpZGUnfQptb2Q1IDwtIGxtKEM5IH4gSU1SXzIwMTUsIFNFQV9JbmRpY2F0b3JzKQpzdW1tYXJ5KG1vZDUpCmdyaWQ1IDwtICBTRUFfSW5kaWNhdG9ycyAlPiUgCiAgZGF0YV9ncmlkKElNUl8yMDE1KSAlPiUgCiAgYWRkX3ByZWRpY3Rpb25zKG1vZDUpCgpnZ3Bsb3QoU0VBX0luZGljYXRvcnMsIGFlcyhJTVJfMjAxNSwgQzkpKSArCiAgZ2VvbV9wb2ludCgpICsKICBsYWJzKHRpdGxlID0gIkluZmFudCBNb3J0YWxpdHkgUmF0ZSBpbiB0aGUgQVNFQU4gY291bnRyaWVzIFxuaW4gUmVsYXRpb24gdG8gRGVsaXZlcnkgQ2FyZSIsIHN1YnRpdGxlID0gIkJ5IFNraWxsZWQgQXR0ZW5kYW50IGF0IEJpcnRoIiwgY2FwdGlvbiA9ICJwLXZhbHVlID0gMC4wMDAyMzk7IFVOSUNFRiIsIHggPSAiSW5mYW50IGRlYXRocyBwZXIgMSwwMDAgbGl2ZSBiaXJ0aHMiLCB5ID0gIiUgU2tpbGxlZCBBdHRlbmRhbnQgYXQgQmlydGgiKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gcHJlZCksIGRhdGEgPSBncmlkNSwgY29sb3VyID0gInJlZCIsIHNpemUgPSAxKSArCiAgZ2dyZXBlbDo6Z2VvbV9sYWJlbF9yZXBlbChhZXMobGFiZWwgPSB4YXhpc1RpdGxlcykpICsKICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiKSwKICAgICAgICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikgKQpgYGAKCmBgYHtyIENvcnJlbGF0aW9uIHRvIERlbGl2ZXJ5IGNhcmUyLCBlY2hvID0gRkFMU0UsIHJlc3VsdHMgPSAnaGlkZSd9Cm1vZDYgPC0gbG0oQzEwIH4gSU1SXzIwMTUsIFNFQV9JbmRpY2F0b3JzKQpzdW1tYXJ5KG1vZDYpCmdyaWQ2IDwtICBTRUFfSW5kaWNhdG9ycyAlPiUgCiAgZGF0YV9ncmlkKElNUl8yMDE1KSAlPiUgCiAgYWRkX3ByZWRpY3Rpb25zKG1vZDYpCgpnZ3Bsb3QoU0VBX0luZGljYXRvcnMsIGFlcyhJTVJfMjAxNSwgQzEwKSkgKwogIGdlb21fcG9pbnQoKSArCiAgbGFicyh0aXRsZSA9ICJJbmZhbnQgTW9ydGFsaXR5IFJhdGUgaW4gdGhlIEFTRUFOIGNvdW50cmllcyBcbmluIFJlbGF0aW9uIHRvIERlbGl2ZXJ5IENhcmUiLCBzdWJ0aXRsZSA9ICJCeSBQZXJjZW50IEluc3RpdHV0aW9uYWwgRGVsaXZlcnkiLCBjYXB0aW9uID0gInAtdmFsdWUgPSAwLjAwMDA4OyBVTklDRUYiLCB4ID0gIkluZmFudCBkZWF0aHMgcGVyIDEsMDAwIGxpdmUgYmlydGhzIiwgeSA9ICIlIEluc3RpdHV0aW9uYWwgRGVsaXZlcnkiKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gcHJlZCksIGRhdGEgPSBncmlkNiwgY29sb3VyID0gInJlZCIsIHNpemUgPSAxKSArCiAgZ2dyZXBlbDo6Z2VvbV9sYWJlbF9yZXBlbChhZXMobGFiZWwgPSB4YXhpc1RpdGxlcykpICsKICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiKSwKICAgICAgICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpCmBgYApBZGp1c3RlZCBNYXRlcm5hbCBNb3J0YWxpdHkgUmF0aW8gYXJlIHVzZWQgdG8gYWNjb3VudCBmb3IgdW5kZXItcmVwb3J0aW5nIG9mIG5hdGlvbmFsIGRhdGEuICAKYGBge3IgQ29ycmVsYXRpb24gdG8gRGVsaXZlcnkgY2FyZTMsIGVjaG8gPSBGQUxTRSwgcmVzdWx0cyA9ICdoaWRlJ30KbW9kNyA8LSBsbShDMTUgfiBJTVJfMjAxNSwgU0VBX0luZGljYXRvcnMpCnN1bW1hcnkobW9kNykKZ3JpZDcgPC0gIFNFQV9JbmRpY2F0b3JzICU+JSAKICBkYXRhX2dyaWQoSU1SXzIwMTUpICU+JSAKICBhZGRfcHJlZGljdGlvbnMobW9kNykKCmdncGxvdChTRUFfSW5kaWNhdG9ycywgYWVzKElNUl8yMDE1LCBDMTUpKSArCiAgZ2VvbV9wb2ludCgpICsKICBsYWJzKHRpdGxlID0gIkluZmFudCBNb3J0YWxpdHkgUmF0ZSBpbiB0aGUgQVNFQU4gY291bnRyaWVzIFxuaW4gUmVsYXRpb24gdG8gTWF0ZXJuYWwgTW9ydGFsaXR5IFJhdGlvIiwgY2FwdGlvbiA9ICJwLXZhbHVlID0gMC4wMDAwODsgVU5JQ0VGIiwgeCA9ICJJbmZhbnQgZGVhdGhzIHBlciAxLDAwMCBsaXZlIGJpcnRocyIsIHkgPSAiTWF0ZXJuYWwgTW9ydGFsaXR5IFJhdGlvIikgKwogIGdlb21fbGluZShhZXMoeSA9IHByZWQpLCBkYXRhID0gZ3JpZDcsIGNvbG91ciA9ICJyZWQiLCBzaXplID0gMSkgKwogIGdncmVwZWw6Omdlb21fbGFiZWxfcmVwZWwoYWVzKGxhYmVsID0geGF4aXNUaXRsZXMpKSArCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpCmBgYAojIyMgTWFpbiBDb25jbHVzaW9ucyAgCkdEUCBhbmQgR0RQIHBlciBjYXBpdGEgd2VyZSBub3Qgc2lnbmlmaWNhbnRseSBjb3JyZWxhdGVkIHdpdGggSU1SIGJ1dCBgJSB1bmRlcndlaWdodGAgYW5kIGAlIHN0dW50aW5nYCB3ZXJlLCBhcyB3ZWxsIGFzIGBBbnRlcm5hdGFsIGNhcmVgLCBgRGVsaXZlcnkgY2FyZWAsIGFuZCBgTWF0ZXJuYWwgTW9ydGFsaXR5IFJhdGlvYC4gVGhlc2UgcmVzdWx0cyBpbmRpY2F0ZSB0aGF0IGVjb25vbWljIGluZGljYXRvcnMgdGhhdCBhcmUgY291bnRyeS13aWRlIG1heSBub3QgaGF2ZSBhcyBtdWNoIG9mIGFuIGltcGFjdCBvbiBhIGNoaWxkJ3MgY2hhbmNlcyBvZiBzdXJ2aXZhbC4gT24gdGhlIG90aGVyIGhhbmQsIG1vcmUgaW5kaXZpZHVhbCBsZXZlbCBpc3N1ZXMgc3VjaCBhcyBsYWNrIG9mIG51dHJpdGlvbmFsIGF2YWlsYWJpbGl0eSB0aGF0IGxlYWQgdG8gdGhlIHByZXZhbGVuY2Ugb2YgdW5kZXJ3ZWlnaHQgYW5kIHN0dW50aW5nIGFuZCB0aGUgbW90aGVyJ3MgaGVhbHRoIGFuZCBhY2Nlc3MgdG8gYWRlcXVhdGUgaGVhbHRoY2FyZSBtYXkgcGxheSBhIGJpZ2dlciByb2xlIGluIGRldGVybWluaW5nIHRoZSBJTVIgYW5kIGhlbHBpbmcgdG8gcmVkdWNlIGl0LiAgCkJhc2VkIG9uIHRoZSByZXN1bHRzIG9mIHRoZXNlIHByZWxpbWluYXJ5IHdvcmssIG1vcmUgY2FyZSBzaG91bGQgYmUgdGFrZW4gdG8gc3R1ZHkgdGhlIGluZGl2aWR1YWwgbGV2ZWwgZWZmZWN0cyBpbiBlYWNoIGNvdW50cnkncyBwb2xpY2llcyBpbiBvcmRlciB0byByZWR1Y2UgdGhlIElNUiBieSBmdW5kaW5nIHRoZSBuZWNlc3Nhcnkgc3RyYXRlZ2llcy4gRnVydGhlciB3b3JrIHNob3VsZCBiZSBkb25lIG9uIHdvbWVuJ3MgaGVhbHRoLCBhY2Nlc3MgdG8gcXVhbGl0eSBoZWFsdGhjYXJlIGFuZCBlZHVjYXRpb24gbGV2ZWxzIGFzIHdlbGwgYXMgbW9yZSBpbi1kZXB0aCBzdGF0aXN0aWNhbCBhbmFseXNpcyBvZiB0aGUgYWJvdmUgZXhwbG9yYXRpb24uICAKCiMjIyBSZWZlcmVuY2VzICAKVU5JQ0VGLiAoMjAxNikgU3RhdGUgb2YgdGhlIFdvcmxkJ3MgQ2hpbGRyZW4gMjAxNiBTdGF0aXN0aWNhbCBUYWJsZXMgW0RhdGEgZmlsZV0uIFJldHJpZXZlZCBmcm9tOiBodHRwczovL2RhdGEudW5pY2VmLm9yZy9yZXNvdXJjZXMvc3RhdGUtd29ybGRzLWNoaWxkcmVuLTIwMTYtc3RhdGlzdGljYWwtdGFibGVzLyAgCgpXb3JsZCBCYW5rICgyMDE4KSBHRFAgKGN1cnJlbnQgTENVKSBbRGF0YSBmaWxlXS4gUmV0cmlldmVkIGZyb20gaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL05ZLkdEUC5NS1RQLkNEIAoKV29ybGQgQmFuayAoMjAxOCkgR0RQIHBlciBjYXBpdGEgKGN1cnJlbnQgVVMkKSBbRGF0YSBmaWxlXS4gUmV0cmlldmVkIGZyb20gaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL05ZLkdEUC5QQ0FQLkNEICAKClVOSUNFRi4gKDIwMTgsIE1hcmNoIDI3KS4gRXZlcnkgY2hpbGQgYWxpdmU6IFRoZSB1cmdlbnQgbmVlZCB0byBlbmQgbmV3Ym9ybiBkZWF0aHMuIFJldHJpZXZlZCBBcHJpbCAxMCwgMjAxOCwgZnJvbSBodHRwOi8vZGF0YS51bmljZWYub3JnL3Jlc291cmNlcy9ldmVyeS1jaGlsZC1hbGl2ZS11cmdlbnQtbmVlZC1lbmQtbmV3Ym9ybi1kZWF0aHMvICAKCkJhaXJkLCBTLiwgRnJpZWRtYW4sIEouLCAmIFNjaGFkeSwgTi4gKDIwMTEpLiBBR0dSRUdBVEUgSU5DT01FIFNIT0NLUyBBTkQgSU5GQU5UIE1PUlRBTElUWSBJTiBUSEUgREVWRUxPUElORyBXT1JMRC4gVGhlIFJldmlldyBvZiBFY29ub21pY3MgYW5kIFN0YXRpc3RpY3MsOTMoMyksIDg0Ny04NTYuIFJldHJpZXZlZCBmcm9tIGh0dHA6Ly93d3cuanN0b3Iub3JnL3N0YWJsZS8yMzAxNjA4MSAgCgpBY3VpbiwgQy4gUy4sIEtob3IsIEcuIEwuLCBMaWFic3VldHJha3VsLCBULiwgQWNoYWRpLCBFLiBMLiwgSHRheSwgVC4gVC4sIEZpcmVzdG9uZSwgUi4sIGV0IGFsLiAoMjAxMSkuIE1hdGVybmFsLCBuZW9uYXRhbCwgYW5kIGNoaWxkIGhlYWx0aCBpbiBzb3V0aGVhc3QgYXNpYTogVG93YXJkcyBncmVhdGVyIHJlZ2lvbmFsIGNvbGxhYm9yYXRpb24uIFRoZSBMYW5jZXQsIDM3Nyg5NzY0KSwgNTE2LTUyNS4gZG9pOiBodHRwczovL2RvaS5vcmcvMTAuMTAxNi9TMDE0MC02NzM2KDEwKTYyMDQ5LTEgIAoKSmF5YWNoYW5kcmFuLCBKLiwgJiBKYXJ2aXMsIEcuIEsuICgxOTg2KS4gU29jaW9lY29ub21pYyBkZXZlbG9wbWVudCwgbWVkaWNhbCBjYXJlLCBhbmQgbnV0cml0aW9uIGFzIGRldGVybWluYW50cyBvZiBpbmZhbnQgbW9ydGFsaXR5IGluIGxlc3PigJBkZXZlbG9wZWQgY291bnRyaWVzLiBTb2NpYWwgQmlvbG9neSwgMzMoMy00KSwgMzAxLTMxNS4gZG9pOiAxMC4xMDgwLzE5NDg1NTY1LjE5ODYuOTk4ODY0NwoKCgo=