IyBjb25maWd1cmUgb3B0aW9ucwolZGVmaW5lIAl3aXRoX3NubXAJMAolZGVmaW5lCQl3aXRoX3Z0eXNoCTEKJWRlZmluZQkJd2l0aF9vc3BmX3RlCTEKJWRlZmluZQkJd2l0aF9uc3NhCTEKJWRlZmluZQkJd2l0aF9vcGFxdWVfbHNhIDEKJWRlZmluZQkJd2l0aF90Y3BfemVicmEJMAolZGVmaW5lCQl3aXRoX3Z0eXNoCTEKJWRlZmluZQkJd2l0aF9wYW0JMQolZGVmaW5lCQl3aXRoX2lwdjYJMQolZGVmaW5lCQl3aXRoX29zcGZjbGllbnQgMQolZGVmaW5lCQl3aXRoX29zcGZhcGkJMQolZGVmaW5lCQl3aXRoX211bHRpcGF0aAk2NAolZGVmaW5lCQlxdWFnZ2FfdXNlcglxdWFnZ2EKJWRlZmluZQkJdnR5X2dyb3VwCXplYnJhdnR5CgojIHBhdGggZGVmaW5lcwolZGVmaW5lCQlfc3lzY29uZmRpcgkvZXRjL3F1YWdnYQolZGVmaW5lCQl6ZWJfc3JjCQkle19idWlsZGRpcn0vJXtuYW1lfS0le3ZlcnNpb259CiVkZWZpbmUJCXplYl9yaF9zcmMJJXt6ZWJfc3JjfS9yZWRoYXQKJWRlZmluZQkJemViX2RvY3MJJXt6ZWJfc3JjfS9kb2MKCiMgZGVmaW5lcyBmb3IgY29uZmlndXJlCiVkZWZpbmUJCV9saWJleGVjZGlyCSV7X2V4ZWNfcHJlZml4fS9saWJleGVjL3F1YWdnYQolZGVmaW5lCQlfaW5jbHVkZWRpcgkle19wcmVmaXh9L2luY2x1ZGUvcXVhZ2dhCiVkZWZpbmUJCV9saWJkaXIJCSV7X2V4ZWNfcHJlZml4fS8le19saWJ9L3F1YWdnYQolZGVmaW5lCQlfbG9jYWxzdGF0ZWRpcgkvdmFyL3J1bi9xdWFnZ2EKClN1bW1hcnk6IFJvdXRpbmcgZGFlbW9uCk5hbWU6CQlxdWFnZ2EKVmVyc2lvbjoJQFZFUlNJT05AClJlbGVhc2U6CUBDT05GREFURUAwMQpMaWNlbnNlOglHUEwKR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9EYWVtb25zClNvdXJjZTA6CWh0dHA6Ly93d3cucXVhZ2dhLm5ldC9zbmFwc2hvdHMvY3ZzLyV7bmFtZX0tJXt2ZXJzaW9ufS50YXIuZ3oKVVJMOgkJaHR0cDovL3d3dy5xdWFnZ2EubmV0CiVpZiAld2l0aF9zbm1wCiNCdWlsZFJlcXVpcmVzOgl1Y2Qtc25tcC1kZXZlbApQcmVyZXE6CQl1Y2Qtc25tcAolZW5kaWYKJWlmICV3aXRoX3Z0eXNoCkJ1aWxkUmVxdWlyZXM6CXJlYWRsaW5lIHJlYWRsaW5lLWRldmVsIG5jdXJzZXMgbmN1cnNlcy1kZXZlbApQcmVyZXE6CQlyZWFkbGluZSBuY3Vyc2VzCiVlbmRpZgpCdWlsZFJlcXVpcmVzOgl0ZXhpbmZvIHRldGV4IGF1dG9jb25mIHBhbS1kZXZlbCBwYXRjaAojIEluaXRzY3JpcHRzID4gNS42MCBpcyByZXF1aXJlZCBmb3IgSVB2NiBzdXBwb3J0ClByZXJlcToJCWluaXRzY3JpcHRzID49IDUuNjAKUHJlcmVxOgkJb3BlbnNzbCBuY3Vyc2VzIHJlYWRsaW5lIHBhbQpQcmVyZXE6CQkvc2Jpbi9pbnN0YWxsLWluZm8KUHJvdmlkZXM6CXJvdXRpbmdkYWVtb24KQnVpbGRSb290Ogkle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0tcm9vdApPYnNvbGV0ZXM6CWJpcmQgZ2F0ZWQgbXJ0IHplYnJhCgolZGVzY3JpcHRpb24KUXVhZ2dhIGlzIGEgZnJlZSBzb2Z0d2FyZSB0aGF0IG1hbmFnZXMgVENQL0lQIGJhc2VkIHJvdXRpbmcKcHJvdG9jb2wuIEl0IHRha2VzIG11bHRpLXNlcnZlciBhbmQgbXVsdGktdGhyZWFkIGFwcHJvYWNoIHRvIHJlc29sdmUKdGhlIGN1cnJlbnQgY29tcGxleGl0eSBvZiB0aGUgSW50ZXJuZXQuCgpRdWFnZ2Egc3VwcG9ydHMgQkdQNCwgQkdQNCssIE9TUEZ2MiwgT1NQRnYzLCBSSVB2MSwgUklQdjIsIGFuZCBSSVBuZy4KClF1YWdnYSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgUm91dGUgU2VydmVyIGFuZCBhIFJvdXRlIFJlZmxlY3Rvci4gSXQgaXMKbm90IGEgdG9vbGtpdCwgaXQgcHJvdmlkZXMgZnVsbCByb3V0aW5nIHBvd2VyIHVuZGVyIGEgbmV3IGFyY2hpdGVjdHVyZS4KUXVhZ2dhIGJ5IGRlc2lnbiBoYXMgYSBwcm9jZXNzIGZvciBlYWNoIHByb3RvY29sLgoKUXVhZ2dhIGlzIGEgZm9yayBvZiBHTlUgWmVicmEuCgolcGFja2FnZSBjb250cmliClN1bW1hcnk6IGNvbnRyaWIgdG9vbHMgZm9yIHF1YWdnYQpHcm91cDogU3lzdGVtIEVudmlyb25tZW50L0RhZW1vbnMKCiVkZXNjcmlwdGlvbiBjb250cmliCkNvbnRyaWJ1dGVkLzNyZCBwYXJ0eSB0b29scyB3aGljaCBtYXkgYmUgb2YgdXNlIHdpdGggcXVhZ2dhLgoKJXBhY2thZ2UgZGV2ZWwKU3VtbWFyeTogSGVhZGVyIGFuZCBvYmplY3QgZmlsZXMgZm9yIHF1YWdnYSBkZXZlbG9wbWVudApHcm91cDogU3lzdGVtIEVudmlyb25tZW50L0RhZW1vbnMKCiVkZXNjcmlwdGlvbiBkZXZlbApUaGUgcXVhZ2dhLWRldmVsIHBhY2thZ2UgY29udGFpbnMgdGhlIGhlYWRlciBhbmQgb2JqZWN0IGZpbGVzIG5lY2Nlc3NhcnkgZm9yCmRldmVsb3BpbmcgT1NQRi1BUEkgYW5kIHF1YWdnYSBhcHBsaWNhdGlvbnMuCgolcHJlcAolc2V0dXAgIC1xCgolYnVpbGQKJWNvbmZpZ3VyZSBcCiVpZiAld2l0aF9pcHY2CgktLWVuYWJsZS1pcHY2IFwKJWVuZGlmCiVpZiAld2l0aF9zbm1wCgktLWVuYWJsZS1zbm1wIFwKJWVuZGlmCiVpZiAld2l0aF9tdWx0aXBhdGgKCS0tZW5hYmxlLW11bHRpcGF0aD0ld2l0aF9tdWx0aXBhdGggXAolZW5kaWYKJWlmICV3aXRoX3RjcF96ZWJyYQoJLS1lbmFibGUtdGNwLXplYnJhIFwKJWVuZGlmCiVpZiAld2l0aF9uc3NhCgktLWVuYWJsZS1uc3NhIFwKJWVuZGlmCiVpZiAld2l0aF9vcGFxdWVfbHNhCgktLWVuYWJsZS1vcGFxdWUtbHNhIFwKJWVuZGlmCiVpZiAld2l0aF9vc3BmX3RlCgktLWVuYWJsZS1vc3BmLXRlIFwKJWVuZGlmCiVpZiAld2l0aF92dHlzaAoJLS1lbmFibGUtdnR5c2ggXAolZW5kaWYKJWlmICV3aXRoX29zcGZjbGllbnQgCgktLWVuYWJsZS1vc3BmY2xpZW50PXllcyBcCiVlbHNlCgktLWVuYWJsZS1vc3BmY2xpZW50PW5vXAolZW5kaWYKJWlmICV3aXRoX29zcGZhcGkKCS0tZW5hYmxlLW9zcGZhcGk9eWVzIFwKJWVsc2UKCS0tZW5hYmxlLW9zcGZhcGk9bm8gXAolZW5kaWYKJWlmICV3aXRoX3BhbQoJLS13aXRoLWxpYnBhbSBcCiVlbmRpZgolaWYgJXF1YWdnYV91c2VyCgktLWVuYWJsZS11c2VyPSVxdWFnZ2FfdXNlciBcCgktLWVuYWJsZS1ncm91cD0lcXVhZ2dhX3VzZXIgXAolZW5kaWYKJWlmICV2dHlfZ3JvdXAKCS0tZW5hYmxlLXZ0eS1ncm91cD0ldnR5X2dyb3VwIFwKJWVuZGlmCi0td2l0aC1jZmxhZ3M9Ii1PMiIgXAotLWVuYWJsZS1uZXRsaW5rCgptYWtlICV7P19zbXBfbWZsYWdzfSBNQUtFSU5GTz0ibWFrZWluZm8gLS1uby1zcGxpdCIKCnB1c2hkIGRvYwp0ZXhpMmh0bWwgcXVhZ2dhLnRleGkKcG9wZAoKJWluc3RhbGwKcm0gLXJmICRSUE1fQlVJTERfUk9PVAoKaW5zdGFsbCAtZCAkUlBNX0JVSUxEX1JPT1QvZXRjL3tyYy5kL2luaXQuZCxzeXNjb25maWcsbG9ncm90YXRlLmQscGFtLmR9IFwKCSRSUE1fQlVJTERfUk9PVC92YXIvbG9nL3F1YWdnYSAkUlBNX0JVSUxEX1JPT1Qle19pbmZvZGlyfQoKbWFrZSBpbnN0YWxsIFwKCURFU1RESVI9JFJQTV9CVUlMRF9ST09UCgojIFJlbW92ZSB0aGlzIGZpbGUsIGFzIGl0IGlzIHVuaW5zdGFsbGVkIGFuZCBjYXVzZXMgZXJyb3JzIHdoZW4gYnVpbGRpbmcgb24gUkg5CnJtIC1yZiAkUlBNX0JVSUxEX1JPT1QvdXNyL3NoYXJlL2luZm8vZGlyCgppbnN0YWxsICV7emViX3JoX3NyY30vemVicmEuaW5pdCAkUlBNX0JVSUxEX1JPT1QvZXRjL3JjLmQvaW5pdC5kL3plYnJhCmluc3RhbGwgJXt6ZWJfcmhfc3JjfS9iZ3BkLmluaXQgJFJQTV9CVUlMRF9ST09UL2V0Yy9yYy5kL2luaXQuZC9iZ3BkCiVpZiAld2l0aF9pcHY2Cmluc3RhbGwgJXt6ZWJfcmhfc3JjfS9vc3BmNmQuaW5pdCAkUlBNX0JVSUxEX1JPT1QvZXRjL3JjLmQvaW5pdC5kL29zcGY2ZAppbnN0YWxsICV7emViX3JoX3NyY30vcmlwbmdkLmluaXQgJFJQTV9CVUlMRF9ST09UL2V0Yy9yYy5kL2luaXQuZC9yaXBuZ2QKJWVuZGlmCmluc3RhbGwgJXt6ZWJfcmhfc3JjfS9vc3BmZC5pbml0ICRSUE1fQlVJTERfUk9PVC9ldGMvcmMuZC9pbml0LmQvb3NwZmQKaW5zdGFsbCAle3plYl9yaF9zcmN9L3JpcGQuaW5pdCAkUlBNX0JVSUxEX1JPT1QvZXRjL3JjLmQvaW5pdC5kL3JpcGQKaW5zdGFsbCAtbTY0NCAle3plYl9yaF9zcmN9L3F1YWdnYS5wYW0gJFJQTV9CVUlMRF9ST09UL2V0Yy9wYW0uZC9xdWFnZ2EKaW5zdGFsbCAtbTY0NCAle3plYl9yaF9zcmN9L3F1YWdnYS5sb2dyb3RhdGUgJFJQTV9CVUlMRF9ST09UL2V0Yy9sb2dyb3RhdGUuZC9xdWFnZ2EKaW5zdGFsbCAtZCAtbTc1MCAgJFJQTV9CVUlMRF9ST09UL3Zhci9ydW4vcXVhZ2dhCgolcHJlCiMgYWRkIHZ0eV9ncm91cAolaWYgJXZ0eV9ncm91cApncm91cGFkZCAtciAldnR5X2dyb3VwIDI+IC9kZXYvbnVsbCB8fCA6CiVlbmRpZgojIGFkZCBxdWFnZ2EgdXNlciBhbmQgZ3JvdXAKJWlmICVxdWFnZ2FfdXNlcgovdXNyL3NiaW4vdXNlcmFkZCAtTSAtciAtcyAvYmluL2ZhbHNlIC1jICJRdWFnZ2Egcm91dGluZyBzdWl0ZSIgXAogLWQgJV9sb2NhbHN0YXRlZGlyICVxdWFnZ2FfdXNlciAyPiAvZGV2L251bGwgfHwgOgolZW5kaWYKCiVwb3N0CiMgemVicmFfc3BlY19hZGRfc2VydmljZSA8c2VydmljZSBuYW1lPiA8cG9ydC9wcm90bz4gPGNvbW1lbnQ+CiMgZS5nLiB6ZWJyYV9zcGVjX2FkZF9zZXJ2aWNlIHplYnJhc3J2IDI2MDAvdGNwICJ6ZWJyYSBzZXJ2aWNlIgoKemVicmFfc3BlY19hZGRfc2VydmljZSAoKQp7CiAgIyBBZGQgcG9ydCAvZXRjL3NlcnZpY2VzIGVudHJ5IGlmIGl0IGlzbid0IGFscmVhZHkgdGhlcmUgCiAgaWYgWyAtZiAvZXRjL3NlcnZpY2VzIF0gJiYgISBncmVwIC1xICJeJDFbXmEtekEtWjAtOV0iIC9ldGMvc2VydmljZXMgOyB0aGVuCiAgICBlY2hvICIkMQkJJDIJCQkjICQzIiAgPj4gL2V0Yy9zZXJ2aWNlcwogIGZpCn0KCnplYnJhX3NwZWNfYWRkX3NlcnZpY2UgemVicmFzcnYgMjYwMC90Y3AgInplYnJhIHNlcnZpY2UiCnplYnJhX3NwZWNfYWRkX3NlcnZpY2UgemVicmEgICAgMjYwMS90Y3AgInplYnJhIHZ0eSIKemVicmFfc3BlY19hZGRfc2VydmljZSByaXBkICAgICAyNjAyL3RjcCAiUklQZCB2dHkiCiVpZiAld2l0aF9pcHY2CnplYnJhX3NwZWNfYWRkX3NlcnZpY2UgcmlwbmdkICAgMjYwMy90Y3AgIlJJUG5nZCB2dHkiCiVlbmRpZgp6ZWJyYV9zcGVjX2FkZF9zZXJ2aWNlIG9zcGZkICAgIDI2MDQvdGNwICJPU1BGZCB2dHkiCnplYnJhX3NwZWNfYWRkX3NlcnZpY2UgYmdwZCAgICAgMjYwNS90Y3AgIkJHUGQgdnR5IgolaWYgJXdpdGhfaXB2Ngp6ZWJyYV9zcGVjX2FkZF9zZXJ2aWNlIG9zcGY2ZCAgIDI2MDYvdGNwICJPU1BGNmQgdnR5IgolZW5kaWYKJWlmICV3aXRoX29zcGZhcGkKemVicmFfc3BlY19hZGRfc2VydmljZSBvc3BmYXBpICAyNjA3L3RjcCAiT1NQRi1BUEkiCiVlbmRpZgoKL3NiaW4vY2hrY29uZmlnIC0tYWRkIHplYnJhIAovc2Jpbi9jaGtjb25maWcgLS1hZGQgcmlwZAolaWYgJXdpdGhfaXB2Ngovc2Jpbi9jaGtjb25maWcgLS1hZGQgcmlwbmdkCi9zYmluL2Noa2NvbmZpZyAtLWFkZCBvc3BmNmQKJWVuZGlmCi9zYmluL2Noa2NvbmZpZyAtLWFkZCBvc3BmZAovc2Jpbi9jaGtjb25maWcgLS1hZGQgYmdwZAoKL3NiaW4vaW5zdGFsbC1pbmZvICV7X2luZm9kaXJ9L3F1YWdnYS5pbmZvLmd6ICV7X2luZm9kaXJ9L2RpcgoKIyBDcmVhdGUgZHVtbXkgZmlsZXMgaWYgdGhleSBkb24ndCBleGlzdCBzbyBiYXNpYyBmdW5jdGlvbnMgY2FuIGJlIHVzZWQuCmlmIFsgISAtZSAle19zeXNjb25mZGlyfS96ZWJyYS5jb25mIF07IHRoZW4KCWVjaG8gImhvc3RuYW1lIGBob3N0bmFtZWAiID4gJXtfc3lzY29uZmRpcn0vemVicmEuY29uZgoJY2htb2QgNjQwICV7X3N5c2NvbmZkaXJ9L3plYnJhLmNvbmYKZmkKaWYgWyAhIC1lICV7X3N5c2NvbmZkaXJ9L3Z0eXNoLmNvbmYgXTsgdGhlbgoJdG91Y2ggJXtfc3lzY29uZmRpcn0vdnR5c2guY29uZgoJY2htb2QgNjQwICV7X3N5c2NvbmZkaXJ9L3Z0eXNoLmNvbmYKZmkKCiVwb3N0dW4KaWYgWyAiJDEiIC1nZSAgIjEiIF07IHRoZW4KCS9ldGMvcmMuZC9pbml0LmQvemVicmEgIGNvbmRyZXN0YXJ0ID4vZGV2L251bGwgMj4mMQoJL2V0Yy9yYy5kL2luaXQuZC9yaXBkICAgY29uZHJlc3RhcnQgPi9kZXYvbnVsbCAyPiYxCiVpZiAld2l0aF9pcHY2CgkvZXRjL3JjLmQvaW5pdC5kL3JpcG5nZCBjb25kcmVzdGFydCA+L2Rldi9udWxsIDI+JjEKJWVuZGlmCgkvZXRjL3JjLmQvaW5pdC5kL29zcGZkICBjb25kcmVzdGFydCA+L2Rldi9udWxsIDI+JjEKJWlmICV3aXRoX2lwdjYKCS9ldGMvcmMuZC9pbml0LmQvb3NwZjZkIGNvbmRyZXN0YXJ0ID4vZGV2L251bGwgMj4mMQolZW5kaWYKCS9ldGMvcmMuZC9pbml0LmQvYmdwZCAgIGNvbmRyZXN0YXJ0ID4vZGV2L251bGwgMj4mMQpmaQovc2Jpbi9pbnN0YWxsLWluZm8gLS1kZWxldGUgJXtfaW5mb2Rpcn0vcXVhZ2dhLmluZm8uZ3ogJXtfaW5mb2Rpcn0vZGlyCgolcHJldW4KaWYgWyAiJDEiID0gIjAiIF07IHRoZW4KICAgICAgICAvc2Jpbi9jaGtjb25maWcgLS1kZWwgemVicmEKCS9zYmluL2Noa2NvbmZpZyAtLWRlbCByaXBkCiVpZiAld2l0aF9pcHY2Cgkvc2Jpbi9jaGtjb25maWcgLS1kZWwgcmlwbmdkCiVlbmRpZgoJL3NiaW4vY2hrY29uZmlnIC0tZGVsIG9zcGZkCiVpZiAld2l0aF9pcHY2Cgkvc2Jpbi9jaGtjb25maWcgLS1kZWwgb3NwZjZkCiVlbmRpZgoJL3NiaW4vY2hrY29uZmlnIC0tZGVsIGJncGQKZmkKCiVjbGVhbgojcm0gLXJmICRSUE1fQlVJTERfUk9PVAoKJWZpbGVzCiVkZWZhdHRyKC0scm9vdCxyb290KQolZG9jICovKi5zYW1wbGUqIEFVVEhPUlMgQ09QWUlORwolZG9jIGRvYy9xdWFnZ2EuaHRtbAolZG9jIGRvYy9tcGxzCiVkb2MgQ2hhbmdlTG9nIElOU1RBTEwgTkVXUyBSRUFETUUgUkVQT1JUSU5HLUJVR1MgU0VSVklDRVMgVE9ETwolaWYgJXF1YWdnYV91c2VyCiVkaXIgJWF0dHIoNzUxLCVxdWFnZ2FfdXNlciwlcXVhZ2dhX3VzZXIpICV7X3N5c2NvbmZkaXJ9CiVkaXIgJWF0dHIoNzUwLCVxdWFnZ2FfdXNlciwlcXVhZ2dhX3VzZXIpIC92YXIvbG9nL3F1YWdnYSAKJWRpciAlYXR0cig3NTEsJXF1YWdnYV91c2VyLCVxdWFnZ2FfdXNlcikgL3Zhci9ydW4vcXVhZ2dhCiVlbHNlCiVkaXIgJWF0dHIoNzUwLHJvb3Qscm9vdCkgJXtfc3lzY29uZmRpcn0KJWRpciAlYXR0cig3NTAscm9vdCxyb290KSAvdmFyL2xvZy9xdWFnZ2EKJWRpciAlYXR0cig3NTUscm9vdCxyb290KSAvdXNyL3NoYXJlL2luZm8KJWRpciAlYXR0cig3NTAscm9vdCxyb290KSAvdmFyL3J1bi9xdWFnZ2EKJWVuZGlmCiVpZiAldnR5X2dyb3VwCiVhdHRyKDc1MCwlcXVhZ2dhX3VzZXIsJXZ0eV9ncm91cCkgJXtfc3lzY29uZmRpcn0vdnR5c2guY29uZi5zYW1wbGUKJWVuZGlmCiV7X2luZm9kaXJ9LyppbmZvKgole19tYW5kaXJ9L21hbiovKgole19zYmluZGlyfS8qCiVpZiAld2l0aF92dHlzaAole19iaW5kaXJ9LyoKJWVuZGlmCiVjb25maWcgL2V0Yy9xdWFnZ2EvWyF2XSoKJWNvbmZpZyAvZXRjL3JjLmQvaW5pdC5kLyoKJWNvbmZpZyhub3JlcGxhY2UpIC9ldGMvcGFtLmQvcXVhZ2dhCiVjb25maWcobm9yZXBsYWNlKSAlYXR0cig2NDAscm9vdCxyb290KSAvZXRjL2xvZ3JvdGF0ZS5kLyoKCiVmaWxlcyBjb250cmliCiVkZWZhdHRyKC0scm9vdCxyb290KQolZG9jIHRvb2xzCgolZmlsZXMgZGV2ZWwKJWRlZmF0dHIoLSxyb290LHJvb3QpCiVkaXIgJXtfbGliZGlyfS8qCiVkaXIgJXtfaW5jbHVkZWRpcn0vb3NwZmQvKgolaWYgJXdpdGhfb3NwZmFwaQolZGlyICV7X2luY2x1ZGVkaXJ9L29zcGZhcGkvKgolZW5kaWYKCiVjaGFuZ2Vsb2cKKiBUdWUgQXVnIDEyIDIwMDMgUGF1bCBKYWttYSA8cGF1bEBkaXNob25lLnN0PgotIFJlbmFtZWQgdG8gUXVhZ2dhCi0gU3luYyB0byBRdWFnZ2EgcmVsZWFzZSAwLjk2CgoqIFR1ZSBNYXIgMjAgMjAwMyBQYXVsIEpha21hIDxwYXVsQGRpc2hvbmUuc3Q+Ci0gemVicmEgcHJpdmlsZWdlcyBzdXBwb3J0CgoqIE1vbiBNYXIgMTggMjAwMyBQYXVsIEpha21hIDxwYXVsQGRpc2hvbmUuc3Q+Ci0gRml4IG1lbSBsZWFrIGluICdzaG93IHRocmVhZCBjcHUnCi0gUmFscGggS2VsbGVyJ3MgT1NQRi1BUEkKLSBBbWlyOiBGaXggY29uZmlndXJlLmFjIGZvciBuZXQtc25tcAoKKiBTYXQgTWFyIDEgMjAwMyBQYXVsIEpha21hIDxwYXVsQGRpc2hvbmUuc3Q+Ci0gb3NwZmQgSU9TIHByZWZpeCB0byBpbnRlcmZhY2UgbWF0Y2hpbmcgZm9yICduZXR3b3JrJyBzdGF0ZW1lbnQKLSB0ZW1wb3JhcnkgZml4IGZvciBQdFAgYW5kIElQdjYKLSBzeW5jIHRvIHplYnJhLm9yZyBDVlMKCiogTW9uIEphbiAyMCAyMDAzIFBhdWwgSmFrbWEgPHBhdWxAZGlzaG9uZS5zdD4KLSB1cGRhdGUgdG8gbGF0ZXN0IGN2cwotIFlvbidzICJzaG93IHRocmVhZCBjcHUiIHBhdGNoIC0gMTcyMTcKLSB3YWxrIHVwIHRyZWUgLSAxNzIxOAotIG9zcGZkIE5TU0EgZml4ZXMgLSAxNjY4MQotIG9zcGZkIG5zbSBmaXhlcyAtIDE2ODI0Ci0gb3NwZmQgT0xTQSBmaXhlcyBhbmQgbmV3IGZlYXR1cmUgLSAxNjgyMyAKLSBLQU1FIGFuZCBpZmluZGV4IGZpeGVzIC0gMTY1MjUKLSBzcGVjIGZpbGUgY2hhbmdlcyB0byBhbGxvdyByZWRoYXQgZmlsZXMgdG8gYmUgaW4gdHJlZQoKKiBTYXQgRGVjIDI4IDIwMDIgQWxleGFuZGVyIEhvb2dlcmh1aXMgPGFsZXhoQGloYXRlbnQuY29tPgotIEFkZGVkIGNvbmRpdGlvbmFscyBmb3IgYnVpbGRpbmcgd2l0aChvdXQpIElQdjYsIHZ0eXNoLCBSSVAsIEJHUAotIEZpeGVkIHVwIHNvbWUgYnVpbGQgcmVxdWlyZW1lbnRzIChwYXRjaCkKLSBBZGRlZCBjb25kaXRpb25hbCBidWlsZCByZXF1aXJlbWVudHMgZm9yIHZ0eXNoIC8gc25tcAotIEFkZGVkIGNvbmRpdGlvbmFsIHRvICVmaWxlcyBmb3IgJV9iaW5kaXIgZGVwZW5kaW5nIG9uIHZ0eXNoCgoqIE1vbiBOb3YgMTEgMjAwMiBQYXVsIEpha21hIDxwYXVsakBhbHBoeXJhLmllPgotIHVwZGF0ZSB0byBsYXRlc3QgQ1ZTCi0gYWRkIEdyZWcgVHJveGVsJ3MgbWQ1IGJ1ZmZlciBjb3B5L2R1cCBmaXgKLSBhZGQgUklQdjEgZml4Ci0gYWRkIEZyYW5rJ3MgbXVsdGljYXN0IGZsYWcgZml4CgoqIFdlZCBPY3QgMDkgMjAwMiBQYXVsIEpha21hIDxwYXVsakBhbHBoeXJhLmllPgotIHVwZGF0ZSB0byBsYXRlc3QgQ1ZTCi0gdGltZXN0YW1wZWQgY3J5cHRfc2VxbnVtIHBhdGNoCi0gb2ktPm9uX3dyaXRlX3EgZml4CgoqIE1vbiBTZXAgMzAgMjAwMiBQYXVsIEpha21hIDxwYXVsakBhbHBoeXJhLmllPgotIHVwZGF0ZSB0byBsYXRlc3QgQ1ZTCi0gYWRkIHZ0eXNoICd3cml0ZS1jb25maWcgKGludGVncmF0ZWR8ZGFlbW9uKScgcGF0Y2gKLSBhbHdheXMgJ21ha2UgcmVidWlsZCcgaW4gdnR5c2gvIHRvIGNhdGNoIG5ldyBjb21tYW5kcwoKKiBGcmkgU2VwIDEzIDIwMDIgUGF1bCBKYWttYSA8cGF1bGpAYWxwaHlyYS5pZT4KLSB1cGRhdGUgdG8gMC45M2IKCiogV2VkIFNlcCAxMSAyMDAyIFBhdWwgSmFrbWEgPHBhdWxqQGFscGh5cmEuaWU+Ci0gdXBkYXRlIHRvIGxhdGVzdCBDVlMKLSBhZGQgIi9zYmluL2lwIHJvdXRlIGZsdXNoIHByb3RvIHplYnJhIiB0byB6ZWJyYSBSSCBpbml0IG9uIHN0YXJ0dXAKCiogU2F0IEF1ZyAyNCAyMDAyIFBhdWwgSmFrbWEgPHBhdWxqQGFscGh5cmEuaWU+Ci0gdXBkYXRlIHRvIGN1cnJlbnQgQ1ZTCi0gYWRkIE9TUEYgcG9pbnQgdG8gbXVsdGlwb2ludCBwYXRjaAotIGFkZCBPU1BGIGJ1Z2ZpeGVzCi0gYWRkIEJHUCBoYXNoIG9wdGltaXNhdGlvbiBwYXRjaAoKKiBGcmkgSnVuIDE0IDIwMDIgUGF1bCBKYWttYSA8cGF1bGpAYWxwaHlyYS5pZT4KLSB1cGRhdGUgdG8gMC45My1wcmUxIC8gQ1ZTCi0gYWRkIGxpbmsgc3RhdGUgZGV0ZWN0aW9uIHN1cHBvcnQKLSBhZGQgZ2VuZXJpYyBQdFAgYW5kIFJGQzMwMjEgc3VwcG9ydAotIHZhcmlvdXMgYnVnIGZpeGVzCgoqIFRodSBBdWcgMDkgMjAwMSBFbGxpb3QgTGVlIDxzb3B3aXRoQHJlZGhhdC5jb20+IDAuOTFhLTYKLSBGaXggYnVnICM1MTMzNgoKKiBXZWQgQXVnICAxIDIwMDEgVHJvbmQgRWl2aW5kIEdsb21zcvhkIDx0ZWdAcmVkaGF0LmNvbT4gMC45MWEtNQotIFVzZSBnZW5lcmljIGluaXRzY3JpcHQgc3RyaW5ncyBpbnN0ZWFkIG9mIGluaXRzY3JpcHQgc3BlY2lmaWMKICAoICJTdGFydGluZyBmb286ICIgLT4gIlN0YXJ0aW5nICRwcm9nOiIgKQoKKiBGcmkgSnVsIDI3IDIwMDEgRWxsaW90IExlZSA8c29wd2l0aEByZWRoYXQuY29tPiAwLjkxYS00Ci0gQnVtcCB0aGUgcmVsZWFzZSB3aGVuIHJlYnVpbGRpbmcgaW50byB0aGUgZGlzdC4KCiogVHVlIEZlYiAgNiAyMDAxIFRpbSBQb3dlcnMgPHRpbXBAcmVkaGF0LmNvbT4KLSBidWlsdCBmb3IgUG93ZXJ0b29scwoKKiBTdW4gRmViICA0IDIwMDEgUGVra2EgU2F2b2xhIDxwZWtrYXNAbmV0Y29yZS5maT4gCi0gSGFja2VkIHVwIGZyb20gUExEIExpbnV4IDAuOTAtMSwgTWFuZHJha2UgMC45MC0xbWRrIGFuZCBvbmUgZnJvbSB6ZWJyYS5vcmcuCi0gVXBkYXRlIHRvIDAuOTFhCi0gVmVyeSBoZWF2eSBtb2RpZmljYXRpb25zIHRvIGluaXQuZC8qLCAuc3BlYywgcGFtLCBpMThuLCBsb2dyb3RhdGUsIGV0Yy4KLSBTaG91bGQgYmUgcXVpdGUgUmVkIEhhdCdpc3F1ZSBub3cuCg==