ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3h4ZC1mci4xIGIvcnVudGltZS9kb2MveHhkLWZyLjEKaW5kZXggZTE3MGRmNS4uN2FhM2ZmMSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MveHhkLWZyLjEKKysrIGIvcnVudGltZS9kb2MveHhkLWZyLjEKQEAgLTcwLDcgKzcwLDcgQEAKIENldHRlIG9wdGlvbiDpY3JpdCBsZXMgb2N0ZXRzIGNvbW1lIHVuZSBz6XF1ZW5jZSBkZSAiMSIgZXQgZGUgIjAiIGF1IGxpZXUKIGQndW5lIGNvbnZlcnNpb24gZW4gaGV4YWTpY2ltYWwgdHJhZGl0aW9ubmVsLiBDaGFxdWUgbGlnbmUgZXN0IHBy6WPpZOllIHBhciB1bgogbnVt6XJvIGRlIGxpZ25lIGVuIGhleGFk6WNpbWFsIGV0IHN1aXZpZSBkZSBsYSByZXBy6XNlbnRhdGlvbiBBU0NJSSAob3UKLUVCQ0RJQykgY29ycmVzcG9uZGFudGUuIExlcyBvcHRpb25zIFwtciwgXC1wLCBcLWkgbmUgZm9uY3Rpb25uZW50IHBhcyBkYW5zIGNlCitFQkNESUMpIGNvcnJlc3BvbmRhbnRlLiBMZXMgb3B0aW9ucyBcLXAsIFwtaSBuZSBmb25jdGlvbm5lbnQgcGFzIGRhbnMgY2UKIG1vZGUuCiAuVFAKIC5JUiAiXC1jIGNvbHMgIiB8ICIgXC1jb2xzIGNvbHMiCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy94eGQtZnIuVVRGLTguMSBiL3J1bnRpbWUvZG9jL3h4ZC1mci5VVEYtOC4xCmluZGV4IDQ3NzczYTEuLjljNGM0YzkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3h4ZC1mci5VVEYtOC4xCisrKyBiL3J1bnRpbWUvZG9jL3h4ZC1mci5VVEYtOC4xCkBAIC03MCw3ICs3MCw3IEBACiBDZXR0ZSBvcHRpb24gw6ljcml0IGxlcyBvY3RldHMgY29tbWUgdW5lIHPDqXF1ZW5jZSBkZSAiMSIgZXQgZGUgIjAiIGF1IGxpZXUKIGQndW5lIGNvbnZlcnNpb24gZW4gaGV4YWTDqWNpbWFsIHRyYWRpdGlvbm5lbC4gQ2hhcXVlIGxpZ25lIGVzdCBwcsOpY8OpZMOpZSBwYXIgdW4KIG51bcOpcm8gZGUgbGlnbmUgZW4gaGV4YWTDqWNpbWFsIGV0IHN1aXZpZSBkZSBsYSByZXByw6lzZW50YXRpb24gQVNDSUkgKG91Ci1FQkNESUMpIGNvcnJlc3BvbmRhbnRlLiBMZXMgb3B0aW9ucyBcLXIsIFwtcCwgXC1pIG5lIGZvbmN0aW9ubmVudCBwYXMgZGFucyBjZQorRUJDRElDKSBjb3JyZXNwb25kYW50ZS4gTGVzIG9wdGlvbnMgXC1wLCBcLWkgbmUgZm9uY3Rpb25uZW50IHBhcyBkYW5zIGNlCiBtb2RlLgogLlRQCiAuSVIgIlwtYyBjb2xzICIgfCAiIFwtY29scyBjb2xzIgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MveHhkLWl0LjEgYi9ydW50aW1lL2RvYy94eGQtaXQuMQppbmRleCA5MDM0ZmRkLi5lZDRmZDgxIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy94eGQtaXQuMQorKysgYi9ydW50aW1lL2RvYy94eGQtaXQuMQpAQCAtNjMsNyArNjMsNyBAQAogUmljaGllc3RhIGRpIHVuJ2ltbWFnaW5lIGJpbmFyaWEgKGNpZnJlIGJpbmFyaWUpLCBpbnZlY2UgY2hlIGVzYWRlY2ltYWxlLgogUXVlc3Qnb3B6aW9uZSBzY3JpdmUgdW4gYnl0ZSBjb21lIG90dG8gY2lmcmUgIjEiIGUgIjAiIGludmVjZSBkaSB1c2FyZSBpCiBudW1lcmkgZXNhZGVjaW1hbGkuIE9nbmkgcmlnYSDoIHByZWNlZHV0YSBkYSB1biBpbmRpcml6em8gaW4gZXNhZGVjaW1hbGUgZQotc2VndWl0YSBkYSB1bmEgZGVjb2RpZmljYSBBU0NJSSAobyBFQkNESUMpLiBMZSBvcHppb25pIFwtciwgXC1wLCBcLWksCitzZWd1aXRhIGRhIHVuYSBkZWNvZGlmaWNhIEFTQ0lJIChvIEVCQ0RJQykuIExlIG9wemlvbmkgXC1wLCBcLWksCiBzcGVjaWZpY2FiaWxpIGRhbGxhIHJpZ2EgY29tYW5kbywgbm9uIGZ1bnppb25hbm8gaW4gcXVlc3RvIG1vZG8uCiAuVFAKIC5JUiAiXC1jIGNvbG9ubmUgIiB8ICIgXC1jb2xzIGNvbG9ubmUiCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy94eGQtaXQuVVRGLTguMSBiL3J1bnRpbWUvZG9jL3h4ZC1pdC5VVEYtOC4xCmluZGV4IGI5ODJhMmMuLjg2NTNkZTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3h4ZC1pdC5VVEYtOC4xCisrKyBiL3J1bnRpbWUvZG9jL3h4ZC1pdC5VVEYtOC4xCkBAIC02Myw3ICs2Myw3IEBACiBSaWNoaWVzdGEgZGkgdW4naW1tYWdpbmUgYmluYXJpYSAoY2lmcmUgYmluYXJpZSksIGludmVjZSBjaGUgZXNhZGVjaW1hbGUuCiBRdWVzdCdvcHppb25lIHNjcml2ZSB1biBieXRlIGNvbWUgb3R0byBjaWZyZSAiMSIgZSAiMCIgaW52ZWNlIGRpIHVzYXJlIGkKIG51bWVyaSBlc2FkZWNpbWFsaS4gT2duaSByaWdhIMOoIHByZWNlZHV0YSBkYSB1biBpbmRpcml6em8gaW4gZXNhZGVjaW1hbGUgZQotc2VndWl0YSBkYSB1bmEgZGVjb2RpZmljYSBBU0NJSSAobyBFQkNESUMpLiBMZSBvcHppb25pIFwtciwgXC1wLCBcLWksCitzZWd1aXRhIGRhIHVuYSBkZWNvZGlmaWNhIEFTQ0lJIChvIEVCQ0RJQykuIExlIG9wemlvbmkgXC1wLCBcLWksCiBzcGVjaWZpY2FiaWxpIGRhbGxhIHJpZ2EgY29tYW5kbywgbm9uIGZ1bnppb25hbm8gaW4gcXVlc3RvIG1vZG8uCiAuVFAKIC5JUiAiXC1jIGNvbG9ubmUgIiB8ICIgXC1jb2xzIGNvbG9ubmUiCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy94eGQtamEuVVRGLTguMSBiL3J1bnRpbWUvZG9jL3h4ZC1qYS5VVEYtOC4xCmluZGV4IGEwMzY3MWMuLjFlMDZiZGUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3h4ZC1qYS5VVEYtOC4xCisrKyBiL3J1bnRpbWUvZG9jL3h4ZC1qYS5VVEYtOC4xCkBAIC01OCw3ICs1OCw3IEBACiAxIOOCquOCr+ODhuODg+ODiOOBjCAiMSIg44GoICIwIiDjga4gOCDmloflrZfjgaflh7rlipvjgZXjgozjgb7jgZnjgIIKIOWQhOihjOOBruihjOmgreOBq+OBryAxNiDpgLLmlbDjga7ooYznlarlj7fjgYzooajnpLrjgZXjgozjgb7jgZnjgIIKIOihjOacq+OBq+OBryBhc2NpaSAo44G+44Gf44GvIGViY2RpYykg44Gn6KGo44GX44Gf5aC05ZCI44Gu5paH5a2X44GM6KGo56S644GV44KM44G+44GZ44CCCi3jgZPjga7jg6Ljg7zjg4njgafjga8gXC1y44CBXC1w44CBXC1pIOOBr+apn+iDveOBl+OBvuOBm+OCk+OAggor44GT44Gu44Oi44O844OJ44Gn44GvIFwtcOOAgVwtaSDjga/mqZ/og73jgZfjgb7jgZvjgpPjgIIKIC5UUAogLklSIFwtZQog44Oq44OI44Or44Ko44Oz44OH44Kj44Ki44Oz44GuIDE2IOmAsuODgOODs+ODl+OBq+WIh+OCiuabv+OBiOOCi+OAggpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MveHhkLXBsLjEgYi9ydW50aW1lL2RvYy94eGQtcGwuMQppbmRleCBkOWZhOWJlLi44NzdiN2U0IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy94eGQtcGwuMQorKysgYi9ydW50aW1lL2RvYy94eGQtcGwuMQpAQCAtNjYsNyArNjYsNyBAQAogT3BjamEgdGEgemFwaXN1amUgb2t0ZXR5IGpha28gb3NpZW0gY3lmciAxIGx1YiAwIHphbWlhc3Qgbm9ybWFsbmVnbwogenJ6dXR1IGhla3Nvd2Vnby4gS2G/ZGEgbGluaWEgamVzdCBwb3ByemVkem9uYSBwcnplegogaGVrc2FkZWN5bWFsbnkgbnVtZXIgbGluaWkgYSBwbyBuaW0gamVnbyByZXByZXplbnRhY2qxIHcgYXNjaWkgKGx1YgotZWJjZGljKS4gT3BjamUgbGluaWkgcG9sZWNl8SBcLXIsIFwtcCwgXC1pIG5pZSBkemlhs2FqsSB3IHR5bQorZWJjZGljKS4gT3BjamUgbGluaWkgcG9sZWNl8SBcLXAsIFwtaSBuaWUgZHppYbNharEgdyB0eW0KIHRyeWJpZS4KIC5UUAogLklSICJcLWMgY29scyAiIHwgIiBcLWNvbHMgY29scyIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3h4ZC1wbC5VVEYtOC4xIGIvcnVudGltZS9kb2MveHhkLXBsLlVURi04LjEKaW5kZXggZTYzY2U2NC4uYTI4ZGQ2MyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MveHhkLXBsLlVURi04LjEKKysrIGIvcnVudGltZS9kb2MveHhkLXBsLlVURi04LjEKQEAgLTY2LDcgKzY2LDcgQEAKIE9wY2phIHRhIHphcGlzdWplIG9rdGV0eSBqYWtvIG9zaWVtIGN5ZnIgMSBsdWIgMCB6YW1pYXN0IG5vcm1hbG5lZ28KIHpyenV0dSBoZWtzb3dlZ28uIEthxbxkYSBsaW5pYSBqZXN0IHBvcHJ6ZWR6b25hIHByemV6CiBoZWtzYWRlY3ltYWxueSBudW1lciBsaW5paSBhIHBvIG5pbSBqZWdvIHJlcHJlemVudGFjasSFIHcgYXNjaWkgKGx1YgotZWJjZGljKS4gT3BjamUgbGluaWkgcG9sZWNlxYQgXC1yLCBcLXAsIFwtaSBuaWUgZHppYcWCYWrEhSB3IHR5bQorZWJjZGljKS4gT3BjamUgbGluaWkgcG9sZWNlxYQgXC1wLCBcLWkgbmllIGR6aWHFgmFqxIUgdyB0eW0KIHRyeWJpZS4KIC5UUAogLklSICJcLWMgY29scyAiIHwgIiBcLWNvbHMgY29scyIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3h4ZC1ydS4xIGIvcnVudGltZS9kb2MveHhkLXJ1LjEKaW5kZXggMTExOTQ2YS4uOGYzMjQzMiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MveHhkLXJ1LjEKKysrIGIvcnVudGltZS9kb2MveHhkLXJ1LjEKQEAgLTcwLDcgKzcwLDcgQEAKIPDSySDJ09DPzNjaz9fBzsnJINzUz8fPIMvMwN7BINfNxdPUzyDPwtnezs/HzyDbxdPUzsHEw8HUxdLJ3s7Px88g0NLFxNPUwdfMxc7J0Qogz8vUxdTP1yDJ09DPzNja1cDU09EgzsHCz9LZIMnaINfP09jNySDTyc3Xz8zP1yAiMSIgySAiMCIuIOvB1sTB0SDT1NLPy8EKINDSxcTXwdLRxdTT0SDOz83F0s/NINPU0s/LySDXINvF09TOwcTDwdTF0snezs/NINfJxMUsIMEg2sHXxdLbwcXU09Eg08nN18/M2M7ZzSAKLdDSxcTT1MHXzMXOycXNICjXINfJxMUgYXNjaWkgyczJIGViY2RpYykuIOvMwN7JIFwtciwgXC1wLCBcLWkg1yDc1M/NINLF1snNxQor0NLFxNPUwdfMxc7Jxc0gKNcg18nExSBhc2NpaSDJzMkgZWJjZGljKS4g68zA3skgXC1wLCBcLWkg1yDc1M/NINLF1snNxQogzsUg0sHCz9TBwNQuCiAuVFAKIC5JUiAiXC1jIMvPzCAiIHwgIiBcLWNvbHMgy8/MIgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MveHhkLXJ1LlVURi04LjEgYi9ydW50aW1lL2RvYy94eGQtcnUuVVRGLTguMQppbmRleCA2NDc4NDViLi40YTQxZDY2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy94eGQtcnUuVVRGLTguMQorKysgYi9ydW50aW1lL2RvYy94eGQtcnUuVVRGLTguMQpAQCAtNzAsNyArNzAsNyBAQAog0J/RgNC4INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC4INGN0YLQvtCz0L4g0LrQu9GO0YfQsCDQstC80LXRgdGC0L4g0L7QsdGL0YfQvdC+0LPQviDRiNC10YHRgtC90LDQtNGG0LDRgtC10YDQuNGH0L3QvtCz0L4g0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y8KINC+0LrRgtC10YLQvtCyINC40YHQv9C+0LvRjNC30YPRjtGC0YHRjyDQvdCw0LHQvtGA0Ysg0LjQtyDQstC+0YHRjNC80Lgg0YHQuNC80LLQvtC70L7QsiAiMSIg0LggIjAiLiDQmtCw0LbQtNCw0Y8g0YHRgtGA0L7QutCwCiDQv9GA0LXQtNCy0LDRgNGP0LXRgtGB0Y8g0L3QvtC80LXRgNC+0Lwg0YHRgtGA0L7QutC4INCyINGI0LXRgdGC0L3QsNC00YbQsNGC0LXRgNC40YfQvdC+0Lwg0LLQuNC00LUsINCwINC30LDQstC10YDRiNCw0LXRgtGB0Y8g0YHQuNC80LLQvtC70YzQvdGL0LwgCi3Qv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC8ICjQsiDQstC40LTQtSBhc2NpaSDQuNC70LggZWJjZGljKS4g0JrQu9GO0YfQuCBcLXIsIFwtcCwgXC1pINCyINGN0YLQvtC8INGA0LXQttC40LzQtQor0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQvCAo0LIg0LLQuNC00LUgYXNjaWkg0LjQu9C4IGViY2RpYykuINCa0LvRjtGH0LggXC1wLCBcLWkg0LIg0Y3RgtC+0Lwg0YDQtdC20LjQvNC1CiDQvdC1INGA0LDQsdC+0YLQsNGO0YIuCiAuVFAKIC5JUiAiXC1jINC60L7QuyAiIHwgIiBcLWNvbHMg0LrQvtC7IgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MveHhkLjEgYi9ydW50aW1lL2RvYy94eGQuMQppbmRleCA3Y2Q2YWU4Li5mNWE3YzY1IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy94eGQuMQorKysgYi9ydW50aW1lL2RvYy94eGQuMQpAQCAtNjQsNyArNjQsNyBAQAogVGhpcyBvcHRpb24gd3JpdGVzIG9jdGV0cyBhcyBlaWdodCBkaWdpdHMgIjEicyBhbmQgIjAicyBpbnN0ZWFkIG9mIGEgbm9ybWFsCiBoZXhhZGVjaW1hbCBkdW1wLiBFYWNoIGxpbmUgaXMgcHJlY2VkZWQgYnkgYSBsaW5lIG51bWJlciBpbiBoZXhhZGVjaW1hbCBhbmQKIGZvbGxvd2VkIGJ5IGFuIEFTQ0lJIChvciBFQkNESUMpIHJlcHJlc2VudGF0aW9uLiBUaGUgY29tbWFuZCBsaW5lIHN3aXRjaGVzCi1cLXIsIFwtcCwgXC1pIGRvIG5vdCB3b3JrIHdpdGggdGhpcyBtb2RlLgorXC1wLCBcLWkgZG8gbm90IHdvcmsgd2l0aCB0aGlzIG1vZGUuCiAuVFAKIC5JUiAiXC1jIGNvbHMgIiB8ICIgXC1jb2xzIGNvbHMiCiBGb3JtYXQKQEAgLTEzMyw3ICsxMzMsOSBAQAogLkkgXC1yIFwtcAogdG8gcmVhZCBwbGFpbiBoZXhhZGVjaW1hbCBkdW1wcyB3aXRob3V0IGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIGFuZCB3aXRob3V0IGEKIHBhcnRpY3VsYXIgY29sdW1uIGxheW91dC4gQWRkaXRpb25hbCB3aGl0ZXNwYWNlIGFuZCBsaW5lIGJyZWFrcyBhcmUgYWxsb3dlZAotYW55d2hlcmUuCithbnl3aGVyZS4gVXNlIHRoZSBjb21iaW5hdGlvbgorLkkgXC1yIFwtYgordG8gcmVhZCBhIGJpdHMgZHVtcCBpbnN0ZWFkIG9mIGEgaGV4IGR1bXAuCiAuVFAKIC5JUiBcLVIgIiAiIHdoZW4KIEluIG91dHB1dCB0aGUgaGV4LXZhbHVlIGFuZCB0aGUgdmFsdWUgYXJlIGJvdGggY29sb3JlZCB3aXRoIHRoZSBzYW1lIGNvbG9yCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy94eGQubWFuIGIvcnVudGltZS9kb2MveHhkLm1hbgppbmRleCAwNmNjNzg0Li41NmI2OWI0IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy94eGQubWFuCisrKyBiL3J1bnRpbWUvZG9jL3h4ZC5tYW4KQEAgLTM3LDcgKzM3LDcgQEAKICAgICAgICAgICAgICAgb3B0aW9uICB3cml0ZXMgb2N0ZXRzIGFzIGVpZ2h0IGRpZ2l0cyAiMSJzIGFuZCAiMCJzIGluc3RlYWQgb2YgYQogICAgICAgICAgICAgICBub3JtYWwgaGV4YWRlY2ltYWwgZHVtcC4gRWFjaCBsaW5lIGlzIHByZWNlZGVkIGJ5IGEgbGluZSAgbnVtYmVyCiAgICAgICAgICAgICAgIGluICBoZXhhZGVjaW1hbCBhbmQgZm9sbG93ZWQgYnkgYW4gQVNDSUkgKG9yIEVCQ0RJQykgcmVwcmVzZW50YeKAkAotICAgICAgICAgICAgICB0aW9uLiBUaGUgY29tbWFuZCBsaW5lIHN3aXRjaGVzIC1yLCAtcCwgLWkgZG8gbm90IHdvcmsgd2l0aCB0aGlzCisgICAgICAgICAgICAgIHRpb24uIFRoZSBjb21tYW5kIGxpbmUgc3dpdGNoZXMgLXAsIC1pIGRvICBub3QgIHdvcmsgIHdpdGggIHRoaXMKICAgICAgICAgICAgICAgbW9kZS4KIAogICAgICAgIC1jIGNvbHMgfCAtY29scyBjb2xzCkBAIC05Nyw3ICs5Nyw4IEBACiAgICAgICAgICAgICAgIHRydW5jYXRpbmcgaXQuIFVzZSB0aGUgY29tYmluYXRpb24gLXIgLXAgdG8gcmVhZCBwbGFpbiBoZXhhZGVjaeKAkAogICAgICAgICAgICAgICBtYWwgZHVtcHMgd2l0aG91dCBsaW5lIG51bWJlciBpbmZvcm1hdGlvbiBhbmQgd2l0aG91dCBhIHBhcnRpY3XigJAKICAgICAgICAgICAgICAgbGFyIGNvbHVtbiBsYXlvdXQuIEFkZGl0aW9uYWwgd2hpdGVzcGFjZSBhbmQgbGluZSBicmVha3MgYXJlIGFs4oCQCi0gICAgICAgICAgICAgIGxvd2VkIGFueXdoZXJlLgorICAgICAgICAgICAgICBsb3dlZCBhbnl3aGVyZS4gIFVzZSB0aGUgY29tYmluYXRpb24gLXIgLWIgdG8gcmVhZCBhICBiaXRzICBkdW1wCisgICAgICAgICAgICAgIGluc3RlYWQgb2YgYSBoZXggZHVtcC4KIAogICAgICAgIC1SIHdoZW4KICAgICAgICAgICAgICAgSW4gIG91dHB1dCB0aGUgaGV4LXZhbHVlIGFuZCB0aGUgdmFsdWUgYXJlIGJvdGggY29sb3JlZCB3aXRoIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF94eGQudmltIGIvc3JjL3Rlc3RkaXIvdGVzdF94eGQudmltCmluZGV4IDNjMTI4OTkuLjUzZTFhOTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3RfeHhkLnZpbQorKysgYi9zcmMvdGVzdGRpci90ZXN0X3h4ZC52aW0KQEAgLTMxMiw2ICszMTIsMzEgQEAKICAgY2FsbCBkZWxldGUoJ1h4eGRvdXQnKQogZW5kZnVuYwogCitmdW5jIFRlc3RfeHhkX3BhdGNoX3dpdGhfYml0ZHVtcCgpCisgIGxldCBjbWQxID0gJ3NpbGVudCAhJyAuLiBzOnh4ZF9jbWQgLi4gJyAtciAtYiBYeHhkaW4gWHh4ZGZpbGUnCisgIGxldCBjbWQyID0gJ3NpbGVudCAhJyAuLiBzOnh4ZF9jbWQgLi4gJyAtZzEgWHh4ZGZpbGUgPiBYeHhkb3V0JworCisgIGNhbGwgd3JpdGVmaWxlKFsiMjogMDEwMDAwMDEgMDEwMDAwMDEiLCAiODogMDEwMDAwMTAgMDEwMDAwMTAiXSwgJ1h4eGRpbicsICdEJykKKyAgY2FsbCB3cml0ZWZpbGUoWyc6Ojo6Ojo6OiddLCAnWHh4ZGZpbGUnLCAnRCcpCisgIGV4ZSBjbWQxCisgIGV4ZSBjbWQyCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnMDAwMDAwMDA6IDNhIDNhIDQxIDQxIDNhIDNhIDNhIDNhIDQyIDQyICAgICAgICAgICAgICAgICAgICA6OkFBOjo6OkJCJ10sIHJlYWRmaWxlKCdYeHhkb3V0JykpCisKKyAgY2FsbCB3cml0ZWZpbGUoWyIxOiAwMTAwMDAxMSAwMTAwMDAxMSIsICI0OiAwMTAwMDEwMCAwMTAwMDEwMCJdLCAnWHh4ZGluJywgJ0QnKQorICBjYWxsIHdyaXRlZmlsZShbJzo6Ojo6Ojo6J10sICdYeHhkZmlsZScsICdEJykKKyAgZXhlIGNtZDEKKyAgZXhlIGNtZDIKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWycwMDAwMDAwMDogM2EgNDMgNDMgM2EgNDQgNDQgM2EgM2EgMGEgICAgICAgICAgICAgICAgICAgICAgIDpDQzpERDo6LiddLCByZWFkZmlsZSgnWHh4ZG91dCcpKQorCisgIGNhbGwgd3JpdGVmaWxlKFsiMDI6IDAxMDAwMTAxIDAxMDAwMTAxIiwgIjA4OiAwMTAwMDExMCAwMTAwMDExMCJdLCAnWHh4ZGluJywgJ0QnKQorICBjYWxsIHdyaXRlZmlsZShbJzo6Ojo6Ojo6J10sICdYeHhkZmlsZScsICdEJykKKyAgZXhlIGNtZDEKKyAgZXhlIGNtZDIKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWycwMDAwMDAwMDogM2EgM2EgNDUgNDUgM2EgM2EgM2EgM2EgNDYgNDYgICAgICAgICAgICAgICAgICAgIDo6RUU6Ojo6RkYnXSwgcmVhZGZpbGUoJ1h4eGRvdXQnKSkKKworICBjYWxsIGRlbGV0ZSgnWHh4ZG91dCcpCitlbmRmdW5jCisKICIgVmFyaW91cyB3YXlzIHdpdGggd3JvbmcgYXJndW1lbnRzIHRoYXQgdHJpZ2dlciB0aGUgdXNhZ2Ugb3V0cHV0LgogZnVuYyBUZXN0X3h4ZF91c2FnZSgpCiAgIGZvciBhcmcgaW4gWyctaCcsICctYycsICctZycsICctbycsICctcycsICctbCcsICctWCcsICctUicsICdvbmUgdHdvIHRocmVlJ10KQEAgLTMzNiw2ICszNjEsMTggQEAKICAgYndpcGUhCiBlbmRmdW5jCiAKK2Z1bmMgVGVzdF94eGRfcmV2ZXJ0X2JpdF9kdW1wKCkKKyAgbmV3CisgIGV4ZSAnciEgcHJpbnRmICIwMDAwMDAwMDogMDEwMDAwMDEgMDExMDAwMTAgMDEwMDAwMTEgMDExMDAxMDAgMDEwMDAxMDEgMDExMDAxMTAgMDEwMDAxMTEgMDExMDEwMDAgIEFiQ2RFZkdoIiB8ICcgLiBzOnh4ZF9jbWQgLiAnIC1yIC1iMSAtYyA4JworICBjYWxsIGFzc2VydF9tYXRjaCgnQWJDZEVmR2gnLCBqb2luKGdldGxpbmUoMSwgMykpKQorICBid2lwZSEKKworICBuZXcKKyAgZXhlICdyISBwcmludGYgIjAwMDAwMDAwOiAwMTAwMDAwMSAwMTEwMDAxMCAwMTAwMDAxMSAwMTEwMDEwMCAwMTAwMDEwMSAwMTEwMDExMCAgQWJDZEVmXG4wMDAwMDAwNjogMDEwMDAxMTEgMDExMDEwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdoXG4iIHwgJyAuIHM6eHhkX2NtZCAuICcgLXIgLWIxJworICBjYWxsIGFzc2VydF9tYXRjaCgnQWJDZEVmR2gnLCBqb2luKGdldGxpbmUoMSwgMykpKQorICBid2lwZSEKK2VuZGZ1bmMKKwogZnVuYyBUZXN0X3h4ZF92ZXJzaW9uKCkKICAgbmV3CiAgIGV4ZSAnciEgJyAuIHM6eHhkX2NtZCAuICcgLXYnCmRpZmYgLS1naXQgYS9zcmMvdmVyc2lvbi5jIGIvc3JjL3ZlcnNpb24uYwppbmRleCBhOTQ2Mjc5Li41MzM1MzUyIDEwMDY0NAotLS0gYS9zcmMvdmVyc2lvbi5jCisrKyBiL3NyYy92ZXJzaW9uLmMKQEAgLTcwNSw2ICs3MDUsOCBAQAogc3RhdGljIGludCBpbmNsdWRlZF9wYXRjaGVzW10gPQogeyAgIC8qIEFkZCBuZXcgcGF0Y2ggbnVtYmVyIGJlbG93IHRoaXMgbGluZSAqLwogLyoqLworICAgIDE5OTgsCisvKiovCiAgICAgMTk5NywKIC8qKi8KICAgICAxOTk2LApkaWZmIC0tZ2l0IGEvc3JjL3h4ZC94eGQuYyBiL3NyYy94eGQveHhkLmMKaW5kZXggMWJhMjI0Ny4uNTZmYjMyMSAxMDA2NDQKLS0tIGEvc3JjL3h4ZC94eGQuYworKysgYi9zcmMveHhkL3h4ZC5jCkBAIC01Nyw2ICs1Nyw3IEBACiAgKiAxNC4wMS4yMDIyICBEaXNhYmxlIGV4dHJhIG5ld2xpbmVzIHdpdGggLWMwIC1wIGJ5IEVyaWsgQXVlcnN3YWxkLgogICogMjAuMDYuMjAyMiAgUGVybWl0IHNldHRpbmcgdGhlIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgLWkgYnkgRGF2aWQgR293CiAgKiAzMS4wOC4yMDIzICAtUiBuZXZlci9hdXRvL2Fsd2F5cyBwcmludHMgY29sb3JlZCBvdXRwdXQKKyAqIDA2LjEwLjIwMjMgIGVuYWJsZSAtciAtYiB0byByZXZlcnNlIGJpdCBkdW1wcwogICoKICAqIChjKSAxOTkwLTE5OTggYnkgSnVlcmdlbiBXZWlnZXJ0IChqbndlaWdlckBnbWFpbC5jb20pCiAgKgpAQCAtMTM1LDcgKzEzNiw3IEBACiAjIGVuZGlmCiAjZW5kaWYKIAotY2hhciB2ZXJzaW9uW10gPSAieHhkIDIwMjMtMDktMDQgYnkgSnVlcmdlbiBXZWlnZXJ0IGV0IGFsLiI7CitjaGFyIHZlcnNpb25bXSA9ICJ4eGQgMjAyMy0xMC0wNiBieSBKdWVyZ2VuIFdlaWdlcnQgZXQgYWwuIjsKICNpZmRlZiBXSU4zMgogY2hhciBvc3ZlcltdID0gIiAoV2luMzIpIjsKICNlbHNlCkBAIC0yMzQsNyArMjM1LDcgQEAKICAgZnByaW50ZihzdGRlcnIsICIgICAgb3JcbiAgICAgICAlcyAtciBbLXMgWy1db2Zmc2V0XSBbLWMgY29sc10gWy1wc10gW2luZmlsZSBbb3V0ZmlsZV1dXG4iLCBwbmFtZSk7CiAgIGZwcmludGYoc3RkZXJyLCAiT3B0aW9uczpcbiIpOwogICBmcHJpbnRmKHN0ZGVyciwgIiAgICAtYSAgICAgICAgICB0b2dnbGUgYXV0b3NraXA6IEEgc2luZ2xlICcqJyByZXBsYWNlcyBudWwtbGluZXMuIERlZmF1bHQgb2ZmLlxuIik7Ci0gIGZwcmludGYoc3RkZXJyLCAiICAgIC1iICAgICAgICAgIGJpbmFyeSBkaWdpdCBkdW1wIChpbmNvbXBhdGlibGUgd2l0aCAtcHMsLWksLXIpLiBEZWZhdWx0IGhleC5cbiIpOworICBmcHJpbnRmKHN0ZGVyciwgIiAgICAtYiAgICAgICAgICBiaW5hcnkgZGlnaXQgZHVtcCAoaW5jb21wYXRpYmxlIHdpdGggLXBzLC1pKS4gRGVmYXVsdCBoZXguXG4iKTsKICAgZnByaW50ZihzdGRlcnIsICIgICAgLUMgICAgICAgICAgY2FwaXRhbGl6ZSB2YXJpYWJsZSBuYW1lcyBpbiBDIGluY2x1ZGUgZmlsZSBzdHlsZSAoLWkpLlxuIik7CiAgIGZwcmludGYoc3RkZXJyLCAiICAgIC1jIGNvbHMgICAgIGZvcm1hdCA8Y29scz4gb2N0ZXRzIHBlciBsaW5lLiBEZWZhdWx0IDE2ICgtaTogMTIsIC1wczogMzApLlxuIik7CiAgIGZwcmludGYoc3RkZXJyLCAiICAgIC1FICAgICAgICAgIHNob3cgY2hhcmFjdGVycyBpbiBFQkNESUMuIERlZmF1bHQgQVNDSUkuXG4iKTsKQEAgLTMyNSw2ICszMjYsMTcgQEAKIH0KIAogLyoKKyAqIElmICJjIiBpcyBhIGJpbiBkaWdpdCwgcmV0dXJuIHRoZSB2YWx1ZS4KKyAqIE90aGVyd2lzZSByZXR1cm4gLTEuCisgKi8KKyAgc3RhdGljIGludAorcGFyc2VfYmluX2RpZ2l0KGludCBjKQoreworICByZXR1cm4gKGMgPj0gJzAnICYmIGMgPD0gJzEnKSA/IGMgLSAnMCcKKyAgICAgICAgOiAtMTsKK30KKworLyoKICAqIElnbm9yZSB0ZXh0IG9uICJmcGkiIHVudGlsIGVuZC1vZi1saW5lIG9yIGVuZC1vZi1maWxlLgogICogUmV0dXJuIHRoZSAnXG4nIG9yIEVPRiBjaGFyYWN0ZXIuCiAgKiBXaGVuIGFuIGVycm9yIGlzIGVuY291bnRlcmVkIGV4aXQgd2l0aCBhbiBlcnJvciBtZXNzYWdlLgpAQCAtMzUyLDcgKzM2NCw3IEBACiAgIGludCBoZXh0eXBlLAogICBsb25nIGJhc2Vfb2ZmKQogewotICBpbnQgYywgaWduX2dhcmIgPSAxLCBuMSA9IC0xLCBuMiA9IDAsIG4zLCBwID0gY29sczsKKyAgaW50IGMsIGlnbl9nYXJiID0gMSwgbjEgPSAtMSwgbjIgPSAwLCBuMywgcCA9IGNvbHMsIGJ0LCBiID0gMCwgYmNudCA9IDA7CiAgIGxvbmcgaGF2ZV9vZmYgPSAwLCB3YW50X29mZiA9IDA7CiAKICAgcmV3aW5kKGZwaSk7CkBAIC0zNjgsMjUgKzM4MCw2MCBAQAogICAgICAgaWYgKGhleHR5cGUgPT0gSEVYX1BPU1RTQ1JJUFQgJiYgKGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCcpKQogCWNvbnRpbnVlOwogCi0gICAgICBuMyA9IG4yOwotICAgICAgbjIgPSBuMTsKKyAgICAgIGlmIChoZXh0eXBlID09IEhFWF9OT1JNQUwgfHwgaGV4dHlwZSA9PSBIRVhfUE9TVFNDUklQVCkKKyAgICAgICAgeworCSAgbjMgPSBuMjsKKwkgIG4yID0gbjE7CiAKLSAgICAgIG4xID0gcGFyc2VfaGV4X2RpZ2l0KGMpOwotICAgICAgaWYgKG4xID09IC0xICYmIGlnbl9nYXJiKQotCWNvbnRpbnVlOworCSAgbjEgPSBwYXJzZV9oZXhfZGlnaXQoYyk7CisJICBpZiAobjEgPT0gLTEgJiYgaWduX2dhcmIpCisJICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICBlbHNlIC8qIEhFWF9CSVRTICovCisgICAgICAgIHsKKwkgIG4xID0gcGFyc2VfaGV4X2RpZ2l0KGMpOworCSAgaWYgKG4xID09IC0xICYmIGlnbl9nYXJiKQorCSAgICBjb250aW51ZTsKKworICAgICAgICAgIGJ0ID0gcGFyc2VfYmluX2RpZ2l0KGMpOworICAgICAgICAgIGlmIChidCAhPSAtMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgYiA9ICgoYiA8PCAxKSB8IGJ0KTsKKyAgICAgICAgICAgICAgKytiY250OworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgIGlnbl9nYXJiID0gMDsKIAotICAgICAgaWYgKCFoZXh0eXBlICYmIChwID49IGNvbHMpKQorICAgICAgaWYgKChoZXh0eXBlICE9IEhFWF9QT1NUU0NSSVBUKSAmJiAocCA+PSBjb2xzKSkKIAl7Ci0JICBpZiAobjEgPCAwKQotCSAgICB7Ci0JICAgICAgcCA9IDA7Ci0JICAgICAgY29udGludWU7Ci0JICAgIH0KLQkgIHdhbnRfb2ZmID0gKHdhbnRfb2ZmIDw8IDQpIHwgbjE7Ci0JICBjb250aW51ZTsKLQl9CisgICAgICAgICAgaWYgKGhleHR5cGUgPT0gSEVYX05PUk1BTCkKKyAgICAgICAgICAgIHsKKwkgICAgICBpZiAobjEgPCAwKQorCSAgICAgICAgeworCSAgICAgICAgICBwID0gMDsKKwkgICAgICAgICAgY29udGludWU7CisJICAgICAgICB9CisJICAgICAgd2FudF9vZmYgPSAod2FudF9vZmYgPDwgNCkgfCBuMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIC8qIEhFWF9CSVRTICovCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIG4xID0gcGFyc2VfaGV4X2RpZ2l0KGMpOworICAgICAgICAgICAgICBpZiAobjEgPj0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICB3YW50X29mZiA9ICh3YW50X29mZiA8PCA0KSB8IG4xOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBpZiAoYnQgPCAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHAgPSAwOworICAgICAgICAgICAgICAgICAgYmNudCA9IDA7CisgICAgICAgICAgICAgICAgICBiID0gMDsKKyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAgICAgICBpZiAoYmFzZV9vZmYgKyB3YW50X29mZiAhPSBoYXZlX29mZikKIAl7CkBAIC00MDIsMjMgKzQ0OSw0MCBAQAogCSAgICBwdXRjX29yX2RpZSgwLCBmcG8pOwogCX0KIAotICAgICAgaWYgKG4yID49IDAgJiYgbjEgPj0gMCkKLQl7Ci0JICBwdXRjX29yX2RpZSgobjIgPDwgNCkgfCBuMSwgZnBvKTsKLQkgIGhhdmVfb2ZmKys7Ci0JICB3YW50X29mZisrOwotCSAgbjEgPSAtMTsKLQkgIGlmICghaGV4dHlwZSAmJiAoKytwID49IGNvbHMpKQotCSAgICAvKiBza2lwIHRoZSByZXN0IG9mIHRoZSBsaW5lIGFzIGdhcmJhZ2UgKi8KLQkgICAgYyA9IHNraXBfdG9fZW9sKGZwaSwgYyk7Ci0JfQotICAgICAgZWxzZSBpZiAobjEgPCAwICYmIG4yIDwgMCAmJiBuMyA8IDApCi0gICAgICAgIC8qIGFscmVhZHkgc3R1bWJsZWQgaW50byBnYXJiYWdlLCBza2lwIGxpbmUsIHdhaXQgYW5kIHNlZSAqLwotCWMgPSBza2lwX3RvX2VvbChmcGksIGMpOworICAgICAgaWYgKGhleHR5cGUgPT0gSEVYX05PUk1BTCB8fCBoZXh0eXBlID09IEhFWF9QT1NUU0NSSVBUKQorICAgICAgICB7CisgICAgICAgICAgaWYgKG4yID49IDAgJiYgbjEgPj0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcHV0Y19vcl9kaWUoKG4yIDw8IDQpIHwgbjEsIGZwbyk7CisgICAgICAgICAgICAgIGhhdmVfb2ZmKys7CisgICAgICAgICAgICAgIHdhbnRfb2ZmKys7CisgICAgICAgICAgICAgIG4xID0gLTE7CisgICAgICAgICAgICAgIGlmICghaGV4dHlwZSAmJiAoKytwID49IGNvbHMpKQorICAgICAgICAgICAgICAvKiBza2lwIHRoZSByZXN0IG9mIHRoZSBsaW5lIGFzIGdhcmJhZ2UgKi8KKyAgICAgICAgICAgICAgYyA9IHNraXBfdG9fZW9sKGZwaSwgYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAobjEgPCAwICYmIG4yIDwgMCAmJiBuMyA8IDApCisgICAgICAgICAgICAvKiBhbHJlYWR5IHN0dW1ibGVkIGludG8gZ2FyYmFnZSwgc2tpcCBsaW5lLCB3YWl0IGFuZCBzZWUgKi8KKyAgICAgICAgICAgIGMgPSBza2lwX3RvX2VvbChmcGksIGMpOworICAgICAgICB9CisgICAgICBlbHNlIC8qIEhFWF9CSVRTICovCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoYmNudCA9PSA4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBwdXRjX29yX2RpZShiLCBmcG8pOworICAgICAgICAgICAgICBoYXZlX29mZisrOworICAgICAgICAgICAgICB3YW50X29mZisrOworICAgICAgICAgICAgICBiID0gMDsKKyAgICAgICAgICAgICAgYmNudCA9IDA7CisgICAgICAgICAgICAgIGlmICgrK3AgPj0gY29scykKKyAgICAgICAgICAgICAgICAvKiBza2lwIHRoZSByZXN0IG9mIHRoZSBsaW5lIGFzIGdhcmJhZ2UgKi8KKyAgICAgICAgICAgICAgICAgYyA9IHNraXBfdG9fZW9sKGZwaSwgYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgaWYgKGMgPT0gJ1xuJykKIAl7Ci0JICBpZiAoIWhleHR5cGUpCisJICBpZiAoaGV4dHlwZSA9PSBIRVhfTk9STUFMIHx8IGhleHR5cGUgPT0gSEVYX0JJVFMpCiAJICAgIHdhbnRfb2ZmID0gMDsKIAkgIHAgPSBjb2xzOwogCSAgaWduX2dhcmIgPSAxOwpAQCAtODQ3LDEyICs5MTEsMTcgQEAKICAgICB9CiAKICAgaWYgKHJldmVydCkKLSAgICB7Ci0gICAgICBpZiAoaGV4dHlwZSAmJiAoaGV4dHlwZSAhPSBIRVhfUE9TVFNDUklQVCkpCi0JZXJyb3JfZXhpdCgtMSwgIlNvcnJ5LCBjYW5ub3QgcmV2ZXJ0IHRoaXMgdHlwZSBvZiBoZXhkdW1wIik7Ci0gICAgICByZXR1cm4gaHVudHlwZShmcCwgZnBvLCBjb2xzLCBoZXh0eXBlLAotCQluZWdzZWVrID8gLXNlZWtvZmYgOiBzZWVrb2ZmKTsKLSAgICB9CisgICAgc3dpdGNoIChoZXh0eXBlKQorICAgICAgeworICAgICAgY2FzZSBIRVhfTk9STUFMOgorICAgICAgY2FzZSBIRVhfUE9TVFNDUklQVDoKKyAgICAgIGNhc2UgSEVYX0JJVFM6CisgICAgICAgIHJldHVybiBodW50eXBlKGZwLCBmcG8sIGNvbHMsIGhleHR5cGUsCisgICAgICAgICAgbmVnc2VlayA/IC1zZWVrb2ZmIDogc2Vla29mZik7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgZXJyb3JfZXhpdCgtMSwgIlNvcnJ5LCBjYW5ub3QgcmV2ZXJ0IHRoaXMgdHlwZSBvZiBoZXhkdW1wIik7CisgICAgICB9CiAKICAgaWYgKHNlZWtvZmYgfHwgbmVnc2VlayB8fCAhcmVsc2VlaykKICAgICB7Cg==